From 7958f1dddb8a7f4e70d232b07a7703955ecedae0 Mon Sep 17 00:00:00 2001
From: Your Name <you@example.com>
Date: 星期六, 26 八月 2023 12:45:33 +0800
Subject: [PATCH] 优化diamante
---
service-fee/src/main/java/com/java110/fee/feeMonth/PayFeeMonthHelp.java | 90 ++++++++++++++++++++++++++-------------------
1 files changed, 52 insertions(+), 38 deletions(-)
diff --git a/service-fee/src/main/java/com/java110/fee/feeMonth/PayFeeMonthHelp.java b/service-fee/src/main/java/com/java110/fee/feeMonth/PayFeeMonthHelp.java
index 5a9624e..8e92b02 100644
--- a/service-fee/src/main/java/com/java110/fee/feeMonth/PayFeeMonthHelp.java
+++ b/service-fee/src/main/java/com/java110/fee/feeMonth/PayFeeMonthHelp.java
@@ -5,11 +5,11 @@
import com.java110.dto.fee.FeeAttrDto;
import com.java110.dto.fee.FeeDetailDto;
import com.java110.dto.fee.FeeDto;
-import com.java110.dto.payFeeDetailMonth.PayFeeDetailMonthDto;
-import com.java110.dto.payFeeDetailMonth.PayFeeMonthOwnerDto;
+import com.java110.dto.payFee.PayFeeDetailMonthDto;
+import com.java110.dto.payFee.PayFeeMonthOwnerDto;
import com.java110.intf.community.IRoomInnerServiceSMO;
import com.java110.intf.fee.IPayFeeDetailMonthInnerServiceSMO;
-import com.java110.po.payFeeDetailMonth.PayFeeDetailMonthPo;
+import com.java110.po.payFee.PayFeeDetailMonthPo;
import com.java110.utils.util.DateUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@@ -96,6 +96,7 @@
return;
}
+
for (FeeDetailDto feeDetailDto : feeDetailDtos) {
// todo 閫愭潯鍘荤鏁�
doDispersedFeeDetail(feeDetailDto, feeDto, payFeeMonthOwnerDto);
@@ -113,10 +114,7 @@
*/
@Override
public void waitDispersedOweFee(FeeDto feeDto, PayFeeMonthOwnerDto payFeeMonthOwnerDto, Double feePrice, Date deadlineTime) {
- // todo 璐圭敤宸茬粡缁撴潫
- if (FeeDto.STATE_FINISH.equals(feeDto.getState())) {
- return;
- }
+
// todo 娓呯悊 detailId 涓�-1 鐨勬暟鎹�
PayFeeDetailMonthPo payFeeDetailMonthPo = new PayFeeDetailMonthPo();
@@ -124,6 +122,11 @@
payFeeDetailMonthPo.setFeeId(feeDto.getFeeId());
payFeeDetailMonthPo.setDetailId("-1");
payFeeDetailMonthInnerServiceSMOImpl.deletePayFeeDetailMonth(payFeeDetailMonthPo);
+
+ // todo 璐圭敤宸茬粡缁撴潫
+ if (FeeDto.STATE_FINISH.equals(feeDto.getState())) {
+ return;
+ }
List<PayFeeDetailMonthPo> payFeeDetailMonthPos = new ArrayList<>();
// todo 澶勭悊 寮�濮嬫椂闂村拰缁撴潫鏃堕棿
@@ -140,7 +143,7 @@
if (day < 1) {
day = 1;
}
- dayReceivableAmount = receivableAmount.divide(new BigDecimal(day), 4, BigDecimal.ROUND_HALF_UP);// 鏃� 搴旀敹
+ dayReceivableAmount = receivableAmount.divide(new BigDecimal(day), 8, BigDecimal.ROUND_HALF_UP);// 鏃� 搴旀敹
}
// todo 瀵绘壘绗竴涓嚜鐒舵湀 涓�鏃�
@@ -158,20 +161,24 @@
while (firstMonthDayTime.getTime() < endTime.getTime()) {
curDay = DateUtil.daysBetween(firstMonthDayTime, startMonthDayTime);
+ // todo 璁$畻褰撴湀澶╂暟
+ Calendar calendar = Calendar.getInstance();
+ calendar.setTime(startMonthDayTime);
+ curMonthMaxDay = calendar.getActualMaximum(Calendar.DAY_OF_MONTH);
- //todo 鍛ㄦ湡鎬ц垂鐢� 鏃ュ簲鏀堕噸鏂扮畻
- if (!FeeDto.FEE_FLAG_ONCE.equals(feeDto.getFeeFlag())) {
- // todo 璁$畻褰撴湀澶╂暟
- Calendar calendar = Calendar.getInstance();
- calendar.setTime(startMonthDayTime);
- curMonthMaxDay = calendar.getActualMaximum(Calendar.DAY_OF_MONTH);
- dayReceivableAmount = receivableAmount.divide(new BigDecimal(curMonthMaxDay), 4, BigDecimal.ROUND_HALF_UP);// 鏃� 瀹炴敹
- }
- // todo 璁$畻 搴旀敹
- curMonthReceivableAmount = new BigDecimal(curDay).multiply(dayReceivableAmount).setScale(4, BigDecimal.ROUND_HALF_UP);
-
+ // todo 濡傛灉涓嶆槸鏁存湀锛屽垯杞崲涓烘寜澶╄绠�
+// if (curDay != curMonthMaxDay) {
+ //todo 鍛ㄦ湡鎬ц垂鐢� 鏃ュ簲鏀堕噸鏂扮畻
+ if (!FeeDto.FEE_FLAG_ONCE.equals(feeDto.getFeeFlag())) {
+ dayReceivableAmount = receivableAmount.divide(new BigDecimal(curMonthMaxDay), 8, BigDecimal.ROUND_HALF_UP);// 鏃� 瀹炴敹
+ }
+ // todo 璁$畻 搴旀敹
+ curMonthReceivableAmount = new BigDecimal(curDay).multiply(dayReceivableAmount).setScale(4, BigDecimal.ROUND_HALF_UP);
+// } else { // todo 濡傛灉鏄暣鏈� 閭e氨鎸夋湀璁$畻锛屼互鍏� 杞崲鎴愬ぉ鍐� 涔樹互澶╂暟鍚庣殑璇樊
+// curMonthReceivableAmount = receivableAmount;
+// }
// todo 淇濆瓨鏁版嵁鍒皃ay_fee_detail_month
- toSavePayFeeDetailMonth(curMonthReceivableAmount.doubleValue(), 0, null, feeDto, payFeeMonthOwnerDto, payFeeDetailMonthPos, startMonthDayTime);
+ toSavePayFeeDetailMonth(curMonthReceivableAmount.doubleValue(), 0, null, feeDto, payFeeMonthOwnerDto, payFeeDetailMonthPos, startMonthDayTime, deadlineTime);
// todo 灏唖tartTime 淇敼涓� 涓嬫湀1鏃ユ椂闂�
startMonthDayTime = firstMonthDayTime;
@@ -186,24 +193,29 @@
}
curDay = DateUtil.daysBetween(endTime, startMonthDayTime);
- //todo 鍛ㄦ湡鎬ц垂鐢� 鏃ュ簲鏀堕噸鏂扮畻
- if (!FeeDto.FEE_FLAG_ONCE.equals(feeDto.getFeeFlag())) {
- // todo 璁$畻褰撴湀澶╂暟
- Calendar calendar = Calendar.getInstance();
- calendar.setTime(startMonthDayTime);
- curMonthMaxDay = calendar.getActualMaximum(Calendar.DAY_OF_MONTH);
- dayReceivableAmount = receivableAmount.divide(new BigDecimal(curMonthMaxDay), 4, BigDecimal.ROUND_HALF_UP);// 鏃� 瀹炴敹
+ // todo 璁$畻褰撴湀澶╂暟
+ Calendar calendar = Calendar.getInstance();
+ calendar.setTime(startMonthDayTime);
+ curMonthMaxDay = calendar.getActualMaximum(Calendar.DAY_OF_MONTH);
+ // todo 濡傛灉涓嶆槸鏁存湀锛屽垯杞崲涓烘寜澶╄绠�
+ if (curDay != curMonthMaxDay) {
+ //todo 鍛ㄦ湡鎬ц垂鐢� 鏃ュ簲鏀堕噸鏂扮畻
+ if (!FeeDto.FEE_FLAG_ONCE.equals(feeDto.getFeeFlag())) {
+ dayReceivableAmount = receivableAmount.divide(new BigDecimal(curMonthMaxDay), 4, BigDecimal.ROUND_HALF_UP);// 鏃� 瀹炴敹
+ }
+ // todo 璁$畻 搴旀敹
+ curMonthReceivableAmount = new BigDecimal(curDay).multiply(dayReceivableAmount).setScale(4, BigDecimal.ROUND_HALF_UP);
+ } else { // todo 濡傛灉鏄暣鏈� 閭e氨鎸夋湀璁$畻锛屼互鍏� 杞崲鎴愬ぉ鍐� 涔樹互澶╂暟鍚庣殑璇樊
+ curMonthReceivableAmount = receivableAmount;
}
- // todo 璁$畻 搴旀敹
- curMonthReceivableAmount = new BigDecimal(curDay).multiply(dayReceivableAmount).setScale(4, BigDecimal.ROUND_HALF_UP);
-
// todo 淇濆瓨鏁版嵁鍒皃ay_fee_detail_month
- toSavePayFeeDetailMonth(curMonthReceivableAmount.doubleValue(), 0, null, feeDto, payFeeMonthOwnerDto, payFeeDetailMonthPos, startMonthDayTime);
+ toSavePayFeeDetailMonth(curMonthReceivableAmount.doubleValue(), 0, null, feeDto, payFeeMonthOwnerDto, payFeeDetailMonthPos, startMonthDayTime, deadlineTime);
payFeeDetailMonthInnerServiceSMOImpl.savePayFeeDetailMonths(payFeeDetailMonthPos);
}
- private void doDispersedFeeDetail(FeeDetailDto feeDetailDto, FeeDto feeDto, PayFeeMonthOwnerDto payFeeMonthOwnerDto) {
+ private void doDispersedFeeDetail(FeeDetailDto feeDetailDto, FeeDto feeDto, PayFeeMonthOwnerDto
+ payFeeMonthOwnerDto) {
List<PayFeeDetailMonthPo> payFeeDetailMonthPos = new ArrayList<>();
// todo 鍘婚櫎 寮�濮嬫椂闂村拰 缁撴潫鏃堕棿鐨� 灏忔椂 鍒嗛挓 绉�
@@ -218,8 +230,8 @@
BigDecimal receivableAmount = new BigDecimal(Double.parseDouble(feeDetailDto.getReceivableAmount()));
BigDecimal receivedAmount = new BigDecimal(Double.parseDouble(feeDetailDto.getReceivedAmount()));
- BigDecimal dayReceivableAmount = receivableAmount.divide(new BigDecimal(day), 4, BigDecimal.ROUND_HALF_UP);// 鏃� 搴旀敹
- BigDecimal dayReceivedAmount = receivedAmount.divide(new BigDecimal(day), 4, BigDecimal.ROUND_HALF_UP);// 鏃� 瀹炴敹
+ BigDecimal dayReceivableAmount = receivableAmount.divide(new BigDecimal(day), 8, BigDecimal.ROUND_HALF_UP);// 鏃� 搴旀敹
+ BigDecimal dayReceivedAmount = receivedAmount.divide(new BigDecimal(day), 8, BigDecimal.ROUND_HALF_UP);// 鏃� 瀹炴敹
// todo 瀵绘壘绗竴涓嚜鐒舵湀 涓�鏃�
Calendar firstMonthDayCal = Calendar.getInstance();
@@ -241,7 +253,7 @@
curMonthReceivedAmount = new BigDecimal(curDay).multiply(dayReceivedAmount).setScale(4, BigDecimal.ROUND_HALF_UP);
// todo 淇濆瓨鏁版嵁鍒皃ay_fee_detail_month
- toSavePayFeeDetailMonth(curMonthReceivableAmount.doubleValue(), curMonthReceivedAmount.doubleValue(), feeDetailDto, feeDto, payFeeMonthOwnerDto, payFeeDetailMonthPos, startMonthDayTime);
+ toSavePayFeeDetailMonth(curMonthReceivableAmount.doubleValue(), curMonthReceivedAmount.doubleValue(), feeDetailDto, feeDto, payFeeMonthOwnerDto, payFeeDetailMonthPos, startMonthDayTime, endTime);
// todo 灏唖tartTime 淇敼涓� 涓嬫湀1鏃ユ椂闂�
startMonthDayTime = firstMonthDayTime;
@@ -262,7 +274,7 @@
curMonthReceivedAmount = new BigDecimal(curDay).multiply(dayReceivedAmount).setScale(4, BigDecimal.ROUND_HALF_UP);
// todo 淇濆瓨鏁版嵁鍒皃ay_fee_detail_month
- toSavePayFeeDetailMonth(curMonthReceivableAmount.doubleValue(), curMonthReceivedAmount.doubleValue(), feeDetailDto, feeDto, payFeeMonthOwnerDto, payFeeDetailMonthPos, startMonthDayTime);
+ toSavePayFeeDetailMonth(curMonthReceivableAmount.doubleValue(), curMonthReceivedAmount.doubleValue(), feeDetailDto, feeDto, payFeeMonthOwnerDto, payFeeDetailMonthPos, startMonthDayTime, endTime);
payFeeDetailMonthInnerServiceSMOImpl.savePayFeeDetailMonths(payFeeDetailMonthPos);
}
@@ -281,7 +293,8 @@
FeeDto feeDto,
PayFeeMonthOwnerDto payFeeMonthOwnerDto,
List<PayFeeDetailMonthPo> payFeeDetailMonthPos,
- Date curTime) {
+ Date curTime,
+ Date deadlineTime) {
Calendar calendar = Calendar.getInstance();
calendar.setTime(curTime);
@@ -302,7 +315,7 @@
getDiscountAmount(Double.parseDouble(tmpPayFeeDetailMonthPo.getReceivableAmount()),
Double.parseDouble(tmpPayFeeDetailMonthPo.getReceivedAmount()),
calendar.getTime(), feeDto) + "");
- tmpPayFeeDetailMonthPo.setMonthId(GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_monthId));
+ tmpPayFeeDetailMonthPo.setMonthId(GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_monthId, true));
tmpPayFeeDetailMonthPo.setRemark("绋嬪簭璁$畻鐢熸垚");
tmpPayFeeDetailMonthPo.setObjName(payFeeMonthOwnerDto.getObjName());
tmpPayFeeDetailMonthPo.setObjId(payFeeMonthOwnerDto.getObjId());
@@ -310,6 +323,7 @@
tmpPayFeeDetailMonthPo.setOwnerName(payFeeMonthOwnerDto.getOwnerName());
tmpPayFeeDetailMonthPo.setLink(payFeeMonthOwnerDto.getLink());
tmpPayFeeDetailMonthPo.setCurMonthTime(DateUtil.getFormatTimeStringB(calendar.getTime()));
+ tmpPayFeeDetailMonthPo.setDeadlineTime(DateUtil.getFormatTimeStringA(deadlineTime));
if (feeDetailDto == null) {
tmpPayFeeDetailMonthPo.setPayFeeTime(null);
} else { // todo 浜よ垂璁板綍 淇濆瓨鏃�
--
Gitblit v1.8.0