|
@ -581,16 +581,43 @@ public class LoanCaseCloseApplyService extends MybatisBaseService<LoanCaseCloseA |
|
|
List<String> busVinSidList = loanCaseProgressVehService.selectByMainSid(loanCaseCloseApply.getBusSid()); |
|
|
List<String> busVinSidList = loanCaseProgressVehService.selectByMainSid(loanCaseCloseApply.getBusSid()); |
|
|
busVinSidList.removeAll(Collections.singleton(null)); |
|
|
busVinSidList.removeAll(Collections.singleton(null)); |
|
|
BigDecimal executeExpenseAmount = BigDecimal.ZERO; |
|
|
BigDecimal executeExpenseAmount = BigDecimal.ZERO; |
|
|
|
|
|
Map<String, BigDecimal> vinAmountMap = new HashMap<>(); |
|
|
if(!busVinSidList.isEmpty()){ |
|
|
if(!busVinSidList.isEmpty()){ |
|
|
LoanCaseExecuteApply loanCaseExecuteApply = loanCaseProgressExecuteService.selectByBusSid(loanCaseCloseApply.getBusSid()); |
|
|
LoanCaseExecuteApply loanCaseExecuteApply = loanCaseProgressExecuteService.selectByBusSid(loanCaseCloseApply.getBusSid()); |
|
|
if(loanCaseExecuteApply != null){ |
|
|
if(loanCaseExecuteApply != null){ |
|
|
executeExpenseAmount= loanCaseExecuteApply.getExecuteExpenseAmount();//预计申请坏账金额
|
|
|
executeExpenseAmount= loanCaseExecuteApply.getExecuteExpenseAmount();//预计申请坏账金额
|
|
|
if(executeExpenseAmount != null){ |
|
|
if(executeExpenseAmount != null){ |
|
|
executeExpenseAmount = executeExpenseAmount.divide(BigDecimal.valueOf(busVinSidList.size()),2, RoundingMode.HALF_UP); |
|
|
int size = busVinSidList.size(); |
|
|
|
|
|
|
|
|
|
|
|
// 四舍五入到2位小数的平均值
|
|
|
|
|
|
BigDecimal roundedAverage = executeExpenseAmount.divide(BigDecimal.valueOf(size), 2, RoundingMode.HALF_UP); |
|
|
|
|
|
// n台车 × roundedAverage
|
|
|
|
|
|
BigDecimal totalRounded = roundedAverage.multiply(BigDecimal.valueOf(size)).setScale(2, RoundingMode.HALF_UP); |
|
|
|
|
|
|
|
|
|
|
|
if (executeExpenseAmount.setScale(2, RoundingMode.HALF_UP).compareTo(totalRounded) == 0) { |
|
|
|
|
|
// 能整除,直接平均
|
|
|
|
|
|
for (String vinSid : busVinSidList) { |
|
|
|
|
|
vinAmountMap.put(vinSid, roundedAverage); |
|
|
|
|
|
} |
|
|
|
|
|
} else { |
|
|
|
|
|
// 不能整除,最后一台车补差值
|
|
|
|
|
|
BigDecimal totalForNMinusOne = roundedAverage.multiply(BigDecimal.valueOf(size - 1)); |
|
|
|
|
|
BigDecimal lastAmount = executeExpenseAmount.subtract(totalForNMinusOne).setScale(2, RoundingMode.HALF_UP); |
|
|
|
|
|
|
|
|
|
|
|
for (int i = 0; i < size; i++) { |
|
|
|
|
|
String vinSid = busVinSidList.get(i); |
|
|
|
|
|
if (i == size - 1) { |
|
|
|
|
|
vinAmountMap.put(vinSid, lastAmount); |
|
|
|
|
|
} else { |
|
|
|
|
|
vinAmountMap.put(vinSid, roundedAverage); |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
for (int i = 0; i < busVinSidList.size(); i++) { |
|
|
for (int i = 0; i < busVinSidList.size(); i++) { |
|
|
String busVinSid = busVinSidList.get(i); |
|
|
String busVinSid = busVinSidList.get(i); |
|
|
|
|
|
executeExpenseAmount = vinAmountMap.get(busVinSid); |
|
|
BusSalesOrderVehicle busSalesOrderVehicle = busSalesOrderVehicleFeign.details(busVinSid).getData(); |
|
|
BusSalesOrderVehicle busSalesOrderVehicle = busSalesOrderVehicleFeign.details(busVinSid).getData(); |
|
|
String customerNumber = ""; |
|
|
String customerNumber = ""; |
|
|
BusSalesOrder salesOrder = busSalesOrderFeign.fetchBySid(busSalesOrderVehicle.getSalesOrderSid()).getData(); |
|
|
BusSalesOrder salesOrder = busSalesOrderFeign.fetchBySid(busSalesOrderVehicle.getSalesOrderSid()).getData(); |
|
|