From e5bbf4125adac709161c400806500f6fbd3730e4 Mon Sep 17 00:00:00 2001 From: Yen Date: Fri, 7 Jul 2023 16:58:55 +0800 Subject: [PATCH] =?UTF-8?q?=E9=A2=84=E7=AE=97=E5=91=A8=E6=9C=9F=E5=BA=95?= =?UTF-8?q?=E8=A1=A8=E5=88=86=E5=89=B2(=E6=9C=AA=E6=B5=8B=E8=AF=95)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../BirScheduleItemBudgetServiceImpl.java | 34 +++++++++++++++---- 1 file changed, 28 insertions(+), 6 deletions(-) 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){