From 45c39c4deba8f37d6152793efc3b271c352fac89 Mon Sep 17 00:00:00 2001
From: Your Name <you@example.com>
Date: 星期五, 25 八月 2023 23:16:52 +0800
Subject: [PATCH] 优化diamante
---
java110-core/src/main/java/com/java110/core/smo/impl/ComputeFeeSMOImpl.java | 77 +++++++++++++++-----------------------
1 files changed, 30 insertions(+), 47 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 f090e5c..5e72802 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
@@ -951,44 +951,7 @@
return getFeePrice(feeDto, null);
}
- /**
- * //璁$畻鍛ㄦ湡
- * // Map<String, Object> cycleResults = dateDiff(feeDto.getEndTime(), feeDto.getCustEndTime());
- * // //鏈堜唤澶т簬0
- * // Integer months = Integer.valueOf(cycleResults.get("months").toString());
- * // Integer days = Integer.valueOf(cycleResults.get("days").toString());
- * // Integer startMonthDays = Integer.valueOf(cycleResults.get("startMonthDays").toString());
- * // Integer endMonthDays = Integer.valueOf(cycleResults.get("endMonthDays").toString());
- * // String isOneMonth = cycleResults.get("isOneMonth").toString();
- * // //鏁存暟鏈�
- * // if (months > 0 && days == 0) {
- * // BigDecimal cycle = new BigDecimal(months);
- * // feeTotalPrice = (squarePrice.multiply(builtUpArea).add(additionalAmount)).multiply(cycle).setScale(3, BigDecimal.ROUND_HALF_UP);
- * // }
- * // //鍑犱釜鏈堝嚑澶� 锛堝崟浠�*闈㈢Н+闄勫姞璐癸級*鏈堜唤+((鍗曚环*闈㈢Н+闄勫姞璐�)/鎬诲ぉ鏁�)*瀹為檯澶╂暟
- * // if (months > 0 && days > 0) {
- * // BigDecimal cycle = new BigDecimal(months);
- * // BigDecimal endMonthDayss = new BigDecimal(endMonthDays);
- * // BigDecimal dayss = new BigDecimal(days);
- * // BigDecimal monthPrice = squarePrice.multiply(builtUpArea).add(additionalAmount);
- * // feeTotalPrice = (monthPrice).multiply(cycle).add(monthPrice.divide(endMonthDayss).multiply(dayss)).setScale(3, BigDecimal.ROUND_HALF_UP);
- * // }
- * // //璺ㄦ湀浠� 涓嶈冻涓�鏈� ((鍗曚环*闈㈢Н+闄勫姞璐�)/寮�濮嬫湀浠芥�诲ぉ鏁�)*瀹為檯澶╂暟+((鍗曚环*闈㈢Н+闄勫姞璐�)/缁撴潫鏈堜唤鎬诲ぉ鏁�)*瀹為檯澶╂暟
- * // if (months == 0 && days > 0 && "true".equals(isOneMonth)) {
- * // BigDecimal startEndOfMonth = new BigDecimal(cycleResults.get("startEndOfMonth").toString());
- * // BigDecimal endBeginningOfMonth = new BigDecimal(cycleResults.get("endBeginningOfMonth").toString());
- * // BigDecimal endMonthDayss = new BigDecimal(endMonthDays);
- * // BigDecimal startMonthDayss = new BigDecimal(startMonthDays);
- * // BigDecimal monthPrice = squarePrice.multiply(builtUpArea).add(additionalAmount);
- * // feeTotalPrice = monthPrice.divide(startMonthDayss, 4, BigDecimal.ROUND_HALF_UP).multiply(startEndOfMonth).add(monthPrice.divide(endMonthDayss, 4, BigDecimal.ROUND_HALF_UP).multiply(endBeginningOfMonth)).setScale(3, BigDecimal.ROUND_HALF_UP);
- * // }
- * // //涓嶈法鏈堜唤 涓嶈冻涓�鏈� (鍗曚环*闈㈢Н+闄勫姞璐�/寮�濮嬫湀浠芥�诲ぉ鏁�)*瀹為檯澶╂暟
- * // if (months == 0 && days > 0 && "false".equals(isOneMonth)) {
- * // BigDecimal cycle = new BigDecimal(days);
- * // BigDecimal startMonthDayss = new BigDecimal(startMonthDays);
- * // BigDecimal monthPrice = squarePrice.multiply(builtUpArea).add(additionalAmount);
- * // feeTotalPrice = monthPrice.divide(startMonthDayss, 4, BigDecimal.ROUND_HALF_UP).multiply(cycle).setScale(3, BigDecimal.ROUND_HALF_UP);
- * // }
+ /*
*
* @param feeDto
* @param roomDto
@@ -1035,12 +998,6 @@
BigDecimal cycle = null;
if (!StringUtil.isEmpty(feeDto.getCycle())) {
cycle = new BigDecimal(feeDto.getCycle());
- }
- /*if (!StringUtil.isEmpty(feeDto.getPaymentCycle())) {
- cycle = new BigDecimal(feeDto.getPaymentCycle());
- }*/
- if (!StringUtil.isEmpty(feeDto.getCustEndTime())) {
- cycle = new BigDecimal(dayCompare(feeDto.getEndTime(), DateUtil.getDateFromStringB(feeDto.getCustEndTime())));
}
if (cycle == null) {
feeTotalPrice = new BigDecimal(0);
@@ -1733,14 +1690,23 @@
double oweMonth = 0.0;
Map<String, Object> targetEndDateAndOweMonth = new HashMap<>();
- //鍒ゆ柇褰撳墠璐圭敤鏄惁宸茬粨鏉�
+ //todo 鍒ゆ柇褰撳墠璐圭敤鏄惁宸茬粨鏉�
if (FeeDto.STATE_FINISH.equals(feeDto.getState())) {
targetEndDate = feeDto.getEndTime();
targetEndDateAndOweMonth.put("oweMonth", oweMonth);
targetEndDateAndOweMonth.put("targetEndDate", targetEndDate);
return targetEndDateAndOweMonth;
}
- //褰撳墠璐圭敤涓轰竴娆℃�ц垂鐢�
+
+ //todo 鑰冭檻璐圭敤椤� 璐圭敤鎻愬墠鐢熸垚
+ Calendar preEndTimeCal = Calendar.getInstance();
+ preEndTimeCal.setTime(feeDto.getEndTime());
+ if (StringUtil.isNumber(feeDto.getPrepaymentPeriod())) {
+ preEndTimeCal.add(Calendar.DAY_OF_MONTH, Integer.parseInt(feeDto.getPrepaymentPeriod()) * -1);
+ }
+ Date preEndTime = preEndTimeCal.getTime();
+
+ //todo 褰撳墠璐圭敤涓轰竴娆℃�ц垂鐢�
Date maxEndTime = feeDto.getConfigEndTime();
if (FeeDto.FEE_FLAG_ONCE.equals(feeDto.getFeeFlag())) {
//鍏堝彇 deadlineTime
@@ -1779,7 +1745,16 @@
}
// 杞暟 * 鍛ㄦ湡 * 30 + 寮�濮嬫椂闂� = 鐩爣 鍒版湡鏃堕棿
targetEndDate = getTargetEndTime(round * paymentCycle, startDate);//鐩爣缁撴潫鏃堕棿
- //璐圭敤椤圭殑缁撴潫鏃堕棿<缂磋垂鐨勭粨鏉熸椂闂� 璐圭敤蹇粨鏉熶簡 鍙栬垂鐢ㄩ」鐨勭粨鏉熸椂闂�
+
+ //todo 濡傛灉 鍒颁簡 棰勪粯鏈� 浜х敓涓嬩釜鍛ㄦ湡鐨勮垂鐢�
+ if (DateUtil.getFormatTimeStringB(targetEndDate).equals(DateUtil.getFormatTimeStringB(endDate))
+ && DateUtil.getCurrentDate().getTime() > preEndTime.getTime()
+ ) {
+ targetEndDate = getTargetEndTime((round + 1) * paymentCycle, startDate);//鐩爣缁撴潫鏃堕棿
+ }
+
+
+ //todo 璐圭敤椤圭殑缁撴潫鏃堕棿<缂磋垂鐨勭粨鏉熸椂闂� 璐圭敤蹇粨鏉熶簡 鍙栬垂鐢ㄩ」鐨勭粨鏉熸椂闂�
if (maxEndTime.getTime() < targetEndDate.getTime()) {
targetEndDate = maxEndTime;
}
@@ -1814,6 +1789,14 @@
}
// 杞暟 * 鍛ㄦ湡 * 30 + 寮�濮嬫椂闂� = 鐩爣 鍒版湡鏃堕棿
targetEndDate = getTargetEndTime(round * paymentCycle, endDate);//鐩爣缁撴潫鏃堕棿
+
+ //todo 濡傛灉 鍒颁簡 棰勪粯鏈� 浜х敓涓嬩釜鍛ㄦ湡鐨勮垂鐢�
+ if (DateUtil.getFormatTimeStringB(targetEndDate).equals(DateUtil.getFormatTimeStringB(endDate))
+ && DateUtil.getCurrentDate().getTime() > preEndTime.getTime()
+ ) {
+ targetEndDate = getTargetEndTime((round + 1) * paymentCycle, startDate);//鐩爣缁撴潫鏃堕棿
+ }
+
//璐圭敤椤圭殑缁撴潫鏃堕棿<缂磋垂鐨勭粨鏉熸椂闂� 璐圭敤蹇粨鏉熶簡 鍙栬垂鐢ㄩ」鐨勭粨鏉熸椂闂�
if (maxEndTime.getTime() < targetEndDate.getTime()) {
targetEndDate = maxEndTime;
--
Gitblit v1.8.0