From 32b1dd66a498de577da33f057bfd2cff9d9643bf Mon Sep 17 00:00:00 2001
From: Your Name <you@example.com>
Date: 星期三, 18 一月 2023 22:06:49 +0800
Subject: [PATCH] 优化交费时 的后付费的bug

---
 service-fee/src/main/java/com/java110/fee/cmd/fee/PayFeeCmd.java |   97 +++++++++++++++++++++++++++++-------------------
 1 files changed, 59 insertions(+), 38 deletions(-)

diff --git a/service-fee/src/main/java/com/java110/fee/cmd/fee/PayFeeCmd.java b/service-fee/src/main/java/com/java110/fee/cmd/fee/PayFeeCmd.java
index eeaa750..8a8ebd8 100644
--- a/service-fee/src/main/java/com/java110/fee/cmd/fee/PayFeeCmd.java
+++ b/service-fee/src/main/java/com/java110/fee/cmd/fee/PayFeeCmd.java
@@ -494,45 +494,67 @@
      */
     private void updateCarEndTime(JSONObject paramObj) {
         int flag;
-        if (paramObj.containsKey("carPayerObjType") && FeeDto.PAYER_OBJ_TYPE_CAR.equals(paramObj.getString("carPayerObjType"))) {
-            Date feeEndTime = (Date) paramObj.get("carFeeEndTime");
-            OwnerCarDto ownerCarDto = new OwnerCarDto();
-            ownerCarDto.setCommunityId(paramObj.getString("communityId"));
-            ownerCarDto.setCarId(paramObj.getString("carPayerObjId"));
-            ownerCarDto.setCarTypeCd("1001"); //涓氫富杞﹁締
-            List<OwnerCarDto> ownerCarDtos = ownerCarInnerServiceSMOImpl.queryOwnerCars(ownerCarDto);
-            Assert.listOnlyOne(ownerCarDtos, "鏌ヨ涓氫富閿欒锛�");
-            //鑾峰彇杞︿綅id
-            String psId = ownerCarDtos.get(0).getPsId();
-            //鑾峰彇杞﹁締鐘舵��(1001 姝e父鐘舵�侊紝2002 娆犺垂鐘舵��  3003 杞︿綅閲婃斁)
-            String carState = ownerCarDtos.get(0).getState();
-            if (!StringUtil.isEmpty(psId) && !StringUtil.isEmpty(carState) && carState.equals("3003")) {
-                ParkingSpaceDto parkingSpaceDto = new ParkingSpaceDto();
-                parkingSpaceDto.setPsId(psId);
-                List<ParkingSpaceDto> parkingSpaceDtos = parkingSpaceInnerServiceSMOImpl.queryParkingSpaces(parkingSpaceDto);
-                Assert.listOnlyOne(parkingSpaceDtos, "鏌ヨ杞︿綅淇℃伅閿欒锛�");
-                //鑾峰彇杞︿綅鐘舵��(鍑哄敭 S锛屽嚭绉� H 锛岀┖闂� F)
-                String state = parkingSpaceDtos.get(0).getState();
-                if (!StringUtil.isEmpty(state) && !state.equals("F")) {
-                    throw new IllegalArgumentException("杞︿綅宸茶浣跨敤锛屼笉鑳藉啀缂磋垂锛�");
-                }
-            }
-            //杞︿綅璐圭敤缁
-            if (ownerCarDtos != null) {
-                for (OwnerCarDto tmpOwnerCarDto : ownerCarDtos) {
-                    if (tmpOwnerCarDto.getEndTime().getTime() >= feeEndTime.getTime()) {
-                        continue;
-                    }
-                    OwnerCarPo ownerCarPo = new OwnerCarPo();
-                    ownerCarPo.setMemberId(tmpOwnerCarDto.getMemberId());
-                    ownerCarPo.setEndTime(DateUtil.getFormatTimeString(feeEndTime, DateUtil.DATE_FORMATE_STRING_A));
-                    flag = ownerCarNewV1InnerServiceSMOImpl.updateOwnerCarNew(ownerCarPo);
-                    if (flag < 1) {
-                        throw new CmdException("缂磋垂澶辫触");
-                    }
-                }
+        FeeDto feeDto = new FeeDto();
+        feeDto.setFeeId(paramObj.getString("feeId"));
+        feeDto.setCommunityId(paramObj.getString("communityId"));
+        List<FeeDto> feeDtos = feeInnerServiceSMOImpl.queryFees(feeDto);
+
+        if(feeDtos == null || feeDtos.size() < 1){
+            return;
+        }
+        if (!FeeDto.PAYER_OBJ_TYPE_CAR.equals(feeDtos.get(0).getPayerObjType())) {
+            return;
+        }
+        Date feeEndTime = feeDtos.get(0).getEndTime();
+        OwnerCarDto ownerCarDto = new OwnerCarDto();
+        ownerCarDto.setCommunityId(paramObj.getString("communityId"));
+        ownerCarDto.setCarId(feeDtos.get(0).getPayerObjId());
+        ownerCarDto.setCarTypeCd("1001"); //涓氫富杞﹁締
+        List<OwnerCarDto> ownerCarDtos = ownerCarInnerServiceSMOImpl.queryOwnerCars(ownerCarDto);
+
+        if (ownerCarDtos == null || ownerCarDtos.size() < 1) {
+            return;
+        }
+        //鑾峰彇杞︿綅id
+        String psId = ownerCarDtos.get(0).getPsId();
+        //鑾峰彇杞﹁締鐘舵��(1001 姝e父鐘舵�侊紝2002 娆犺垂鐘舵��  3003 杞︿綅閲婃斁)
+        String carState = ownerCarDtos.get(0).getState();
+        if (!StringUtil.isEmpty(psId) && "3003".equals(carState)) {
+            ParkingSpaceDto parkingSpaceDto = new ParkingSpaceDto();
+            parkingSpaceDto.setPsId(psId);
+            List<ParkingSpaceDto> parkingSpaceDtos = parkingSpaceInnerServiceSMOImpl.queryParkingSpaces(parkingSpaceDto);
+            Assert.listOnlyOne(parkingSpaceDtos, "鏌ヨ杞︿綅淇℃伅閿欒锛�");
+            //鑾峰彇杞︿綅鐘舵��(鍑哄敭 S锛屽嚭绉� H 锛岀┖闂� F)
+            String state = parkingSpaceDtos.get(0).getState();
+            if (!StringUtil.isEmpty(state) && !state.equals("F")) {
+                throw new IllegalArgumentException("杞︿綅宸茶浣跨敤锛屼笉鑳藉啀缂磋垂锛�");
             }
         }
+
+
+        Calendar endTimeCalendar = null;
+        //杞︿綅璐圭敤缁
+        for (OwnerCarDto tmpOwnerCarDto : ownerCarDtos) {
+            //鍚庝粯璐� 鍔犱竴涓湀
+            if(FeeConfigDto.PAYMENT_CD_AFTER.equals(feeDtos.get(0).getPaymentCd())){
+                endTimeCalendar = Calendar.getInstance();
+                endTimeCalendar.setTime(feeEndTime);
+                endTimeCalendar.add(Calendar.MONTH,1);
+                feeEndTime = endTimeCalendar.getTime();
+            }
+            if (tmpOwnerCarDto.getEndTime().getTime() >= feeEndTime.getTime()) {
+                continue;
+            }
+            OwnerCarPo ownerCarPo = new OwnerCarPo();
+            ownerCarPo.setMemberId(tmpOwnerCarDto.getMemberId());
+            ownerCarPo.setEndTime(DateUtil.getFormatTimeString(feeEndTime, DateUtil.DATE_FORMATE_STRING_A));
+            flag = ownerCarNewV1InnerServiceSMOImpl.updateOwnerCarNew(ownerCarPo);
+            if (flag < 1) {
+                throw new CmdException("缂磋垂澶辫触");
+            }
+        }
+
+
     }
 
 
@@ -655,7 +677,6 @@
         //-101鑷畾涔夐噾棰� -102鑷畾涔夊懆鏈� -103 鑷畾涔夌粨鏉熸椂闂�
         if ("-101".equals(paramInJson.getString("cycles"))) {
             endCalender = getTargetEndTime(endCalender, Double.parseDouble(paramInJson.getString("tmpCycles")));
-            System.out.println(endCalender);
         } else if ("-103".equals(paramInJson.getString("cycles"))) {
             String custEndTime = paramInJson.getString("custEndTime");
             Date endDates = DateUtil.getDateFromStringB(custEndTime);

--
Gitblit v1.8.0