|
|
@ -64,23 +64,45 @@ public class BirScheduleItemBudgetServiceImpl extends ServiceImpl<BirScheduleIte |
|
|
|
List<TbsScheduleItemBudget> scheduleItemBudgetList = scheduleItemBudgetMapper.selectList(sibLqw); |
|
|
|
List<BirScheduleItemBudget> maintenanceList = new ArrayList<>(); |
|
|
|
for (TbsScheduleItemBudget scheduleItemBudget : scheduleItemBudgetList) { |
|
|
|
// 调整金额
|
|
|
|
BigDecimal adjustAmount = budgetLogAmtMap.get(scheduleItemBudget.getId()); |
|
|
|
if(adjustAmount!=null){ |
|
|
|
scheduleItemBudget.setBudgetAmount(scheduleItemBudget.getBudgetAmount().add(adjustAmount)); |
|
|
|
} |
|
|
|
// 按时间分割
|
|
|
|
LocalDate actStartDate = scheduleItemBudget.getStartDate().toLocalDate(); |
|
|
|
LocalDate actEndDate = scheduleItemBudget.getEndDate().toLocalDate(); |
|
|
|
int currentActDays = (int) (actEndDate.toEpochDay()-actStartDate.toEpochDay()+1); |
|
|
|
List<DateSplitDTO> dateSplitList = DateSplitUtil.getSplitDto(actStartDate,actEndDate); |
|
|
|
if(dateSplitList.size()>1){ |
|
|
|
for (DateSplitDTO splitDTO : dateSplitList) { |
|
|
|
//计算剩余
|
|
|
|
BigDecimal surplusScheduleBudget = scheduleItemBudget.getBudgetAmount(); |
|
|
|
BigDecimal surplusScheduleDispatch = scheduleItemBudget.getPreDispatchAmount(); |
|
|
|
for (DateSplitDTO currDateSplit : dateSplitList) { |
|
|
|
//日期占比
|
|
|
|
/*BigDecimal dayRate = new BigDecimal(currDateSplit.getDays() + "") |
|
|
|
BigDecimal dayRate = new BigDecimal(currDateSplit.getDays() + "") |
|
|
|
.divide(new BigDecimal(currentActDays + ""), 2, BigDecimal.ROUND_HALF_DOWN); |
|
|
|
//分割的金额
|
|
|
|
BigDecimal splitBudgetAmt; |
|
|
|
BigDecimal splitDispatchAmt; |
|
|
|
//最后一项
|
|
|
|
if(currDateSplit.getSort().equals(dateSplitList.size())){ |
|
|
|
splitBudgetAmt = surplusScheduleBudget; |
|
|
|
splitDispatchAmt = surplusScheduleDispatch; |
|
|
|
}else { |
|
|
|
splitBudgetAmt = scheduleItemBudget.getBudgetAmount().multiply(dayRate); |
|
|
|
splitDispatchAmt = scheduleItemBudget.getPreDispatchAmount().multiply(dayRate); |
|
|
|
surplusScheduleBudget = surplusScheduleBudget.subtract(splitBudgetAmt); |
|
|
|
surplusScheduleDispatch = surplusScheduleDispatch.subtract(splitDispatchAmt); |
|
|
|
} |
|
|
|
maintenanceList.add( |
|
|
|
this.buildMainEntity( |
|
|
|
scheduleItemBudget, |
|
|
|
dateSplitList.get(0), |
|
|
|
currDateSplit, |
|
|
|
currentActDays, |
|
|
|
scheduleItemBudget.getBudgetAmount(), |
|
|
|
scheduleItemBudget.getPreDispatchAmount()) |
|
|
|
);*/ |
|
|
|
splitBudgetAmt, |
|
|
|
splitDispatchAmt) |
|
|
|
); |
|
|
|
} |
|
|
|
|
|
|
|
}else if (dateSplitList.size()==1){ |
|
|
|