Browse Source

opt: 网点拦截修改

muti_db
Yen 4 months ago
parent
commit
631885be7d
  1. 93
      src/main/java/com/qs/serve/modules/tbs/service/impl/TbsCostApplyServiceImpl.java

93
src/main/java/com/qs/serve/modules/tbs/service/impl/TbsCostApplyServiceImpl.java

@ -657,9 +657,14 @@ public class TbsCostApplyServiceImpl extends ServiceImpl<TbsCostApplyMapper,TbsC
List<TbsActivitySubject> activitySubjects = tbsActivitySubjectService.listByCostApplyId(tbsCostApply.getId()); List<TbsActivitySubject> activitySubjects = tbsActivitySubjectService.listByCostApplyId(tbsCostApply.getId());
List<BmsSubject> subjectList = subjectService.listByIds( List<BmsSubject> subjectList = subjectService.listByIds(
activitySubjects.stream().map(TbsActivitySubject::getSubjectId).collect(Collectors.toList())); activitySubjects.stream().map(TbsActivitySubject::getSubjectId).collect(Collectors.toList()));
List<TbsActivityChannel> activityChannelList = tbsActivityChannelMapper.selectList(new LambdaQueryWrapper<TbsActivityChannel>()
.eq(TbsActivityChannel::getCostApplyId,tbsCostApply.getId()));
List<TbsActivityChannelPoint> activityChannelPointList = tbsActivityChannelPointMapper.selectList(new LambdaQueryWrapper<TbsActivityChannelPoint>()
.eq(TbsActivityChannelPoint::getCostApplyId,tbsCostApply.getId()));
if(tbsCostApply.getContractFlag()!=null&&tbsCostApply.getContractFlag().equals(2)){ if(tbsCostApply.getContractFlag()!=null&&tbsCostApply.getContractFlag().equals(2)){
// 拦截进场费的历史记录和规则 // 拦截进场费的历史记录和规则
this.vaildEnterTypeCostHistoryAndRule(tbsCostApply, activityList, subjectList); this.vaildEnterTypeCostHistoryAndRule(tbsCostApply, activityList, subjectList,activityCenterGoodsList,
activityChannelList,activityChannelPointList);
} }
//模板拦截 //模板拦截
boolean isIgnoreSubject = false; boolean isIgnoreSubject = false;
@ -1060,57 +1065,77 @@ public class TbsCostApplyServiceImpl extends ServiceImpl<TbsCostApplyMapper,TbsC
* @param tbsCostApply * @param tbsCostApply
* @param activityList * @param activityList
* @param subjectList * @param subjectList
* @param activityGoodsList
*/ */
private void vaildEnterTypeCostHistoryAndRule(TbsCostApply tbsCostApply, List<TbsActivity> activityList, List<BmsSubject> subjectList) { private void vaildEnterTypeCostHistoryAndRule(TbsCostApply tbsCostApply,
List<TbsActivity> activityList,
List<BmsSubject> subjectList,
List<TbsActivityGoods> activityGoodsList,
List<TbsActivityChannel> activityChannelList,
List<TbsActivityChannelPoint> activityChannelPointList) {
if (activityList.size()>1){ if (activityList.size()>1){
Assert.throwEx("进场费类型只能有一个活动"); Assert.throwEx("进场费类型只能有一个活动");
} }
if(subjectList.stream().anyMatch(s->s.getSlottingFlag().equals(0))){ if(subjectList.stream().anyMatch(s->s.getSlottingFlag().equals(0))){
Assert.throwEx("当前申请含非进场费类型科目"); Assert.throwEx("当前申请含非进场费类型科目");
} }
// 判断是否已有历史进场费 // 查找历史有效的进场费费用
LambdaQueryWrapper<TbsCostApply> costApplyLqw = new LambdaQueryWrapper<>(); LambdaQueryWrapper<TbsCostApply> costApplyLqw = new LambdaQueryWrapper<>();
costApplyLqw.eq(TbsCostApply::getSupplierId, tbsCostApply.getSupplierId()); costApplyLqw.eq(TbsCostApply::getSupplierId, tbsCostApply.getSupplierId());
costApplyLqw.eq(TbsCostApply::getContractFlag,2); costApplyLqw.eq(TbsCostApply::getContractFlag,2);
// 生效的费用申请
costApplyLqw.in(TbsCostApply::getChargeState,1,2,3,7); costApplyLqw.in(TbsCostApply::getChargeState,1,2,3,7);
costApplyLqw.select(TbsCostApply::getId); costApplyLqw.select(TbsCostApply::getId);
List<TbsCostApply> costApplyList = tbsCostApplyMapper.selectList(costApplyLqw); List<TbsCostApply> costApplyList = tbsCostApplyMapper.selectList(costApplyLqw);
List<Long> enterIds = costApplyList.stream().map(TbsCostApply::getId).collect(Collectors.toList()); List<Long> hisCostIds = costApplyList.stream().map(TbsCostApply::getId).collect(Collectors.toList());
if(CollUtil.isNotEmpty(enterIds)){
Set<Long> pointIds = new HashSet<>(); // 当前的渠道和网点id
Set<Long> channelIds = new HashSet<>(); Set<Long> channelIds = activityChannelList.stream().map(TbsActivityChannel::getChannelId).collect(Collectors.toSet());
List<TbsActivityChannel> activityChannelList = tbsActivityChannelMapper.selectList( Set<Long> pointIds = activityChannelPointList.stream().map(TbsActivityChannelPoint::getPointId).collect(Collectors.toSet());
new LambdaQueryWrapper<TbsActivityChannel>()
.select(TbsActivityChannel::getChannelId) // 通过历史记录查询有雷同网点和渠道的费用id
.in(TbsActivityChannel::getCostApplyId,enterIds)); Set<Long> sameChannelCostIds = new HashSet<>();
for (TbsActivityChannel channel : activityChannelList) { if(CollUtil.isNotEmpty(hisCostIds)){
channelIds.add(channel.getChannelId()); if (CollUtil.isNotEmpty(pointIds)){
} List<TbsActivityChannelPoint> selectHisPoint = tbsActivityChannelPointMapper.selectList(
List<TbsActivityChannelPoint> activityChannelPointList = tbsActivityChannelPointMapper.selectList(
new LambdaQueryWrapper<TbsActivityChannelPoint>() new LambdaQueryWrapper<TbsActivityChannelPoint>()
.select(TbsActivityChannelPoint::getPointId, .select(TbsActivityChannelPoint::getCostApplyId)
TbsActivityChannelPoint::getChannelId) .in(TbsActivityChannelPoint::getCostApplyId,hisCostIds)
.in(TbsActivityChannelPoint::getCostApplyId,enterIds)); .in(TbsActivityChannelPoint::getPointId,pointIds)
for (TbsActivityChannelPoint point : activityChannelPointList) {
pointIds.add(point.getPointId());
}
if(CollUtil.isNotEmpty(channelIds)){
long count = tbsActivityChannelMapper.selectCount(new LambdaQueryWrapper<TbsActivityChannel>()
.in(TbsActivityChannel::getChannelId,channelIds)
.eq(TbsActivityChannel::getCostApplyId, tbsCostApply.getId())
); );
if(count>0){ Set<Long> enterIds = selectHisPoint.stream().map(TbsActivityChannelPoint::getCostApplyId).collect(Collectors.toSet());
Assert.throwEx("当前申请含网点,且已有历史进场费申请"); for (Long enterId : enterIds) {
sameChannelCostIds.add(enterId);
} }
} }
if(CollUtil.isNotEmpty(pointIds)){ if (CollUtil.isNotEmpty(channelIds)){
long count = tbsActivityChannelPointMapper.selectCount(new LambdaQueryWrapper<TbsActivityChannelPoint>() List<TbsActivityChannel> selectHisChannel = tbsActivityChannelMapper.selectList(
.in(TbsActivityChannelPoint::getPointId,pointIds) new LambdaQueryWrapper<TbsActivityChannel>()
.eq(TbsActivityChannelPoint::getCostApplyId, tbsCostApply.getId()) .select(TbsActivityChannel::getCostApplyId)
.in(TbsActivityChannel::getCostApplyId,hisCostIds)
.in(TbsActivityChannel::getChannelId,channelIds)
); );
if(count>0){ Set<Long> enterIds = selectHisChannel.stream().map(TbsActivityChannel::getCostApplyId).collect(Collectors.toSet());
Assert.throwEx("当前申请含网点,且已有历史进场费申请"); for (Long enterId : enterIds) {
sameChannelCostIds.add(enterId);
}
}
}
// 有雷同网点的费用ids判断商品是否雷同
if (CollUtil.isNotEmpty(sameChannelCostIds)){
Set<Long> goodsIds = activityGoodsList.stream().map(TbsActivityGoods::getTargetId).collect(Collectors.toSet());
List<TbsActivityGoods> selectHisGoods = tbsActivityGoodsService.list(
new LambdaQueryWrapper<TbsActivityGoods>()
.select(TbsActivityGoods::getCostApplyId)
.in(TbsActivityGoods::getCostApplyId,sameChannelCostIds)
.in(TbsActivityGoods::getTargetId,goodsIds)
);
for (TbsActivityGoods goods : activityGoodsList) {
for (TbsActivityGoods hisGoods : selectHisGoods) {
if (goods.getTargetId().equals(hisGoods.getTargetId())
&&goods.getTargetType().equals(hisGoods.getTargetType())){
Assert.throwEx("历史含相同渠道或网点的进场费活动商品:"+goods.getTargetName());
}
} }
} }
} }

Loading…
Cancel
Save