From 31bd44345bca0b0fbe9b03eeb67a7499c702a36b Mon Sep 17 00:00:00 2001
From: java110 <928255095@qq.com>
Date: 星期五, 18 十二月 2020 10:30:04 +0800
Subject: [PATCH] 优化算费

---
 java110-core/src/main/java/com/java110/core/smo/impl/ComputeFeeSMOImpl.java |   40 +++++++++++++++++++++++++++++++++++++---
 1 files changed, 37 insertions(+), 3 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 fdcdee1..47dffb6 100644
--- 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
@@ -774,9 +774,15 @@
         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);
+        }
 
-        long t1 = newFrom.getTimeInMillis();
-        long t2 = to.getTimeInMillis();
+        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;
@@ -792,7 +798,7 @@
         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, 2, BigDecimal.ROUND_HALF_UP).add(new BigDecimal(result));
+        BigDecimal preRresMonth = tmpDays.divide(monthDay, 2, BigDecimal.ROUND_HALF_UP);
 
         //涓嬫湀澶╂暟
         days = (t2 - newFromMaxDay.getTimeInMillis()) * 1.00 / (24 * 60 * 60 * 1000);
@@ -822,4 +828,32 @@
         return endDate.getTime();
     }
 
+    public static void main(String[] args) {
+        ComputeFeeSMOImpl computeFeeSMO = new ComputeFeeSMOImpl();
+        try {
+            double month = computeFeeSMO.dayCompare(
+
+                    DateUtil.getDateFromString("2020-12-19 00:00:00", DateUtil.DATE_FORMATE_STRING_A),
+                    DateUtil.getDateFromString("2021-1-10 00:00:00", DateUtil.DATE_FORMATE_STRING_A)
+            );
+
+            System.out.println(month);
+        } catch (ParseException e) {
+            e.printStackTrace();
+        }
+    }
+
+//    public static void main(String[] args) {
+//        ComputeFeeSMOImpl computeFeeSMO = new ComputeFeeSMOImpl();
+//        try {
+//            Date startTime = DateUtil.getDateFromString("2020-12-31 00:00:00", DateUtil.DATE_FORMATE_STRING_A);
+//            Date endTime = DateUtil.getDateFromString("2021-1-2 00:00:00", DateUtil.DATE_FORMATE_STRING_A);
+//            double day = (endTime.getTime() - startTime.getTime()) * 1.00 / (24 * 60 * 60 * 1000);
+//
+//            System.out.println(day);
+//
+//        } catch (ParseException e) {
+//            e.printStackTrace();
+//        }
+//    }
 }

--
Gitblit v1.8.0