Преглед изворни кода

按月交费功能开发完成

Your Name пре 2 година
родитељ
комит
62c0cd818e
1 измењених фајлова са 23 додато и 13 уклоњено
  1. 23 13
      service-fee/src/main/java/com/java110/fee/cmd/fee/PayMonthFeeCmd.java

+ 23 - 13
service-fee/src/main/java/com/java110/fee/cmd/fee/PayMonthFeeCmd.java

@@ -159,11 +159,27 @@ public class PayMonthFeeCmd extends Cmd {
 
         List<PayFeeDetailMonthDto> payFeeDetailMonthDtos = (List<PayFeeDetailMonthDto>) reqJson.get("payFeeDetailMonthDtos");
 
+        Calendar createTimeCal = Calendar.getInstance();
+
+        Map<String, FeeDto> feeDtoMap = new HashMap<>();
 
         JSONArray details = new JSONArray();
         for (PayFeeDetailMonthDto payFeeDetailMonthDto : payFeeDetailMonthDtos) {
+            // todo 费用只查一次提高 效率
+            if (!feeDtoMap.containsKey(payFeeDetailMonthDto.getFeeId())) {
+                //todo 查询费用是否存在
+                FeeDto feeDto = new FeeDto();
+                feeDto.setFeeId(payFeeDetailMonthDto.getFeeId());
+                feeDto.setCommunityId(payFeeDetailMonthDto.getCommunityId());
+                List<FeeDto> feeDtos = feeInnerServiceSMOImpl.queryFees(feeDto);
+                if (feeDtos == null || feeDtos.size() != 1) {
+                    throw new CmdException("费用不存在");
+                }
+                feeDtoMap.put(payFeeDetailMonthDto.getFeeId(), feeDtos.get(0));
+            }
+            createTimeCal.add(Calendar.SECOND, 1);
             try {
-                doMonthFee(payFeeDetailMonthDto, context, userDtos.get(0), reqJson);
+                doMonthFee(payFeeDetailMonthDto, context, userDtos.get(0), reqJson, createTimeCal.getTime(), feeDtoMap);
             } catch (Exception e) {
                 logger.error("处理异常", e);
                 throw new CmdException(e.getMessage());
@@ -185,7 +201,7 @@ public class PayMonthFeeCmd extends Cmd {
      * @param userDto
      * @param reqJson
      */
-    private void doMonthFee(PayFeeDetailMonthDto payFeeDetailMonthDto, ICmdDataFlowContext context, UserDto userDto, JSONObject reqJson) {
+    private void doMonthFee(PayFeeDetailMonthDto payFeeDetailMonthDto, ICmdDataFlowContext context, UserDto userDto, JSONObject reqJson, Date createTime, Map<String, FeeDto> feeDtoMap) {
         //todo 计算结束时间
         Date startTime = DateUtil.getDateFromStringB(payFeeDetailMonthDto.getCurMonthTime());
         Calendar calendar = Calendar.getInstance();
@@ -193,14 +209,6 @@ public class PayMonthFeeCmd extends Cmd {
         calendar.add(Calendar.MONTH, 1);
         String endTime = DateUtil.getFormatTimeStringB(calendar.getTime());
 
-        //todo 查询费用是否存在
-        FeeDto feeDto = new FeeDto();
-        feeDto.setFeeId(payFeeDetailMonthDto.getFeeId());
-        feeDto.setCommunityId(payFeeDetailMonthDto.getCommunityId());
-        List<FeeDto> feeDtos = feeInnerServiceSMOImpl.queryFees(feeDto);
-        if (feeDtos == null || feeDtos.size() != 1) {
-            throw new CmdException("费用不存在");
-        }
 
         //获取订单ID
         String oId = Java110TransactionalFactory.getOId();
@@ -218,12 +226,14 @@ public class PayMonthFeeCmd extends Cmd {
             }
             payFeeDetailPo.setPayOrderId(oId);
             payFeeDetailPo.setEndTime(endTime);
+            // todo 按月交费时 主要按时间顺序排序时 能够整齐
+            payFeeDetailPo.setCreateTime(DateUtil.getFormatTimeStringA(createTime));
 
             int flag = payFeeDetailNewV1InnerServiceSMOImpl.savePayFeeDetailNew(payFeeDetailPo);
             if (flag < 1) {
                 throw new CmdException("缴费失败");
             }
-            payFeePo = modifyFee(payFeeDetailMonthDto, reqJson, feeDtos.get(0), endTime);
+            payFeePo = modifyFee(payFeeDetailMonthDto, reqJson, feeDtoMap.get(payFeeDetailMonthDto.getFeeId()), endTime);
 
             flag = payFeeV1InnerServiceSMOImpl.updatePayFee(payFeePo);
             if (flag < 1) {
@@ -238,10 +248,10 @@ public class PayMonthFeeCmd extends Cmd {
             DistributedLock.releaseDistributedLock(key, requestId);
         }
         //车辆延期
-        updateOwnerCarEndTime(payFeePo, reqJson, feeDtos.get(0));
+        updateOwnerCarEndTime(payFeePo, reqJson, feeDtoMap.get(payFeeDetailMonthDto.getFeeId()));
 
         //处理报修单
-        doDealRepairOrder(payFeeDetailMonthDto, feeDtos.get(0));
+        doDealRepairOrder(payFeeDetailMonthDto, feeDtoMap.get(payFeeDetailMonthDto.getFeeId()));
 
 
     }