From 0125950ec106e90f3a40a42e2c82bd0ce7e59d97 Mon Sep 17 00:00:00 2001 From: Yen Date: Fri, 29 Dec 2023 09:46:36 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B4=BB=E5=8A=A8=E4=B8=8E=E9=A2=84=E7=AE=97?= =?UTF-8?q?=E5=8C=B9=E9=85=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../tbs/entity/vo/TbsBudgetMatchMsgVo.java | 16 +++++ .../tbs/service/TbsBudgetManagerService.java | 4 +- .../impl/TbsBudgetManagerServiceImpl.java | 65 ++++++++++++++----- 3 files changed, 68 insertions(+), 17 deletions(-) diff --git a/src/main/java/com/qs/serve/modules/tbs/entity/vo/TbsBudgetMatchMsgVo.java b/src/main/java/com/qs/serve/modules/tbs/entity/vo/TbsBudgetMatchMsgVo.java index 89c30795..a38586f5 100644 --- a/src/main/java/com/qs/serve/modules/tbs/entity/vo/TbsBudgetMatchMsgVo.java +++ b/src/main/java/com/qs/serve/modules/tbs/entity/vo/TbsBudgetMatchMsgVo.java @@ -1,9 +1,14 @@ package com.qs.serve.modules.tbs.entity.vo; +import com.qs.serve.modules.tbs.entity.TbsActivity; +import com.qs.serve.modules.tbs.entity.TbsBudget; +import lombok.Data; + /** * @author YenHex * @since 2023/12/28 */ +@Data public class TbsBudgetMatchMsgVo { /** 活动ID */ @@ -24,4 +29,15 @@ public class TbsBudgetMatchMsgVo { /** 预算标题 */ private String budgetTitle; + private String msg; + + public TbsBudgetMatchMsgVo(TbsBudget budget, TbsActivity activity,String msg){ + this.activityId = activity.getId(); + this.activityCode = activity.getActivityCode(); + this.activityTitle = activity.getActTitle(); + this.budgetId = budget.getId(); + this.budgetCode = budget.getBudgetNumber(); + this.budgetTitle = budget.getBudgetCode(); + this.msg = msg; + } } diff --git a/src/main/java/com/qs/serve/modules/tbs/service/TbsBudgetManagerService.java b/src/main/java/com/qs/serve/modules/tbs/service/TbsBudgetManagerService.java index cb794ab4..ea4f5cf7 100644 --- a/src/main/java/com/qs/serve/modules/tbs/service/TbsBudgetManagerService.java +++ b/src/main/java/com/qs/serve/modules/tbs/service/TbsBudgetManagerService.java @@ -1,5 +1,7 @@ package com.qs.serve.modules.tbs.service; +import com.qs.serve.modules.tbs.entity.vo.TbsBudgetMatchMsgVo; + import java.util.List; /** @@ -14,6 +16,6 @@ public interface TbsBudgetManagerService { * @param budgetIds * @return */ - Object compare(List activityIds, List budgetIds); + List compare(List activityIds, List budgetIds); } diff --git a/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsBudgetManagerServiceImpl.java b/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsBudgetManagerServiceImpl.java index f8cd6ec6..6985f8c5 100644 --- a/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsBudgetManagerServiceImpl.java +++ b/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsBudgetManagerServiceImpl.java @@ -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 activityIds, List budgetIds) { + public List compare(List activityIds, List budgetIds) { //加载基础数据 QueryWrapper acgLqw = new QueryWrapper<>(); acgLqw.in("activity_id",activityIds); @@ -41,19 +43,23 @@ public class TbsBudgetManagerServiceImpl implements TbsBudgetManagerService { List activityList = activityMapper.selectBatchIds(activityIds); List allCenterList = activityCenterMapper.selectList(acgLqw); List allSubjectList = activitySubjectMapper.selectList(acgLqw); - List allCenterGoodsList = activityCenterGoodsMapper.selectList(acgLqw); + List allGoodsList = activityGoodsMapper.selectList(acgLqw); Map> centerListMap = allCenterList.stream().collect(Collectors.groupingBy(TbsActivityCenter::getActivityId)); Map> subjectListMap = allSubjectList.stream().collect(Collectors.groupingBy(TbsActivitySubject::getActivityId)); - Map> centerGoodsListMap = allCenterGoodsList.stream().collect(Collectors.groupingBy(TbsActivityCenterGoods::getActivityId)); + Map> goodsListMap = allGoodsList.stream().collect(Collectors.groupingBy(TbsActivityGoods::getActivityId)); LambdaQueryWrapper conditionLqw = new LambdaQueryWrapper<>(); conditionLqw.in(TbsBudgetCondition::getBudgetId,budgetIds); List allConditionList = budgetConditionMapper.selectList(conditionLqw); - - Map> conditionListMap = allConditionList.stream().collect(Collectors.groupingBy(TbsBudgetCondition::getBudgetId)); + LambdaQueryWrapper sibLqw = new LambdaQueryWrapper<>(); + sibLqw.in(TbsScheduleItemBudget::getBudgetId,budgetIds); + List allItemBudgetList = scheduleItemBudgetMapper.selectList(sibLqw); + Map> allItemBudgetListMap = allItemBudgetList.stream().collect(Collectors.groupingBy(TbsScheduleItemBudget::getBudgetId)); + + List msgVoList = new ArrayList<>(); //匹对 for (TbsBudget budget : budgetList) { for (TbsActivity activity : activityList) { @@ -64,7 +70,8 @@ public class TbsBudgetManagerServiceImpl implements TbsBudgetManagerService { List 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 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 budgetConditionList = conditionListMap.get(budgetId); - //判断品类 + //判断时间 + List 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 budgetConditionList = conditionListMap.get(budgetId); + List 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; }