diff --git a/src/main/java/com/qs/serve/modules/bir/service/impl/BirScheduleItemBudgetServiceImpl.java b/src/main/java/com/qs/serve/modules/bir/service/impl/BirScheduleItemBudgetServiceImpl.java index 4e8912e9..16989411 100644 --- a/src/main/java/com/qs/serve/modules/bir/service/impl/BirScheduleItemBudgetServiceImpl.java +++ b/src/main/java/com/qs/serve/modules/bir/service/impl/BirScheduleItemBudgetServiceImpl.java @@ -64,23 +64,45 @@ public class BirScheduleItemBudgetServiceImpl extends ServiceImpl scheduleItemBudgetList = scheduleItemBudgetMapper.selectList(sibLqw); List 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 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){