From 7a095e5d59a428225caca81738a69603578964a3 Mon Sep 17 00:00:00 2001
From: chengf <2156125618@qq.com>
Date: 星期五, 08 八月 2025 18:33:58 +0800
Subject: [PATCH] 折扣逻辑修改2025/08/08

---
 service-fee/src/main/java/com/java110/fee/smo/impl/FeeDiscountInnerServiceSMOImpl.java |   62 ++++++++++++++++++++++++++----
 1 files changed, 53 insertions(+), 9 deletions(-)

diff --git a/service-fee/src/main/java/com/java110/fee/smo/impl/FeeDiscountInnerServiceSMOImpl.java b/service-fee/src/main/java/com/java110/fee/smo/impl/FeeDiscountInnerServiceSMOImpl.java
index 38f1c5f..a81aeba 100755
--- a/service-fee/src/main/java/com/java110/fee/smo/impl/FeeDiscountInnerServiceSMOImpl.java
+++ b/service-fee/src/main/java/com/java110/fee/smo/impl/FeeDiscountInnerServiceSMOImpl.java
@@ -10,6 +10,7 @@
 import com.java110.dto.fee.FeeDiscountRuleDto;
 import com.java110.dto.fee.FeeDiscountSpecDto;
 import com.java110.dto.payFee.PayFeeConfigDiscountDto;
+import com.java110.dto.work.WorkCopyDto;
 import com.java110.fee.dao.IFeeDiscountServiceDao;
 import com.java110.fee.discount.IComputeDiscount;
 import com.java110.intf.fee.*;
@@ -268,22 +269,25 @@
             //鎴垮眿id
             applyRoomDiscountDto.setRoomId(feeDetailDto.getPayerObjId());
             //寮�濮嬫椂闂�
-            applyRoomDiscountDto.setStartTime(simpleDateFormat.format(feeDetailDto.getStartTime()));
+//            applyRoomDiscountDto.setStartTime(simpleDateFormat.format(feeDetailDto.getStartTime()));
             //缁撴潫鏃堕棿
             c.setTime(feeDetailDto.getStartTime());
-            c.add(Calendar.DAY_OF_MONTH, 2);//寮�濮嬫椂闂达紝娣诲姞1锛�2澶╃殑鍐椾綑锛屽彧瑕佹瘮5灏忓嵆鍙�
-            applyRoomDiscountDto.setStartTime(simpleDateFormat.format(c.getTime()));//閲嶆柊璁剧疆寮�濮嬫椂闂�
+//            c.add(Calendar.DAY_OF_MONTH, 2);//寮�濮嬫椂闂达紝娣诲姞1锛�2澶╃殑鍐椾綑锛屽彧瑕佹瘮5灏忓嵆鍙�
+//            applyRoomDiscountDto.setStartTime(simpleDateFormat.format(c.getTime()));//閲嶆柊璁剧疆寮�濮嬫椂闂�
             double month = Double.parseDouble(feeDetailDto.getCycles());
-            if(month == 105){
-                month = 2;
-            }
+//            if(month == 105){
+//                return;
+//            }
             c.add(Calendar.MONTH, (int) month);
-            c.add(Calendar.DAY_OF_MONTH, -5);//杩欓噷鏍规嵁璁剧疆鏃堕棿鑽h獕5澶�
+//            c.add(Calendar.DAY_OF_MONTH, -5);//杩欓噷鏍规嵁璁剧疆鏃堕棿鑽h獕5澶�
             Date endTime = c.getTime();
-            applyRoomDiscountDto.setEndTime(simpleDateFormat.format(endTime));
+//            applyRoomDiscountDto.setEndTime(simpleDateFormat.format(endTime));
             applyRoomDiscountDto.setFeeId(feeDetailDto.getFeeId());
             //鏌ヨ鎶樻墸鐢宠琛�
             List<ApplyRoomDiscountDto> applyRoomDiscountDtos = applyRoomDiscountInnerServiceSMOImpl.queryApplyRoomDiscounts(applyRoomDiscountDto);
+
+
+
             //鍒ゆ柇鏌ヨ鐨勬姌鎵g敵璇疯〃鏄惁鏈夋暟鎹�
             if (applyRoomDiscountDtos != null && applyRoomDiscountDtos.size() > 0) {
                 //鑾峰彇浼樻儬id
@@ -293,11 +297,51 @@
                 PayFeeConfigDiscountDto payFeeConfigDiscount = new PayFeeConfigDiscountDto();
                 payFeeConfigDiscount.setCommunityId(applyRoomDiscountDtos.get(0).getCommunityId());
                 payFeeConfigDiscount.setDiscountId(discountId);
-                doCompute(payFeeConfigDiscount, Double.parseDouble(feeDetailDto.getCycles()), computeDiscountDtos, feeDetailDto.getFeeId());
+                if(applyRoomDiscountDtos.get(0).getStartTime() == null){
+                    payFeeConfigDiscount.setStartTime(feeDetailDto.getStartTime());
+                }else if(DateUtil.getDateFromStringB(applyRoomDiscountDtos.get(0).getStartTime()).before(feeDetailDto.getStartTime())){
+                    payFeeConfigDiscount.setStartTime(feeDetailDto.getStartTime());
+                }else{
+                    payFeeConfigDiscount.setStartTime(DateUtil.getDateFromStringB(applyRoomDiscountDtos.get(0).getStartTime()));
+                }
+                if(applyRoomDiscountDtos.get(0).getEndTime() == null){
+                    payFeeConfigDiscount.setEndTime(endTime);
+                }else if(DateUtil.getDateFromStringB(applyRoomDiscountDtos.get(0).getEndTime()).after(endTime)){
+                    payFeeConfigDiscount.setEndTime(endTime);
+                }else{
+                    payFeeConfigDiscount.setEndTime(DateUtil.getDateFromStringB(applyRoomDiscountDtos.get(0).getEndTime()));
+                }
+                double cycle =
+                        DateUtil.dayCompare(
+                                payFeeConfigDiscount.getStartTime(),
+                                payFeeConfigDiscount.getEndTime()
+                        );
+                doComputeB(payFeeConfigDiscount, cycle, computeDiscountDtos, feeDetailDto.getFeeId());
             }
         }
     }
 
+    private void doComputeB(PayFeeConfigDiscountDto tmpPayFeeConfigDiscountDto, double cycles, List<ComputeDiscountDto> computeDiscountDtos, String feeId) {
+        FeeDiscountDto feeDiscountDto = new FeeDiscountDto();
+        feeDiscountDto.setCommunityId(tmpPayFeeConfigDiscountDto.getCommunityId());
+        feeDiscountDto.setDiscountId(tmpPayFeeConfigDiscountDto.getDiscountId());
+        List<FeeDiscountDto> feeDiscountDtos = queryFeeDiscounts(feeDiscountDto);
+        if (feeDiscountDtos == null || feeDiscountDtos.size() < 1) {
+            return;
+        }
+
+        for (FeeDiscountDto tmpFeeDiscountDto : feeDiscountDtos) {
+            tmpFeeDiscountDto.setFeeId(feeId);
+            tmpFeeDiscountDto.setCycles(cycles);
+        }
+        IComputeDiscount computeDiscount = (IComputeDiscount) ApplicationContextFactory.getBean(feeDiscountDtos.get(0).getBeanImpl());
+        ComputeDiscountDto computeDiscountDto = computeDiscount.compute(feeDiscountDtos.get(0));
+        if (computeDiscountDto == null) {
+            return;
+        }
+        computeDiscountDtos.add(computeDiscountDto);
+    }
+
     private void doCompute(PayFeeConfigDiscountDto tmpPayFeeConfigDiscountDto, double cycles, List<ComputeDiscountDto> computeDiscountDtos, String feeId) {
         FeeDiscountDto feeDiscountDto = new FeeDiscountDto();
         feeDiscountDto.setCommunityId(tmpPayFeeConfigDiscountDto.getCommunityId());

--
Gitblit v1.8.0