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