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-fee/src/main/java/com/java110/fee/cmd/fee/UpdateFeeCmd.java |   78 +++++++++++++++++++++++++++++++++------
 1 files changed, 66 insertions(+), 12 deletions(-)

diff --git a/service-fee/src/main/java/com/java110/fee/cmd/fee/UpdateFeeCmd.java b/service-fee/src/main/java/com/java110/fee/cmd/fee/UpdateFeeCmd.java
index b252a69..31e3deb 100644
--- a/service-fee/src/main/java/com/java110/fee/cmd/fee/UpdateFeeCmd.java
+++ b/service-fee/src/main/java/com/java110/fee/cmd/fee/UpdateFeeCmd.java
@@ -5,9 +5,11 @@
 import com.java110.core.context.ICmdDataFlowContext;
 import com.java110.core.event.cmd.Cmd;
 import com.java110.core.event.cmd.CmdEvent;
+import com.java110.core.factory.GenerateCodeFactory;
 import com.java110.dto.fee.FeeAttrDto;
 import com.java110.dto.fee.FeeConfigDto;
 import com.java110.dto.fee.FeeDto;
+import com.java110.fee.feeMonth.IPayFeeMonth;
 import com.java110.fee.smo.impl.FeeAttrInnerServiceSMOImpl;
 import com.java110.intf.community.IRoomInnerServiceSMO;
 import com.java110.intf.fee.IFeeInnerServiceSMO;
@@ -40,6 +42,9 @@
     @Autowired
     private FeeAttrInnerServiceSMOImpl feeAttrInnerServiceSMOImpl;
 
+    @Autowired
+    private IPayFeeMonth payFeeMonthImpl;
+
     @Override
     public void validate(CmdEvent event, ICmdDataFlowContext context, JSONObject reqJson) throws CmdException {
 
@@ -56,6 +61,10 @@
         List<FeeDto> feeDtos = feeInnerServiceSMOImpl.queryFees(feeDto);
 
         Assert.listOnlyOne(feeDtos, "鏈煡璇㈠埌璐圭敤淇℃伅 鎴栨煡璇㈠埌澶氭潯" + reqJson);
+
+        if(FeeDto.FEE_FLAG_CYCLE.equals(feeDtos.get(0).getFeeFlag()) && reqJson.containsKey("maxEndTime")){
+            reqJson.remove("maxEndTime");
+        }
     }
 
     @Override
@@ -64,45 +73,90 @@
         PayFeePo payFeePo = BeanConvertUtil.covertBean(reqJson, PayFeePo.class);
         int flag = payFeeV1InnerServiceSMOImpl.updatePayFee(payFeePo);
 
-        if(flag < 1){
+        if (flag < 1) {
             throw new CmdException("淇敼璐圭敤");
         }
 
-        if(reqJson.containsKey("maxEndTime") && !StringUtil.isEmpty(reqJson.getString("maxEndTime"))){
+        // todo 閲嶆柊璁$畻绂绘暎鏈�
+        payFeeMonthImpl.deleteFeeMonth(payFeePo.getFeeId(),payFeePo.getCommunityId());
+        payFeeMonthImpl.doGeneratorOrRefreshFeeMonth(payFeePo.getFeeId(),payFeePo.getCommunityId());
+
+
+        if (reqJson.containsKey("maxEndTime") && !StringUtil.isEmpty(reqJson.getString("maxEndTime"))) {
+            FeeAttrDto feeAttrDto = new FeeAttrDto();
+            feeAttrDto.setFeeId(payFeePo.getFeeId());
+            feeAttrDto.setSpecCd(FeeAttrDto.SPEC_CD_ONCE_FEE_DEADLINE_TIME);
+            List<FeeAttrDto> feeAttrDtos = feeAttrInnerServiceSMOImpl.queryFeeAttrs(feeAttrDto);
             FeeAttrPo feeAttrPo = new FeeAttrPo();
             feeAttrPo.setFeeId(payFeePo.getFeeId());
             feeAttrPo.setSpecCd(FeeAttrDto.SPEC_CD_ONCE_FEE_DEADLINE_TIME);
             feeAttrPo.setValue(reqJson.getString("maxEndTime"));
-            feeAttrInnerServiceSMOImpl.updateFeeAttr(feeAttrPo);
+            feeAttrPo.setCommunityId(reqJson.getString("communityId"));
+            if (feeAttrDtos == null || feeAttrDtos.size() < 1) {
+                feeAttrPo.setAttrId(GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_attrId));
+                feeAttrInnerServiceSMOImpl.saveFeeAttr(feeAttrPo);
+            } else {
+                feeAttrInnerServiceSMOImpl.updateFeeAttr(feeAttrPo);
+            }
         }
 
-        if(!reqJson.containsKey("computingFormula")
-                || !FeeConfigDto.COMPUTING_FORMULA_RANT_RATE.equals(reqJson.getString("computingFormula"))){
-            return ;
+        if (!reqJson.containsKey("computingFormula")
+                || !FeeConfigDto.COMPUTING_FORMULA_RANT_RATE.equals(reqJson.getString("computingFormula"))) {
+            return;
         }
 
-        if(reqJson.containsKey("rate")) {
+        if (reqJson.containsKey("rate")) {
+            FeeAttrDto feeAttrDto = new FeeAttrDto();
+            feeAttrDto.setFeeId(payFeePo.getFeeId());
+            feeAttrDto.setSpecCd(FeeAttrDto.SPEC_CD_RATE);
+            List<FeeAttrDto> feeAttrDtos = feeAttrInnerServiceSMOImpl.queryFeeAttrs(feeAttrDto);
             FeeAttrPo feeAttrPo = new FeeAttrPo();
             feeAttrPo.setFeeId(payFeePo.getFeeId());
             feeAttrPo.setSpecCd(FeeAttrDto.SPEC_CD_RATE);
             feeAttrPo.setValue(reqJson.getString("rate"));
-            feeAttrInnerServiceSMOImpl.updateFeeAttr(feeAttrPo);
+            feeAttrPo.setCommunityId(reqJson.getString("communityId"));
+            if (feeAttrDtos == null || feeAttrDtos.size() < 1) {
+                feeAttrPo.setAttrId(GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_attrId));
+                feeAttrInnerServiceSMOImpl.saveFeeAttr(feeAttrPo);
+            } else {
+                feeAttrInnerServiceSMOImpl.updateFeeAttr(feeAttrPo);
+            }
         }
 
-        if(reqJson.containsKey("rateCycle")) {
+        if (reqJson.containsKey("rateCycle")) {
+            FeeAttrDto feeAttrDto = new FeeAttrDto();
+            feeAttrDto.setFeeId(payFeePo.getFeeId());
+            feeAttrDto.setSpecCd(FeeAttrDto.SPEC_CD_RATE_CYCLE);
+            List<FeeAttrDto> feeAttrDtos = feeAttrInnerServiceSMOImpl.queryFeeAttrs(feeAttrDto);
             FeeAttrPo feeAttrPo = new FeeAttrPo();
             feeAttrPo.setFeeId(payFeePo.getFeeId());
             feeAttrPo.setSpecCd(FeeAttrDto.SPEC_CD_RATE_CYCLE);
             feeAttrPo.setValue(reqJson.getString("rateCycle"));
-            feeAttrInnerServiceSMOImpl.updateFeeAttr(feeAttrPo);
+            feeAttrPo.setCommunityId(reqJson.getString("communityId"));
+            if (feeAttrDtos == null || feeAttrDtos.size() < 1) {
+                feeAttrPo.setAttrId(GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_attrId));
+                feeAttrInnerServiceSMOImpl.saveFeeAttr(feeAttrPo);
+            } else {
+                feeAttrInnerServiceSMOImpl.updateFeeAttr(feeAttrPo);
+            }
         }
 
-        if(reqJson.containsKey("rateStartTime")) {
+        if (reqJson.containsKey("rateStartTime")) {
+            FeeAttrDto feeAttrDto = new FeeAttrDto();
+            feeAttrDto.setFeeId(payFeePo.getFeeId());
+            feeAttrDto.setSpecCd(FeeAttrDto.SPEC_CD_RATE_START_TIME);
+            List<FeeAttrDto> feeAttrDtos = feeAttrInnerServiceSMOImpl.queryFeeAttrs(feeAttrDto);
             FeeAttrPo feeAttrPo = new FeeAttrPo();
             feeAttrPo.setFeeId(payFeePo.getFeeId());
             feeAttrPo.setSpecCd(FeeAttrDto.SPEC_CD_RATE_START_TIME);
             feeAttrPo.setValue(reqJson.getString("rateStartTime"));
-            feeAttrInnerServiceSMOImpl.updateFeeAttr(feeAttrPo);
+            feeAttrPo.setCommunityId(reqJson.getString("communityId"));
+            if (feeAttrDtos == null || feeAttrDtos.size() < 1) {
+                feeAttrPo.setAttrId(GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_attrId));
+                feeAttrInnerServiceSMOImpl.saveFeeAttr(feeAttrPo);
+            } else {
+                feeAttrInnerServiceSMOImpl.updateFeeAttr(feeAttrPo);
+            }
         }
     }
 }

--
Gitblit v1.8.0