From 890d242d8b36aecd36c4a5f506384a08ea7b12a6 Mon Sep 17 00:00:00 2001
From: Your Name <you@example.com>
Date: 星期五, 08 九月 2023 20:27:51 +0800
Subject: [PATCH] 优化代码

---
 java110-core/src/main/java/com/java110/core/smo/impl/ComputeFeeSMOImpl.java |  143 ++++++++++++++++++++++++-----------------------
 1 files changed, 72 insertions(+), 71 deletions(-)

diff --git a/java110-core/src/main/java/com/java110/core/smo/impl/ComputeFeeSMOImpl.java b/java110-core/src/main/java/com/java110/core/smo/impl/ComputeFeeSMOImpl.java
index 2087572..4d533ce 100755
--- a/java110-core/src/main/java/com/java110/core/smo/impl/ComputeFeeSMOImpl.java
+++ b/java110-core/src/main/java/com/java110/core/smo/impl/ComputeFeeSMOImpl.java
@@ -968,12 +968,12 @@
 
         //todo 濡傛灉 cycle 涓�105 鍒� 鏍规嵁缂磋垂鏃堕棿娈� 鏀瑰啓涓�
         if ("105".equals(feeDto.getCycle())) {
-            double cycle = dayCompare(DateUtil.getDateFromStringB(feeDto.getCustomStartTime()), DateUtil.getDateFromStringB(feeDto.getCustomEndTime()));
+            double cycle = DateUtil.dayCompare(DateUtil.getDateFromStringB(feeDto.getCustomStartTime()), DateUtil.getDateFromStringB(feeDto.getCustomEndTime()));
             feeDto.setCycle(cycle + "");
         }
         // todo 鎸夌粨鏉熸椂闂寸即璐�
         if (!StringUtil.isEmpty(feeDto.getCustEndTime())) {
-            double cycle = dayCompare(feeDto.getEndTime(), DateUtil.getDateFromStringB(feeDto.getCustEndTime()));
+            double cycle = DateUtil.dayCompare(feeDto.getEndTime(), DateUtil.getDateFromStringB(feeDto.getCustEndTime()));
             feeDto.setCycle(cycle + "");
         }
 
@@ -1734,7 +1734,7 @@
             long paymentCycle = Long.parseLong(feeDto.getPaymentCycle());
             // 褰撳墠鏃堕棿 - 寮�濮嬫椂闂�  = 鏈堜唤
             double mulMonth = 0.0;
-            mulMonth = dayCompare(startDate, billEndTime);
+            mulMonth = DateUtil.dayCompare(startDate, billEndTime);
 
             // 鏈堜唤/ 鍛ㄦ湡 = 杞暟锛堝悜涓婂彇鏁达級
             double round = 0.0;
@@ -1761,7 +1761,7 @@
             //璇存槑娆犺垂
             if (endDate.getTime() < targetEndDate.getTime()) {
                 // 鐩爣鍒版湡鏃堕棿 - 鍒版湡鏃堕棿 = 娆犺垂鏈堜唤
-                oweMonth = dayCompare(endDate, targetEndDate);
+                oweMonth = DateUtil.dayCompare(endDate, targetEndDate);
             }
 
             if (feeDto.getEndTime().getTime() > targetEndDate.getTime()) {
@@ -1778,7 +1778,7 @@
             long paymentCycle = Long.parseLong(feeDto.getPaymentCycle());
             // 褰撳墠鏃堕棿 - 寮�濮嬫椂闂�  = 鏈堜唤
             double mulMonth = 0.0;
-            mulMonth = dayCompare(startDate, billEndTime);
+            mulMonth = DateUtil.dayCompare(startDate, billEndTime);
 
             // 鏈堜唤/ 鍛ㄦ湡 = 杞暟锛堝悜涓婂彇鏁达級
             double round = 0.0;
@@ -1804,7 +1804,7 @@
             //璇存槑娆犺垂
             if (endDate.getTime() < targetEndDate.getTime()) {
                 // 鐩爣鍒版湡鏃堕棿 - 鍒版湡鏃堕棿 = 娆犺垂鏈堜唤
-                oweMonth = dayCompare(endDate, targetEndDate);
+                oweMonth = DateUtil.dayCompare(endDate, targetEndDate);
             }
 
             if (feeDto.getEndTime().getTime() > targetEndDate.getTime()) {
@@ -1821,68 +1821,69 @@
         return getTargetEndDateAndOweMonth(feeDto, null);
     }
 
-    /**
-     * 璁$畻 涓や釜鏃堕棿鐐规湀浠�
-     *
-     * @param fromDate 寮�濮嬫椂闂�
-     * @param toDate   缁撴潫鏃堕棿
-     * @return
-     */
-    @Override
-    public double dayCompare(Date fromDate, Date toDate) {
-        double resMonth = 0.0;
-        Calendar from = Calendar.getInstance();
-        from.setTime(fromDate);
-        Calendar to = Calendar.getInstance();
-        to.setTime(toDate);
-        //姣旇緝鏈堜唤宸� 鍙兘鏈夋暣鏁� 涔熶細璐熸暟
-        int result = to.get(Calendar.MONTH) - from.get(Calendar.MONTH);
-        //姣旇緝骞村樊
-        int month = (to.get(Calendar.YEAR) - from.get(Calendar.YEAR)) * 12;
 
-        //鐪熷疄 鐩稿樊鏈堜唤
-        result = result + month;
-
-        //寮�濮嬫椂闂�  2021-06-01  2021-08-05   result = 2    2021-08-01
-        Calendar newFrom = Calendar.getInstance();
-        newFrom.setTime(fromDate);
-        newFrom.add(Calendar.MONTH, result);
-        //濡傛灉鍔犳湀浠藉悗 澶т簬浜嗗綋鍓嶆椂闂� 榛樿鍔� 鏈堜唤 -1 鎯呭喌 12-19  21-01-10
-        //杩欎釜鏄鐨勯�昏緫涓�瀹氬ソ濂界悊瑙�
-        if (newFrom.getTime().getTime() > toDate.getTime()) {
-            newFrom.setTime(fromDate);
-            result = result - 1;
-            newFrom.add(Calendar.MONTH, result);
-        }
-
-        // t1 2021-08-01   t2 2021-08-05
-        long t1 = newFrom.getTime().getTime();
-        long t2 = to.getTime().getTime();
-        //鐩稿樊姣
-        double days = (t2 - t1) * 1.00 / (24 * 60 * 60 * 1000);
-        BigDecimal tmpDays = new BigDecimal(days); //鐩稿樊澶╂暟
-        BigDecimal monthDay = null;
-        Calendar newFromMaxDay = Calendar.getInstance();
-        newFromMaxDay.set(newFrom.get(Calendar.YEAR), newFrom.get(Calendar.MONTH), 1, 0, 0, 0);
-        newFromMaxDay.add(Calendar.MONTH, 1); //涓嬩釜鏈�1鍙�
-        //鍦ㄥ綋鍓嶆湀涓� 杩欏潡鏈夐棶棰�
-        if (toDate.getTime() < newFromMaxDay.getTime().getTime()) {
-            monthDay = new BigDecimal(newFrom.getActualMaximum(Calendar.DAY_OF_MONTH));
-            return tmpDays.divide(monthDay, 4, BigDecimal.ROUND_HALF_UP).add(new BigDecimal(result)).doubleValue();
-        }
-        // 涓婃湀澶╂暟
-        days = (newFromMaxDay.getTimeInMillis() - t1) * 1.00 / (24 * 60 * 60 * 1000);
-        tmpDays = new BigDecimal(days);
-        monthDay = new BigDecimal(newFrom.getActualMaximum(Calendar.DAY_OF_MONTH));
-        BigDecimal preRresMonth = tmpDays.divide(monthDay, 4, BigDecimal.ROUND_HALF_UP);
-
-        //涓嬫湀澶╂暟
-        days = (t2 - newFromMaxDay.getTimeInMillis()) * 1.00 / (24 * 60 * 60 * 1000);
-        tmpDays = new BigDecimal(days);
-        monthDay = new BigDecimal(newFromMaxDay.getActualMaximum(Calendar.DAY_OF_MONTH));
-        resMonth = tmpDays.divide(monthDay, 4, BigDecimal.ROUND_HALF_UP).add(new BigDecimal(result)).add(preRresMonth).doubleValue();
-        return resMonth;
-    }
+//    /**
+//     * 璁$畻 涓や釜鏃堕棿鐐规湀浠�
+//     *
+//     * @param fromDate 寮�濮嬫椂闂�
+//     * @param toDate   缁撴潫鏃堕棿
+//     * @return
+//     */
+//
+//    public double dayCompareOld(Date fromDate, Date toDate) {
+//        double resMonth = 0.0;
+//        Calendar from = Calendar.getInstance();
+//        from.setTime(fromDate);
+//        Calendar to = Calendar.getInstance();
+//        to.setTime(toDate);
+//        //姣旇緝鏈堜唤宸� 鍙兘鏈夋暣鏁� 涔熶細璐熸暟
+//        int result = to.get(Calendar.MONTH) - from.get(Calendar.MONTH);
+//        //姣旇緝骞村樊
+//        int month = (to.get(Calendar.YEAR) - from.get(Calendar.YEAR)) * 12;
+//
+//        //鐪熷疄 鐩稿樊鏈堜唤
+//        result = result + month;
+//
+//        //寮�濮嬫椂闂�  2021-06-01  2021-08-05   result = 2    2021-08-01
+//        Calendar newFrom = Calendar.getInstance();
+//        newFrom.setTime(fromDate);
+//        newFrom.add(Calendar.MONTH, result);
+//        //濡傛灉鍔犳湀浠藉悗 澶т簬浜嗗綋鍓嶆椂闂� 榛樿鍔� 鏈堜唤 -1 鎯呭喌 12-19  21-01-10
+//        //杩欎釜鏄鐨勯�昏緫涓�瀹氬ソ濂界悊瑙�
+//        if (newFrom.getTime().getTime() > toDate.getTime()) {
+//            newFrom.setTime(fromDate);
+//            result = result - 1;
+//            newFrom.add(Calendar.MONTH, result);
+//        }
+//
+//        // t1 2021-08-01   t2 2021-08-05
+//        long t1 = newFrom.getTime().getTime();
+//        long t2 = to.getTime().getTime();
+//        //鐩稿樊姣
+//        double days = (t2 - t1) * 1.00 / (24 * 60 * 60 * 1000);
+//        BigDecimal tmpDays = new BigDecimal(days); //鐩稿樊澶╂暟
+//        BigDecimal monthDay = null;
+//        Calendar newFromMaxDay = Calendar.getInstance();
+//        newFromMaxDay.set(newFrom.get(Calendar.YEAR), newFrom.get(Calendar.MONTH), 1, 0, 0, 0);
+//        newFromMaxDay.add(Calendar.MONTH, 1); //涓嬩釜鏈�1鍙�
+//        //鍦ㄥ綋鍓嶆湀涓� 杩欏潡鏈夐棶棰�
+//        if (toDate.getTime() < newFromMaxDay.getTime().getTime()) {
+//            monthDay = new BigDecimal(newFrom.getActualMaximum(Calendar.DAY_OF_MONTH));
+//            return tmpDays.divide(monthDay, 4, BigDecimal.ROUND_HALF_UP).add(new BigDecimal(result)).doubleValue();
+//        }
+//        // 涓婃湀澶╂暟
+//        days = (newFromMaxDay.getTimeInMillis() - t1) * 1.00 / (24 * 60 * 60 * 1000);
+//        tmpDays = new BigDecimal(days);
+//        monthDay = new BigDecimal(newFrom.getActualMaximum(Calendar.DAY_OF_MONTH));
+//        BigDecimal preRresMonth = tmpDays.divide(monthDay, 4, BigDecimal.ROUND_HALF_UP);
+//
+//        //涓嬫湀澶╂暟
+//        days = (t2 - newFromMaxDay.getTimeInMillis()) * 1.00 / (24 * 60 * 60 * 1000);
+//        tmpDays = new BigDecimal(days);
+//        monthDay = new BigDecimal(newFromMaxDay.getActualMaximum(Calendar.DAY_OF_MONTH));
+//        resMonth = tmpDays.divide(monthDay, 4, BigDecimal.ROUND_HALF_UP).add(new BigDecimal(result)).add(preRresMonth).doubleValue();
+//        return resMonth;
+//    }
 
 
     //鎵嬫満绔即璐瑰鐞�
@@ -2204,15 +2205,15 @@
         // todo 濡傛灉璁¤垂璧峰鏃堕棿 灏忓尯 閫掑寮�濮嬫椂闂�
         if (feeDto.getEndTime().getTime() < rateStartTime.getTime()) {
             //todo 閫掑鍓嶇殑娆犺垂
-            curOweMonth = dayCompare(feeDto.getEndTime(), rateStartTime);
+            curOweMonth = DateUtil.dayCompare(feeDto.getEndTime(), rateStartTime);
             oweAmountDec = curFeePrice.multiply(new BigDecimal(curOweMonth)).setScale(FeeConfigConstant.FEE_SCALE, BigDecimal.ROUND_HALF_UP);
             // todo 閫掑
-            curOweMonth = dayCompare(rateStartTime, feeDto.getDeadlineTime());
+            curOweMonth = DateUtil.dayCompare(rateStartTime, feeDto.getDeadlineTime());
         } else {
             // todo 閫掑
-            curOweMonth = dayCompare(feeDto.getEndTime(), feeDto.getDeadlineTime());
+            curOweMonth = DateUtil.dayCompare(feeDto.getEndTime(), feeDto.getDeadlineTime());
         }
-        double rateMonth = dayCompare(rateStartTime, feeDto.getDeadlineTime());
+        double rateMonth = DateUtil.dayCompare(rateStartTime, feeDto.getDeadlineTime());
 
         // todo 鏈�澶у懆鏈�
         double maxCycle = Math.ceil(rateMonth / rateCycle);

--
Gitblit v1.8.0