|
@ -14,6 +14,7 @@ import com.qs.serve.modules.tbs.entity.vo.TbsBudgetTableVo; |
|
|
import com.qs.serve.modules.tbs.mapper.TbsActivityGoodsMapper; |
|
|
import com.qs.serve.modules.tbs.mapper.TbsActivityGoodsMapper; |
|
|
import com.qs.serve.modules.tbs.mapper.TbsActivityMapper; |
|
|
import com.qs.serve.modules.tbs.mapper.TbsActivityMapper; |
|
|
import com.qs.serve.modules.tbs.mapper.TbsBudgetMapper; |
|
|
import com.qs.serve.modules.tbs.mapper.TbsBudgetMapper; |
|
|
|
|
|
import com.qs.serve.modules.tbs.mapper.TbsScheduleItemBudgetMapper; |
|
|
import lombok.AllArgsConstructor; |
|
|
import lombok.AllArgsConstructor; |
|
|
import lombok.extern.slf4j.Slf4j; |
|
|
import lombok.extern.slf4j.Slf4j; |
|
|
import org.jetbrains.annotations.NotNull; |
|
|
import org.jetbrains.annotations.NotNull; |
|
@ -43,6 +44,7 @@ public class TbsBudgetApplicationService { |
|
|
private SysConfigService configService; |
|
|
private SysConfigService configService; |
|
|
private TbsActivityMapper activityMapper; |
|
|
private TbsActivityMapper activityMapper; |
|
|
private TbsActivityGoodsMapper activityGoodsMapper; |
|
|
private TbsActivityGoodsMapper activityGoodsMapper; |
|
|
|
|
|
private TbsScheduleItemBudgetMapper tbsScheduleItemBudgetMapper; |
|
|
|
|
|
|
|
|
public TbsBudgetTableVo buildResultTable(Long costApplyId){ |
|
|
public TbsBudgetTableVo buildResultTable(Long costApplyId){ |
|
|
//加载活动
|
|
|
//加载活动
|
|
@ -209,6 +211,12 @@ public class TbsBudgetApplicationService { |
|
|
if(!budgetNoCondition){ |
|
|
if(!budgetNoCondition){ |
|
|
this.handleNoBudgetActivity(throwEx, overspend, activityList, noBudgetActivityIds,activityAllowBudgetIdMap); |
|
|
this.handleNoBudgetActivity(throwEx, overspend, activityList, noBudgetActivityIds,activityAllowBudgetIdMap); |
|
|
} |
|
|
} |
|
|
|
|
|
//统计费用申请占用金额
|
|
|
|
|
|
Map<Long,BigDecimal> budgetItemApplyAmountMap = new HashMap<>(scheduleItemList.size()); |
|
|
|
|
|
for (TbsScheduleItemBudget itemBudget : scheduleItemList) { |
|
|
|
|
|
BigDecimal budgetItemApplyAmount = tbsScheduleItemBudgetMapper.totalApplyAmount(itemBudget.getId()); |
|
|
|
|
|
budgetItemApplyAmountMap.put(itemBudget.getId(),budgetItemApplyAmount); |
|
|
|
|
|
} |
|
|
//统计当前活动前置项占用预算
|
|
|
//统计当前活动前置项占用预算
|
|
|
Map<Long,BigDecimal> counterMap = new HashMap<>(); |
|
|
Map<Long,BigDecimal> counterMap = new HashMap<>(); |
|
|
//匹配预算主要方法
|
|
|
//匹配预算主要方法
|
|
@ -216,7 +224,7 @@ public class TbsBudgetApplicationService { |
|
|
final List<TbsActivityCenterGoods> actUnMatchList = new ArrayList<>(); |
|
|
final List<TbsActivityCenterGoods> actUnMatchList = new ArrayList<>(); |
|
|
for (TbsActivityCenterGoods activityCostItem : centerGoodsList) { |
|
|
for (TbsActivityCenterGoods activityCostItem : centerGoodsList) { |
|
|
this.matchActivityMain(activityCostItem,throwEx, overspend, activityList, hisCostGroupByItemBudget, budgetList, |
|
|
this.matchActivityMain(activityCostItem,throwEx, overspend, activityList, hisCostGroupByItemBudget, budgetList, |
|
|
noConditionBudgetList, counterMap, actMatchList, actUnMatchList,activityAllowBudgetIdMap,activitySubjects,activityCenterList); |
|
|
noConditionBudgetList, counterMap, actMatchList, actUnMatchList,activityAllowBudgetIdMap,budgetItemApplyAmountMap); |
|
|
} |
|
|
} |
|
|
List<TbsBudgetCostItem> budgetMatchList = actMatchList.stream() |
|
|
List<TbsBudgetCostItem> budgetMatchList = actMatchList.stream() |
|
|
.map(TbsActivityCenterGoods::toBudgetCostItem).collect(Collectors.toList()); |
|
|
.map(TbsActivityCenterGoods::toBudgetCostItem).collect(Collectors.toList()); |
|
@ -413,7 +421,7 @@ public class TbsBudgetApplicationService { |
|
|
* @param actMatchList 匹配预算占用的费用(含超支预算) |
|
|
* @param actMatchList 匹配预算占用的费用(含超支预算) |
|
|
* @param actUnMatchList 没有匹配预算的费用 |
|
|
* @param actUnMatchList 没有匹配预算的费用 |
|
|
* @param activityAllowBudgetIdMap 满足当前活动项的费用idMap |
|
|
* @param activityAllowBudgetIdMap 满足当前活动项的费用idMap |
|
|
* @param activitySubjects 活动科目 |
|
|
* @param budgetItemApplyAmountMap 统计费用申请占用金额 |
|
|
*/ |
|
|
*/ |
|
|
private void matchActivityMain(TbsActivityCenterGoods activityCostItem, |
|
|
private void matchActivityMain(TbsActivityCenterGoods activityCostItem, |
|
|
Boolean throwEx, |
|
|
Boolean throwEx, |
|
@ -426,8 +434,7 @@ public class TbsBudgetApplicationService { |
|
|
final List<TbsActivityCenterGoods> actMatchList, |
|
|
final List<TbsActivityCenterGoods> actMatchList, |
|
|
final List<TbsActivityCenterGoods> actUnMatchList, |
|
|
final List<TbsActivityCenterGoods> actUnMatchList, |
|
|
final Map<Long,List<Long>> activityAllowBudgetIdMap, |
|
|
final Map<Long,List<Long>> activityAllowBudgetIdMap, |
|
|
final List<TbsActivitySubject> activitySubjects, |
|
|
Map<Long,BigDecimal> budgetItemApplyAmountMap) { |
|
|
final List<TbsActivityCenter> activityCenterList) { |
|
|
|
|
|
//过滤满全条件的预算
|
|
|
//过滤满全条件的预算
|
|
|
List<Long> allowBudgetIds = activityAllowBudgetIdMap.get(activityCostItem.getActivityId()); |
|
|
List<Long> allowBudgetIds = activityAllowBudgetIdMap.get(activityCostItem.getActivityId()); |
|
|
List<TbsBudget> budgetList = allBudgetList.stream().filter(obj->allowBudgetIds.contains(obj.getId())).collect(Collectors.toList()); |
|
|
List<TbsBudget> budgetList = allBudgetList.stream().filter(obj->allowBudgetIds.contains(obj.getId())).collect(Collectors.toList()); |
|
@ -469,7 +476,7 @@ public class TbsBudgetApplicationService { |
|
|
if(CollectionUtil.isNotEmpty(currentScheduleItemBudgets)){ |
|
|
if(CollectionUtil.isNotEmpty(currentScheduleItemBudgets)){ |
|
|
boolean isMatch = false; |
|
|
boolean isMatch = false; |
|
|
for (TbsScheduleItemBudget itemBudget : currentScheduleItemBudgets) { |
|
|
for (TbsScheduleItemBudget itemBudget : currentScheduleItemBudgets) { |
|
|
//历史费用
|
|
|
//历史费用(含申请占用金额)
|
|
|
BigDecimal totalUsed = TbsBudgetCostUtil.totalHisCost(hisCostGroupByItemBudget.get(itemBudget.getId())); |
|
|
BigDecimal totalUsed = TbsBudgetCostUtil.totalHisCost(hisCostGroupByItemBudget.get(itemBudget.getId())); |
|
|
//当前项费用
|
|
|
//当前项费用
|
|
|
BigDecimal budgetAmount = itemBudget.getBudgetAmount(); |
|
|
BigDecimal budgetAmount = itemBudget.getBudgetAmount(); |
|
@ -478,12 +485,17 @@ public class TbsBudgetApplicationService { |
|
|
if(lastAmount==null){ |
|
|
if(lastAmount==null){ |
|
|
lastAmount = BigDecimal.ZERO; |
|
|
lastAmount = BigDecimal.ZERO; |
|
|
} |
|
|
} |
|
|
|
|
|
//判断是否够用
|
|
|
if(budgetAmount.subtract(lastAmount).subtract(totalUsed).compareTo(goodsAmount)>0){ |
|
|
if(budgetAmount.subtract(lastAmount).subtract(totalUsed).compareTo(goodsAmount)>0){ |
|
|
activityCostItem.setBudgetId(itemBudget.getBudgetId()); |
|
|
activityCostItem.setBudgetId(itemBudget.getBudgetId()); |
|
|
activityCostItem.setScheduleId(itemBudget.getScheduleId()); |
|
|
activityCostItem.setScheduleId(itemBudget.getScheduleId()); |
|
|
activityCostItem.setScheduleItemId(itemBudget.getScheduleItemId()); |
|
|
activityCostItem.setScheduleItemId(itemBudget.getScheduleItemId()); |
|
|
activityCostItem.setScheduleItemBudgetId(itemBudget.getId()); |
|
|
activityCostItem.setScheduleItemBudgetId(itemBudget.getId()); |
|
|
activityCostItem.setScheduleItemName(itemBudget.getItemName()); |
|
|
activityCostItem.setScheduleItemName(itemBudget.getItemName()); |
|
|
|
|
|
activityCostItem.setScheduleItemAmount(budgetAmount); |
|
|
|
|
|
//剩余的可用预算
|
|
|
|
|
|
activityCostItem.setScheduleItemAmountUsed(totalUsed); |
|
|
|
|
|
activityCostItem.setScheduleItemAmountApply(budgetItemApplyAmountMap.get(itemBudget.getId())); |
|
|
isMatch = true; |
|
|
isMatch = true; |
|
|
//记录当前费用使用考核期费用
|
|
|
//记录当前费用使用考核期费用
|
|
|
lastAmount = lastAmount.add(goodsAmount); |
|
|
lastAmount = lastAmount.add(goodsAmount); |
|
|