From 5659983f778bf64fbca6a3c76616a50834180b7c Mon Sep 17 00:00:00 2001
From: java110 <928255095@qq.com>
Date: 星期四, 21 七月 2022 18:22:18 +0800
Subject: [PATCH] 优化代码

---
 java110-core/src/main/java/com/java110/core/smo/impl/ComputeFeeSMOImpl.java |   23 +++++++++++++----------
 1 files changed, 13 insertions(+), 10 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 0c39d83..82d5f5b 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
@@ -1949,29 +1949,32 @@
 
         double maxCycle = Math.floor(curOweMonth / rateCycle);
 
-        //鍩哄噯
-        BigDecimal firstAmount = curFeePrice.multiply(new BigDecimal(rateCycle));
-        BigDecimal preCycleAmount = firstAmount;
+        // 澧為暱鍓嶇殑娆犺垂
+        BigDecimal addTotalAmount = oweAmountDec ;
+        BigDecimal preCycleAmount = curFeePrice.multiply(new BigDecimal(rateCycle));
         BigDecimal rateDec = null; //閫掑鍛ㄦ湡鎵�鏀惰垂鐢�
         BigDecimal lastRateAmountDec = null;
         double curCycle = 0;
+        BigDecimal curAmount = null; // 褰撴湡閲戦
         for (int cycleIndex = 0; cycleIndex < maxCycle; cycleIndex++) {
+            //褰撴湡澧為暱閮ㄥ垎
             rateDec = preCycleAmount.multiply(new BigDecimal(rate)).setScale(2, BigDecimal.ROUND_HALF_UP);
             //澧為暱鍛ㄦ湡鐨勫�嶆暟
             curCycle = (cycleIndex + 1) * rateCycle;
             if (curCycle > curOweMonth) {
+                //涓嶈冻澧為暱鍛ㄦ湡澧為暱鐜�
                 rateDec = new BigDecimal(curOweMonth / rateCycle - Math.ceil(curOweMonth / rateCycle)).multiply(rateDec).setScale(2, BigDecimal.ROUND_HALF_UP);
                 lastRateAmountDec = new BigDecimal(curOweMonth / rateCycle - Math.ceil(curOweMonth / rateCycle)).multiply(preCycleAmount).setScale(2, BigDecimal.ROUND_HALF_UP);
-                firstAmount = firstAmount.add(rateDec).add(lastRateAmountDec);
+                addTotalAmount = addTotalAmount.add(rateDec).add(lastRateAmountDec);
                 continue;
             }
-            firstAmount = firstAmount.add(rateDec).add(preCycleAmount);
-            preCycleAmount = preCycleAmount.add(rateDec);
+            //鏈湡閲戦
+            curAmount = rateDec.add(preCycleAmount);// 澧為暱閮ㄥ垎 + 涓婃湰鏈熻垂鐢�
+            addTotalAmount = addTotalAmount.add(curAmount); // 璁″叆鎬荤殑 璐圭敤涓�
+            preCycleAmount = curAmount;
         }
-
-        firstAmount = firstAmount.add(oweAmountDec);
-        feeDto.setAmountOwed(firstAmount.doubleValue() + "");
-        feeDto.setFeeTotalPrice(firstAmount.doubleValue());
+        feeDto.setAmountOwed(addTotalAmount.doubleValue() + "");
+        feeDto.setFeeTotalPrice(addTotalAmount.doubleValue());
     }
 }
 

--
Gitblit v1.8.0