|
|
@ -1,6 +1,8 @@ |
|
|
|
package com.qs.serve.modules.tbs.service; |
|
|
|
|
|
|
|
import com.qs.serve.modules.tbs.common.TbsGoodsType; |
|
|
|
import com.qs.serve.modules.tbs.common.util.CostSort2WrapperUtil; |
|
|
|
import com.qs.serve.modules.tbs.entity.TbsActivity; |
|
|
|
import com.qs.serve.modules.tbs.entity.TbsActivityCenterGoods; |
|
|
|
import com.qs.serve.modules.tbs.entity.TbsScheduleItemBudget; |
|
|
|
import com.qs.serve.modules.tbs.entity.dto.TbsCenterGoodsGroupDTO; |
|
|
@ -24,11 +26,20 @@ import java.util.*; |
|
|
|
public class TbsBudgetMatchApplication { |
|
|
|
|
|
|
|
private final TbsActivityCenterGoodsService tbsActivityCenterGoodsService; |
|
|
|
private final TbsActivityService activityService; |
|
|
|
private final TbsBudgetMatchMapper budgetMatchMapper; |
|
|
|
|
|
|
|
public TbsBudgetTableVo buildResultTable(Long costApplyId){ |
|
|
|
List<TbsActivity> activityList = activityService.listByCostApplyId(costApplyId); |
|
|
|
Map<Long,TbsActivity> activityMap = new HashMap<>(activityList.size()); |
|
|
|
for (TbsActivity activity : activityList) { |
|
|
|
activityMap.put(activity.getId(),activity); |
|
|
|
} |
|
|
|
List<TbsActivityCenterGoods> activityCenterGoodsList = tbsActivityCenterGoodsService.listByCostApplyId(costApplyId); |
|
|
|
// 记录使用金额
|
|
|
|
Map<Long, BigDecimal> usableAmountMap = new HashMap<>(); |
|
|
|
// 提取命中的预算
|
|
|
|
Map<Long,TbsScheduleItemBudget> matchItemBudgetsMap = new HashMap<>(); |
|
|
|
for (TbsActivityCenterGoods centerGoods : activityCenterGoodsList) { |
|
|
|
// 通过TbsActivityCenterGoods获取匹配条件的预算
|
|
|
|
List<TbsScheduleItemBudget> scheduleItemBudgetList = this.centerGoodsMatchTbsScheduleItemBudget(centerGoods); |
|
|
@ -47,15 +58,68 @@ public class TbsBudgetMatchApplication { |
|
|
|
usableAmountMap.put(scheduleItemBudgetId,usableAmt); |
|
|
|
//标记使用那个预算
|
|
|
|
centerGoods.setScheduleItemBudgetId(itemBudget.getId()); |
|
|
|
matchItemBudgetsMap.put(scheduleItemBudgetId,itemBudget); |
|
|
|
break; |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
//TODO 拼接Table,要重新设计显示内容
|
|
|
|
TbsBudgetTableVo tableData = new TbsBudgetTableVo(); |
|
|
|
List<TbsBudgetTableVo.TopTheadHeader> topTheadHeaderList = new ArrayList<>(); |
|
|
|
List<TbsBudgetTableVo.TableValue> tableValueList = new ArrayList<>(); |
|
|
|
List<TbsBudgetTableVo.LeftTheadHeader> leftTheadHeaderList = new ArrayList<>(); |
|
|
|
|
|
|
|
for (Long scheduleItemBudgetId : matchItemBudgetsMap.keySet()) { |
|
|
|
TbsScheduleItemBudget itemBudget = matchItemBudgetsMap.get(scheduleItemBudgetId); |
|
|
|
TbsBudgetTableVo.TopTheadHeader header = new TbsBudgetTableVo.TopTheadHeader(); |
|
|
|
header.setId(scheduleItemBudgetId.toString()); |
|
|
|
header.setLabel(itemBudget.getBudgetName()+"-"+itemBudget.getItemName()); |
|
|
|
header.setBudgetAmount(itemBudget.getUnUsedBudgetAmount()); |
|
|
|
header.setTotalAmount(itemBudget.getFinalBudgetAmount()); |
|
|
|
header.setCostAppliedAmount(itemBudget.getUsedBudgetAmount()); |
|
|
|
header.setCostApplyAmount(BigDecimal.ZERO); |
|
|
|
topTheadHeaderList.add(header); |
|
|
|
} |
|
|
|
TbsBudgetTableVo.TopTheadHeader overTopHeader = new TbsBudgetTableVo.TopTheadHeader(); |
|
|
|
overTopHeader.setId("0"); |
|
|
|
overTopHeader.setLabel("无匹配预算"); |
|
|
|
overTopHeader.setBudgetAmount(BigDecimal.ZERO); |
|
|
|
topTheadHeaderList.add(overTopHeader); |
|
|
|
|
|
|
|
for (TbsActivityCenterGoods centerGoods : activityCenterGoodsList) { |
|
|
|
TbsBudgetTableVo.LeftTheadHeader theadHeader = new TbsBudgetTableVo.LeftTheadHeader(); |
|
|
|
String actCode = activityMap.get(centerGoods.getActivityId()).getActivityCode(); |
|
|
|
theadHeader.setActivityCode(actCode); |
|
|
|
theadHeader.setId(centerGoods.getId()+""); |
|
|
|
theadHeader.setSubjectId(centerGoods.getSubjectId()); |
|
|
|
theadHeader.setSubjectName(centerGoods.getSubjectName()); |
|
|
|
theadHeader.setCenterId(centerGoods.getCenterId()); |
|
|
|
theadHeader.setCenterName(centerGoods.getCenterName()); |
|
|
|
theadHeader.setTargetType(centerGoods.getTargetType()); |
|
|
|
theadHeader.setTargetId(centerGoods.getTargetId()); |
|
|
|
if(centerGoods.getTargetType().equals(TbsGoodsType.sku.name())){ |
|
|
|
centerGoods.initSpuSkuName(); |
|
|
|
theadHeader.setLabel(centerGoods.getSpuName()+"("+centerGoods.getSkuName()+")"); |
|
|
|
}else { |
|
|
|
theadHeader.setLabel(centerGoods.getTargetName()); |
|
|
|
} |
|
|
|
theadHeader.setLabelCombo(actCode+"-" |
|
|
|
+theadHeader.getSubjectName()+"-" |
|
|
|
+theadHeader.getCenterName()+"-" |
|
|
|
+theadHeader.getLabel()); |
|
|
|
leftTheadHeaderList.add(theadHeader); |
|
|
|
|
|
|
|
TbsBudgetTableVo.TableValue tableValue = new TbsBudgetTableVo.TableValue(); |
|
|
|
tableValue.setTopId(centerGoods.getScheduleItemBudgetId()+""); |
|
|
|
tableValue.setLeftId(centerGoods.getCenterId()+""); |
|
|
|
tableValue.setValue(centerGoods.getCenterGoodsAmount()); |
|
|
|
tableValueList.add(tableValue); |
|
|
|
} |
|
|
|
TbsBudgetTableVo tableData = new TbsBudgetTableVo(); |
|
|
|
tableData.setTableValueList(tableValueList); |
|
|
|
tableData.setTopTheadHeaderList(topTheadHeaderList); |
|
|
|
tableData.setLeftTheadHeaderList(leftTheadHeaderList); |
|
|
|
//TODO 关联通用数据
|
|
|
|
return null; |
|
|
|
return tableData; |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|