diff --git a/src/main/java/com/qs/serve/modules/bir/controller/BirBudgetScheduleController.java b/src/main/java/com/qs/serve/modules/bir/controller/BirBudgetScheduleController.java index 3e24420f..675297e8 100644 --- a/src/main/java/com/qs/serve/modules/bir/controller/BirBudgetScheduleController.java +++ b/src/main/java/com/qs/serve/modules/bir/controller/BirBudgetScheduleController.java @@ -1,5 +1,6 @@ package com.qs.serve.modules.bir.controller; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.qs.serve.common.model.dto.R; import com.qs.serve.common.util.CollectionUtil; @@ -14,9 +15,7 @@ import com.qs.serve.modules.tbs.mapper.TbsScheduleMapper; import com.qs.serve.modules.tbs.service.TbsScheduleItemBudgetService; import lombok.AllArgsConstructor; import lombok.extern.slf4j.Slf4j; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.bind.annotation.*; import java.util.List; import java.util.stream.Collectors; @@ -42,9 +41,17 @@ public class BirBudgetScheduleController { * @param query * @return */ - @GetMapping("/budgetItemUsedList") - public R> queryBudgetItemUsed(TbsScheduleItemSearch query){ + @PostMapping("/budgetItemUsedList") + public R> queryBudgetItemUsed(@RequestBody TbsScheduleItemSearch query){ query.initCenterCombo(); + if(CollectionUtil.isNotEmpty(query.getScheduleIds())){ + LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); + lqw.in(TbsScheduleItem::getScheduleId,query.getScheduleIds()); + lqw.select(TbsScheduleItem::getId); + List scheduleItemList = tbsScheduleItemMapper.selectList(lqw); + List itemIds = scheduleItemList.stream().map(a->a.getId().toString()).collect(Collectors.toList()); + query.setScheduleItemIds(itemIds); + } List scheduleItemBudgetIdDtoList = scheduleItemBudget2Mapper.listItemBudgetIds(query); List scheduleItemIds = scheduleItemBudgetIdDtoList.stream().map(TbsScheduleItemBudgetIdDto::getScheduleItemId).collect(Collectors.toList()); if(CollectionUtil.isEmpty(scheduleItemIds)){ diff --git a/src/main/java/com/qs/serve/modules/tbs/entity/so/TbsScheduleItemSearch.java b/src/main/java/com/qs/serve/modules/tbs/entity/so/TbsScheduleItemSearch.java index 6c289c74..a2590144 100644 --- a/src/main/java/com/qs/serve/modules/tbs/entity/so/TbsScheduleItemSearch.java +++ b/src/main/java/com/qs/serve/modules/tbs/entity/so/TbsScheduleItemSearch.java @@ -18,6 +18,11 @@ public class TbsScheduleItemSearch { */ private List centerCombos; + /** + * 周期ID + */ + private List scheduleIds; + /** * 周期ID */ 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 new file mode 100644 index 00000000..89c30795 --- /dev/null +++ b/src/main/java/com/qs/serve/modules/tbs/entity/vo/TbsBudgetMatchMsgVo.java @@ -0,0 +1,27 @@ +package com.qs.serve.modules.tbs.entity.vo; + +/** + * @author YenHex + * @since 2023/12/28 + */ +public class TbsBudgetMatchMsgVo { + + /** 活动ID */ + private Long activityId; + + /** 活动编码 */ + private String activityCode; + + /** 活动标题 */ + private String activityTitle; + + /** 预算ID */ + private Long budgetId; + + /** 预算编码 */ + private String budgetCode; + + /** 预算标题 */ + private String budgetTitle; + +} 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 new file mode 100644 index 00000000..cb794ab4 --- /dev/null +++ b/src/main/java/com/qs/serve/modules/tbs/service/TbsBudgetManagerService.java @@ -0,0 +1,19 @@ +package com.qs.serve.modules.tbs.service; + +import java.util.List; + +/** + * @author YenHex + * @since 2023/12/28 + */ +public interface TbsBudgetManagerService { + + /** + * 对比活动和预算进行条件匹配,返回不符合的内容(以Budget为参照物,全量匹配) + * @param activityIds + * @param budgetIds + * @return + */ + Object 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 new file mode 100644 index 00000000..f8cd6ec6 --- /dev/null +++ b/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsBudgetManagerServiceImpl.java @@ -0,0 +1,96 @@ +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.mapper.*; +import com.qs.serve.modules.tbs.service.TbsActivityCenterGoodsService; +import com.qs.serve.modules.tbs.service.TbsBudgetManagerService; +import lombok.AllArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; + +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + +/** + * @author YenHex + * @since 2023/12/28 + */ +@Slf4j +@Service +@AllArgsConstructor +public class TbsBudgetManagerServiceImpl implements TbsBudgetManagerService { + + private final TbsActivityMapper activityMapper; + private final TbsActivityCenterMapper activityCenterMapper; + private final TbsActivitySubjectMapper activitySubjectMapper; + private final TbsActivityCenterGoodsMapper activityCenterGoodsMapper; + private final TbsBudgetMapper budgetMapper; + private final TbsBudgetConditionMapper budgetConditionMapper; + private final TbsScheduleItemBudgetMapper scheduleItemBudgetMapper; + + @Override + public Object compare(List activityIds, List budgetIds) { + //加载基础数据 + QueryWrapper acgLqw = new QueryWrapper<>(); + acgLqw.in("activity_id",activityIds); + + List budgetList = budgetMapper.selectBatchIds(budgetIds); + List activityList = activityMapper.selectBatchIds(activityIds); + List allCenterList = activityCenterMapper.selectList(acgLqw); + List allSubjectList = activitySubjectMapper.selectList(acgLqw); + List allCenterGoodsList = activityCenterGoodsMapper.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)); + + LambdaQueryWrapper conditionLqw = new LambdaQueryWrapper<>(); + conditionLqw.in(TbsBudgetCondition::getBudgetId,budgetIds); + List allConditionList = budgetConditionMapper.selectList(conditionLqw); + + + Map> conditionListMap = allConditionList.stream().collect(Collectors.groupingBy(TbsBudgetCondition::getBudgetId)); + + //匹对 + for (TbsBudget budget : budgetList) { + for (TbsActivity activity : activityList) { + Long budgetId = budget.getId(); + Long activityId = activity.getId(); + //判断科目 + if(!budget.getSubjectId().equals(0L)){ + List subjectList = subjectListMap.get(activityId); + for (TbsActivitySubject subject : subjectList) { + if(!subject.getSubjectId().equals(budget.getSubjectId())){ + String msg = "无法匹配科目"; + } + } + } + //判断成本中心 + List centerList = centerListMap.get(activityId); + for (TbsActivityCenter center : centerList) { + if(!center.getCenterType().equals(budget.getCenterType())||center.getCenterId().equals(budget.getCenterId())){ + String msg = "无法匹配成本中心"; + } + } + //判断时间 + List budgetConditionList = conditionListMap.get(budgetId); + //判断品类 + + + } + + } + + + // + + + return null; + } + + + +} diff --git a/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsCostApplyServiceImpl.java b/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsCostApplyServiceImpl.java index f9841e6d..14baf01b 100644 --- a/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsCostApplyServiceImpl.java +++ b/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsCostApplyServiceImpl.java @@ -274,7 +274,8 @@ public class TbsCostApplyServiceImpl extends ServiceImpl listScheduleItemAmountByIds(List scheduleItemBudgetIdDtoList) { List scheduleItemBudgetIds = scheduleItemBudgetIdDtoList.stream().map(TbsScheduleItemBudgetIdDto::getScheduleItemBudgetId).collect(Collectors.toList()); - List scheduleItemIds = scheduleItemBudgetIdDtoList.stream().map(TbsScheduleItemBudgetIdDto::getScheduleItemId).collect(Collectors.toList()); + List scheduleItemIds = scheduleItemBudgetIdDtoList.stream().map(TbsScheduleItemBudgetIdDto::getScheduleItemId).distinct().collect(Collectors.toList()); // 预算金额 List finalList = scheduleItemBudget2Mapper.getSumAmtInList(scheduleItemBudgetIds, BudgetLogOptFlag.getFinalBudgetOptFlag()); diff --git a/src/main/resources/mapper/tbs/TbsScheduleItemBudget2Mapper.xml b/src/main/resources/mapper/tbs/TbsScheduleItemBudget2Mapper.xml index 00c4ed06..bf341c04 100644 --- a/src/main/resources/mapper/tbs/TbsScheduleItemBudget2Mapper.xml +++ b/src/main/resources/mapper/tbs/TbsScheduleItemBudget2Mapper.xml @@ -20,7 +20,7 @@ #{selectId} - + and ( tbs_budget.condition_flag = 0 or tbs_budget_condition.brand_id in @@ -63,7 +63,7 @@ #{selectId} - AND schedule_item_budeget_id in + AND schedule_item_budget_id in #{selectId} @@ -85,7 +85,7 @@ #{selectId} - AND schedule_item_budeget_id in + AND schedule_item_budget_id in #{selectId} @@ -107,7 +107,7 @@ #{selectId} - AND schedule_item_budeget_id in + AND schedule_item_budget_id in #{selectId}