Browse Source

feat: 添加下单商品规则,查询拦截

checkBack
Yen 1 year ago
parent
commit
52665f8166
  1. 60
      src/main/java/com/qs/serve/modules/goods/controller/GoodsSpuController.java
  2. 15
      src/main/java/com/qs/serve/modules/goods/service/GoodsAccreditService.java
  3. 42
      src/main/java/com/qs/serve/modules/goods/service/impl/GoodsAccreditServiceImpl.java
  4. 8
      src/main/java/com/qs/serve/modules/oms/service/impl/OmsOrderServiceImpl.java

60
src/main/java/com/qs/serve/modules/goods/controller/GoodsSpuController.java

@ -68,6 +68,7 @@ public class GoodsSpuController {
private GoodsCategoryService goodsCategoryService;
private SeeYonRequestBaseService seeYonRequestBaseService;
private ErpDispatchDataMapper dispatchDataMapper;
private GoodsAccreditService goodsAccreditService;
@ -134,7 +135,51 @@ public class GoodsSpuController {
return R.error("供应商不存在或停用");
}
//规则设置
//客户规则设置
this.toSetSpuParam(param, supplier);
//产品规则设置
this.tiSetSpuParam2(param, supplier);
Long total = goodsSpuService.selectCountSkuJoinSpuList(param);
if(total<1){
return R.byEmptyList();
}
List<GoodsSpu> list = goodsSpuService.selectSkuJoinSpuList(param);
for (GoodsSpu spu : list) {
spu.setUuid(spu.getId()+"_"+spu.getSkuId());
}
List<String> skuCodes = list.stream().map(GoodsSpu::getSkuCode).collect(Collectors.toList());
this.initSpuWithCustomerPrice(param.getSupplierCode(), list, skuCodes);
return R.byPageList(total,list);
}
private void tiSetSpuParam2(GoodsSpu param, BmsSupplier supplier) {
List<GoodsAccredit> goodsAccreditList = goodsAccreditService
.listIgnoreAcc(supplier.getId(), supplier.listBizRegionIds(), supplier.listSaleRegionIds());
Set<Long> spuIds = goodsAccreditList.stream().map(GoodsAccredit::getSpuId).collect(Collectors.toSet());
Set<String> cateIds = goodsAccreditList.stream().map(GoodsAccredit::getCategoryId).collect(Collectors.toSet());
if(CollUtil.isNotEmpty(cateIds)){
if(CollUtil.isEmpty(param.getSelectNotIntCateIds())){
param.setSelectNotIntCateIds(new ArrayList<>(cateIds));
}else{
param.getSelectNotIntCateIds().addAll(cateIds);
}
}
if(CollUtil.isNotEmpty(spuIds)){
if (CollUtil.isEmpty(param.getSelectNotInIds())){
param.setSelectNotInIds(new ArrayList<>(spuIds));
}else{
param.getSelectNotInIds().addAll(spuIds);
}
}
}
/**
* 设置Spu查询条件
* @param param
* @param supplier
*/
private void toSetSpuParam(GoodsSpu param, BmsSupplier supplier) {
List<GoodsRuleItem> ruleItems = goodsRuleService.listBySupplierId(supplier.getId());
GoodsRuleItemDTO ruleItemDTO = goodsRuleService.buildGoodsRuleItemDTO(ruleItems);
if(ruleItemDTO!=null){
@ -212,19 +257,6 @@ public class GoodsSpuController {
}
}
Long total = goodsSpuService.selectCountSkuJoinSpuList(param);
if(total<1){
return R.byEmptyList();
}
List<GoodsSpu> list = goodsSpuService.selectSkuJoinSpuList(param);
for (GoodsSpu spu : list) {
spu.setUuid(spu.getId()+"_"+spu.getSkuId());
}
List<String> skuCodes = list.stream().map(GoodsSpu::getSkuCode).collect(Collectors.toList());
this.initSpuWithCustomerPrice(param.getSupplierCode(), list, skuCodes);
return R.byPageList(total,list);
}
/**

15
src/main/java/com/qs/serve/modules/goods/service/GoodsAccreditService.java

@ -2,9 +2,12 @@ package com.qs.serve.modules.goods.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.qs.serve.modules.goods.entity.GoodsAccredit;
import com.qs.serve.modules.goods.entity.GoodsAccreditItem;
import com.qs.serve.modules.goods.entity.bo.GoodsAccreditBo;
import com.qs.serve.modules.goods.entity.vo.GoodsAccreditVo;
import java.util.List;
/**
* 规则 服务接口
* @author YenHex
@ -16,5 +19,17 @@ public interface GoodsAccreditService extends IService<GoodsAccredit> {
GoodsAccreditVo getById(String cateId, String spuId, String skuId);
/**
* 查询忽略的授权规则
* 1.过滤规则的品类和SPU
* 2.忽略过滤符合当前客户的品类和SPU
* 3.忽略特供的品类和SPU
* @param supplierId
* @param bizRegionIds
* @param saleRegionIds
* @return
*/
List<GoodsAccredit> listIgnoreAcc(String supplierId,List<String> bizRegionIds,List<String> saleRegionIds);
}

42
src/main/java/com/qs/serve/modules/goods/service/impl/GoodsAccreditServiceImpl.java

@ -25,6 +25,7 @@ import com.qs.serve.modules.goods.mapper.GoodsAccreditMapper;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.stream.Collectors;
/**
@ -241,6 +242,47 @@ public class GoodsAccreditServiceImpl extends ServiceImpl<GoodsAccreditMapper,Go
return null;
}
@Override
public List<GoodsAccredit> listIgnoreAcc(String supplierId, List<String> bizRegionIds, List<String> saleRegionIds) {
//查询查询所有not in
LambdaQueryWrapper<GoodsAccreditItem> lqw = new LambdaQueryWrapper<>();
lqw.select(GoodsAccreditItem::getId)
// 业务not in
.eq(GoodsAccreditItem::getAccType,1)
.and(
qw->{
qw.or(a->a.eq(GoodsAccreditItem::getTargetType,"supplier").eq(GoodsAccreditItem::getTargetId,supplierId))
.or(a->a.eq(GoodsAccreditItem::getTargetType,"saleRegion").in(GoodsAccreditItem::getTargetId,saleRegionIds))
.or(a->a.eq(GoodsAccreditItem::getTargetType,"bizRegion").in(GoodsAccreditItem::getTargetId,bizRegionIds));
}
);
List<Long> itemIds = goodsAccreditItemService.list(lqw).stream().map(GoodsAccreditItem::getId).collect(Collectors.toList());
//查询所有 in
LambdaQueryWrapper<GoodsAccreditItem> lqw2 = new LambdaQueryWrapper<>();
lqw2.select(GoodsAccreditItem::getId)
// 业务in
.eq(GoodsAccreditItem::getAccType,0)
.and(
qw->{
qw.or(a->a.eq(GoodsAccreditItem::getTargetType,"supplier").ne(GoodsAccreditItem::getTargetId,supplierId))
.or(a->a.eq(GoodsAccreditItem::getTargetType,"saleRegion").notIn(GoodsAccreditItem::getTargetId,saleRegionIds))
.or(a->a.eq(GoodsAccreditItem::getTargetType,"bizRegion").notIn(GoodsAccreditItem::getTargetId,bizRegionIds));
}
);
List<Long> itemIds2 = goodsAccreditItemService.list(lqw2).stream().map(GoodsAccreditItem::getId).collect(Collectors.toList());
itemIds.addAll(itemIds2);
List<GoodsAccreditItem> itemList;
if(itemIds.size()>0){
itemList = goodsAccreditItemService.list(new LambdaQueryWrapper<GoodsAccreditItem>().notIn(GoodsAccreditItem::getId,itemIds));
}else {
itemList = goodsAccreditItemService.list();
}
Set<Long> accIds = itemList.stream().map(GoodsAccreditItem::getAccId).collect(Collectors.toSet());
return this.listByIds(accIds);
}
private GoodsAccredit getGoodsAccredit(GoodsAccreditBo param){
GoodsAccredit accredit = null;

8
src/main/java/com/qs/serve/modules/oms/service/impl/OmsOrderServiceImpl.java

@ -19,6 +19,7 @@ import com.qs.serve.modules.goods.entity.dto.InventoryCusPrice;
import com.qs.serve.modules.goods.entity.so.InventoryCusPriceQuery;
import com.qs.serve.modules.goods.entity.vo.GoodSkuVo;
import com.qs.serve.modules.goods.mapper.GoodsCategoryRuleMapper;
import com.qs.serve.modules.goods.service.GoodsAccreditService;
import com.qs.serve.modules.goods.service.GoodsRuleService;
import com.qs.serve.modules.goods.service.GoodsSkuService;
import com.qs.serve.modules.goods.service.GoodsSpuService;
@ -81,6 +82,7 @@ public class OmsOrderServiceImpl extends ServiceImpl<OmsOrderMapper,OmsOrder> im
private OmsShoppingCartService omsShoppingCartService;
private SeeYonRequestBaseService seeYonRequestBaseService;
private GoodsRuleService goodsRuleService;
private GoodsAccreditService goodsAccreditService;
@Override
@ -325,9 +327,13 @@ public class OmsOrderServiceImpl extends ServiceImpl<OmsOrderMapper,OmsOrder> im
List<String> skuCodes = newOrderItemList.stream().map(OmsOrderItem::getSkuCode).collect(Collectors.toList());
//拦截下单规则
//拦截商品授权维度规则
//goodsAccreditService.listAcc()
//拦截客户维度规则
goodsRuleService.checkSkuCode(skuCodes,goodsRuleService.listBySupplierId(order.getSupplierId().toString()),true);
//拦截品类下单规则
this.handleCategoryRule(categoryRule,newOrderItemList);
this.updateById(order);

Loading…
Cancel
Save