Browse Source

feat: 下单系统添加前置商品合法校验

checkBack
Yen 1 year ago
parent
commit
880c14b3f7
  1. 5
      src/main/java/com/qs/serve/common/model/dto/SimpleKeyValue.java
  2. 13
      src/main/java/com/qs/serve/modules/goods/service/GoodsRuleService.java
  3. 82
      src/main/java/com/qs/serve/modules/goods/service/impl/GoodsRuleServiceImpl.java
  4. 10
      src/main/java/com/qs/serve/modules/oms/entity/bo/OmsVerifySkuParam.java
  5. 3
      src/main/java/com/qs/serve/modules/oms/service/OmsOrderPart1Service.java
  6. 9
      src/main/java/com/qs/serve/modules/oms/service/OmsOrderService.java
  7. 74
      src/main/java/com/qs/serve/modules/oms/service/impl/OmsOrderPart1ServiceImpl.java
  8. 79
      src/main/java/com/qs/serve/modules/oms/service/impl/OmsOrderServiceImpl.java

5
src/main/java/com/qs/serve/common/model/dto/SimpleKeyValue.java

@ -20,4 +20,9 @@ public class SimpleKeyValue<T> {
/** 说明 */ /** 说明 */
private String remark; private String remark;
public SimpleKeyValue(String label,T value){
this.label = label;
this.value = value;
}
} }

13
src/main/java/com/qs/serve/modules/goods/service/GoodsRuleService.java

@ -1,6 +1,7 @@
package com.qs.serve.modules.goods.service; package com.qs.serve.modules.goods.service;
import com.baomidou.mybatisplus.extension.service.IService; import com.baomidou.mybatisplus.extension.service.IService;
import com.qs.serve.common.model.dto.SimpleKeyValue;
import com.qs.serve.modules.goods.entity.GoodsRule; import com.qs.serve.modules.goods.entity.GoodsRule;
import com.qs.serve.modules.goods.entity.GoodsRuleItem; import com.qs.serve.modules.goods.entity.GoodsRuleItem;
import com.qs.serve.modules.goods.entity.bo.GoodsRuleBo; import com.qs.serve.modules.goods.entity.bo.GoodsRuleBo;
@ -31,11 +32,19 @@ public interface GoodsRuleService extends IService<GoodsRule> {
/** /**
* 检测sku是否符合规则 * 检测sku是否符合规则
* @param skuCodes * @param skuCodes
* @param ruleItems * @param supplierId
* @param throwEx 不判断数量拦截只条件拦截 * @param throwEx 不判断数量拦截只条件拦截
* @return * @return
*/ */
boolean checkSkuCode(List<String> skuCodes,List<GoodsRuleItem> ruleItems,boolean throwEx); boolean checkSkuCode(List<String> skuCodes,String supplierId,boolean throwEx);
/**
* 检测sku是否符合规则,返回不和规范的ID
* @param supplierId
* @param skuIds
* @return
*/
List<SimpleKeyValue> checkSkuCode(String supplierId,List<Long> skuIds);
} }

82
src/main/java/com/qs/serve/modules/goods/service/impl/GoodsRuleServiceImpl.java

@ -4,6 +4,7 @@ import cn.hutool.core.collection.CollUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.qs.serve.common.model.dto.SimpleKeyValue;
import com.qs.serve.common.util.Assert; import com.qs.serve.common.util.Assert;
import com.qs.serve.common.util.StringUtils; import com.qs.serve.common.util.StringUtils;
import com.qs.serve.modules.bms.entity.BmsRegion; import com.qs.serve.modules.bms.entity.BmsRegion;
@ -273,7 +274,8 @@ public class GoodsRuleServiceImpl extends ServiceImpl<GoodsRuleMapper,GoodsRule>
@Override @Override
public boolean checkSkuCode(List<String> skuCodes, List<GoodsRuleItem> ruleItems, boolean throwEx) { public boolean checkSkuCode(List<String> skuCodes, String supplierId, boolean throwEx) {
List<GoodsRuleItem> ruleItems = this.listBySupplierId(supplierId);
if(CollUtil.isEmpty(skuCodes)){ if(CollUtil.isEmpty(skuCodes)){
return false; return false;
} }
@ -282,7 +284,6 @@ public class GoodsRuleServiceImpl extends ServiceImpl<GoodsRuleMapper,GoodsRule>
return true; return true;
} }
List<GoodsSku> goodsSkuList = skuMapper.selectList(new LambdaQueryWrapper<GoodsSku>().in(GoodsSku::getSkuCode,skuCodes)); List<GoodsSku> goodsSkuList = skuMapper.selectList(new LambdaQueryWrapper<GoodsSku>().in(GoodsSku::getSkuCode,skuCodes));
for (GoodsSku sku : goodsSkuList) { for (GoodsSku sku : goodsSkuList) {
boolean notExistInOnly = false; boolean notExistInOnly = false;
if(itemDTO.getOnlySpuIds()!=null){ if(itemDTO.getOnlySpuIds()!=null){
@ -351,10 +352,85 @@ public class GoodsRuleServiceImpl extends ServiceImpl<GoodsRuleMapper,GoodsRule>
} }
} }
} }
return false; return false;
} }
@Override
public List<SimpleKeyValue> checkSkuCode( String supplierId,List<Long> skuIds) {
List<SimpleKeyValue> errorSkuIds = new ArrayList<>();
List<GoodsRuleItem> ruleItems = this.listBySupplierId(supplierId);
if(CollUtil.isEmpty(skuIds)){
return errorSkuIds;
}
GoodsRuleItemDTO itemDTO = this.buildGoodsRuleItemDTO(ruleItems);
if(itemDTO==null){
return errorSkuIds;
}List<GoodsSku> goodsSkuList = skuMapper.selectBatchIds(skuIds);
for (GoodsSku sku : goodsSkuList) {
boolean notExistInOnly = false;
if(itemDTO.getOnlySpuIds()!=null){
for (String onlySpuId : itemDTO.getOnlySpuIds()) {
if(sku.getSpuId().toString().equals(onlySpuId)){
notExistInOnly = true;
break;
}
}
}
if(!notExistInOnly){
errorSkuIds.add(new SimpleKeyValue("客户维度(只可选未包含该产品)",sku.getId()));
continue;
}
if(itemDTO.getNotInSpuIds()!=null){
boolean isErr = false;
for (String notInSpuId : itemDTO.getNotInSpuIds()) {
if(sku.getSpuId().toString().equals(notInSpuId)){
isErr = true;
errorSkuIds.add(new SimpleKeyValue("客户维度(不可选)",sku.getId()));
break;
}
}
if(isErr){
continue;
}
}
if(itemDTO.getOnlyCategoryIds()==null&&itemDTO.getNotInCategoryIds()==null){
continue;
}
GoodsSpu spu = spuMapper.selectById(sku.getSpuId());
if(itemDTO.getOnlyCategoryIds()!=null){
boolean anyMatch = false;
for (String categoryId : spu.listCategoryIds()) {
for (String onlyCategoryId : itemDTO.getOnlyCategoryIds()) {
boolean itemAnyMatch = onlyCategoryId.equals(categoryId);
if(itemAnyMatch){
anyMatch = true;
break;
}
}
}
if (!anyMatch){
errorSkuIds.add(new SimpleKeyValue("客户维度(只可选未包含该产品)",sku.getId()));
continue;
}
}
if(itemDTO.getNotInCategoryIds()!=null){
for (String notInCateId : itemDTO.getNotInCategoryIds()) {
boolean b1 = notInCateId.equals(spu.getCategoryFirst());
boolean b2 = notInCateId.equals(spu.getCategorySecond());
boolean b3 = notInCateId.equals(spu.getCategoryThird());
boolean anyMatch = b1||b2||b3;
if (anyMatch){
errorSkuIds.add(new SimpleKeyValue("客户维度(不可选)",sku.getId()));
}
}
}
}
return errorSkuIds;
}
private List<String> getRuleStrings(List<GoodsRuleItem> list) { private List<String> getRuleStrings(List<GoodsRuleItem> list) {
if(CollUtil.isEmpty(list)){ if(CollUtil.isEmpty(list)){
return null; return null;

10
src/main/java/com/qs/serve/modules/oms/entity/bo/OmsVerifySkuParam.java

@ -11,6 +11,16 @@ import java.util.List;
@Data @Data
public class OmsVerifySkuParam { public class OmsVerifySkuParam {
/** 供应商ID */
private Long supplierId;
/** skuId */
private List<Long> skuIds; private List<Long> skuIds;
/** 是否临期品 */
private Integer lqpFlag;
/** 规则ID */
private Long ruleId;
} }

3
src/main/java/com/qs/serve/modules/oms/service/OmsOrderPart1Service.java

@ -1,5 +1,6 @@
package com.qs.serve.modules.oms.service; package com.qs.serve.modules.oms.service;
import com.qs.serve.common.model.dto.SimpleKeyValue;
import com.qs.serve.modules.oms.entity.OmsOrder; import com.qs.serve.modules.oms.entity.OmsOrder;
import com.qs.serve.modules.oms.entity.bo.OmsVerifySkuParam; import com.qs.serve.modules.oms.entity.bo.OmsVerifySkuParam;
@ -25,6 +26,6 @@ public interface OmsOrderPart1Service {
* @param param * @param param
* @return * @return
*/ */
List<String> verifySku(OmsVerifySkuParam param); List<SimpleKeyValue> verifySku(OmsVerifySkuParam param);
} }

9
src/main/java/com/qs/serve/modules/oms/service/OmsOrderService.java

@ -1,6 +1,8 @@
package com.qs.serve.modules.oms.service; package com.qs.serve.modules.oms.service;
import com.baomidou.mybatisplus.extension.service.IService; import com.baomidou.mybatisplus.extension.service.IService;
import com.qs.serve.common.model.dto.SimpleKeyValue;
import com.qs.serve.modules.goods.entity.GoodsCategoryRule;
import com.qs.serve.modules.oms.entity.OmsOrder; import com.qs.serve.modules.oms.entity.OmsOrder;
import com.qs.serve.modules.oms.entity.bo.*; import com.qs.serve.modules.oms.entity.bo.*;
import com.qs.serve.modules.oms.entity.vo.OmsConfirmOrderResult; import com.qs.serve.modules.oms.entity.vo.OmsConfirmOrderResult;
@ -78,6 +80,13 @@ public interface OmsOrderService extends IService<OmsOrder> {
*/ */
OmsOrder modifyImminentOrder(OmsOrderImminentBo param); OmsOrder modifyImminentOrder(OmsOrderImminentBo param);
/**
* 拦截规则
* @param skuIds
* @param categoryRule
* @return
*/
List<SimpleKeyValue> handleCategoryRule(List<Long> skuIds,GoodsCategoryRule categoryRule);
} }

74
src/main/java/com/qs/serve/modules/oms/service/impl/OmsOrderPart1ServiceImpl.java

@ -1,25 +1,39 @@
package com.qs.serve.modules.oms.service.impl; package com.qs.serve.modules.oms.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.qs.serve.common.framework.redis.RedisService;
import com.qs.serve.common.model.dto.SimpleKeyValue;
import com.qs.serve.common.util.Assert; import com.qs.serve.common.util.Assert;
import com.qs.serve.common.util.AuthContextUtils; import com.qs.serve.common.util.AuthContextUtils;
import com.qs.serve.common.util.CodeGenUtil; import com.qs.serve.common.util.CodeGenUtil;
import com.qs.serve.modules.bms.entity.BmsSupplier; import com.qs.serve.modules.bms.entity.BmsSupplier;
import com.qs.serve.modules.bms.mapper.BmsRegionMapper;
import com.qs.serve.modules.bms.mapper.BmsSupplierMapper;
import com.qs.serve.modules.bms.service.BmsSupplierAddressService;
import com.qs.serve.modules.goods.entity.GoodsCategoryRule;
import com.qs.serve.modules.goods.entity.GoodsSku;
import com.qs.serve.modules.goods.entity.dto.GoodsAccrIdsDto; import com.qs.serve.modules.goods.entity.dto.GoodsAccrIdsDto;
import com.qs.serve.modules.goods.mapper.GoodsCategoryRuleMapper;
import com.qs.serve.modules.goods.mapper.GoodsSkuMapper;
import com.qs.serve.modules.goods.service.*;
import com.qs.serve.modules.oms.entity.OmsOrder; import com.qs.serve.modules.oms.entity.OmsOrder;
import com.qs.serve.modules.oms.entity.OmsOrderItem; import com.qs.serve.modules.oms.entity.OmsOrderItem;
import com.qs.serve.modules.oms.entity.bo.OmsVerifySkuParam; import com.qs.serve.modules.oms.entity.bo.OmsVerifySkuParam;
import com.qs.serve.modules.oms.service.OmsOrderItemService; import com.qs.serve.modules.oms.service.OmsOrderItemService;
import com.qs.serve.modules.oms.service.OmsOrderPart1Service; import com.qs.serve.modules.oms.service.OmsOrderPart1Service;
import com.qs.serve.modules.oms.service.OmsOrderService; import com.qs.serve.modules.oms.service.OmsOrderService;
import com.qs.serve.modules.sale.mapper.SalePlanGoodsMapper;
import com.qs.serve.modules.sale.mapper.SalePlanMapper;
import com.qs.serve.modules.seeyon.service.impl.SeeYonRequestBaseService;
import com.qs.serve.modules.sys.entity.SysUser; import com.qs.serve.modules.sys.entity.SysUser;
import com.qs.serve.modules.sys.service.SysDeptService;
import com.qs.serve.modules.sys.service.SysUserService; import com.qs.serve.modules.sys.service.SysUserService;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.stream.Collectors;
/** /**
* @author YenHex * @author YenHex
@ -31,9 +45,29 @@ import java.util.stream.Collectors;
public class OmsOrderPart1ServiceImpl implements OmsOrderPart1Service { public class OmsOrderPart1ServiceImpl implements OmsOrderPart1Service {
private SysUserService sysUserService; private SysUserService sysUserService;
private SysDeptService sysDeptService;
private SalePlanMapper salePlanMapper;
private SalePlanGoodsMapper salePlanGoodsMapper;
private OmsOrderService omsOrderService; private OmsOrderService omsOrderService;
private OmsOrderItemService omsOrderItemService; private OmsOrderItemService omsOrderItemService;
private GoodsRuleService goodsRuleService;
private GoodsAccreditService goodsAccreditService;
private GoodsImminentBatchService goodsImminentBatchService;
private GoodsSkuMapper goodsSkuMapper;
private GoodsSkuService goodsSkuService;
private GoodsSpuService goodsSpuService;
private GoodsCategoryRuleMapper goodsCategoryRuleMapper;
private GoodsCustomerPriceService goodsCustomerPriceService;
private BmsSupplierMapper bmsSupplierMapper;
private BmsRegionMapper bmsRegionMapper;
private BmsSupplierAddressService bmsSupplierAddressService;
private SeeYonRequestBaseService seeYonRequestBaseService;
private RedisService redisService;
@Override @Override
public OmsOrder copyOrder(Long orderId) { public OmsOrder copyOrder(Long orderId) {
OmsOrder orgOrder = omsOrderService.getById(orderId); OmsOrder orgOrder = omsOrderService.getById(orderId);
@ -86,9 +120,43 @@ public class OmsOrderPart1ServiceImpl implements OmsOrderPart1Service {
} }
@Override @Override
public List<String> verifySku(OmsVerifySkuParam param) { public List<SimpleKeyValue> verifySku(OmsVerifySkuParam param) {
List<Long> skuIds = param.getSkuIds();
GoodsCategoryRule categoryRule = goodsCategoryRuleMapper.selectById(param.getRuleId());
BmsSupplier supplier = bmsSupplierMapper.selectById(param.getSupplierId());
List<SimpleKeyValue> errorSkuIds = new ArrayList<>();
//拦截商品授权维度规则
GoodsAccrIdsDto accrIdsDto = goodsAccreditService.listIgnoreAcc2(supplier.getId(), supplier.listBizRegionIds(), supplier.listSaleRegionIds());
if (accrIdsDto != null) {
List<Long> selectSkuIds = goodsSkuMapper.listByOtherIds(
accrIdsDto.getCateIds(),
accrIdsDto.getSpuIds(),
accrIdsDto.getSkuIds(),
accrIdsDto.getNotInCateIds(),
accrIdsDto.getNotInSpuIds(),
accrIdsDto.getNotInSkuIds()
);
for (Long paramSkuId : skuIds) {
for (Long skuId : selectSkuIds) {
if (paramSkuId.equals(skuId)) {
errorSkuIds.add(new SimpleKeyValue("商品未授权",skuId));
break;
}
}
}
}
//拦截客户维度规则
errorSkuIds.addAll(goodsRuleService.checkSkuCode( supplier.getId(),skuIds));
//拦截品类下单规则
errorSkuIds.addAll(omsOrderService.handleCategoryRule(skuIds,categoryRule));
return null; return errorSkuIds;
} }
} }

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

@ -2,9 +2,9 @@ package com.qs.serve.modules.oms.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.qs.serve.common.config.properties.ProjectApisProperties;
import com.qs.serve.common.framework.redis.RedisService; import com.qs.serve.common.framework.redis.RedisService;
import com.qs.serve.common.model.dto.R; import com.qs.serve.common.model.dto.R;
import com.qs.serve.common.model.dto.SimpleKeyValue;
import com.qs.serve.common.util.*; import com.qs.serve.common.util.*;
import com.qs.serve.modules.bms.entity.BmsRegion; import com.qs.serve.modules.bms.entity.BmsRegion;
import com.qs.serve.modules.bms.entity.BmsSupplier; import com.qs.serve.modules.bms.entity.BmsSupplier;
@ -12,39 +12,36 @@ import com.qs.serve.modules.bms.entity.BmsSupplierAddress;
import com.qs.serve.modules.bms.mapper.BmsRegionMapper; import com.qs.serve.modules.bms.mapper.BmsRegionMapper;
import com.qs.serve.modules.bms.mapper.BmsSupplierMapper; import com.qs.serve.modules.bms.mapper.BmsSupplierMapper;
import com.qs.serve.modules.bms.service.BmsSupplierAddressService; import com.qs.serve.modules.bms.service.BmsSupplierAddressService;
import com.qs.serve.modules.goods.common.GoodsConst;
import com.qs.serve.modules.goods.entity.*; import com.qs.serve.modules.goods.entity.*;
import com.qs.serve.modules.goods.entity.dto.GoodsAccrIdsDto; import com.qs.serve.modules.goods.entity.dto.GoodsAccrIdsDto;
import com.qs.serve.modules.goods.entity.dto.InventoryCusPrice; 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.entity.vo.GoodSkuVo;
import com.qs.serve.modules.goods.mapper.GoodsCategoryRuleMapper; import com.qs.serve.modules.goods.mapper.GoodsCategoryRuleMapper;
import com.qs.serve.modules.goods.mapper.GoodsSkuMapper; import com.qs.serve.modules.goods.mapper.GoodsSkuMapper;
import com.qs.serve.modules.goods.service.*; import com.qs.serve.modules.goods.service.*;
import com.qs.serve.modules.oms.entity.*; import com.qs.serve.modules.oms.entity.*;
import com.qs.serve.modules.oms.entity.bo.*; import com.qs.serve.modules.oms.entity.bo.*;
import com.qs.serve.modules.oms.entity.dto.*; import com.qs.serve.modules.oms.entity.dto.OmsCalcAmount;
import com.qs.serve.modules.oms.entity.dto.ShoppingCartsCheckResult;
import com.qs.serve.modules.oms.entity.dto.XltOrderDTO;
import com.qs.serve.modules.oms.entity.vo.OmsConfirmOrderResult; import com.qs.serve.modules.oms.entity.vo.OmsConfirmOrderResult;
import com.qs.serve.modules.oms.entity.vo.OmsSpuAssesInfo; import com.qs.serve.modules.oms.entity.vo.OmsSpuAssesInfo;
import com.qs.serve.modules.oms.mapper.OmsOrderMapper;
import com.qs.serve.modules.oms.service.OmsOrderItemService; import com.qs.serve.modules.oms.service.OmsOrderItemService;
import com.qs.serve.modules.oms.service.OmsOrderService;
import com.qs.serve.modules.oms.service.OmsShoppingCartService; import com.qs.serve.modules.oms.service.OmsShoppingCartService;
import com.qs.serve.modules.sale.entity.SalePlan; import com.qs.serve.modules.sale.entity.SalePlan;
import com.qs.serve.modules.sale.entity.SalePlanGoods; import com.qs.serve.modules.sale.entity.SalePlanGoods;
import com.qs.serve.modules.sale.mapper.SalePlanGoodsMapper; import com.qs.serve.modules.sale.mapper.SalePlanGoodsMapper;
import com.qs.serve.modules.sale.mapper.SalePlanMapper; import com.qs.serve.modules.sale.mapper.SalePlanMapper;
import com.qs.serve.modules.seeyon.service.impl.SeeYonRequestBaseService; import com.qs.serve.modules.seeyon.service.impl.SeeYonRequestBaseService;
import com.qs.serve.modules.sys.entity.SysDept;
import com.qs.serve.modules.sys.entity.SysUser; import com.qs.serve.modules.sys.entity.SysUser;
import com.qs.serve.modules.sys.service.SysDeptService; import com.qs.serve.modules.sys.service.SysDeptService;
import com.qs.serve.modules.sys.service.SysUserService; import com.qs.serve.modules.sys.service.SysUserService;
import com.qs.serve.modules.tbs.common.TbsSeeYonConst;
import com.qs.serve.modules.tbs.entity.TbsCostApply;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NotNull;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import com.qs.serve.modules.oms.service.OmsOrderService;
import com.qs.serve.modules.oms.mapper.OmsOrderMapper;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import java.math.BigDecimal; import java.math.BigDecimal;
@ -57,6 +54,7 @@ import static com.qs.serve.modules.tbs.common.TbsSeeYonConst.*;
/** /**
* 订单 服务实现类 * 订单 服务实现类
*
* @author YenHex * @author YenHex
* @since 2022-10-14 * @since 2022-10-14
*/ */
@ -348,7 +346,7 @@ public class OmsOrderServiceImpl extends ServiceImpl<OmsOrderMapper,OmsOrder> im
this.checkGoodsRule(supplier, newOrderItemList); this.checkGoodsRule(supplier, newOrderItemList);
//拦截客户维度规则 //拦截客户维度规则
goodsRuleService.checkSkuCode(skuCodes,goodsRuleService.listBySupplierId(order.getSupplierId().toString()),true); goodsRuleService.checkSkuCode(skuCodes, supplier.getId(), true);
//拦截品类下单规则 //拦截品类下单规则
this.handleCategoryRule(categoryRule, newOrderItemList); this.handleCategoryRule(categoryRule, newOrderItemList);
@ -389,6 +387,7 @@ public class OmsOrderServiceImpl extends ServiceImpl<OmsOrderMapper,OmsOrder> im
/** /**
* 拦截规则 * 拦截规则
*
* @param categoryRule * @param categoryRule
* @param orderItems * @param orderItems
*/ */
@ -430,8 +429,63 @@ public class OmsOrderServiceImpl extends ServiceImpl<OmsOrderMapper,OmsOrder> im
} }
} }
@Override
public List<SimpleKeyValue> handleCategoryRule(List<Long> skuIds,GoodsCategoryRule categoryRule) {
List<SimpleKeyValue> errSkuIds = new ArrayList<>();
if (categoryRule != null && skuIds.size() > 0) {
List<String> cids = Arrays.asList(categoryRule.getBrandIds());
List<String> igcids = null;
if (categoryRule.getIgnoreBrandIds() != null) {
igcids = Arrays.asList(categoryRule.getIgnoreBrandIds());
}
List<GoodsSku> skuList = new ArrayList<>();
if (CollectionUtil.isNotEmpty(skuIds)) {
skuList = goodsSkuService.listByIds(skuIds);
for (GoodsSku sku : skuList) {
if (!sku.getOrderFlag().equals(1) && sku.getSpecialFlag().equals(0)) {
errSkuIds.add(new SimpleKeyValue("单品不予下单且非特殊品",sku.getId()));
break;
}
}
skuIds.addAll(skuList.stream().map(GoodsSku::getSpuId).collect(Collectors.toList()));
}
Set<Long> spuIds = skuList.stream().map(GoodsSku::getSpuId).collect(Collectors.toSet());
List<GoodsSpu> spuList = goodsSpuService.listByIds(spuIds);
for (GoodsSpu goodsSpu : spuList) {
if (!goodsSpu.getShelf().equals(1)) {
Long errSkuId = null;
for (GoodsSku sku : skuList) {
if(sku.getSpuId().equals(goodsSpu.getId())){
errSkuId = sku.getId();
}
}
errSkuIds.add(new SimpleKeyValue("SKU不予下单且非特殊品",errSkuId));
}
if (!goodsSpu.getOrderFlag().equals(1)) {
boolean msp = skuList.stream().anyMatch(m -> m.getSpuId().equals(goodsSpu.getId()) && m.getSpecialFlag().equals(1));
if (!msp) {
Long errSkuId = null;
for (GoodsSku sku : skuList) {
if(sku.getSpuId().equals(goodsSpu.getId())){
errSkuId = sku.getId();
}
}
errSkuIds.add(new SimpleKeyValue("SKU不予下单",errSkuId));
}
}
matchIgnoreCate(igcids, goodsSpu.getCategoryFirst(), goodsSpu);
matchIgnoreCate(igcids, goodsSpu.getCategorySecond(), goodsSpu);
matchIgnoreCate(igcids, goodsSpu.getCategoryThird(), goodsSpu);
}
}
return errSkuIds;
}
/** /**
* 拦截忽略的品牌 * 拦截忽略的品牌
*
* @param igcids * @param igcids
* @param spuCateId * @param spuCateId
* @param goodsSpu * @param goodsSpu
@ -675,7 +729,8 @@ public class OmsOrderServiceImpl extends ServiceImpl<OmsOrderMapper,OmsOrder> im
SysUser user = sysUserService.getById(AuthContextUtils.getSysUserId()); SysUser user = sysUserService.getById(AuthContextUtils.getSysUserId());
GoodsCategoryRule categoryRule = goodsCategoryRuleMapper.selectById(param.getBrandRuleId()); GoodsCategoryRule categoryRule = goodsCategoryRuleMapper.selectById(param.getBrandRuleId());
BmsSupplier supplier = bmsSupplierMapper.selectById(param.getSupplierId()); BmsSupplier supplier = bmsSupplierMapper.selectById(param.getSupplierId());
BmsSupplierAddress supplierAddress = bmsSupplierAddressService.getById(param.getAddressId());; BmsSupplierAddress supplierAddress = bmsSupplierAddressService.getById(param.getAddressId());
;
OmsOrder order; OmsOrder order;
if (param.getId() != null) { if (param.getId() != null) {
@ -758,7 +813,7 @@ public class OmsOrderServiceImpl extends ServiceImpl<OmsOrderMapper,OmsOrder> im
this.checkGoodsRule(supplier, orderItems); this.checkGoodsRule(supplier, orderItems);
//拦截客户维度规则 //拦截客户维度规则
goodsRuleService.checkSkuCode(skuCodes,goodsRuleService.listBySupplierId(order.getSupplierId().toString()),true); goodsRuleService.checkSkuCode(skuCodes, order.getSupplierId().toString(), true);
//拦截品类下单规则 //拦截品类下单规则
this.handleCategoryRule(categoryRule, orderItems); this.handleCategoryRule(categoryRule, orderItems);

Loading…
Cancel
Save