@@ -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