Ver código fonte

优化费用账单

wuxw 2 anos atrás
pai
commit
daf7589979

+ 3 - 10
java110-bean/src/main/java/com/java110/dto/payFeeRule/PayFeeRuleDto.java

@@ -1,6 +1,7 @@
 package com.java110.dto.payFeeRule;
 
 import com.java110.dto.PageDto;
+import com.java110.dto.fee.FeeConfigDto;
 
 import java.io.Serializable;
 import java.util.Date;
@@ -13,10 +14,10 @@ import java.util.Date;
  * @Version 1.0
  * add by wuxw 2019/4/24
  **/
-public class PayFeeRuleDto extends PageDto implements Serializable {
+public class PayFeeRuleDto extends FeeConfigDto implements Serializable {
 
     private String maxTime;
-    private String amount;
+
     private String feeTypeCd;
     private String curYearMonth;
     private String batchId;
@@ -47,14 +48,6 @@ public class PayFeeRuleDto extends PageDto implements Serializable {
         this.maxTime = maxTime;
     }
 
-    public String getAmount() {
-        return amount;
-    }
-
-    public void setAmount(String amount) {
-        this.amount = amount;
-    }
-
     public String getFeeTypeCd() {
         return feeTypeCd;
     }

+ 11 - 1
java110-db/src/main/resources/mapper/fee/PayFeeRuleV1ServiceDaoImplMapper.xml

@@ -36,8 +36,18 @@
         batchId,t.user_id,t.user_id userId,t.income_obj_id,t.income_obj_id incomeObjId,t.config_id,t.config_id
         configId,t.fee_flag,t.fee_flag feeFlag,t.start_time,t.start_time startTime,t.end_time,t.end_time
         endTime,t.state,t.rule_id,t.rule_id ruleId,t.community_id,t.community_id
-        communityId,t.payer_obj_type,t.payer_obj_type payerObjType,t.payer_obj_id,t.payer_obj_id payerObjId
+        communityId,t.payer_obj_type,t.payer_obj_type payerObjType,t.payer_obj_id,t.payer_obj_id payerObjId,
+        pfc.fee_name feeName,pfc.square_price squarePrice,pfc.additional_amount
+        additionalAmount,pfc.fee_flag,pfc.fee_flag feeFlag,td1.name feeTypeCdName,td2.name stateName,td3.name feeFlagName,pfc.computing_formula
+        computingFormula,pfc.computing_formula_text computingFormulaText,td4.name computingFormulaName
         from pay_fee_rule t
+        left join pay_fee_config pfc on t.config_id = pfc.config_id and pfc.status_cd = '0'
+        left join t_dict td1 on pfc.fee_type_cd = td1.status_cd and td1.table_name = 'pay_fee_config' and td1.table_columns = 'fee_type_cd'
+        left join t_dict td2 on t.state = td2.status_cd and td2.table_name = 'pay_fee' and td2.table_columns = 'state'
+        left join t_dict td3 on t.fee_flag = td3.status_cd and td3.table_name = 'pay_fee' and td3.table_columns =
+        'fee_flag'
+        left join t_dict td4 on pfc.computing_formula = td4.status_cd and td4.table_name = 'pay_fee_config' and
+        td4.table_columns = 'computing_formula'
         where 1 =1
         <if test="maxTime !=null and maxTime != ''">
             and t.max_time= #{maxTime}

+ 3 - 4
java110-db/src/main/resources/mapper/fee/PayFeeV1ServiceDaoImplMapper.xml

@@ -92,9 +92,6 @@
         <if test="incomeObjId !=null and incomeObjId != ''">
             , t.income_obj_id= #{incomeObjId}
         </if>
-        <if test="configId !=null and configId != ''">
-            , t.config_id= #{configId}
-        </if>
         <if test="feeFlag !=null and feeFlag != ''">
             , t.fee_flag= #{feeFlag}
         </if>
@@ -107,7 +104,6 @@
         <if test="state !=null and state != ''">
             , t.state= #{state}
         </if>
-
         <if test="payerObjType !=null and payerObjType != ''">
             , t.payer_obj_type= #{payerObjType}
         </if>
@@ -121,6 +117,9 @@
         <if test="communityId !=null and communityId != ''">
             and t.community_id= #{communityId}
         </if>
+        <if test="configId !=null and configId != ''">
+            and t.config_id= #{configId}
+        </if>
     </update>
 
     <!-- 查询费用明细数量 add by wuxw 2018-07-03 -->

+ 34 - 0
service-fee/src/main/java/com/java110/fee/cmd/feeConfig/UpdateFeeConfigCmd.java

@@ -7,9 +7,13 @@ import com.java110.core.context.ICmdDataFlowContext;
 import com.java110.core.event.cmd.Cmd;
 import com.java110.core.event.cmd.CmdEvent;
 import com.java110.dto.fee.FeeConfigDto;
+import com.java110.dto.payFeeRule.PayFeeRuleDto;
 import com.java110.intf.fee.IFeeConfigInnerServiceSMO;
 import com.java110.intf.fee.IPayFeeConfigV1InnerServiceSMO;
+import com.java110.intf.fee.IPayFeeRuleV1InnerServiceSMO;
+import com.java110.intf.fee.IPayFeeV1InnerServiceSMO;
 import com.java110.po.fee.PayFeeConfigPo;
+import com.java110.po.fee.PayFeePo;
 import com.java110.utils.exception.CmdException;
 import com.java110.utils.util.Assert;
 import com.java110.utils.util.BeanConvertUtil;
@@ -27,6 +31,12 @@ public class UpdateFeeConfigCmd extends Cmd {
     @Autowired
     private IFeeConfigInnerServiceSMO feeConfigInnerServiceSMOImpl;
 
+    @Autowired
+    private IPayFeeRuleV1InnerServiceSMO payFeeRuleV1InnerServiceSMOImpl;
+
+    @Autowired
+    private IPayFeeV1InnerServiceSMO payFeeV1InnerServiceSMOImpl;
+
     @Override
     public void validate(CmdEvent event, ICmdDataFlowContext cmdDataFlowContext, JSONObject reqJson) throws CmdException {
         Assert.hasKeyAndValue(reqJson, "configId", "费用项ID不能为空");
@@ -59,5 +69,29 @@ public class UpdateFeeConfigCmd extends Cmd {
             throw new CmdException("修改费用项失败");
         }
         cmdDataFlowContext.setResponseEntity(ResultVo.success());
+        //todo 修改费用标识
+        if (!reqJson.containsKey("feeFlag")) {
+            return;
+        }
+        String feeFlag = reqJson.getString("feeFlag");
+        //todo 说明没有修改费用项标识
+        if (feeFlag.equals(feeConfigDtos.get(0).getFeeFlag())) {
+            return;
+        }
+
+        // todo 检查是否为账单模式,也就是在 poy_fee_rule 中是否有数据,这里有数据不让修改
+        PayFeeRuleDto payFeeRuleDto = new PayFeeRuleDto();
+        payFeeRuleDto.setConfigId(feeConfigDtos.get(0).getConfigId());
+        payFeeRuleDto.setCommunityId(reqJson.getString("communityId"));
+        int count = payFeeRuleV1InnerServiceSMOImpl.queryPayFeeRulesCount(payFeeRuleDto);
+        if (count > 0) {
+            return;
+        }
+
+        PayFeePo payFeePo = new PayFeePo();
+        payFeePo.setConfigId(feeConfigDtos.get(0).getConfigId());
+        payFeePo.setFeeFlag(reqJson.getString("feeFlag"));
+
+        payFeeV1InnerServiceSMOImpl.updatePayFee(payFeePo);
     }
 }

+ 53 - 12
service-fee/src/main/java/com/java110/fee/cmd/payFeeRule/ListPayFeeRuleCmd.java

@@ -22,16 +22,21 @@ 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.payFeeRuleBill.PayFeeRuleBillDto;
+import com.java110.intf.fee.IPayFeeRuleBillV1InnerServiceSMO;
 import com.java110.intf.fee.IPayFeeRuleV1InnerServiceSMO;
 import com.java110.po.payFeeRule.PayFeeRulePo;
 import com.java110.utils.exception.CmdException;
 import com.java110.utils.util.Assert;
 import com.java110.utils.util.BeanConvertUtil;
+import com.java110.utils.util.StringUtil;
 import com.java110.vo.ResultVo;
 import org.springframework.beans.factory.annotation.Autowired;
 import com.java110.dto.payFeeRule.PayFeeRuleDto;
+
 import java.util.List;
 import java.util.ArrayList;
+
 import org.springframework.http.ResponseEntity;
 import org.springframework.http.HttpStatus;
 import org.slf4j.Logger;
@@ -51,35 +56,71 @@ import org.slf4j.LoggerFactory;
 @Java110Cmd(serviceCode = "payFeeRule.listPayFeeRule")
 public class ListPayFeeRuleCmd extends Cmd {
 
-  private static Logger logger = LoggerFactory.getLogger(ListPayFeeRuleCmd.class);
+    private static Logger logger = LoggerFactory.getLogger(ListPayFeeRuleCmd.class);
     @Autowired
     private IPayFeeRuleV1InnerServiceSMO payFeeRuleV1InnerServiceSMOImpl;
 
+    @Autowired
+    private IPayFeeRuleBillV1InnerServiceSMO payFeeRuleBillV1InnerServiceSMOImpl;
+
     @Override
     public void validate(CmdEvent event, ICmdDataFlowContext cmdDataFlowContext, JSONObject reqJson) {
         super.validatePageInfo(reqJson);
         Assert.hasKeyAndValue(reqJson, "communityId", "communityId不能为空");
+
     }
 
     @Override
     public void doCmd(CmdEvent event, ICmdDataFlowContext cmdDataFlowContext, JSONObject reqJson) throws CmdException {
 
-           PayFeeRuleDto payFeeRuleDto = BeanConvertUtil.covertBean(reqJson, PayFeeRuleDto.class);
+        PayFeeRuleDto payFeeRuleDto = BeanConvertUtil.covertBean(reqJson, PayFeeRuleDto.class);
+
+        //todo 如果根据费用ID查询账单规则
+        ifHasFeeId(reqJson, payFeeRuleDto);
+
+        int count = payFeeRuleV1InnerServiceSMOImpl.queryPayFeeRulesCount(payFeeRuleDto);
+
+        List<PayFeeRuleDto> payFeeRuleDtos = null;
+
+        if (count > 0) {
+            payFeeRuleDtos = payFeeRuleV1InnerServiceSMOImpl.queryPayFeeRules(payFeeRuleDto);
+        } else {
+            payFeeRuleDtos = new ArrayList<>();
+        }
+
+        ResultVo resultVo = new ResultVo((int) Math.ceil((double) count / (double) reqJson.getInteger("row")), count, payFeeRuleDtos);
+
+        ResponseEntity<String> responseEntity = new ResponseEntity<String>(resultVo.toString(), HttpStatus.OK);
+
+        cmdDataFlowContext.setResponseEntity(responseEntity);
+    }
+
+    /**
+     * 查询ruleId
+     * @param reqJson
+     * @param payFeeRuleDto
+     */
+    private void ifHasFeeId(JSONObject reqJson, PayFeeRuleDto payFeeRuleDto) {
 
-           int count = payFeeRuleV1InnerServiceSMOImpl.queryPayFeeRulesCount(payFeeRuleDto);
+        if (!reqJson.containsKey("feeId")) {
+            return;
+        }
 
-           List<PayFeeRuleDto> payFeeRuleDtos = null;
+        String feeId = reqJson.getString("feeId");
 
-           if (count > 0) {
-               payFeeRuleDtos = payFeeRuleV1InnerServiceSMOImpl.queryPayFeeRules(payFeeRuleDto);
-           } else {
-               payFeeRuleDtos = new ArrayList<>();
-           }
+        if (StringUtil.isEmpty(feeId)) {
+            return;
+        }
 
-           ResultVo resultVo = new ResultVo((int) Math.ceil((double) count / (double) reqJson.getInteger("row")), count, payFeeRuleDtos);
+        PayFeeRuleBillDto payFeeRuleBillDto = new PayFeeRuleBillDto();
+        payFeeRuleBillDto.setFeeId(feeId);
+        payFeeRuleBillDto.setCommunityId(payFeeRuleDto.getCommunityId());
+        List<PayFeeRuleBillDto> payFeeRuleBillDtos = payFeeRuleBillV1InnerServiceSMOImpl.queryPayFeeRuleBills(payFeeRuleBillDto);
 
-           ResponseEntity<String> responseEntity = new ResponseEntity<String>(resultVo.toString(), HttpStatus.OK);
+        if (payFeeRuleBillDtos == null || payFeeRuleBillDtos.isEmpty()) {
+            return;
+        }
 
-           cmdDataFlowContext.setResponseEntity(responseEntity);
+        payFeeRuleDto.setRuleId(payFeeRuleBillDtos.get(0).getRuleId());
     }
 }

+ 1 - 1
service-user/src/main/java/com/java110/user/smo/impl/OwnerV1InnerServiceSMOImpl.java

@@ -99,7 +99,7 @@ public class OwnerV1InnerServiceSMOImpl extends BaseServiceSMO implements IOwner
             accountPo.setLink(ownerDtos.get(0).getLink());
             accountInnerServiceSMOImpl.saveAccount(accountPo);
         } finally {
-            DistributedLock.releaseDistributedLock(requestId, key);
+            DistributedLock.releaseDistributedLock(key, requestId);
         }
     }