|
@ -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); |
|
|