From a29e1cbe32ac19ba73eba68783e8cbafc8ace891 Mon Sep 17 00:00:00 2001
From: java110 <928255095@qq.com>
Date: 星期日, 05 九月 2021 18:06:46 +0800
Subject: [PATCH] 优化 加入 小区位置同步
---
service-fee/src/main/java/com/java110/fee/smo/impl/FeeDiscountInnerServiceSMOImpl.java | 113 ++++++++++++++++++++++++++++++++++++++++++++++++--------
1 files changed, 97 insertions(+), 16 deletions(-)
diff --git a/service-fee/src/main/java/com/java110/fee/smo/impl/FeeDiscountInnerServiceSMOImpl.java b/service-fee/src/main/java/com/java110/fee/smo/impl/FeeDiscountInnerServiceSMOImpl.java
old mode 100644
new mode 100755
index ed43f48..7aac8e9
--- a/service-fee/src/main/java/com/java110/fee/smo/impl/FeeDiscountInnerServiceSMOImpl.java
+++ b/service-fee/src/main/java/com/java110/fee/smo/impl/FeeDiscountInnerServiceSMOImpl.java
@@ -1,29 +1,31 @@
package com.java110.fee.smo.impl;
-
import com.java110.core.base.smo.BaseServiceSMO;
import com.java110.dto.PageDto;
+import com.java110.dto.applyRoomDiscount.ApplyRoomDiscountDto;
import com.java110.dto.fee.FeeDetailDto;
import com.java110.dto.fee.FeeDto;
import com.java110.dto.feeDiscount.ComputeDiscountDto;
import com.java110.dto.feeDiscount.FeeDiscountDto;
-import com.java110.dto.feeDiscountSpec.FeeDiscountSpecDto;
+import com.java110.dto.feeDiscount.FeeDiscountSpecDto;
import com.java110.dto.payFeeConfigDiscount.PayFeeConfigDiscountDto;
import com.java110.fee.dao.IFeeDiscountServiceDao;
import com.java110.fee.discount.IComputeDiscount;
-import com.java110.intf.fee.IFeeDiscountInnerServiceSMO;
-import com.java110.intf.fee.IFeeDiscountSpecInnerServiceSMO;
-import com.java110.intf.fee.IFeeInnerServiceSMO;
-import com.java110.intf.fee.IPayFeeConfigDiscountInnerServiceSMO;
+import com.java110.intf.fee.*;
import com.java110.po.feeDiscount.FeeDiscountPo;
+import com.java110.utils.cache.MappingCache;
import com.java110.utils.factory.ApplicationContextFactory;
import com.java110.utils.util.Assert;
import com.java110.utils.util.BeanConvertUtil;
+import com.java110.utils.util.StringUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController;
+import java.text.SimpleDateFormat;
import java.util.ArrayList;
+import java.util.Calendar;
+import java.util.Date;
import java.util.List;
/**
@@ -48,6 +50,15 @@
@Autowired
private IFeeDiscountSpecInnerServiceSMO feeDiscountSpecInnerServiceSMOImpl;
+
+ @Autowired
+ private IApplyRoomDiscountInnerServiceSMO applyRoomDiscountInnerServiceSMOImpl;
+
+ //鍩�
+ public static final String DOMAIN_COMMON = "DOMAIN.COMMON";
+
+ //閿�
+ public static final String DISCOUNT_MODE = "DISCOUNT_MODE";
@Override
@@ -124,15 +135,15 @@
}
}
-
/**
* 璁$畻鎶樻墸
*
* @param feeDetailDto
* @return
*/
-
public List<ComputeDiscountDto> computeDiscount(@RequestBody FeeDetailDto feeDetailDto) {
+ SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+ Calendar c = Calendar.getInstance();
List<ComputeDiscountDto> computeDiscountDtos = new ArrayList<>();
FeeDto feeDto = new FeeDto();
feeDto.setFeeId(feeDetailDto.getFeeId());
@@ -140,28 +151,99 @@
feeDto.setState(FeeDto.STATE_DOING);
List<FeeDto> feeDtos = feeInnerServiceSMOImpl.queryFees(feeDto);
Assert.listOnlyOne(feeDtos, "璐圭敤涓嶅瓨鍦�");
-
PayFeeConfigDiscountDto payFeeConfigDiscountDto = new PayFeeConfigDiscountDto();
payFeeConfigDiscountDto.setConfigId(feeDtos.get(0).getConfigId());
payFeeConfigDiscountDto.setRow(feeDetailDto.getRow());
- payFeeConfigDiscountDto.setPage(feeDetailDto.getRow());
+ payFeeConfigDiscountDto.setPage(feeDetailDto.getPage());
payFeeConfigDiscountDto.setCommunityId(feeDetailDto.getCommunityId());
+ payFeeConfigDiscountDto.setStatusCd("0");
+ Date currentTime = new Date();
+ payFeeConfigDiscountDto.setCurrentTime(currentTime);
+ //鏍规嵁璐圭敤鏌ヨ鎶樻墸
List<PayFeeConfigDiscountDto> payFeeConfigDiscountDtos =
payFeeConfigDiscountInnerServiceSMOImpl.queryPayFeeConfigDiscounts(payFeeConfigDiscountDto);
-
if (payFeeConfigDiscountDtos == null || payFeeConfigDiscountDtos.size() < 1) {
+ computeApplyRoomDiscount(feeDetailDto, simpleDateFormat, c, computeDiscountDtos);
+ //鍙栧嚭寮�鍏虫槧灏勭殑鍊�
+ String value = MappingCache.getValue(DOMAIN_COMMON, DISCOUNT_MODE);
+ List<ComputeDiscountDto> computeDiscountDtoList = new ArrayList<>();
+ for (ComputeDiscountDto computeDiscountDto : computeDiscountDtos) {
+ computeDiscountDto.setValue(value);
+ if (!StringUtil.isEmpty(computeDiscountDto.getDiscountType()) && "3003".equals(computeDiscountDto.getDiscountType())) {
+ computeDiscountDto.setArdId(feeDetailDto.getArdId());
+ }
+ computeDiscountDtoList.add(computeDiscountDto);
+ }
return computeDiscountDtos;
}
-
+ c.setTime(feeDetailDto.getStartTime());
+ double mon = Double.parseDouble(feeDetailDto.getCycles());
+ c.add(Calendar.MONTH, (int) mon);
+ //鑾峰彇缂磋垂缁撴潫鏃堕棿
+ Date finishTime = c.getTime();
for (PayFeeConfigDiscountDto tmpPayFeeConfigDiscountDto : payFeeConfigDiscountDtos) {
- doCompute(tmpPayFeeConfigDiscountDto, Double.parseDouble(feeDetailDto.getCycles()), computeDiscountDtos, feeDetailDto.getFeeId());
+ //鑾峰彇缂磋垂鏈�澶ф埅姝㈡椂闂�
+ Date payMaxEndTime = tmpPayFeeConfigDiscountDto.getPayMaxEndTime();
+ if (payMaxEndTime == null) {
+ doCompute(tmpPayFeeConfigDiscountDto, Double.parseDouble(feeDetailDto.getCycles()), computeDiscountDtos, feeDetailDto.getFeeId());
+ } else if (payMaxEndTime.getTime() >= finishTime.getTime()) {
+ doCompute(tmpPayFeeConfigDiscountDto, Double.parseDouble(feeDetailDto.getCycles()), computeDiscountDtos, feeDetailDto.getFeeId());
+ } else {
+ continue;
+ }
}
- return computeDiscountDtos;
+ computeApplyRoomDiscount(feeDetailDto, simpleDateFormat, c, computeDiscountDtos);
+ //鍙栧嚭寮�鍏虫槧灏勭殑鍊�
+ String value = MappingCache.getValue(DOMAIN_COMMON, DISCOUNT_MODE);
+ List<ComputeDiscountDto> computeDiscountDtoList = new ArrayList<>();
+ for (ComputeDiscountDto computeDiscountDto : computeDiscountDtos) {
+ computeDiscountDto.setValue(value);
+ if (!StringUtil.isEmpty(computeDiscountDto.getDiscountType()) && "3003".equals(computeDiscountDto.getDiscountType())) {
+ computeDiscountDto.setArdId(feeDetailDto.getArdId());
+ }
+ computeDiscountDtoList.add(computeDiscountDto);
+ }
+ return computeDiscountDtoList;
+ }
+ private void computeApplyRoomDiscount(@RequestBody FeeDetailDto feeDetailDto, SimpleDateFormat simpleDateFormat, Calendar c, List<ComputeDiscountDto> computeDiscountDtos) {
+ if (!StringUtil.isEmpty(feeDetailDto.getPayerObjType()) && FeeDto.PAYER_OBJ_TYPE_ROOM.equals(feeDetailDto.getPayerObjType())) {
+ //鏍规嵁鎴垮眿ID,鍘绘姌鎵g敵璇疯〃鏌ヨ鏄惁鏈夋姌鎵�
+ ApplyRoomDiscountDto applyRoomDiscountDto = new ApplyRoomDiscountDto();
+ //瀹℃牳宸查�氳繃
+ applyRoomDiscountDto.setState("4");
+ //鏄惁鍙敤鐘舵�佹爣璇�(0琛ㄧず鍦ㄧ敤锛�1琛ㄧず涓嶅彲鐢�)
+ applyRoomDiscountDto.setInUse("0");
+ //灏忓尯ID
+ applyRoomDiscountDto.setCommunityId(feeDetailDto.getCommunityId());
+ //鎴垮眿id
+ applyRoomDiscountDto.setRoomId(feeDetailDto.getPayerObjId());
+ //寮�濮嬫椂闂�
+ applyRoomDiscountDto.setStartTime(simpleDateFormat.format(feeDetailDto.getStartTime()));
+ //缁撴潫鏃堕棿
+ c.setTime(feeDetailDto.getStartTime());
+ double month = Double.parseDouble(feeDetailDto.getCycles());
+ c.add(Calendar.MONTH, (int) month);
+ c.add(Calendar.DAY_OF_MONTH, -5);//杩欓噷鏍规嵁璁剧疆鏃堕棿鑽h獕5澶�
+ Date endTime = c.getTime();
+ applyRoomDiscountDto.setEndTime(simpleDateFormat.format(endTime));
+ //鏌ヨ鎶樻墸鐢宠琛�
+ List<ApplyRoomDiscountDto> applyRoomDiscountDtos = applyRoomDiscountInnerServiceSMOImpl.queryApplyRoomDiscounts(applyRoomDiscountDto);
+ //鍒ゆ柇鏌ヨ鐨勬姌鎵g敵璇疯〃鏄惁鏈夋暟鎹�
+ if (applyRoomDiscountDtos != null && applyRoomDiscountDtos.size() > 0) {
+ //鑾峰彇浼樻儬id
+ String discountId = applyRoomDiscountDtos.get(0).getDiscountId();
+ String ardId = applyRoomDiscountDtos.get(0).getArdId();
+ feeDetailDto.setArdId(ardId);
+ PayFeeConfigDiscountDto payFeeConfigDiscount = new PayFeeConfigDiscountDto();
+ payFeeConfigDiscount.setCommunityId(applyRoomDiscountDtos.get(0).getCommunityId());
+ payFeeConfigDiscount.setDiscountId(discountId);
+ doCompute(payFeeConfigDiscount, Double.parseDouble(feeDetailDto.getCycles()), computeDiscountDtos, feeDetailDto.getFeeId());
+ }
+ }
}
private void doCompute(PayFeeConfigDiscountDto tmpPayFeeConfigDiscountDto, double cycles, List<ComputeDiscountDto> computeDiscountDtos, String feeId) {
-
FeeDiscountDto feeDiscountDto = new FeeDiscountDto();
feeDiscountDto.setCommunityId(tmpPayFeeConfigDiscountDto.getCommunityId());
feeDiscountDto.setDiscountId(tmpPayFeeConfigDiscountDto.getDiscountId());
@@ -175,7 +257,6 @@
}
IComputeDiscount computeDiscount = (IComputeDiscount) ApplicationContextFactory.getBean(feeDiscountDtos.get(0).getBeanImpl());
ComputeDiscountDto computeDiscountDto = computeDiscount.compute(feeDiscountDtos.get(0));
-
if (computeDiscountDto == null) {
return;
}
--
Gitblit v1.8.0