Skip to content

Commit 086e1d0

Browse files
928255095gitee-org
authored andcommitted
优化实缴影响自然月
Signed-off-by: java110 <[email protected]>
1 parent 2025841 commit 086e1d0

File tree

1 file changed

+24
-8
lines changed

1 file changed

+24
-8
lines changed

service-fee/src/main/java/com/java110/fee/feeMonth/PayFeeMonthHelp.java

Lines changed: 24 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -369,8 +369,10 @@ private void doDispersedFeeDetailNormalMonth(FeeDetailDto feeDetailDto, FeeDto f
369369
}
370370
double month = DateUtil.dayCompare(feeDetailDto.getStartTime(), feeDetailDto.getEndTime(), true);
371371

372-
BigDecimal receivableAmount = new BigDecimal(feePrice + "");
373-
BigDecimal receivedAmount = new BigDecimal(Double.parseDouble(feeDetailDto.getReceivedAmount()));
372+
BigDecimal receivableAmount = new BigDecimal(feeDetailDto.getReceivableAmount());
373+
BigDecimal receivedAmount = new BigDecimal(feeDetailDto.getReceivedAmount());
374+
BigDecimal monthReceivableAmount = receivableAmount.divide(new BigDecimal(month + ""), 8, BigDecimal.ROUND_HALF_UP);
375+
BigDecimal monthReceivedAmount = receivedAmount.divide(new BigDecimal(month + ""), 8, BigDecimal.ROUND_HALF_UP);
374376

375377
BigDecimal dayReceivableAmount = null;
376378
BigDecimal dayReceivedAmount = null;
@@ -394,20 +396,28 @@ private void doDispersedFeeDetailNormalMonth(FeeDetailDto feeDetailDto, FeeDto f
394396
Calendar calendar = Calendar.getInstance();
395397
calendar.setTime(startMonthDayTime);
396398
curMonthMaxDay = calendar.getActualMaximum(Calendar.DAY_OF_MONTH);
397-
dayReceivableAmount = receivableAmount.divide(new BigDecimal(curMonthMaxDay), 8, BigDecimal.ROUND_HALF_UP);// 日 实收
398-
dayReceivedAmount = receivedAmount.divide(new BigDecimal(month + ""), 8, BigDecimal.ROUND_HALF_UP);// 日 实收
399-
dayReceivedAmount = dayReceivedAmount.divide(new BigDecimal(curMonthMaxDay), 8, BigDecimal.ROUND_HALF_UP);// 日 实收
399+
dayReceivableAmount = monthReceivableAmount.divide(new BigDecimal(curMonthMaxDay), 8, BigDecimal.ROUND_HALF_UP);// 日 实收
400+
dayReceivedAmount = monthReceivedAmount.divide(new BigDecimal(curMonthMaxDay), 8, BigDecimal.ROUND_HALF_UP);// 日 实收
400401
// todo 计算 应收
401402
curMonthReceivableAmount = new BigDecimal(curDay).multiply(dayReceivableAmount).setScale(4, BigDecimal.ROUND_HALF_UP);
402403
// todo 计算 实收
403404
curMonthReceivedAmount = new BigDecimal(curDay).multiply(dayReceivedAmount).setScale(4, BigDecimal.ROUND_HALF_UP);
405+
if(curMonthReceivableAmount.doubleValue() > receivableAmount.doubleValue()){
406+
curMonthReceivableAmount = receivableAmount;
407+
}
408+
if(curMonthReceivedAmount.doubleValue() > receivedAmount.doubleValue()){
409+
curMonthReceivedAmount = receivedAmount;
410+
}
404411
// todo 保存数据到pay_fee_detail_month
405412
toSavePayFeeDetailMonth(curMonthReceivableAmount.doubleValue(), curMonthReceivedAmount.doubleValue(), feeDetailDto, feeDto, payFeeMonthOwnerDto, payFeeDetailMonthPos, startMonthDayTime, endTime);
406413

407414
// todo 将startTime 修改为 下月1日时间
408415
startMonthDayTime = firstMonthDayTime;
409416
firstMonthDayCal.add(Calendar.MONTH, 1);
410417
firstMonthDayTime = firstMonthDayCal.getTime();
418+
419+
receivableAmount = receivableAmount.subtract(curMonthReceivableAmount);
420+
receivedAmount = receivedAmount.subtract(curMonthReceivedAmount);
411421
}
412422

413423
//todo 最后处理 最后 startMonthDayTime 到endTime 的
@@ -421,15 +431,21 @@ private void doDispersedFeeDetailNormalMonth(FeeDetailDto feeDetailDto, FeeDto f
421431
Calendar calendar = Calendar.getInstance();
422432
calendar.setTime(startMonthDayTime);
423433
curMonthMaxDay = calendar.getActualMaximum(Calendar.DAY_OF_MONTH);
424-
dayReceivableAmount = receivableAmount.divide(new BigDecimal(curMonthMaxDay), 8, BigDecimal.ROUND_HALF_UP);// 日 实收
425-
dayReceivedAmount = receivedAmount.divide(new BigDecimal(month + ""), 8, BigDecimal.ROUND_HALF_UP);// 日 实收
426-
dayReceivedAmount = dayReceivedAmount.divide(new BigDecimal(curMonthMaxDay), 8, BigDecimal.ROUND_HALF_UP);// 日 实收
434+
dayReceivableAmount = monthReceivableAmount.divide(new BigDecimal(curMonthMaxDay), 8, BigDecimal.ROUND_HALF_UP);// 日 实收
435+
dayReceivedAmount = monthReceivedAmount.divide(new BigDecimal(curMonthMaxDay), 8, BigDecimal.ROUND_HALF_UP);// 日 实收
427436

428437
// todo 计算 应收
429438
curMonthReceivableAmount = new BigDecimal(curDay).multiply(dayReceivableAmount).setScale(4, BigDecimal.ROUND_HALF_UP);
430439
// todo 计算 实收
431440
curMonthReceivedAmount = new BigDecimal(curDay).multiply(dayReceivedAmount).setScale(4, BigDecimal.ROUND_HALF_UP);
432441

442+
if(curMonthReceivableAmount.doubleValue() > receivableAmount.doubleValue()){
443+
curMonthReceivableAmount = receivableAmount;
444+
}
445+
if(curMonthReceivedAmount.doubleValue() > receivedAmount.doubleValue()){
446+
curMonthReceivedAmount = receivedAmount;
447+
}
448+
433449
// todo 保存数据到pay_fee_detail_month
434450
toSavePayFeeDetailMonth(curMonthReceivableAmount.doubleValue(), curMonthReceivedAmount.doubleValue(), feeDetailDto, feeDto, payFeeMonthOwnerDto, payFeeDetailMonthPos, startMonthDayTime, endTime);
435451
payFeeDetailMonthInnerServiceSMOImpl.savePayFeeDetailMonths(payFeeDetailMonthPos);

0 commit comments

Comments
 (0)