From 0fea532b07be89978343cb4aede3693af99f5656 Mon Sep 17 00:00:00 2001
From: Your Name <you@example.com>
Date: 星期二, 25 七月 2023 23:04:41 +0800
Subject: [PATCH] Merge branch 'master' of http://git.homecommunity.cn/supervip/MicroCommunity
---
service-job/src/main/java/com/java110/job/adapt/fee/asyn/impl/PayFeeDetailToMonthIImpl.java | 124 ++++++++++++++++++++++++++++++++--------
1 files changed, 98 insertions(+), 26 deletions(-)
diff --git a/service-job/src/main/java/com/java110/job/adapt/fee/asyn/impl/PayFeeDetailToMonthIImpl.java b/service-job/src/main/java/com/java110/job/adapt/fee/asyn/impl/PayFeeDetailToMonthIImpl.java
index 6a04c5e..b423516 100644
--- a/service-job/src/main/java/com/java110/job/adapt/fee/asyn/impl/PayFeeDetailToMonthIImpl.java
+++ b/service-job/src/main/java/com/java110/job/adapt/fee/asyn/impl/PayFeeDetailToMonthIImpl.java
@@ -3,14 +3,20 @@
import com.alibaba.fastjson.JSONObject;
import com.java110.core.factory.GenerateCodeFactory;
import com.java110.core.smo.IComputeFeeSMO;
+import com.java110.dto.fee.FeeConfigDto;
import com.java110.dto.fee.FeeDto;
-import com.java110.entity.order.Business;
+import com.java110.dto.owner.OwnerRoomRelDto;
+import com.java110.dto.payFee.PayFeeDetailRefreshFeeMonthDto;
+import com.java110.dto.system.Business;
import com.java110.intf.fee.IFeeInnerServiceSMO;
import com.java110.intf.fee.IPayFeeDetailMonthInnerServiceSMO;
+import com.java110.intf.fee.IPayFeeMonthInnerServiceSMO;
+import com.java110.intf.report.IGeneratorOweFeeInnerServiceSMO;
+import com.java110.intf.user.IOwnerRoomRelV1InnerServiceSMO;
import com.java110.job.adapt.fee.asyn.IPayFeeDetailToMonth;
import com.java110.po.fee.PayFeeDetailPo;
-import com.java110.po.payFeeDetailMonth.PayFeeDetailMonthPo;
-import com.java110.utils.cache.MappingCache;
+import com.java110.po.owner.OwnerRoomRelPo;
+import com.java110.po.payFee.PayFeeDetailMonthPo;
import com.java110.utils.util.Assert;
import com.java110.utils.util.BeanConvertUtil;
import com.java110.utils.util.DateUtil;
@@ -19,12 +25,14 @@
import org.springframework.stereotype.Service;
import java.math.BigDecimal;
-import java.text.ParseException;
import java.util.*;
+/**
+ * 涓昏鐢ㄤ簬澶勭悊璐圭敤绂绘暎鏈� 閫傞厤鍣�
+ * add by wuxw 2023-05-11
+ */
@Service
public class PayFeeDetailToMonthIImpl implements IPayFeeDetailToMonth {
-
@Autowired
private IFeeInnerServiceSMO feeInnerServiceSMOImpl;
@@ -32,9 +40,17 @@
@Autowired
private IComputeFeeSMO computeFeeSMOImpl;
-
@Autowired
private IPayFeeDetailMonthInnerServiceSMO payFeeDetailMonthInnerServiceSMOImpl;
+
+ @Autowired
+ private IOwnerRoomRelV1InnerServiceSMO ownerRoomRelV1InnerServiceSMOImpl;
+
+ @Autowired
+ private IGeneratorOweFeeInnerServiceSMO generatorOweFeeInnerServiceSMOImpl;
+
+ @Autowired
+ private IPayFeeMonthInnerServiceSMO payFeeMonthInnerServiceSMOImpl;
@Override
@Async
@@ -48,19 +64,83 @@
Assert.listOnlyOne(feeDtos, "鏈煡璇㈠埌璐圭敤淇℃伅");
feeDto = feeDtos.get(0);
- Date startTime = null;
- Date endTime = null;
- Date createTime = null;
- try {
- startTime = DateUtil.getDateFromString(businessPayFeeDetail.getString("startTime"), DateUtil.DATE_FORMATE_STRING_B);
- endTime = DateUtil.getDateFromString(businessPayFeeDetail.getString("endTime"), DateUtil.DATE_FORMATE_STRING_B);
- createTime = DateUtil.getDateFromString(businessPayFeeDetail.getString("createTime"), DateUtil.DATE_FORMATE_STRING_B);
+ Date endTime = DateUtil.getDateFromStringB(businessPayFeeDetail.getString("endTime"));
- } catch (ParseException e) {
- throw new IllegalArgumentException("鏃堕棿鏍煎紡閿欒");
+ //todo 杞崲涓烘湀锛堜紭鍖栫増锛�
+ toPayFeeDetailMonth(businessPayFeeDetail, feeDto);
+
+ // 杞崲涓烘湀
+ //toMonth(businessPayFeeDetail, feeDto, startTime, endTime, createTime);
+
+ //todo 濡傛灉鏄閲� 鍒欏欢闀挎埧灞嬬鏈�
+ toAddRoomRentTime(feeDtos.get(0), endTime);
+
+ //todo 淇敼娆犺垂
+ toDeleteOweFee(feeDtos.get(0));
+
+ }
+
+ /**
+ * 璋冪敤fee 妯″潡 澶勭悊 绂绘暎
+ * @param businessPayFeeDetail
+ * @param feeDto
+ */
+ private void toPayFeeDetailMonth(JSONObject businessPayFeeDetail, FeeDto feeDto) {
+ PayFeeDetailRefreshFeeMonthDto payFeeDetailRefreshFeeMonthDto = new PayFeeDetailRefreshFeeMonthDto();
+ payFeeDetailRefreshFeeMonthDto.setCommunityId(feeDto.getCommunityId());
+ payFeeDetailRefreshFeeMonthDto.setDetailId(businessPayFeeDetail.getString("detailId"));
+ payFeeDetailRefreshFeeMonthDto.setFeeId(feeDto.getFeeId());
+ //todo 璋冪敤璐圭敤妯″潡 澶勭悊
+ payFeeMonthInnerServiceSMOImpl.payFeeDetailRefreshFeeMonth(payFeeDetailRefreshFeeMonthDto);
+ }
+
+ /**
+ * 澶勭悊娆犺垂
+ *
+ * @param feeDto
+ */
+ private void toDeleteOweFee(FeeDto feeDto) {
+ generatorOweFeeInnerServiceSMOImpl.computeOweFee(feeDto);
+ }
+
+ private void toAddRoomRentTime(FeeDto feeDto, Date endTime) {
+
+ //todo 涓嶆槸绉熼噾鐩存帴杩斿洖
+ if (!FeeConfigDto.FEE_TYPE_CD_RENT.equals(feeDto.getFeeTypeCd())) {
+ return;
+ }
+ //todo 涓嶆槸鎴垮眿鐩存帴杩斿洖
+ if (!FeeDto.PAYER_OBJ_TYPE_ROOM.equals(feeDto.getPayerObjType())) {
+ return;
}
- double maxMonth = Math.ceil(computeFeeSMOImpl.dayCompare(startTime, endTime));
+ OwnerRoomRelDto ownerRoomRelDto = new OwnerRoomRelDto();
+ ownerRoomRelDto.setRoomId(feeDto.getPayerObjId());
+ ownerRoomRelDto.setCommunityId(feeDto.getCommunityId());
+ List<OwnerRoomRelDto> ownerRoomRelDtos = ownerRoomRelV1InnerServiceSMOImpl.queryOwnerRoomRels(ownerRoomRelDto);
+
+ if (ownerRoomRelDtos == null || ownerRoomRelDtos.size() < 1) {
+ return;
+ }
+
+ Date rentEndDate = ownerRoomRelDtos.get(0).getEndTime();
+
+ if (endTime.getTime() < rentEndDate.getTime()) {
+ return;
+ }
+
+ OwnerRoomRelPo ownerRoomRelPo = new OwnerRoomRelPo();
+ ownerRoomRelPo.setEndTime(DateUtil.getFormatTimeString(endTime, DateUtil.DATE_FORMATE_STRING_B));
+ ownerRoomRelPo.setRelId(ownerRoomRelDtos.get(0).getRelId());
+
+ ownerRoomRelV1InnerServiceSMOImpl.updateOwnerRoomRel(ownerRoomRelPo);
+ }
+
+ private void toMonth(JSONObject businessPayFeeDetail, FeeDto feeDto, Date startTime, Date endTime, Date createTime) {
+ double maxMonth = 1;
+ if (!FeeDto.FEE_FLAG_ONCE.equals(feeDto.getFeeFlag())) {
+ maxMonth = Math.ceil(computeFeeSMOImpl.dayCompare(startTime, endTime));
+ }
if (maxMonth < 1) {
return;
@@ -76,18 +156,10 @@
List<PayFeeDetailMonthPo> payFeeDetailMonthPos = new ArrayList<>();
Calendar calendar = Calendar.getInstance();
- PayFeeDetailMonthPo tmpPayFeeDetailMonthPo = null;
- BigDecimal discountAmount = new BigDecimal(0.0);
- if("bailefu".equals(MappingCache.getValue("payFeeDetailToMonth"))){
- bailefuPropertyCode(businessPayFeeDetail, feeDto, startTime, createTime, maxMonth, feePrice, priRecDec, payFeeDetailMonthPos, calendar);
- }else{
- commonPropertyCode(businessPayFeeDetail, feeDto, startTime, createTime, maxMonth, feePrice, priRecDec, payFeeDetailMonthPos, calendar);
- }
-
+ commonPropertyCode(businessPayFeeDetail, feeDto, startTime, createTime, maxMonth, feePrice, priRecDec, payFeeDetailMonthPos, calendar);
payFeeDetailMonthInnerServiceSMOImpl.savePayFeeDetailMonths(payFeeDetailMonthPos);
-
}
private void commonPropertyCode(JSONObject businessPayFeeDetail, FeeDto feeDto, Date startTime, Date createTime, double maxMonth, Double feePrice, BigDecimal priRecDec, List<PayFeeDetailMonthPo> payFeeDetailMonthPos, Calendar calendar) {
@@ -145,7 +217,7 @@
if (calendar.getTime().getTime() < createTime.getTime()) {
tmpPayFeeDetailMonthPo.setReceivedAmount("0");
oweFee = oweFee.add(priRecDec);
- } else if (calendar.getTime().getTime() < createTime.getTime()) {
+ } else if (calendar.getTime().getTime() == createTime.getTime()) {
oweFee = oweFee.add(priRecDec);
tmpPayFeeDetailMonthPo.setReceivedAmount(oweFee.doubleValue() + "");
} else {
--
Gitblit v1.8.0