From a26c074129afced8fe87e300fb501030fde0c056 Mon Sep 17 00:00:00 2001
From: chengf <2156125618@qq.com>
Date: 星期五, 04 七月 2025 18:38:29 +0800
Subject: [PATCH] 添加二级费用项
---
service-fee/src/main/java/com/java110/fee/feeMonth/PayFeeMonthHelp.java | 86 ++++++++++++++++++++++++++-----------------
1 files changed, 52 insertions(+), 34 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 ac03b23..6fe0331 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
@@ -53,34 +53,34 @@
payFeeMonthOwnerDto.setObjId(feeDto.getPayerObjId());
payFeeMonthOwnerDto.setObjFpcId("-1");
- if(StringUtil.isEmpty(feeDto.getPayerObjId())){
+ if (StringUtil.isEmpty(feeDto.getPayerObjId())) {
return payFeeMonthOwnerDto;
}
// 濡傛灉鏄埧灞�
- if(FeeDto.PAYER_OBJ_TYPE_ROOM.equals(feeDto.getPayerObjType())){
+ if (FeeDto.PAYER_OBJ_TYPE_ROOM.equals(feeDto.getPayerObjType())) {
RoomDto roomDto = new RoomDto();
roomDto.setRoomId(feeDto.getPayerObjId());
roomDto.setCommunityId(feeDto.getCommunityId());
List<RoomDto> roomDtos = roomInnerServiceSMOImpl.queryRooms(roomDto);
- if(!ListUtil.isNull(roomDtos)){
+ if (!ListUtil.isNull(roomDtos)) {
payFeeMonthOwnerDto.setObjFpcId(roomDtos.get(0).getFloorId());
}
- }else if(FeeDto.PAYER_OBJ_TYPE_CAR.equals(feeDto.getPayerObjType())){
+ } else if (FeeDto.PAYER_OBJ_TYPE_CAR.equals(feeDto.getPayerObjType())) {
OwnerCarDto ownerCarDto = new OwnerCarDto();
ownerCarDto.setMemberId(feeDto.getPayerObjId());
ownerCarDto.setCommunityId(feeDto.getCommunityId());
List<OwnerCarDto> ownerCarDtos = ownerCarInnerServiceSMOImpl.queryOwnerCars(ownerCarDto);
- if(!ListUtil.isNull(ownerCarDtos)){
+ if (!ListUtil.isNull(ownerCarDtos)) {
payFeeMonthOwnerDto.setObjFpcId(ownerCarDtos.get(0).getPaId());
}
- }else {
+ } else {
ContractDto contractDto = new ContractDto();
contractDto.setContractId(feeDto.getPayerObjId());
List<ContractDto> contractDtos = contractInnerServiceSMOImpl.queryContracts(contractDto);
- if(!ListUtil.isNull(contractDtos)){
+ if (!ListUtil.isNull(contractDtos)) {
payFeeMonthOwnerDto.setObjFpcId(contractDtos.get(0).getContractType());
}
}
@@ -132,20 +132,20 @@
* @param payFeeMonthOwnerDto
*/
@Override
- public void waitDispersedFeeDetail(FeeDto feeDto, PayFeeMonthOwnerDto payFeeMonthOwnerDto) {
+ public void waitDispersedFeeDetail(FeeDto feeDto, PayFeeMonthOwnerDto payFeeMonthOwnerDto, Double feePrice) {
PayFeeDetailMonthDto payFeeDetailMonthDto = new PayFeeDetailMonthDto();
payFeeDetailMonthDto.setCommunityId(feeDto.getCommunityId());
payFeeDetailMonthDto.setFeeId(feeDto.getFeeId());
List<FeeDetailDto> feeDetailDtos = payFeeDetailMonthInnerServiceSMOImpl.getWaitDispersedFeeDetail(payFeeDetailMonthDto);
- if (feeDetailDtos == null || feeDetailDtos.size() < 1) {
+ if (ListUtil.isNull(feeDetailDtos)) {
return;
}
for (FeeDetailDto feeDetailDto : feeDetailDtos) {
// todo 閫愭潯鍘荤鏁�
- doDispersedFeeDetail(feeDetailDto, feeDto, payFeeMonthOwnerDto);
+ doDispersedFeeDetail(feeDetailDto, feeDto, payFeeMonthOwnerDto, feePrice);
}
}
@@ -212,17 +212,14 @@
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), 8, BigDecimal.ROUND_HALF_UP);// 鏃� 瀹炴敹
- }
- // todo 璁$畻 搴旀敹
- curMonthReceivableAmount = new BigDecimal(curDay).multiply(dayReceivableAmount).setScale(4, BigDecimal.ROUND_HALF_UP);
-// } else { // todo 濡傛灉鏄暣鏈� 閭e氨鎸夋湀璁$畻锛屼互鍏� 杞崲鎴愬ぉ鍐� 涔樹互澶╂暟鍚庣殑璇樊
-// curMonthReceivableAmount = receivableAmount;
-// }
+
+ //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);
+
// todo 淇濆瓨鏁版嵁鍒皃ay_fee_detail_month
toSavePayFeeDetailMonth(curMonthReceivableAmount.doubleValue(), 0, null, feeDto, payFeeMonthOwnerDto, payFeeDetailMonthPos, startMonthDayTime, deadlineTime);
@@ -244,16 +241,16 @@
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;
+// 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, deadlineTime);
payFeeDetailMonthInnerServiceSMOImpl.savePayFeeDetailMonths(payFeeDetailMonthPos);
@@ -261,19 +258,22 @@
}
private void doDispersedFeeDetail(FeeDetailDto feeDetailDto, FeeDto feeDto, PayFeeMonthOwnerDto
- payFeeMonthOwnerDto) {
+ payFeeMonthOwnerDto, Double feePrice) {
List<PayFeeDetailMonthPo> payFeeDetailMonthPos = new ArrayList<>();
// todo 鍘婚櫎 寮�濮嬫椂闂村拰 缁撴潫鏃堕棿鐨� 灏忔椂 鍒嗛挓 绉�
Date startTime = DateUtil.timeToDate(feeDetailDto.getStartTime());
- Date endTime = DateUtil.timeToDate(feeDetailDto.getEndTime());
+ Date endTime = feeDetailDto.getEndTime();
+ endTime = DateUtil.getNextSecDateTime(endTime);
+ endTime = DateUtil.timeToDate(endTime);
int day = DateUtil.daysBetween(endTime, startTime);
if (day < 1) {
day = 1;
}
+ double month = DateUtil.dayCompare(feeDetailDto.getStartTime(), feeDetailDto.getEndTime(), true);
- BigDecimal receivableAmount = new BigDecimal(Double.parseDouble(feeDetailDto.getReceivableAmount()));
+ BigDecimal receivableAmount = new BigDecimal(feePrice + "");
BigDecimal receivedAmount = new BigDecimal(Double.parseDouble(feeDetailDto.getReceivedAmount()));
BigDecimal dayReceivableAmount = receivableAmount.divide(new BigDecimal(day), 8, BigDecimal.ROUND_HALF_UP);// 鏃� 搴旀敹
@@ -291,13 +291,22 @@
int curDay = 0;
BigDecimal curMonthReceivableAmount = null;
BigDecimal curMonthReceivedAmount = null;
+ int curMonthMaxDay = 30;
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);
+ if (!FeeDto.FEE_FLAG_ONCE.equals(feeDto.getFeeFlag())) {
+ dayReceivableAmount = receivableAmount.divide(new BigDecimal(curMonthMaxDay), 8, BigDecimal.ROUND_HALF_UP);// 鏃� 瀹炴敹
+ dayReceivedAmount = receivedAmount.divide(new BigDecimal(month + ""), 8, BigDecimal.ROUND_HALF_UP);// 鏃� 瀹炴敹
+ dayReceivedAmount = dayReceivedAmount.divide(new BigDecimal(curMonthMaxDay), 8, BigDecimal.ROUND_HALF_UP);// 鏃� 瀹炴敹
+ }
// todo 璁$畻 搴旀敹
curMonthReceivableAmount = new BigDecimal(curDay).multiply(dayReceivableAmount).setScale(4, BigDecimal.ROUND_HALF_UP);
// todo 璁$畻 瀹炴敹
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, endTime);
@@ -314,6 +323,15 @@
}
curDay = DateUtil.daysBetween(endTime, startMonthDayTime);
+ // todo 璁$畻褰撴湀澶╂暟
+ Calendar calendar = Calendar.getInstance();
+ calendar.setTime(startMonthDayTime);
+ curMonthMaxDay = calendar.getActualMaximum(Calendar.DAY_OF_MONTH);
+ if (!FeeDto.FEE_FLAG_ONCE.equals(feeDto.getFeeFlag())) {
+ dayReceivableAmount = receivableAmount.divide(new BigDecimal(curMonthMaxDay), 8, BigDecimal.ROUND_HALF_UP);// 鏃� 瀹炴敹
+ dayReceivedAmount = receivedAmount.divide(new BigDecimal(month + ""), 8, BigDecimal.ROUND_HALF_UP);// 鏃� 瀹炴敹
+ dayReceivedAmount = dayReceivedAmount.divide(new BigDecimal(curMonthMaxDay), 8, BigDecimal.ROUND_HALF_UP);// 鏃� 瀹炴敹
+ }
// todo 璁$畻 搴旀敹
curMonthReceivableAmount = new BigDecimal(curDay).multiply(dayReceivableAmount).setScale(4, BigDecimal.ROUND_HALF_UP);
// todo 璁$畻 瀹炴敹
--
Gitblit v1.8.0