diff --git a/src/main/java/com/qs/serve/modules/tbs/controller/TbsCostApplyCheckController.java b/src/main/java/com/qs/serve/modules/tbs/controller/TbsCostApplyCheckController.java index 13b5a93b..09c7c03b 100644 --- a/src/main/java/com/qs/serve/modules/tbs/controller/TbsCostApplyCheckController.java +++ b/src/main/java/com/qs/serve/modules/tbs/controller/TbsCostApplyCheckController.java @@ -29,6 +29,7 @@ import com.qs.serve.modules.tbs.entity.bo.TbsCostApplyActivityBo; import com.qs.serve.modules.tbs.entity.bo.TbsCostApplyBo; import com.qs.serve.modules.tbs.entity.dto.TbsBudgetCostResult; import com.qs.serve.modules.tbs.entity.vo.CtpAffairVo; +import com.qs.serve.modules.tbs.entity.vo.TbsBudgetMatchMsgVo; import com.qs.serve.modules.tbs.entity.vo.TbsBudgetTableVo; import com.qs.serve.modules.tbs.entity.vo.TbsCostApplyVo; import com.qs.serve.modules.tbs.service.*; @@ -42,6 +43,7 @@ import org.springframework.web.bind.annotation.*; import javax.validation.Valid; import java.util.ArrayList; import java.util.List; +import java.util.stream.Collectors; /** * 预算 费用申请(审批) @@ -56,6 +58,8 @@ public class TbsCostApplyCheckController { private TbsCostApplyService tbsCostApplyService; private TbsCostApplyOperationServiceImpl tbsCostApplyOperationServiceImpl; + private TbsActivityService activityService; + private TbsBudgetManagerService budgetManagerService; /** * 测试接口(正式环境无法调用) @@ -167,5 +171,22 @@ public class TbsCostApplyCheckController { tbsCostApplyService.updateCheckState(); return R.ok(); } + + /** + * 获取匹配列表 + * @param costApplyId + * @return + */ + @GetMapping("compareBudget") + public R> compareBudget(Long costApplyId){ + List activityList = activityService.listByCostApplyId(costApplyId); + if(activityList.size()<1){ + return R.ok(); + } + List activityIds = activityList.stream().map(TbsActivity::getId).collect(Collectors.toList()); + List result = budgetManagerService.compare(activityIds,budgetManagerService.listBudgetIdsByActivityId(activityIds)); + return R.ok(result); + } + } diff --git a/src/main/java/com/qs/serve/modules/tbs/entity/TbsBudget.java b/src/main/java/com/qs/serve/modules/tbs/entity/TbsBudget.java index 15f541bc..d52cb7e9 100644 --- a/src/main/java/com/qs/serve/modules/tbs/entity/TbsBudget.java +++ b/src/main/java/com/qs/serve/modules/tbs/entity/TbsBudget.java @@ -67,6 +67,8 @@ public class TbsBudget implements Serializable { @NotNull(message = "成本中心类型不能为空") private String centerType; + private String centerCombo; + /** 成本中心编码 */ @NotBlank(message = "成本中心编码不能为空") @Length(max = 30,message = "成本中心编码长度不能超过30字") 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 ea4f5cf7..1d615cbb 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 @@ -10,6 +10,13 @@ import java.util.List; */ public interface TbsBudgetManagerService { + /** + * 通过活动的成本中心,时间,科目粗略过滤出预算id + * @param activityIds + * @return + */ + List listBudgetIdsByActivityId(List activityIds); + /** * 对比活动和预算进行条件匹配,返回不符合的内容(以Budget为参照物,全量匹配) * @param activityIds 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 6985f8c5..a4482e5c 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 @@ -2,6 +2,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.common.util.CollectionUtil; import com.qs.serve.modules.tbs.entity.*; import com.qs.serve.modules.tbs.entity.vo.TbsBudgetMatchMsgVo; import com.qs.serve.modules.tbs.mapper.*; @@ -33,8 +34,32 @@ public class TbsBudgetManagerServiceImpl implements TbsBudgetManagerService { private final TbsBudgetConditionMapper budgetConditionMapper; private final TbsScheduleItemBudgetMapper scheduleItemBudgetMapper; + @Override + public List listBudgetIdsByActivityId(List activityIds) { + //加载基础数据 + QueryWrapper acgLqw = new QueryWrapper<>(); + acgLqw.in("activity_id",activityIds); + List allCenterList = activityCenterMapper.selectList(acgLqw); + List centerComboList = allCenterList.stream().map(a->a.getCenterType()+"_"+a.getCenterId()).distinct().collect(Collectors.toList()); + List allSubjectList = activitySubjectMapper.selectList(acgLqw); + List subjectIds = allSubjectList.stream().map(TbsActivitySubject::getSubjectId).distinct().collect(Collectors.toList()); + subjectIds.add(0L); + LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); + lqw.and(a->{ + a.eq(TbsBudget::getSubjectId,0) + .or().in(TbsBudget::getSubjectId,subjectIds); + + }).in(TbsBudget::getCenterCombo,centerComboList) + .select(TbsBudget::getId); + List budgetList = budgetMapper.selectList(lqw); + return budgetList.stream().map(TbsBudget::getId).collect(Collectors.toList()); + } + @Override public List compare(List activityIds, List budgetIds) { + if(CollectionUtil.isEmpty(activityIds)||CollectionUtil.isEmpty(budgetIds)){ + return new ArrayList<>(); + } //加载基础数据 QueryWrapper acgLqw = new QueryWrapper<>(); acgLqw.in("activity_id",activityIds);