Browse Source

预算周期底表分割(未测试)

contract
Yen 2 years ago
parent
commit
e5bbf4125a
  1. 34
      src/main/java/com/qs/serve/modules/bir/service/impl/BirScheduleItemBudgetServiceImpl.java

34
src/main/java/com/qs/serve/modules/bir/service/impl/BirScheduleItemBudgetServiceImpl.java

@ -64,23 +64,45 @@ public class BirScheduleItemBudgetServiceImpl extends ServiceImpl<BirScheduleIte
List<TbsScheduleItemBudget> scheduleItemBudgetList = scheduleItemBudgetMapper.selectList(sibLqw); List<TbsScheduleItemBudget> scheduleItemBudgetList = scheduleItemBudgetMapper.selectList(sibLqw);
List<BirScheduleItemBudget> maintenanceList = new ArrayList<>(); List<BirScheduleItemBudget> maintenanceList = new ArrayList<>();
for (TbsScheduleItemBudget scheduleItemBudget : scheduleItemBudgetList) { 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 actStartDate = scheduleItemBudget.getStartDate().toLocalDate();
LocalDate actEndDate = scheduleItemBudget.getEndDate().toLocalDate(); LocalDate actEndDate = scheduleItemBudget.getEndDate().toLocalDate();
int currentActDays = (int) (actEndDate.toEpochDay()-actStartDate.toEpochDay()+1); int currentActDays = (int) (actEndDate.toEpochDay()-actStartDate.toEpochDay()+1);
List<DateSplitDTO> dateSplitList = DateSplitUtil.getSplitDto(actStartDate,actEndDate); List<DateSplitDTO> dateSplitList = DateSplitUtil.getSplitDto(actStartDate,actEndDate);
if(dateSplitList.size()>1){ 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); .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( maintenanceList.add(
this.buildMainEntity( this.buildMainEntity(
scheduleItemBudget, scheduleItemBudget,
dateSplitList.get(0), currDateSplit,
currentActDays, currentActDays,
scheduleItemBudget.getBudgetAmount(), splitBudgetAmt,
scheduleItemBudget.getPreDispatchAmount()) splitDispatchAmt)
);*/ );
} }
}else if (dateSplitList.size()==1){ }else if (dateSplitList.size()==1){

Loading…
Cancel
Save