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 | 261 ++++++++++++++++++---------------------------------
1 files changed, 92 insertions(+), 169 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 39e0828..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
@@ -5,13 +5,13 @@
import com.java110.core.context.Environment;
import com.java110.core.log.LoggerFactory;
import com.java110.core.smo.IComputeFeeSMO;
-import com.java110.dto.RoomAttrDto;
-import com.java110.dto.RoomDto;
+import com.java110.dto.room.RoomAttrDto;
+import com.java110.dto.room.RoomDto;
import com.java110.dto.community.CommunityDto;
import com.java110.dto.contract.ContractDto;
-import com.java110.dto.contractRoom.ContractRoomDto;
+import com.java110.dto.contract.ContractRoomDto;
import com.java110.dto.fee.*;
-import com.java110.dto.integralRuleConfig.IntegralRuleConfigDto;
+import com.java110.dto.integral.IntegralRuleConfigDto;
import com.java110.dto.machine.CarInoutDetailDto;
import com.java110.dto.machine.CarInoutDto;
import com.java110.dto.owner.OwnerCarDto;
@@ -31,7 +31,7 @@
import com.java110.intf.store.IContractRoomInnerServiceSMO;
import com.java110.intf.user.IOwnerCarInnerServiceSMO;
import com.java110.intf.user.IOwnerInnerServiceSMO;
-import com.java110.po.feeReceiptDetail.FeeReceiptDetailPo;
+import com.java110.po.fee.FeeReceiptDetailPo;
import com.java110.utils.constant.FeeConfigConstant;
import com.java110.utils.constant.ResponseConstant;
import com.java110.utils.exception.ListenerExecuteException;
@@ -190,14 +190,14 @@
feeDto.setFeePrice(Double.parseDouble(feePriceAll.get("feePrice").toString()));
BigDecimal price = new BigDecimal(feeDto.getFeePrice());
price = price.multiply(new BigDecimal(oweMonth));
- feeDto.setFeePrice(price.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
+ feeDto.setFeeTotalPrice(price.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
feeDto.setDeadlineTime(targetEndDate);
//鍔ㄦ�佽垂鐢�
if ("4004".equals(computingFormula)
&& FeeDto.FEE_FLAG_ONCE.equals(feeDto.getFeeFlag())
&& !FeeDto.STATE_FINISH.equals(feeDto.getState())) {
- feeDto.setAmountOwed(feeDto.getFeePrice() + "");
+ feeDto.setAmountOwed(feeDto.getFeeTotalPrice() + "");
//feeDto.setDeadlineTime(DateUtil.getCurrentDate()); 娆犺垂鏃ユ湡涓嶅鍏堟敞閲�
}
@@ -219,16 +219,19 @@
//double month = dayCompare(feeDto.getEndTime(), DateUtil.getCurrentDate());
BigDecimal price = new BigDecimal(feeDto.getFeePrice());
price = price.multiply(new BigDecimal(oweMonth));
- feeDto.setFeePrice(price.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
+ feeDto.setFeeTotalPrice(price.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
feeDto.setDeadlineTime(targetEndDate);
//鍔ㄦ�佽垂鐢�
if ("4004".equals(computingFormula)
&& FeeDto.FEE_FLAG_ONCE.equals(feeDto.getFeeFlag())
&& !FeeDto.STATE_FINISH.equals(feeDto.getState())) {
- feeDto.setAmountOwed(feeDto.getFeePrice() + "");
+ feeDto.setAmountOwed(feeDto.getFeeTotalPrice() + "");
//feeDto.setDeadlineTime(DateUtil.getCurrentDate()); 娆犺垂鏃ユ湡涓嶅鍏堟敞閲�
}
+
+ //鑰冭檻绉熼噾閫掑
+ dealRentRate(feeDto);
}
/**
@@ -247,14 +250,14 @@
//double month = dayCompare(feeDto.getEndTime(), DateUtil.getCurrentDate());
BigDecimal price = new BigDecimal(feeDto.getFeePrice());
price = price.multiply(new BigDecimal(oweMonth));
- feeDto.setFeePrice(price.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
+ feeDto.setFeeTotalPrice(price.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
feeDto.setDeadlineTime(targetEndDate);
//鍔ㄦ�佽垂鐢�
if ("4004".equals(computingFormula)
&& FeeDto.FEE_FLAG_ONCE.equals(feeDto.getFeeFlag())
&& !FeeDto.STATE_FINISH.equals(feeDto.getState())) {
- feeDto.setAmountOwed(feeDto.getFeePrice() + "");
+ feeDto.setAmountOwed(feeDto.getFeeTotalPrice() + "");
//feeDto.setDeadlineTime(DateUtil.getCurrentDate()); 娆犺垂鏃ユ湡涓嶅鍏堟敞閲�
}
}
@@ -948,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
@@ -999,6 +965,18 @@
if (Environment.isOwnerPhone(java110Properties)) {
return getOwnerPhoneFee(feeAmount);
}
+
+ //todo 濡傛灉 cycle 涓�105 鍒� 鏍规嵁缂磋垂鏃堕棿娈� 鏀瑰啓涓�
+ if ("105".equals(feeDto.getCycle())) {
+ double cycle = 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()));
+ feeDto.setCycle(cycle + "");
+ }
+
if (FeeDto.PAYER_OBJ_TYPE_ROOM.equals(feeDto.getPayerObjType())) { //鎴垮眿鐩稿叧
String computingFormula = feeDto.getComputingFormula();
if (roomDto == null) {
@@ -1021,9 +999,6 @@
if (!StringUtil.isEmpty(feeDto.getCycle())) {
cycle = new BigDecimal(feeDto.getCycle());
}
- if (!StringUtil.isEmpty(feeDto.getCustEndTime())) {
- cycle = new BigDecimal(dayCompare(feeDto.getEndTime(), DateUtil.getDateFromStringB(feeDto.getCustEndTime())));
- }
if (cycle == null) {
feeTotalPrice = new BigDecimal(0);
} else {
@@ -1036,9 +1011,6 @@
BigDecimal cycle = null;
if (!StringUtil.isEmpty(feeDto.getCycle())) {
cycle = new BigDecimal(feeDto.getCycle());
- }
- if (!StringUtil.isEmpty(feeDto.getCustEndTime())) {
- cycle = new BigDecimal(dayCompare(feeDto.getEndTime(), DateUtil.getDateFromStringB(feeDto.getCustEndTime())));
}
if (cycle == null) {
feeTotalPrice = new BigDecimal(0);
@@ -1054,9 +1026,6 @@
if (!StringUtil.isEmpty(feeDto.getCycle())) {
cycle = new BigDecimal(feeDto.getCycle());
}
- if (!StringUtil.isEmpty(feeDto.getCustEndTime())) {
- cycle = new BigDecimal(dayCompare(feeDto.getEndTime(), DateUtil.getDateFromStringB(feeDto.getCustEndTime())));
- }
if (cycle == null) {
feeTotalPrice = new BigDecimal(0);
} else {
@@ -1068,9 +1037,6 @@
BigDecimal cycle = null;
if (!StringUtil.isEmpty(feeDto.getCycle())) {
cycle = new BigDecimal(feeDto.getCycle());
- }
- if (!StringUtil.isEmpty(feeDto.getCustEndTime())) {
- cycle = new BigDecimal(dayCompare(feeDto.getEndTime(), DateUtil.getDateFromStringB(feeDto.getCustEndTime())));
}
if (cycle == null) {
feeTotalPrice = new BigDecimal(0);
@@ -1084,9 +1050,6 @@
if (!StringUtil.isEmpty(feeDto.getCycle())) {
cycle = new BigDecimal(feeDto.getCycle());
}
- if (!StringUtil.isEmpty(feeDto.getCustEndTime())) {
- cycle = new BigDecimal(dayCompare(feeDto.getEndTime(), DateUtil.getDateFromStringB(feeDto.getCustEndTime())));
- }
if (cycle == null) {
feeTotalPrice = new BigDecimal(0);
} else {
@@ -1097,9 +1060,6 @@
BigDecimal cycle = null;
if (!StringUtil.isEmpty(feeDto.getCycle())) {
cycle = new BigDecimal(feeDto.getCycle());
- }
- if (!StringUtil.isEmpty(feeDto.getCustEndTime())) {
- cycle = new BigDecimal(dayCompare(feeDto.getEndTime(), DateUtil.getDateFromStringB(feeDto.getCustEndTime())));
}
if (cycle == null) {
feeTotalPrice = new BigDecimal(0);
@@ -1123,9 +1083,6 @@
if (!StringUtil.isEmpty(feeDto.getCycle())) {
cycle = new BigDecimal(feeDto.getCycle());
}
- if (!StringUtil.isEmpty(feeDto.getCustEndTime())) {
- cycle = new BigDecimal(dayCompare(feeDto.getEndTime(), DateUtil.getDateFromStringB(feeDto.getCustEndTime())));
- }
if (cycle == null) {
feeTotalPrice = new BigDecimal(0);
} else {
@@ -1138,9 +1095,6 @@
BigDecimal cycle = null;
if (!StringUtil.isEmpty(feeDto.getCycle())) {
cycle = new BigDecimal(feeDto.getCycle());
- }
- if (!StringUtil.isEmpty(feeDto.getCustEndTime())) {
- cycle = new BigDecimal(dayCompare(feeDto.getEndTime(), DateUtil.getDateFromStringB(feeDto.getCustEndTime())));
}
if (cycle == null) {
feeTotalPrice = new BigDecimal(0);
@@ -1163,9 +1117,6 @@
if (!StringUtil.isEmpty(feeDto.getCycle())) {
cycle = new BigDecimal(feeDto.getCycle());
}
- if (!StringUtil.isEmpty(feeDto.getCustEndTime())) {
- cycle = new BigDecimal(dayCompare(feeDto.getEndTime(), DateUtil.getDateFromStringB(feeDto.getCustEndTime())));
- }
if (cycle == null) {
feeTotalPrice = new BigDecimal(0);
} else {
@@ -1176,9 +1127,6 @@
BigDecimal cycle = null;
if (!StringUtil.isEmpty(feeDto.getCycle())) {
cycle = new BigDecimal(feeDto.getCycle());
- }
- if (!StringUtil.isEmpty(feeDto.getCustEndTime())) {
- cycle = new BigDecimal(dayCompare(feeDto.getEndTime(), DateUtil.getDateFromStringB(feeDto.getCustEndTime())));
}
if (cycle == null) {
feeTotalPrice = new BigDecimal(0);
@@ -1200,9 +1148,6 @@
BigDecimal cycle = null;
if (!StringUtil.isEmpty(feeDto.getCycle())) {
cycle = new BigDecimal(feeDto.getCycle());
- }
- if (!StringUtil.isEmpty(feeDto.getCustEndTime())) {
- cycle = new BigDecimal(dayCompare(feeDto.getEndTime(), DateUtil.getDateFromStringB(feeDto.getCustEndTime())));
}
if (cycle == null) {
feeTotalPrice = new BigDecimal(0);
@@ -1238,9 +1183,6 @@
if (!StringUtil.isEmpty(feeDto.getCycle())) {
cycle = new BigDecimal(feeDto.getCycle());
}
- if (!StringUtil.isEmpty(feeDto.getCustEndTime())) {
- cycle = new BigDecimal(dayCompare(feeDto.getEndTime(), DateUtil.getDateFromStringB(feeDto.getCustEndTime())));
- }
if (cycle == null) {
feeTotalPrice = new BigDecimal(0);
} else {
@@ -1254,9 +1196,6 @@
BigDecimal cycle = null;
if (!StringUtil.isEmpty(feeDto.getCycle())) {
cycle = new BigDecimal(feeDto.getCycle());
- }
- if (!StringUtil.isEmpty(feeDto.getCustEndTime())) {
- cycle = new BigDecimal(dayCompare(feeDto.getEndTime(), DateUtil.getDateFromStringB(feeDto.getCustEndTime())));
}
if (cycle == null) {
feeTotalPrice = new BigDecimal(0);
@@ -1273,9 +1212,6 @@
if (!StringUtil.isEmpty(feeDto.getCycle())) {
cycle = new BigDecimal(feeDto.getCycle());
}
- if (!StringUtil.isEmpty(feeDto.getCustEndTime())) {
- cycle = new BigDecimal(dayCompare(feeDto.getEndTime(), DateUtil.getDateFromStringB(feeDto.getCustEndTime())));
- }
if (cycle == null) {
feeTotalPrice = new BigDecimal(0);
} else {
@@ -1288,9 +1224,6 @@
BigDecimal cycle = null;
if (!StringUtil.isEmpty(feeDto.getCycle())) {
cycle = new BigDecimal(feeDto.getCycle());
- }
- if (!StringUtil.isEmpty(feeDto.getCustEndTime())) {
- cycle = new BigDecimal(dayCompare(feeDto.getEndTime(), DateUtil.getDateFromStringB(feeDto.getCustEndTime())));
}
if (cycle == null) {
feeTotalPrice = new BigDecimal(0);
@@ -1305,9 +1238,6 @@
if (!StringUtil.isEmpty(feeDto.getCycle())) {
cycle = new BigDecimal(feeDto.getCycle());
}
- if (!StringUtil.isEmpty(feeDto.getCustEndTime())) {
- cycle = new BigDecimal(dayCompare(feeDto.getEndTime(), DateUtil.getDateFromStringB(feeDto.getCustEndTime())));
- }
if (cycle == null) {
feeTotalPrice = new BigDecimal(0);
} else {
@@ -1318,9 +1248,6 @@
BigDecimal cycle = null;
if (!StringUtil.isEmpty(feeDto.getCycle())) {
cycle = new BigDecimal(feeDto.getCycle());
- }
- if (!StringUtil.isEmpty(feeDto.getCustEndTime())) {
- cycle = new BigDecimal(dayCompare(feeDto.getEndTime(), DateUtil.getDateFromStringB(feeDto.getCustEndTime())));
}
if (cycle == null) {
feeTotalPrice = new BigDecimal(0);
@@ -1344,9 +1271,6 @@
if (!StringUtil.isEmpty(feeDto.getCycle())) {
cycle = new BigDecimal(feeDto.getCycle());
}
- if (!StringUtil.isEmpty(feeDto.getCustEndTime())) {
- cycle = new BigDecimal(dayCompare(feeDto.getEndTime(), DateUtil.getDateFromStringB(feeDto.getCustEndTime())));
- }
if (cycle == null) {
feeTotalPrice = new BigDecimal(0);
} else {
@@ -1360,9 +1284,6 @@
if (!StringUtil.isEmpty(feeDto.getCycle())) {
cycle = new BigDecimal(feeDto.getCycle());
}
- if (!StringUtil.isEmpty(feeDto.getCustEndTime())) {
- cycle = new BigDecimal(dayCompare(feeDto.getEndTime(), DateUtil.getDateFromStringB(feeDto.getCustEndTime())));
- }
if (cycle == null) {
feeTotalPrice = new BigDecimal(0);
} else {
@@ -1374,9 +1295,6 @@
BigDecimal cycle = null;
if (!StringUtil.isEmpty(feeDto.getCycle())) {
cycle = new BigDecimal(feeDto.getCycle());
- }
- if (!StringUtil.isEmpty(feeDto.getCustEndTime())) {
- cycle = new BigDecimal(dayCompare(feeDto.getEndTime(), DateUtil.getDateFromStringB(feeDto.getCustEndTime())));
}
if (cycle == null) {
feeTotalPrice = new BigDecimal(0);
@@ -1399,9 +1317,6 @@
BigDecimal cycle = null;
if (!StringUtil.isEmpty(feeDto.getCycle())) {
cycle = new BigDecimal(feeDto.getCycle());
- }
- if (!StringUtil.isEmpty(feeDto.getCustEndTime())) {
- cycle = new BigDecimal(dayCompare(feeDto.getEndTime(), DateUtil.getDateFromStringB(feeDto.getCustEndTime())));
}
if (cycle == null) {
feeTotalPrice = new BigDecimal(0);
@@ -1435,9 +1350,6 @@
if (!StringUtil.isEmpty(feeDto.getCycle())) {
cycle = new BigDecimal(feeDto.getCycle());
}
- if (!StringUtil.isEmpty(feeDto.getCustEndTime())) {
- cycle = new BigDecimal(dayCompare(feeDto.getEndTime(), DateUtil.getDateFromStringB(feeDto.getCustEndTime())));
- }
if (cycle == null) {
feeTotalPrice = new BigDecimal(0);
} else {
@@ -1454,9 +1366,6 @@
if (!StringUtil.isEmpty(feeDto.getCycle())) {
cycle = new BigDecimal(feeDto.getCycle());
}
- if (!StringUtil.isEmpty(feeDto.getCustEndTime())) {
- cycle = new BigDecimal(dayCompare(feeDto.getEndTime(), DateUtil.getDateFromStringB(feeDto.getCustEndTime())));
- }
if (cycle == null) {
feeTotalPrice = new BigDecimal(0);
} else {
@@ -1472,9 +1381,6 @@
if (!StringUtil.isEmpty(feeDto.getCycle())) {
cycle = new BigDecimal(feeDto.getCycle());
}
- if (!StringUtil.isEmpty(feeDto.getCustEndTime())) {
- cycle = new BigDecimal(dayCompare(feeDto.getEndTime(), DateUtil.getDateFromStringB(feeDto.getCustEndTime())));
- }
if (cycle == null) {
feeTotalPrice = new BigDecimal(0);
} else {
@@ -1487,9 +1393,6 @@
BigDecimal cycle = null;
if (!StringUtil.isEmpty(feeDto.getCycle())) {
cycle = new BigDecimal(feeDto.getCycle());
- }
- if (!StringUtil.isEmpty(feeDto.getCustEndTime())) {
- cycle = new BigDecimal(dayCompare(feeDto.getEndTime(), DateUtil.getDateFromStringB(feeDto.getCustEndTime())));
}
if (cycle == null) {
feeTotalPrice = new BigDecimal(0);
@@ -1504,9 +1407,6 @@
if (!StringUtil.isEmpty(feeDto.getCycle())) {
cycle = new BigDecimal(feeDto.getCycle());
}
- if (!StringUtil.isEmpty(feeDto.getCustEndTime())) {
- cycle = new BigDecimal(dayCompare(feeDto.getEndTime(), DateUtil.getDateFromStringB(feeDto.getCustEndTime())));
- }
if (cycle == null) {
feeTotalPrice = new BigDecimal(0);
} else {
@@ -1518,9 +1418,6 @@
BigDecimal cycle = null;
if (!StringUtil.isEmpty(feeDto.getCycle())) {
cycle = new BigDecimal(feeDto.getCycle());
- }
- if (!StringUtil.isEmpty(feeDto.getCustEndTime())) {
- cycle = new BigDecimal(dayCompare(feeDto.getEndTime(), DateUtil.getDateFromStringB(feeDto.getCustEndTime())));
}
if (cycle == null) {
feeTotalPrice = new BigDecimal(0);
@@ -1545,9 +1442,6 @@
if (!StringUtil.isEmpty(feeDto.getCycle())) {
cycle = new BigDecimal(feeDto.getCycle());
}
- if (!StringUtil.isEmpty(feeDto.getCustEndTime())) {
- cycle = new BigDecimal(dayCompare(feeDto.getEndTime(), DateUtil.getDateFromStringB(feeDto.getCustEndTime())));
- }
if (cycle == null) {
feeTotalPrice = new BigDecimal(0);
} else {
@@ -1561,9 +1455,6 @@
if (!StringUtil.isEmpty(feeDto.getCycle())) {
cycle = new BigDecimal(feeDto.getCycle());
}
- if (!StringUtil.isEmpty(feeDto.getCustEndTime())) {
- cycle = new BigDecimal(dayCompare(feeDto.getEndTime(), DateUtil.getDateFromStringB(feeDto.getCustEndTime())));
- }
if (cycle == null) {
feeTotalPrice = new BigDecimal(0);
} else {
@@ -1576,9 +1467,6 @@
if (!StringUtil.isEmpty(feeDto.getCycle())) {
cycle = new BigDecimal(feeDto.getCycle());
}
- if (!StringUtil.isEmpty(feeDto.getCustEndTime())) {
- cycle = new BigDecimal(dayCompare(feeDto.getEndTime(), DateUtil.getDateFromStringB(feeDto.getCustEndTime())));
- }
if (cycle == null) {
feeTotalPrice = new BigDecimal(0);
} else {
@@ -1590,9 +1478,6 @@
BigDecimal cycle = null;
if (!StringUtil.isEmpty(feeDto.getCycle())) {
cycle = new BigDecimal(feeDto.getCycle());
- }
- if (!StringUtil.isEmpty(feeDto.getCustEndTime())) {
- cycle = new BigDecimal(dayCompare(feeDto.getEndTime(), DateUtil.getDateFromStringB(feeDto.getCustEndTime())));
}
if (cycle == null) {
feeTotalPrice = new BigDecimal(0);
@@ -1615,9 +1500,6 @@
BigDecimal cycle = null;
if (!StringUtil.isEmpty(feeDto.getCycle())) {
cycle = new BigDecimal(feeDto.getCycle());
- }
- if (!StringUtil.isEmpty(feeDto.getCustEndTime())) {
- cycle = new BigDecimal(dayCompare(feeDto.getEndTime(), DateUtil.getDateFromStringB(feeDto.getCustEndTime())));
}
if (cycle == null) {
feeTotalPrice = new BigDecimal(0);
@@ -1744,33 +1626,41 @@
} else {
value = value.replace("C", communityDtos.get(0).getCommunityArea());
}
- } else if (value.contains("F")) { //澶勭悊妤兼爧
+ }
+ if (value.contains("F")) { //澶勭悊妤兼爧
value = value.replace("F", roomDto.getFloorArea());
- } else if (value.contains("U")) { //澶勭悊鍗曞厓
+ }
+ if (value.contains("U")) { //澶勭悊鍗曞厓
value = value.replace("U", roomDto.getUnitArea());
- } else if (value.contains("RL")) {
+ }
+ if (value.contains("RL")) {
List<RoomAttrDto> roomAttrDtos = roomDto.getRoomAttrDto();
if (roomAttrDtos != null && roomAttrDtos.size() > 0) {
for (RoomAttrDto roomAttrDto : roomAttrDtos) {
value = value.replace("RL" + roomAttrDto.getSpecCd(), roomAttrDto.getValue());
}
}
- } else if (value.contains("R")) { //澶勭悊 鎴垮眿闈㈢Н
+ }
+ if (value.contains("R")) { //澶勭悊 鎴垮眿闈㈢Н
value = value.replace("R", roomDto.getBuiltUpArea());
- } else if (value.contains("X")) {// 澶勭悊 鎴垮眿绯绘暟
+ }
+ if (value.contains("X")) {// 澶勭悊 鎴垮眿绯绘暟
value = value.replace("X", roomDto.getFeeCoefficient());
- } else if (value.contains("L")) {//澶勭悊鎴垮眿灞傛暟
+ }
+ if (value.contains("L")) {//澶勭悊鎴垮眿灞傛暟
value = value.replace("L", roomDto.getLayer());
}
ScriptEngineManager manager = new ScriptEngineManager();
ScriptEngine engine = manager.getEngineByName("JavaScript");
BigDecimal valueObj = null;
+ logger.debug("璁$畻鍏紡涓猴細{}", value);
try {
value = engine.eval(value).toString();
valueObj = new BigDecimal(Double.parseDouble(value));
} catch (Exception e) {
//throw new IllegalArgumentException("鍏紡璁$畻寮傚父锛屽叕寮忎负銆�" + feeDto.getComputingFormulaText() + "銆�,璁$畻 銆�" + value + "銆戝紓甯�");
+ logger.error("鍏紡璁$畻寮傚父锛屽叕寮忎负銆�" + feeDto.getComputingFormulaText() + "銆�,璁$畻 銆�" + value + "銆戝紓甯�", e);
valueObj = new BigDecimal(0);
}
@@ -1780,6 +1670,12 @@
return valueObj;
+ }
+
+ @Override
+ public Date getDeadlineTime(FeeDto feeDto) {
+ Map info = getTargetEndDateAndOweMonth(feeDto);
+ return (Date) info.get("targetEndDate");
}
/**
@@ -1794,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
@@ -1840,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;
}
@@ -1864,7 +1778,7 @@
long paymentCycle = Long.parseLong(feeDto.getPaymentCycle());
// 褰撳墠鏃堕棿 - 寮�濮嬫椂闂� = 鏈堜唤
double mulMonth = 0.0;
- mulMonth = dayCompare(startDate, billEndTime);
+ mulMonth = dayCompare(endDate, billEndTime);
// 鏈堜唤/ 鍛ㄦ湡 = 杞暟锛堝悜涓婂彇鏁达級
double round = 0.0;
@@ -1874,7 +1788,15 @@
round = Math.floor(mulMonth / paymentCycle);
}
// 杞暟 * 鍛ㄦ湡 * 30 + 寮�濮嬫椂闂� = 鐩爣 鍒版湡鏃堕棿
- targetEndDate = getTargetEndTime(round * paymentCycle, startDate);//鐩爣缁撴潫鏃堕棿
+ 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;
@@ -1896,14 +1818,6 @@
}
public Map getTargetEndDateAndOweMonth(FeeDto feeDto) {
-
-// if (FeeDto.PAYER_OBJ_TYPE_CAR.equals(feeDto.getPayerObjType())) {
-// OwnerCarDto ownerCarDto = new OwnerCarDto();
-// ownerCarDto.setCommunityId(feeDto.getCommunityId());
-// ownerCarDto.setCarId(feeDto.getPayerObjId());
-// List<OwnerCarDto> ownerCarDtos = ownerCarInnerServiceSMOImpl.queryOwnerCars(ownerCarDto);
-// return getTargetEndDateAndOweMonth(feeDto, ownerCarDtos == null || ownerCarDtos.size() < 1 ? null : ownerCarDtos.get(0));
-// }
return getTargetEndDateAndOweMonth(feeDto, null);
}
@@ -2286,17 +2200,26 @@
//璁$畻 璁¤垂璧峰鏃堕棿 鍒� rateStartTime 鏃剁殑璐圭敤
double curOweMonth = 0;
BigDecimal curFeePrice = new BigDecimal(feeDto.getFeePrice());
+
+ // todo 濡傛灉璁¤垂璧峰鏃堕棿 灏忓尯 閫掑寮�濮嬫椂闂�
if (feeDto.getEndTime().getTime() < rateStartTime.getTime()) {
+ //todo 閫掑鍓嶇殑娆犺垂
curOweMonth = dayCompare(feeDto.getEndTime(), rateStartTime);
oweAmountDec = curFeePrice.multiply(new BigDecimal(curOweMonth)).setScale(FeeConfigConstant.FEE_SCALE, BigDecimal.ROUND_HALF_UP);
+ // todo 閫掑
+ curOweMonth = dayCompare(rateStartTime, feeDto.getDeadlineTime());
+ } else {
+ // todo 閫掑
+ curOweMonth = dayCompare(feeDto.getEndTime(), feeDto.getDeadlineTime());
}
+ double rateMonth = dayCompare(rateStartTime, feeDto.getDeadlineTime());
- curOweMonth = dayCompare(rateStartTime, feeDto.getDeadlineTime());
+ // todo 鏈�澶у懆鏈�
+ double maxCycle = Math.ceil(rateMonth / rateCycle);
- double maxCycle = Math.ceil(curOweMonth / rateCycle);
-
- // 澧為暱鍓嶇殑娆犺垂
+ // todo 澧為暱鍓嶇殑娆犺垂
BigDecimal addTotalAmount = oweAmountDec;
+ // todo 閫掑鍛ㄦ湡鍐呯殑 鏈�掑璐圭敤
BigDecimal preCycleAmount = curFeePrice.multiply(new BigDecimal(rateCycle));
BigDecimal rateDec = null; //閫掑鍛ㄦ湡鎵�鏀惰垂鐢�
BigDecimal lastRateAmountDec = null;
@@ -2314,7 +2237,7 @@
curEndTimeCalender.setTime(rateStartTime);
curEndTimeCalender.add(Calendar.MONTH, new Double(curCycle).intValue());
curEndTime = curEndTimeCalender.getTime();
- if (curCycle > curOweMonth) {
+ if (curCycle > rateMonth) {
//涓嶈冻澧為暱鍛ㄦ湡澧為暱鐜�
rateDec = new BigDecimal(curOweMonth / rateCycle - Math.floor(curOweMonth / rateCycle)).multiply(rateDec).setScale(FeeConfigConstant.FEE_SCALE, BigDecimal.ROUND_HALF_UP);
lastRateAmountDec = new BigDecimal(curOweMonth / rateCycle - Math.floor(curOweMonth / rateCycle)).multiply(preCycleAmount).setScale(FeeConfigConstant.FEE_SCALE, BigDecimal.ROUND_HALF_UP);
--
Gitblit v1.8.0