Browse Source

opt: 网点拦截修改

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

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