Browse Source

活动与预算匹配

v1.0
Yen 2 years ago
parent
commit
0125950ec1
  1. 16
      src/main/java/com/qs/serve/modules/tbs/entity/vo/TbsBudgetMatchMsgVo.java
  2. 4
      src/main/java/com/qs/serve/modules/tbs/service/TbsBudgetManagerService.java
  3. 65
      src/main/java/com/qs/serve/modules/tbs/service/impl/TbsBudgetManagerServiceImpl.java

16
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;
}
}

4
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<Long> activityIds, List<Long> budgetIds);
List<TbsBudgetMatchMsgVo> compare(List<Long> activityIds, List<Long> budgetIds);
}

65
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<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;
}

Loading…
Cancel
Save