Browse Source

活动与预算匹配

v1.0
Yen 2 years ago
parent
commit
5bbcf7e456
  1. 21
      src/main/java/com/qs/serve/modules/tbs/controller/TbsCostApplyCheckController.java
  2. 2
      src/main/java/com/qs/serve/modules/tbs/entity/TbsBudget.java
  3. 7
      src/main/java/com/qs/serve/modules/tbs/service/TbsBudgetManagerService.java
  4. 25
      src/main/java/com/qs/serve/modules/tbs/service/impl/TbsBudgetManagerServiceImpl.java

21
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<List<TbsBudgetMatchMsgVo>> compareBudget(Long costApplyId){
List<TbsActivity> activityList = activityService.listByCostApplyId(costApplyId);
if(activityList.size()<1){
return R.ok();
}
List<Long> activityIds = activityList.stream().map(TbsActivity::getId).collect(Collectors.toList());
List<TbsBudgetMatchMsgVo> result = budgetManagerService.compare(activityIds,budgetManagerService.listBudgetIdsByActivityId(activityIds));
return R.ok(result);
}
}

2
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字")

7
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<Long> listBudgetIdsByActivityId(List<Long> activityIds);
/**
* 对比活动和预算进行条件匹配返回不符合的内容(以Budget为参照物全量匹配)
* @param activityIds

25
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<Long> listBudgetIdsByActivityId(List<Long> activityIds) {
//加载基础数据
QueryWrapper acgLqw = new QueryWrapper<>();
acgLqw.in("activity_id",activityIds);
List<TbsActivityCenter> allCenterList = activityCenterMapper.selectList(acgLqw);
List<String> centerComboList = allCenterList.stream().map(a->a.getCenterType()+"_"+a.getCenterId()).distinct().collect(Collectors.toList());
List<TbsActivitySubject> allSubjectList = activitySubjectMapper.selectList(acgLqw);
List<Long> subjectIds = allSubjectList.stream().map(TbsActivitySubject::getSubjectId).distinct().collect(Collectors.toList());
subjectIds.add(0L);
LambdaQueryWrapper<TbsBudget> lqw = new LambdaQueryWrapper<>();
lqw.and(a->{
a.eq(TbsBudget::getSubjectId,0)
.or().in(TbsBudget::getSubjectId,subjectIds);
}).in(TbsBudget::getCenterCombo,centerComboList)
.select(TbsBudget::getId);
List<TbsBudget> budgetList = budgetMapper.selectList(lqw);
return budgetList.stream().map(TbsBudget::getId).collect(Collectors.toList());
}
@Override
public List<TbsBudgetMatchMsgVo> compare(List<Long> activityIds, List<Long> budgetIds) {
if(CollectionUtil.isEmpty(activityIds)||CollectionUtil.isEmpty(budgetIds)){
return new ArrayList<>();
}
//加载基础数据
QueryWrapper acgLqw = new QueryWrapper<>();
acgLqw.in("activity_id",activityIds);

Loading…
Cancel
Save