From 774d48e554ba2b654b28ea89996da34d84e3c1f6 Mon Sep 17 00:00:00 2001
From: wuxw <928255095@qq.com>
Date: 星期一, 08 四月 2024 11:51:36 +0800
Subject: [PATCH] 优化代码
---
service-fee/src/main/java/com/java110/fee/cmd/fee/ListFeeCmd.java | 2
java110-core/src/main/java/com/java110/core/smo/impl/ComputeFeeSMOImpl.java | 70 +++++++++++++++++++++++++++++++++-
service-acct/src/main/java/com/java110/acct/cmd/invoice/SaveInvoiceApplyCmd.java | 3 +
3 files changed, 70 insertions(+), 5 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 b811281..be4a08d 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
@@ -133,7 +133,7 @@
}
if (feeDto.getEndTime().getTime() < targetEndDate.getTime()) {
// 鐩爣鍒版湡鏃堕棿 - 鍒版湡鏃堕棿 = 娆犺垂鏈堜唤
- oweMonth = DateUtil.dayCompare(feeDto.getEndTime(), targetEndDate,true);
+ oweMonth = DateUtil.dayCompare(feeDto.getEndTime(), targetEndDate, true);
}
@@ -2083,7 +2083,7 @@
feeAttrDto.setCommunityId(feeDto.getCommunityId());
List<FeeAttrDto> feeAttrDtos = feeAttrInnerServiceSMOImpl.queryFeeAttrs(feeAttrDto);
- if (feeAttrDtos == null || feeAttrDtos.size() < 1) {
+ if (ListUtil.isNull(feeAttrDtos)) {
return;
}
int rateCycle = 0;
@@ -2121,6 +2121,7 @@
return;
}
+ Date oRateStartTime = rateStartTime;
//todo 閫掑鏃堕棿 涓嶆槸 璐圭敤寤鸿处鏃堕棿鐨勫�嶆暟鏃讹紝淇涓�涓�
rateStartTime = correctByFeeStartTime(rateStartTime, feeDto.getStartTime());
@@ -2150,8 +2151,10 @@
BigDecimal rateDec = new BigDecimal(rate + "");
BigDecimal oweAmountDec = null;
//todo 閫掑杞暟 寰幆 curFeePrice 杩欎釜鏄� 鍘熷绉熼噾
+ BigDecimal oldFeePrice = null;
for (int cycleIndex = 0; cycleIndex < maxCycle; cycleIndex++) {
//todo 閫掑鏈堝崟浠�
+ oldFeePrice = curFeePrice;
curFeePrice = new BigDecimal("1").add(rateDec).multiply(curFeePrice).setScale(FeeConfigConstant.FEE_SCALE, BigDecimal.ROUND_HALF_UP);
//todo 璁$畻 curCycleRateEneTime 鏈疆閫掑缁撴潫鏃堕棿
@@ -2166,16 +2169,27 @@
continue;
}
+ boolean hasInRateMonth = false;
//todo 鏈疆閫掑鏃堕棿鏈埌 璐圭敤deadlineTime
if (curCycleRateEneTime.getTime() < feeDto.getDeadlineTime().getTime()) {
curOweMonth = DateUtil.dayCompare(curOweStartTime, curCycleRateEneTime);
+ hasInRateMonth = rateStartMonthIn(oRateStartTime,curOweStartTime,curCycleRateEneTime);
curOweStartTime = curCycleRateEneTime;
} else {
curOweMonth = DateUtil.dayCompare(curOweStartTime, feeDto.getDeadlineTime());
+ hasInRateMonth = rateStartMonthIn(oRateStartTime,curOweStartTime,feeDto.getDeadlineTime());
+
curOweStartTime = feeDto.getDeadlineTime();
}
oweAmountDec = curFeePrice.multiply(new BigDecimal(curOweMonth)).setScale(FeeConfigConstant.FEE_SCALE, BigDecimal.ROUND_HALF_UP);
+
+ if (hasInRateMonth) {
+ //todo 閫掑鏈堝鏋滃缓璐︽椂闂村拰閫掑鏃ユ湡涓嶄竴鑷达紝閭d箞鍑忓幓寤鸿处鏃堕棿鏃ヨ嚦 閫掑鏃ョ殑閫掑閮ㄥ垎
+ int moreComputeDay = getRateDay(feeDto.getStartTime(), oRateStartTime);
+ BigDecimal moreComputeAmountDec = oldFeePrice.multiply(rateDec).divide(new BigDecimal(DateUtil.getMonthDay(oRateStartTime)), FeeConfigConstant.FEE_SCALE, BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal(moreComputeDay));
+ oweAmountDec = oweAmountDec.subtract(moreComputeAmountDec);
+ }
addTotalAmount = addTotalAmount.add(oweAmountDec);
}
@@ -2183,6 +2197,56 @@
Double amountOwed = MoneyUtil.computePriceScale(addTotalAmount.doubleValue(), feeDto.getScale(), Integer.parseInt(feeDto.getDecimalPlace()));
feeDto.setAmountOwed(amountOwed + "");
feeDto.setFeeTotalPrice(amountOwed);
+ }
+
+ /**
+ * 閫掑鏈堝湪杩欎釜涔嬮棿
+ * @param oRateStartTime
+ * @param startTime
+ * @param endTime
+ * @return
+ */
+ private boolean rateStartMonthIn(Date oRateStartTime, Date startTime, Date endTime) {
+
+ Calendar calendarStartTime = Calendar.getInstance();
+ calendarStartTime.setTime(startTime);
+ calendarStartTime.set(Calendar.DAY_OF_MONTH,1);
+
+ Calendar calendarEndTime = Calendar.getInstance();
+ calendarEndTime.setTime(endTime);
+ calendarEndTime.set(Calendar.DAY_OF_MONTH,1);
+
+
+ Calendar calendarOrate = Calendar.getInstance();
+ calendarOrate.setTime(oRateStartTime);
+ calendarOrate.set(Calendar.YEAR,calendarStartTime.get(Calendar.YEAR));
+
+ if(calendarStartTime.getTime().before(calendarOrate.getTime()) && calendarEndTime.getTime().after(calendarOrate.getTime())){
+ return true;
+ }
+
+ calendarOrate.set(Calendar.YEAR,calendarEndTime.get(Calendar.YEAR));
+
+ if(calendarStartTime.getTime().before(calendarOrate.getTime()) && calendarEndTime.getTime().after(calendarOrate.getTime())){
+ return true;
+ }
+
+
+ return false;
+
+ }
+
+ private int getRateDay(Date startTime, Date rateStartTime) {
+ Calendar rateCalendar = Calendar.getInstance();
+ rateCalendar.setTime(rateStartTime);
+ int rateDay = rateCalendar.get(Calendar.DAY_OF_MONTH);
+ Calendar calendar = Calendar.getInstance();
+ calendar.setTime(startTime);
+ int day = calendar.get(Calendar.DAY_OF_MONTH);
+ if (rateDay == day || rateDay < day) {
+ return 0;
+ }
+ return rateDay - day;
}
/**
@@ -2206,7 +2270,7 @@
rateCalendar = Calendar.getInstance();
rateCalendar.setTime(rateStartTime);
- rateCalendar.add(Calendar.MONTH, 1);
+ //rateCalendar.add(Calendar.MONTH, 1);
rateCalendar.set(Calendar.DAY_OF_MONTH, day);
return rateCalendar.getTime();
}
diff --git a/service-acct/src/main/java/com/java110/acct/cmd/invoice/SaveInvoiceApplyCmd.java b/service-acct/src/main/java/com/java110/acct/cmd/invoice/SaveInvoiceApplyCmd.java
index c6693e8..ef8110d 100644
--- a/service-acct/src/main/java/com/java110/acct/cmd/invoice/SaveInvoiceApplyCmd.java
+++ b/service-acct/src/main/java/com/java110/acct/cmd/invoice/SaveInvoiceApplyCmd.java
@@ -219,7 +219,8 @@
invoiceApplyItemPo.setCommunityId(invoiceApplyPo.getCommunityId());
invoiceApplyItemPo.setItemAmount(tmpFeeDetailDto.getReceivedAmount());
invoiceApplyItemPo.setItemId(GenerateCodeFactory.getGeneratorId("11"));
- invoiceApplyItemPo.setItemName(tmpFeeDetailDto.getFeeName()
+ invoiceApplyItemPo.setItemName(tmpFeeDetailDto.getFeeName());
+ invoiceApplyItemPo.setRemark(tmpFeeDetailDto.getFeeName()
+ "("
+ DateUtil.getFormatTimeStringB(tmpFeeDetailDto.getStartTime())
+ "~"
diff --git a/service-fee/src/main/java/com/java110/fee/cmd/fee/ListFeeCmd.java b/service-fee/src/main/java/com/java110/fee/cmd/fee/ListFeeCmd.java
index 6bb345e..876382e 100644
--- a/service-fee/src/main/java/com/java110/fee/cmd/fee/ListFeeCmd.java
+++ b/service-fee/src/main/java/com/java110/fee/cmd/fee/ListFeeCmd.java
@@ -115,7 +115,7 @@
ownerRoomRelDto.setRoomId(reqJson.getString("payerObjId"));
ownerRoomRelDto.setOwnerId(reqJson.getString("ownerId"));
List<OwnerRoomRelDto> ownerRoomRelDtos = ownerRoomRelV1InnerServiceSMOImpl.queryOwnerRoomRels(ownerRoomRelDto);
- if (ownerRoomRelDtos == null || ownerRoomRelDtos.size() < 1) {
+ if (ListUtil.isNull(ownerRoomRelDtos)) {
ApiFeeVo apiFeeVo = new ApiFeeVo();
apiFeeVo.setTotal(0);
apiFeeVo.setRecords((int) Math.ceil((double) 0 / (double) reqJson.getInteger("row")));
--
Gitblit v1.8.0