|
|
@ -35,6 +35,8 @@ import com.qs.serve.modules.tbs.entity.*; |
|
|
|
import com.qs.serve.modules.tbs.entity.bo.TbsAffairCommitBo; |
|
|
|
import com.qs.serve.modules.tbs.entity.dto.TbsBudgetCostResult; |
|
|
|
import com.qs.serve.modules.tbs.entity.dto.TbsBudgetItemCostResult; |
|
|
|
import com.qs.serve.modules.tbs.entity.dto.TbsBudgetLogPreAmount; |
|
|
|
import com.qs.serve.modules.tbs.entity.dto.TbsScheduleItemBudgetAmount; |
|
|
|
import com.qs.serve.modules.tbs.entity.vo.TbsBudgetTableVo; |
|
|
|
import com.qs.serve.modules.tbs.mapper.TbsBudgetMapper; |
|
|
|
import com.qs.serve.modules.tbs.mapper.TbsScheduleItemBudgetMapper; |
|
|
@ -429,30 +431,60 @@ public class TzcPolicyApplicationServiceImpl implements TzcPolicyApplicationServ |
|
|
|
if(!budgetNoCondition){ |
|
|
|
this.handleNoBudgetPolicy(throwEx, overspend, policyItemList,noBudgetPolicyIds,policyAllowBudgetIdMap); |
|
|
|
} |
|
|
|
//统计所有占用预算金额
|
|
|
|
Map<Long, BigDecimal> budgetItemAmountMap = new HashMap<>(scheduleItemList.size()); |
|
|
|
//统计费用申请占用金额(录入时,考核期申请占用金额)
|
|
|
|
Map<Long,BigDecimal> budgetItemApplyAmountMap = new HashMap<>(scheduleItemList.size()); |
|
|
|
for (TbsScheduleItemBudget itemBudget : scheduleItemList) { |
|
|
|
// BigDecimal budgetItemApplyAmount = tbsScheduleItemBudgetMapper.totalApplyAmount(itemBudget.getId(),0L);
|
|
|
|
// if(budgetItemApplyAmount==null){
|
|
|
|
// budgetItemApplyAmount = BigDecimal.ZERO;
|
|
|
|
// }
|
|
|
|
|
|
|
|
List<Long> scheduleItemBudgetIds = scheduleItemList.stream().map(TbsScheduleItemBudget::getId).collect(Collectors.toList()); |
|
|
|
if(scheduleItemBudgetIds.size()>0){ |
|
|
|
List<TbsScheduleItemBudgetAmount> scheduleItemBudgetAmounts = tbsScheduleItemBudgetMapper.totalPolicyAmountList(scheduleItemBudgetIds,policyId); |
|
|
|
for (TbsScheduleItemBudgetAmount budgetAmount : scheduleItemBudgetAmounts) { |
|
|
|
Long scheduleItemBudgetId = null; |
|
|
|
for (TbsScheduleItemBudget itemBudget : scheduleItemList) { |
|
|
|
if(itemBudget.getScheduleItemId().equals(budgetAmount.getScheduleItemId())){ |
|
|
|
scheduleItemBudgetId = itemBudget.getId(); |
|
|
|
break; |
|
|
|
} |
|
|
|
} |
|
|
|
if (budgetAmount.getTotalAmount()==null){ |
|
|
|
budgetItemApplyAmountMap.put(scheduleItemBudgetId,BigDecimal.ZERO); |
|
|
|
continue; |
|
|
|
} |
|
|
|
budgetItemApplyAmountMap.put(scheduleItemBudgetId,budgetAmount.getTotalAmount()); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
//统计所有占用预算金额
|
|
|
|
Map<Long, BigDecimal> budgetItemAmountMap = new HashMap<>(scheduleItemList.size()); |
|
|
|
List<Long> budgetIdsFromScheduleItemList = scheduleItemList.stream().map(TbsScheduleItemBudget::getBudgetId).distinct().collect(Collectors.toList()); |
|
|
|
List<Long> scheduleItemIdsFromScheduleItemList = scheduleItemList.stream().map(TbsScheduleItemBudget::getScheduleItemId).distinct().collect(Collectors.toList()); |
|
|
|
if(scheduleItemIdsFromScheduleItemList.size()>0&&budgetIdsFromScheduleItemList.size()>0){ |
|
|
|
List<TbsBudgetLogPreAmount> budgetLogPreAmounts = tbsScheduleItemBudgetMapper.listLogCostAmountWithPolicy(budgetIdsFromScheduleItemList,scheduleItemIdsFromScheduleItemList,policyId); |
|
|
|
for (TbsScheduleItemBudget itemBudget : scheduleItemList) { |
|
|
|
boolean isNotMatch = true; |
|
|
|
for (TbsBudgetLogPreAmount logPreAmount : budgetLogPreAmounts) { |
|
|
|
if(itemBudget.getBudgetId().equals(logPreAmount.getBudgetId())&&itemBudget.getScheduleItemId().equals(logPreAmount.getScheduleItemId())){ |
|
|
|
BigDecimal budgetItemAmount = logPreAmount.getAmount(); |
|
|
|
isNotMatch = false; |
|
|
|
//因为已使用的预算费用为负数,需去相反数
|
|
|
|
budgetItemAmount = budgetItemAmount==null?BigDecimal.ZERO:budgetItemAmount.negate(); |
|
|
|
budgetItemAmountMap.put(itemBudget.getId(),budgetItemAmount); |
|
|
|
} |
|
|
|
} |
|
|
|
if(isNotMatch){ |
|
|
|
budgetItemAmountMap.put(itemBudget.getId(),BigDecimal.ZERO); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
/*for (TbsScheduleItemBudget itemBudget : scheduleItemList) { |
|
|
|
BigDecimal budgetItemApplyAmount = tbsScheduleItemBudgetMapper.totalPolicyAmount(itemBudget.getId(), policyId); |
|
|
|
// if(budgetItemApplyAmount2!=null){
|
|
|
|
// budgetItemApplyAmount.add(budgetItemApplyAmount2);
|
|
|
|
// }
|
|
|
|
budgetItemApplyAmountMap.put(itemBudget.getId(),budgetItemApplyAmount); |
|
|
|
BigDecimal budgetItemAmount = tbsScheduleItemBudgetMapper.totalCostAmountByPolicyId(itemBudget.getBudgetId(),itemBudget.getScheduleItemId(),policyId); |
|
|
|
//因为结果为负数,需去相反数
|
|
|
|
budgetItemAmount = budgetItemAmount==null?BigDecimal.ZERO:budgetItemAmount.negate(); |
|
|
|
//添加费用占用情况
|
|
|
|
// BigDecimal budgetItemCostAmount = tbsScheduleItemBudgetMapper.totalCostAmountByApplyId(itemBudget.getBudgetId(),itemBudget.getScheduleItemId(),0L);
|
|
|
|
// if(budgetItemCostAmount!=null){
|
|
|
|
// budgetItemAmount = budgetItemAmount.add(budgetItemCostAmount.negate());
|
|
|
|
// }
|
|
|
|
budgetItemAmountMap.put(itemBudget.getId(),budgetItemAmount); |
|
|
|
} |
|
|
|
}*/ |
|
|
|
//统计当前活动前置项占用预算
|
|
|
|
Map<Long,BigDecimal> counterMap = new HashMap<>(); |
|
|
|
//匹配预算主要方法
|
|
|
|