|
|
@ -3,6 +3,7 @@ package com.qs.serve.modules.tbs.service.impl; |
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; |
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; |
|
|
|
import com.qs.serve.modules.tbs.entity.*; |
|
|
|
import com.qs.serve.modules.tbs.entity.vo.TbsBudgetMatchMsgVo; |
|
|
|
import com.qs.serve.modules.tbs.mapper.*; |
|
|
|
import com.qs.serve.modules.tbs.service.TbsActivityCenterGoodsService; |
|
|
|
import com.qs.serve.modules.tbs.service.TbsBudgetManagerService; |
|
|
@ -10,6 +11,7 @@ import lombok.AllArgsConstructor; |
|
|
|
import lombok.extern.slf4j.Slf4j; |
|
|
|
import org.springframework.stereotype.Service; |
|
|
|
|
|
|
|
import java.util.ArrayList; |
|
|
|
import java.util.List; |
|
|
|
import java.util.Map; |
|
|
|
import java.util.stream.Collectors; |
|
|
@ -26,13 +28,13 @@ public class TbsBudgetManagerServiceImpl implements TbsBudgetManagerService { |
|
|
|
private final TbsActivityMapper activityMapper; |
|
|
|
private final TbsActivityCenterMapper activityCenterMapper; |
|
|
|
private final TbsActivitySubjectMapper activitySubjectMapper; |
|
|
|
private final TbsActivityCenterGoodsMapper activityCenterGoodsMapper; |
|
|
|
private final TbsActivityGoodsMapper activityGoodsMapper; |
|
|
|
private final TbsBudgetMapper budgetMapper; |
|
|
|
private final TbsBudgetConditionMapper budgetConditionMapper; |
|
|
|
private final TbsScheduleItemBudgetMapper scheduleItemBudgetMapper; |
|
|
|
|
|
|
|
@Override |
|
|
|
public Object compare(List<Long> activityIds, List<Long> budgetIds) { |
|
|
|
public List<TbsBudgetMatchMsgVo> compare(List<Long> activityIds, List<Long> budgetIds) { |
|
|
|
//加载基础数据
|
|
|
|
QueryWrapper acgLqw = new QueryWrapper<>(); |
|
|
|
acgLqw.in("activity_id",activityIds); |
|
|
@ -41,19 +43,23 @@ public class TbsBudgetManagerServiceImpl implements TbsBudgetManagerService { |
|
|
|
List<TbsActivity> activityList = activityMapper.selectBatchIds(activityIds); |
|
|
|
List<TbsActivityCenter> allCenterList = activityCenterMapper.selectList(acgLqw); |
|
|
|
List<TbsActivitySubject> allSubjectList = activitySubjectMapper.selectList(acgLqw); |
|
|
|
List<TbsActivityCenterGoods> allCenterGoodsList = activityCenterGoodsMapper.selectList(acgLqw); |
|
|
|
List<TbsActivityGoods> allGoodsList = activityGoodsMapper.selectList(acgLqw); |
|
|
|
|
|
|
|
Map<Long,List<TbsActivityCenter>> centerListMap = allCenterList.stream().collect(Collectors.groupingBy(TbsActivityCenter::getActivityId)); |
|
|
|
Map<Long,List<TbsActivitySubject>> subjectListMap = allSubjectList.stream().collect(Collectors.groupingBy(TbsActivitySubject::getActivityId)); |
|
|
|
Map<Long,List<TbsActivityCenterGoods>> centerGoodsListMap = allCenterGoodsList.stream().collect(Collectors.groupingBy(TbsActivityCenterGoods::getActivityId)); |
|
|
|
Map<Long,List<TbsActivityGoods>> goodsListMap = allGoodsList.stream().collect(Collectors.groupingBy(TbsActivityGoods::getActivityId)); |
|
|
|
|
|
|
|
LambdaQueryWrapper<TbsBudgetCondition> conditionLqw = new LambdaQueryWrapper<>(); |
|
|
|
conditionLqw.in(TbsBudgetCondition::getBudgetId,budgetIds); |
|
|
|
List<TbsBudgetCondition> allConditionList = budgetConditionMapper.selectList(conditionLqw); |
|
|
|
|
|
|
|
|
|
|
|
Map<Long,List<TbsBudgetCondition>> conditionListMap = allConditionList.stream().collect(Collectors.groupingBy(TbsBudgetCondition::getBudgetId)); |
|
|
|
|
|
|
|
LambdaQueryWrapper<TbsScheduleItemBudget> sibLqw = new LambdaQueryWrapper<>(); |
|
|
|
sibLqw.in(TbsScheduleItemBudget::getBudgetId,budgetIds); |
|
|
|
List<TbsScheduleItemBudget> allItemBudgetList = scheduleItemBudgetMapper.selectList(sibLqw); |
|
|
|
Map<Long,List<TbsScheduleItemBudget>> allItemBudgetListMap = allItemBudgetList.stream().collect(Collectors.groupingBy(TbsScheduleItemBudget::getBudgetId)); |
|
|
|
|
|
|
|
List<TbsBudgetMatchMsgVo> msgVoList = new ArrayList<>(); |
|
|
|
//匹对
|
|
|
|
for (TbsBudget budget : budgetList) { |
|
|
|
for (TbsActivity activity : activityList) { |
|
|
@ -64,7 +70,8 @@ public class TbsBudgetManagerServiceImpl implements TbsBudgetManagerService { |
|
|
|
List<TbsActivitySubject> subjectList = subjectListMap.get(activityId); |
|
|
|
for (TbsActivitySubject subject : subjectList) { |
|
|
|
if(!subject.getSubjectId().equals(budget.getSubjectId())){ |
|
|
|
String msg = "无法匹配科目"; |
|
|
|
String msg = "无法匹配科目["+subject.getSubjectCode()+"]"+subject.getSubjectName(); |
|
|
|
msgVoList.add(new TbsBudgetMatchMsgVo(budget,activity,msg)); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
@ -72,23 +79,49 @@ public class TbsBudgetManagerServiceImpl implements TbsBudgetManagerService { |
|
|
|
List<TbsActivityCenter> centerList = centerListMap.get(activityId); |
|
|
|
for (TbsActivityCenter center : centerList) { |
|
|
|
if(!center.getCenterType().equals(budget.getCenterType())||center.getCenterId().equals(budget.getCenterId())){ |
|
|
|
String msg = "无法匹配成本中心"; |
|
|
|
String msg = "无法匹配成本中心["+center.getCenterCode()+"]"+center.getCenterName(); |
|
|
|
msgVoList.add(new TbsBudgetMatchMsgVo(budget,activity,msg)); |
|
|
|
} |
|
|
|
} |
|
|
|
//判断时间
|
|
|
|
List<TbsBudgetCondition> budgetConditionList = conditionListMap.get(budgetId); |
|
|
|
//判断品类
|
|
|
|
|
|
|
|
//判断时间
|
|
|
|
List<TbsScheduleItemBudget> scheduleItemBudgetList = allItemBudgetListMap.get(budgetId); |
|
|
|
boolean isTimeMatch = false; |
|
|
|
for (TbsScheduleItemBudget itemBudget : scheduleItemBudgetList) { |
|
|
|
boolean startFlag = activity.getActStartDate().atStartOfDay().isAfter(itemBudget.getStartDate()); |
|
|
|
boolean endFlag = activity.getActEndDate().atStartOfDay().isBefore(itemBudget.getEndDate()); |
|
|
|
if(startFlag&&endFlag){ |
|
|
|
isTimeMatch = true; |
|
|
|
} |
|
|
|
} |
|
|
|
if(!isTimeMatch){ |
|
|
|
String msg = "时间不匹配,活动时间:"+activity.getActStartDate().toString()+"-"+activity.getActEndDate().toString(); |
|
|
|
msgVoList.add(new TbsBudgetMatchMsgVo(budget,activity,msg)); |
|
|
|
} |
|
|
|
|
|
|
|
//判断品类
|
|
|
|
if(budget.getConditionFlag().equals(1)){ |
|
|
|
List<TbsBudgetCondition> budgetConditionList = conditionListMap.get(budgetId); |
|
|
|
List<TbsActivityGoods> activityGoodsList = goodsListMap.get(activityId); |
|
|
|
for (TbsActivityGoods goods : activityGoodsList) { |
|
|
|
boolean isMatch = false; |
|
|
|
for (TbsBudgetCondition condition : budgetConditionList) { |
|
|
|
if(goods.getTargetLevelPathIds().contains(condition.getTargetLevelPathIds())){ |
|
|
|
isMatch = true; |
|
|
|
break; |
|
|
|
} |
|
|
|
} |
|
|
|
if(!isMatch){ |
|
|
|
String msg = "品类不匹配["+goods.getTargetCode()+"]"+goods.getTargetName(); |
|
|
|
msgVoList.add(new TbsBudgetMatchMsgVo(budget,activity,msg)); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
//
|
|
|
|
|
|
|
|
|
|
|
|
return null; |
|
|
|
return msgVoList; |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|