From 880c14b3f7ddfeaff259ed8f7a484846b3639399 Mon Sep 17 00:00:00 2001 From: Yen Date: Fri, 28 Jun 2024 08:43:53 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E4=B8=8B=E5=8D=95=E7=B3=BB=E7=BB=9F?= =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E5=89=8D=E7=BD=AE=E5=95=86=E5=93=81=E5=90=88?= =?UTF-8?q?=E6=B3=95=E6=A0=A1=E9=AA=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../common/model/dto/SimpleKeyValue.java | 5 + .../goods/service/GoodsRuleService.java | 13 +- .../service/impl/GoodsRuleServiceImpl.java | 82 +++- .../oms/entity/bo/OmsVerifySkuParam.java | 10 + .../oms/service/OmsOrderPart1Service.java | 3 +- .../modules/oms/service/OmsOrderService.java | 9 + .../impl/OmsOrderPart1ServiceImpl.java | 88 +++- .../oms/service/impl/OmsOrderServiceImpl.java | 377 ++++++++++-------- 8 files changed, 410 insertions(+), 177 deletions(-) diff --git a/src/main/java/com/qs/serve/common/model/dto/SimpleKeyValue.java b/src/main/java/com/qs/serve/common/model/dto/SimpleKeyValue.java index 3681dcc2..b2726302 100644 --- a/src/main/java/com/qs/serve/common/model/dto/SimpleKeyValue.java +++ b/src/main/java/com/qs/serve/common/model/dto/SimpleKeyValue.java @@ -20,4 +20,9 @@ public class SimpleKeyValue { /** 说明 */ private String remark; + public SimpleKeyValue(String label,T value){ + this.label = label; + this.value = value; + } + } diff --git a/src/main/java/com/qs/serve/modules/goods/service/GoodsRuleService.java b/src/main/java/com/qs/serve/modules/goods/service/GoodsRuleService.java index 770ff41f..1ac79f97 100644 --- a/src/main/java/com/qs/serve/modules/goods/service/GoodsRuleService.java +++ b/src/main/java/com/qs/serve/modules/goods/service/GoodsRuleService.java @@ -1,6 +1,7 @@ package com.qs.serve.modules.goods.service; 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.GoodsRuleItem; import com.qs.serve.modules.goods.entity.bo.GoodsRuleBo; @@ -31,11 +32,19 @@ public interface GoodsRuleService extends IService { /** * 检测sku是否符合规则 * @param skuCodes - * @param ruleItems + * @param supplierId * @param throwEx 不判断数量拦截,只条件拦截 * @return */ - boolean checkSkuCode(List skuCodes,List ruleItems,boolean throwEx); + boolean checkSkuCode(List skuCodes,String supplierId,boolean throwEx); + + /** + * 检测sku是否符合规则,返回不和规范的ID + * @param supplierId + * @param skuIds + * @return + */ + List checkSkuCode(String supplierId,List skuIds); } diff --git a/src/main/java/com/qs/serve/modules/goods/service/impl/GoodsRuleServiceImpl.java b/src/main/java/com/qs/serve/modules/goods/service/impl/GoodsRuleServiceImpl.java index 8333451f..b8cb48c4 100644 --- a/src/main/java/com/qs/serve/modules/goods/service/impl/GoodsRuleServiceImpl.java +++ b/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.QueryWrapper; 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.StringUtils; import com.qs.serve.modules.bms.entity.BmsRegion; @@ -273,7 +274,8 @@ public class GoodsRuleServiceImpl extends ServiceImpl @Override - public boolean checkSkuCode(List skuCodes, List ruleItems, boolean throwEx) { + public boolean checkSkuCode(List skuCodes, String supplierId, boolean throwEx) { + List ruleItems = this.listBySupplierId(supplierId); if(CollUtil.isEmpty(skuCodes)){ return false; } @@ -282,7 +284,6 @@ public class GoodsRuleServiceImpl extends ServiceImpl return true; } List goodsSkuList = skuMapper.selectList(new LambdaQueryWrapper().in(GoodsSku::getSkuCode,skuCodes)); - for (GoodsSku sku : goodsSkuList) { boolean notExistInOnly = false; if(itemDTO.getOnlySpuIds()!=null){ @@ -351,10 +352,85 @@ public class GoodsRuleServiceImpl extends ServiceImpl } } } - return false; } + @Override + public List checkSkuCode( String supplierId,List skuIds) { + List errorSkuIds = new ArrayList<>(); + List ruleItems = this.listBySupplierId(supplierId); + if(CollUtil.isEmpty(skuIds)){ + return errorSkuIds; + } + GoodsRuleItemDTO itemDTO = this.buildGoodsRuleItemDTO(ruleItems); + if(itemDTO==null){ + return errorSkuIds; + }List 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 getRuleStrings(List list) { if(CollUtil.isEmpty(list)){ return null; diff --git a/src/main/java/com/qs/serve/modules/oms/entity/bo/OmsVerifySkuParam.java b/src/main/java/com/qs/serve/modules/oms/entity/bo/OmsVerifySkuParam.java index c2f7f36c..8453f142 100644 --- a/src/main/java/com/qs/serve/modules/oms/entity/bo/OmsVerifySkuParam.java +++ b/src/main/java/com/qs/serve/modules/oms/entity/bo/OmsVerifySkuParam.java @@ -11,6 +11,16 @@ import java.util.List; @Data public class OmsVerifySkuParam { + /** 供应商ID */ + private Long supplierId; + + /** skuId */ private List skuIds; + /** 是否临期品 */ + private Integer lqpFlag; + + /** 规则ID */ + private Long ruleId; + } diff --git a/src/main/java/com/qs/serve/modules/oms/service/OmsOrderPart1Service.java b/src/main/java/com/qs/serve/modules/oms/service/OmsOrderPart1Service.java index 982fd178..06951992 100644 --- a/src/main/java/com/qs/serve/modules/oms/service/OmsOrderPart1Service.java +++ b/src/main/java/com/qs/serve/modules/oms/service/OmsOrderPart1Service.java @@ -1,5 +1,6 @@ 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.bo.OmsVerifySkuParam; @@ -25,6 +26,6 @@ public interface OmsOrderPart1Service { * @param param * @return */ - List verifySku(OmsVerifySkuParam param); + List verifySku(OmsVerifySkuParam param); } diff --git a/src/main/java/com/qs/serve/modules/oms/service/OmsOrderService.java b/src/main/java/com/qs/serve/modules/oms/service/OmsOrderService.java index 2412f5a3..6fb46b09 100644 --- a/src/main/java/com/qs/serve/modules/oms/service/OmsOrderService.java +++ b/src/main/java/com/qs/serve/modules/oms/service/OmsOrderService.java @@ -1,6 +1,8 @@ package com.qs.serve.modules.oms.service; 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.bo.*; import com.qs.serve.modules.oms.entity.vo.OmsConfirmOrderResult; @@ -78,6 +80,13 @@ public interface OmsOrderService extends IService { */ OmsOrder modifyImminentOrder(OmsOrderImminentBo param); + /** + * 拦截规则 + * @param skuIds + * @param categoryRule + * @return + */ + List handleCategoryRule(List skuIds,GoodsCategoryRule categoryRule); } diff --git a/src/main/java/com/qs/serve/modules/oms/service/impl/OmsOrderPart1ServiceImpl.java b/src/main/java/com/qs/serve/modules/oms/service/impl/OmsOrderPart1ServiceImpl.java index 1f4bd52b..25df75d4 100644 --- a/src/main/java/com/qs/serve/modules/oms/service/impl/OmsOrderPart1ServiceImpl.java +++ b/src/main/java/com/qs/serve/modules/oms/service/impl/OmsOrderPart1ServiceImpl.java @@ -1,25 +1,39 @@ package com.qs.serve.modules.oms.service.impl; 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.AuthContextUtils; import com.qs.serve.common.util.CodeGenUtil; 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.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.OmsOrderItem; import com.qs.serve.modules.oms.entity.bo.OmsVerifySkuParam; import com.qs.serve.modules.oms.service.OmsOrderItemService; import com.qs.serve.modules.oms.service.OmsOrderPart1Service; 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.service.SysDeptService; import com.qs.serve.modules.sys.service.SysUserService; import lombok.AllArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; +import java.util.ArrayList; import java.util.List; -import java.util.stream.Collectors; /** * @author YenHex @@ -31,30 +45,50 @@ import java.util.stream.Collectors; public class OmsOrderPart1ServiceImpl implements OmsOrderPart1Service { private SysUserService sysUserService; + private SysDeptService sysDeptService; + private SalePlanMapper salePlanMapper; + private SalePlanGoodsMapper salePlanGoodsMapper; + private OmsOrderService omsOrderService; 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 public OmsOrder copyOrder(Long orderId) { OmsOrder orgOrder = omsOrderService.getById(orderId); List orderItems = omsOrderItemService.list(new LambdaQueryWrapper() - .eq(OmsOrderItem::getOrderId,orderId)); + .eq(OmsOrderItem::getOrderId, orderId)); OmsOrder order = new OmsOrder(); order.setId(null); order.setOrderType(orgOrder.getOrderType()); String orderPrefix = null; - if(order.getOrderType().equals(0)){ + if (order.getOrderType().equals(0)) { orderPrefix = "SN"; - }else if(order.getOrderType().equals(1)){ + } else if (order.getOrderType().equals(1)) { orderPrefix = "ZP"; - }else if(order.getOrderType().equals(2)){ + } else if (order.getOrderType().equals(2)) { orderPrefix = "SC"; - }else if(order.getOrderType().equals(3)){ + } else if (order.getOrderType().equals(3)) { orderPrefix = "SP"; - }else { + } else { Assert.throwEx("订单类型错误"); } - order.setOrderSn(orderPrefix+ CodeGenUtil.generate(CodeGenUtil.SourceKey.OmsOrder)); + order.setOrderSn(orderPrefix + CodeGenUtil.generate(CodeGenUtil.SourceKey.OmsOrder)); SysUser user = sysUserService.getById(AuthContextUtils.getSysUserId()); order.setUserId(user.getId()); order.setUserCode(user.getCode()); @@ -86,9 +120,43 @@ public class OmsOrderPart1ServiceImpl implements OmsOrderPart1Service { } @Override - public List verifySku(OmsVerifySkuParam param) { + public List verifySku(OmsVerifySkuParam param) { + + List skuIds = param.getSkuIds(); + + GoodsCategoryRule categoryRule = goodsCategoryRuleMapper.selectById(param.getRuleId()); + BmsSupplier supplier = bmsSupplierMapper.selectById(param.getSupplierId()); + + + List errorSkuIds = new ArrayList<>(); + //拦截商品授权维度规则 + GoodsAccrIdsDto accrIdsDto = goodsAccreditService.listIgnoreAcc2(supplier.getId(), supplier.listBizRegionIds(), supplier.listSaleRegionIds()); + if (accrIdsDto != null) { + List 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; } } diff --git a/src/main/java/com/qs/serve/modules/oms/service/impl/OmsOrderServiceImpl.java b/src/main/java/com/qs/serve/modules/oms/service/impl/OmsOrderServiceImpl.java index c6b9eb1e..962cb0d9 100644 --- a/src/main/java/com/qs/serve/modules/oms/service/impl/OmsOrderServiceImpl.java +++ b/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.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.model.dto.R; +import com.qs.serve.common.model.dto.SimpleKeyValue; import com.qs.serve.common.util.*; import com.qs.serve.modules.bms.entity.BmsRegion; 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.BmsSupplierMapper; 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.dto.GoodsAccrIdsDto; 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.mapper.GoodsSkuMapper; import com.qs.serve.modules.goods.service.*; import com.qs.serve.modules.oms.entity.*; 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.OmsSpuAssesInfo; +import com.qs.serve.modules.oms.mapper.OmsOrderMapper; 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.sale.entity.SalePlan; import com.qs.serve.modules.sale.entity.SalePlanGoods; 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.SysDept; 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.tbs.common.TbsSeeYonConst; -import com.qs.serve.modules.tbs.entity.TbsCostApply; import lombok.AllArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.jetbrains.annotations.NotNull; 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 java.math.BigDecimal; @@ -57,13 +54,14 @@ import static com.qs.serve.modules.tbs.common.TbsSeeYonConst.*; /** * 订单 服务实现类 + * * @author YenHex * @since 2022-10-14 */ @Slf4j @Service @AllArgsConstructor -public class OmsOrderServiceImpl extends ServiceImpl implements OmsOrderService { +public class OmsOrderServiceImpl extends ServiceImpl implements OmsOrderService { private GoodsSkuMapper goodsSkuMapper; private GoodsSkuService goodsSkuService; @@ -94,9 +92,9 @@ public class OmsOrderServiceImpl extends ServiceImpl im BmsSupplier supplier = AuthContextUtils.getCurrentSupplier(); //购物车 List shoppingCarts; - if(CollectionUtil.isNotEmpty(confirmOrder.getShoppingCartIds())){ - shoppingCarts = omsShoppingCartService.listByIds(confirmOrder.getShoppingCartIds(),supplier.getId()); - }else { + if (CollectionUtil.isNotEmpty(confirmOrder.getShoppingCartIds())) { + shoppingCarts = omsShoppingCartService.listByIds(confirmOrder.getShoppingCartIds(), supplier.getId()); + } else { //立即购买,生成临时购物车 GoodsSku goodsSku = goodsSkuService.getById(confirmOrder.getSkuId()); GoodsSpu goodsSpu = goodsSpuService.getById(goodsSku.getSpuId()); @@ -112,7 +110,7 @@ public class OmsOrderServiceImpl extends ServiceImpl im shoppingCart.setPicUrl(goodsSku.getPicUrl()); shoppingCarts = Arrays.asList(shoppingCart); } - ShoppingCartsCheckResult cartsCheckResult = omsShoppingCartService.checkShoppingCarts(supplier,shoppingCarts,true); + ShoppingCartsCheckResult cartsCheckResult = omsShoppingCartService.checkShoppingCarts(supplier, shoppingCarts, true); OmsCalcAmount calcAmount = new OmsCalcAmount(); BigDecimal totalAmount = BigDecimal.ZERO; for (OmsShoppingCart shoppingCart : shoppingCarts) { @@ -173,11 +171,11 @@ public class OmsOrderServiceImpl extends ServiceImpl im for (GoodsSku goodsSku : skuList) { GoodsSpu goodsSpu = null; for (GoodsSpu spu : spuList) { - if(goodsSku.getSpuId().equals(spu.getId())){ + if (goodsSku.getSpuId().equals(spu.getId())) { goodsSpu = spu; } } - if(goodsSku==null){ + if (goodsSku == null) { Assert.throwEx("商品档案有更新,请刷新页面再试"); } OmsShoppingCart shoppingCart = new OmsShoppingCart(); @@ -185,8 +183,8 @@ public class OmsOrderServiceImpl extends ServiceImpl im shoppingCart.setSpuCode(goodsSpu.getSpuCode()); int qty = 1; for (OmsOrderSkuBo.SpuParam spuParam : confirmOrder.getSpuParamList()) { - if(spuParam.getSkuId()!=null&&goodsSku.getId().equals(spuParam.getSkuId())){ - if(spuParam.getQty()!=null){ + if (spuParam.getSkuId() != null && goodsSku.getId().equals(spuParam.getSkuId())) { + if (spuParam.getQty() != null) { qty = spuParam.getQty(); } shoppingCart.setVolume(spuParam.getVolume()); @@ -211,12 +209,12 @@ public class OmsOrderServiceImpl extends ServiceImpl im // 计算是否有活动优惠 //收货地址 BmsSupplierAddress supplierAddress = null; - if(confirmOrder.getAddressId()==null){ + if (confirmOrder.getAddressId() == null) { //supplierAddress = bmsSupplierAddressService.getDefault(Long.parseLong(supplier.getId())); - }else if (confirmOrder.getAddressId().equals(0L)){ + } else if (confirmOrder.getAddressId().equals(0L)) { supplierAddress = new BmsSupplierAddress(); supplierAddress.setId(0L); - }else { + } else { supplierAddress = bmsSupplierAddressService.getById(confirmOrder.getAddressId()); } OmsConfirmOrderResult confirmOrderResult = new OmsConfirmOrderResult(); @@ -233,10 +231,10 @@ public class OmsOrderServiceImpl extends ServiceImpl im @Transactional(rollbackFor = Exception.class) public void modifyOrder(OmsOrderModifyParam param) { OmsOrder order = super.getById(param.getId()); - if(!order.getStatus().equals(0)){ + if (!order.getStatus().equals(0)) { Assert.throwEx("非草稿状态无法修改"); } - if(order.getOrderType().equals(3)){ + if (order.getOrderType().equals(3)) { Assert.throwEx("临期品订单不支持该接口修改"); } order.setId(param.getId()); @@ -245,11 +243,11 @@ public class OmsOrderServiceImpl extends ServiceImpl im order.setSupplierAddrId(param.getSupplierAddrId()); GoodsCategoryRule categoryRule = goodsCategoryRuleMapper.selectById(param.getBrandRuleId()); order.setBrandRuleId(param.getBrandRuleId()); - if(categoryRule!=null){ + if (categoryRule != null) { order.setBrandRuleName(categoryRule.getLabel()); } BmsSupplier supplier = null; - if(param.getSupplierId()!=null){ + if (param.getSupplierId() != null) { supplier = bmsSupplierMapper.selectById(param.getSupplierId()); order.setSupplierId(param.getSupplierId()); order.setSupplierName(supplier.getSupplierName()); @@ -270,9 +268,9 @@ public class OmsOrderServiceImpl extends ServiceImpl im List spuIds = param.getOrderItems().stream().map(OmsOrderModifyParam.OmsOrderItemModifyBo::getSpuId).collect(Collectors.toList()); spuIds.add(0L);//兼容空订单,防止空指针 List spuList = goodsSpuService.listByIds(spuIds); - Map goodsSpuMap = new HashMap<>(spuList.size()); + Map goodsSpuMap = new HashMap<>(spuList.size()); for (GoodsSpu goodsSpu : spuList) { - goodsSpuMap.put(goodsSpu.getId(),goodsSpu); + goodsSpuMap.put(goodsSpu.getId(), goodsSpu); } List spuCodeList = spuList.stream().map(GoodsSpu::getSpuCode).collect(Collectors.toList()); /*List spuToSkuKeys = goodsSpuService.getSpuToSkuInfo(GoodsConst.DEFAULT_PlaCE,spuCodeList); @@ -287,17 +285,17 @@ public class OmsOrderServiceImpl extends ServiceImpl im for (OmsOrderModifyParam.OmsOrderItemModifyBo modifyItem : orderModifyItems) { GoodsSku goodsSku = null; GoodsSpu goodsSpu = null; - if(order.getLatitudeFrom().equals("sku")){ + if (order.getLatitudeFrom().equals("sku")) { //H5下单 goodsSku = goodsSkuService.getById(modifyItem.getSkuId()); goodsSpu = goodsSpuService.getById(goodsSku.getSpuId()); - }else { + } else { //PC下单 goodsSpu = goodsSpuMap.get(modifyItem.getSpuId()); //防止切换ID - if(modifyItem.getSkuId()!=null){ + if (modifyItem.getSkuId() != null) { goodsSku = goodsSkuService.getById(modifyItem.getSkuId()); - }else { + } else { // String skuCode = spuGetSkuMap.get(goodsSpu.getSpuCode()); // goodsSku = goodsSkuService.getByCode(skuCode); Assert.throwEx("订单无货或下架了"); @@ -312,7 +310,7 @@ public class OmsOrderServiceImpl extends ServiceImpl im orderItem.setWeight(modifyItem.getWeight()); orderItem.setVolume(modifyItem.getVolume()); orderItem.setRemark(modifyItem.getRemark()); - if(goodsSku!=null){ + if (goodsSku != null) { orderItem.setSkuId(goodsSku.getId()); orderItem.setSkuTitle(goodsSku.getSkuName()); orderItem.setSkuCode(goodsSku.getSkuCode()); @@ -322,7 +320,7 @@ public class OmsOrderServiceImpl extends ServiceImpl im orderItem.setSalesPrice(goodsSku.getSalesPrice()); orderItem.setCusPrice(goodsSku.getSalesPrice()); orderItem.setMarketPrice(goodsSku.getMarketPrice()); - }else { + } else { orderItem.setSkuId(0L); orderItem.setSkuCode(""); orderItem.setSkuUnit(""); @@ -348,27 +346,27 @@ public class OmsOrderServiceImpl extends ServiceImpl im 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); this.updateById(order); //移除已有的ITEM LambdaQueryWrapper rmItemLqw = new LambdaQueryWrapper<>(); - rmItemLqw.eq(OmsOrderItem::getOrderId,param.getId()); + rmItemLqw.eq(OmsOrderItem::getOrderId, param.getId()); omsOrderItemService.remove(rmItemLqw); //重新保存item omsOrderItemService.saveBatch(newOrderItemList); //立即下单 - if(param.getInstantFlag()!=null&¶m.getInstantFlag().equals(1)){ - this.buildPriceOrder(order.getId()+"",null); + if (param.getInstantFlag() != null && param.getInstantFlag().equals(1)) { + this.buildPriceOrder(order.getId() + "", null); } } private void checkGoodsRule(BmsSupplier supplier, List newOrderItemList) { GoodsAccrIdsDto accrIdsDto = goodsAccreditService.listIgnoreAcc2(supplier.getId(), supplier.listBizRegionIds(), supplier.listSaleRegionIds()); - if(accrIdsDto!=null){ + if (accrIdsDto != null) { List skuIds = goodsSkuMapper.listByOtherIds( accrIdsDto.getCateIds(), accrIdsDto.getSpuIds(), @@ -379,8 +377,8 @@ public class OmsOrderServiceImpl extends ServiceImpl im ); for (OmsOrderItem orderItem : newOrderItemList) { for (Long skuId : skuIds) { - if(orderItem.getSkuId().equals(skuId)){ - Assert.throwEx("商品未授权:"+orderItem.getSkuCode()); + if (orderItem.getSkuId().equals(skuId)) { + Assert.throwEx("商品未授权:" + orderItem.getSkuCode()); } } } @@ -389,24 +387,25 @@ public class OmsOrderServiceImpl extends ServiceImpl im /** * 拦截规则 + * * @param categoryRule * @param orderItems */ private void handleCategoryRule(GoodsCategoryRule categoryRule, List orderItems) { - if(categoryRule!=null&&orderItems.size()>0){ + if (categoryRule != null && orderItems.size() > 0) { List cids = Arrays.asList(categoryRule.getBrandIds()); List igcids = null; - if(categoryRule.getIgnoreBrandIds()!=null){ + if (categoryRule.getIgnoreBrandIds() != null) { igcids = Arrays.asList(categoryRule.getIgnoreBrandIds()); } Set spuIds = orderItems.stream().map(OmsOrderItem::getSpuId).collect(Collectors.toSet()); List skuIds = orderItems.stream().map(OmsOrderItem::getSkuId).collect(Collectors.toList()); List skuList = new ArrayList<>(); - if(CollectionUtil.isNotEmpty(skuIds)){ + if (CollectionUtil.isNotEmpty(skuIds)) { skuList = goodsSkuService.listByIds(skuIds); for (GoodsSku sku : skuList) { - if(!sku.getOrderFlag().equals(1)&&sku.getSpecialFlag().equals(0)){ - Assert.throwEx("单品["+sku.getSkuCode()+"]不予下单且非特殊品"); + if (!sku.getOrderFlag().equals(1) && sku.getSpecialFlag().equals(0)) { + Assert.throwEx("单品[" + sku.getSkuCode() + "]不予下单且非特殊品"); } } skuIds.addAll(skuList.stream().map(GoodsSku::getSpuId).collect(Collectors.toList())); @@ -414,35 +413,90 @@ public class OmsOrderServiceImpl extends ServiceImpl im List spuList = goodsSpuService.listByIds(spuIds); for (GoodsSpu goodsSpu : spuList) { - if(!goodsSpu.getShelf().equals(1)){ - Assert.throwEx("SKU已下架["+goodsSpu.getSpuCode()+"]不予下单"); + if (!goodsSpu.getShelf().equals(1)) { + Assert.throwEx("SKU已下架[" + goodsSpu.getSpuCode() + "]不予下单"); } - if(!goodsSpu.getOrderFlag().equals(1)){ - boolean msp = skuList.stream().anyMatch(m->m.getSpuId().equals(goodsSpu.getId())&&m.getSpecialFlag().equals(1)); - if(!msp){ - Assert.throwEx("SKU["+goodsSpu.getSpuCode()+"]不予下单"); + if (!goodsSpu.getOrderFlag().equals(1)) { + boolean msp = skuList.stream().anyMatch(m -> m.getSpuId().equals(goodsSpu.getId()) && m.getSpecialFlag().equals(1)); + if (!msp) { + Assert.throwEx("SKU[" + goodsSpu.getSpuCode() + "]不予下单"); + } + } + matchIgnoreCate(igcids, goodsSpu.getCategoryFirst(), goodsSpu); + matchIgnoreCate(igcids, goodsSpu.getCategorySecond(), goodsSpu); + matchIgnoreCate(igcids, goodsSpu.getCategoryThird(), goodsSpu); + } + } + } + + + @Override + public List handleCategoryRule(List skuIds,GoodsCategoryRule categoryRule) { + List errSkuIds = new ArrayList<>(); + if (categoryRule != null && skuIds.size() > 0) { + List cids = Arrays.asList(categoryRule.getBrandIds()); + List igcids = null; + if (categoryRule.getIgnoreBrandIds() != null) { + igcids = Arrays.asList(categoryRule.getIgnoreBrandIds()); + } + List 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 spuIds = skuList.stream().map(GoodsSku::getSpuId).collect(Collectors.toSet()); + List 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); + matchIgnoreCate(igcids, goodsSpu.getCategoryFirst(), goodsSpu); + matchIgnoreCate(igcids, goodsSpu.getCategorySecond(), goodsSpu); + matchIgnoreCate(igcids, goodsSpu.getCategoryThird(), goodsSpu); } } + return errSkuIds; } /** * 拦截忽略的品牌 + * * @param igcids * @param spuCateId * @param goodsSpu */ - private void matchIgnoreCate(List igcids, String spuCateId,GoodsSpu goodsSpu) { - if(igcids==null || spuCateId ==null|| spuCateId.equals("")|| spuCateId.equals("0")){ + private void matchIgnoreCate(List igcids, String spuCateId, GoodsSpu goodsSpu) { + if (igcids == null || spuCateId == null || spuCateId.equals("") || spuCateId.equals("0")) { return; } for (String igcid : igcids) { - if(spuCateId.equals(igcid)){ - Assert.throwEx("["+goodsSpu.getSkuCode()+"]"+goodsSpu.getName()+",不符合订单规则"); + if (spuCateId.equals(igcid)) { + Assert.throwEx("[" + goodsSpu.getSkuCode() + "]" + goodsSpu.getName() + ",不符合订单规则"); } } } @@ -467,8 +521,8 @@ public class OmsOrderServiceImpl extends ServiceImpl im CreateOrderParam createOrderParam = omsOrderBo.getCreateOrderParam(); createOrderParam.setCdOrderRemark(omsOrderBo.getCdOrderRemark()); OmsOrder order = this.buildOmsOrder(confirmOrder, createOrderParam); - if(omsOrderBo.getInstantFlag()!=null&&omsOrderBo.getInstantFlag().equals(1)){ - this.buildPriceOrder(order.getId()+"",null); + if (omsOrderBo.getInstantFlag() != null && omsOrderBo.getInstantFlag().equals(1)) { + this.buildPriceOrder(order.getId() + "", null); } return order; } @@ -485,17 +539,17 @@ public class OmsOrderServiceImpl extends ServiceImpl im OmsOrder order = new OmsOrder(); order.setLatitudeFrom(confirmOrder.getLatitudeFrom().toLowerCase(Locale.ROOT)); String orderPrefix = null; - if(order.getOrderType()==null||order.getOrderType().equals(0)){ + if (order.getOrderType() == null || order.getOrderType().equals(0)) { orderPrefix = "SN"; - }else if(order.getOrderType().equals(1)){ + } else if (order.getOrderType().equals(1)) { orderPrefix = "ZP"; - }else if(order.getOrderType().equals(2)){ + } else if (order.getOrderType().equals(2)) { orderPrefix = "SC"; } - order.setOrderSn(orderPrefix+CodeGenUtil.generate(CodeGenUtil.SourceKey.OmsOrder)); + order.setOrderSn(orderPrefix + CodeGenUtil.generate(CodeGenUtil.SourceKey.OmsOrder)); GoodsCategoryRule categoryRule = goodsCategoryRuleMapper.selectById(confirmOrder.getBrandRuleId()); - if(categoryRule!=null){ + if (categoryRule != null) { order.setBrandRuleName(categoryRule.getLabel()); } @@ -504,13 +558,13 @@ public class OmsOrderServiceImpl extends ServiceImpl im order.setSupplierId(Long.parseLong(supplier.getId())); order.setSupplierCode(supplier.getCode()); order.setSupplierName(supplier.getName()); - order.setSupplierAddrId(address!=null?address.getId():0); + order.setSupplierAddrId(address != null ? address.getId() : 0); order.setBrandRuleId(confirmOrder.getBrandRuleId()); order.setUserId(user.getId()); order.setUserName(user.getName()); order.setUserCode(user.getCode()); order.setUserPhone(user.getMobile()); - if(createOrderParam !=null){ + if (createOrderParam != null) { order.setBillType(createOrderParam.getBillType()); order.setUrgentFlag(createOrderParam.getUrgentFlag()); order.setRemark(createOrderParam.getRemark()); @@ -540,7 +594,7 @@ public class OmsOrderServiceImpl extends ServiceImpl im orderItem.setWeight(shoppingCart.getWeight()); orderItem.setVolume(shoppingCart.getVolume()); orderItem.setRemark(shoppingCart.getRemark()); - if(confirmOrder.getLatitudeFrom()!=null&&confirmOrder.getLatitudeFrom().equals("SPU")){ + if (confirmOrder.getLatitudeFrom() != null && confirmOrder.getLatitudeFrom().equals("SPU")) { // spu维度 GoodsSku goodsSku = goodsSkuService.getById(shoppingCart.getSkuId()); orderItem.setSpuId(shoppingCart.getSpuId()); @@ -551,18 +605,18 @@ public class OmsOrderServiceImpl extends ServiceImpl im orderItem.setSkuImg(shoppingCart.getPicUrl()); orderItem.setSpecValues(shoppingCart.getSpecInfo()); orderItem.setSpuCode(shoppingCart.getSpuCode()); - if(goodsSku!=null){ + if (goodsSku != null) { GoodsSpu goodsSpu = goodsSpuService.getById(goodsSku.getSpuId()); orderItem.setSpuTitle(goodsSpu.getName()); orderItem.setSkuTitle(goodsSpu.getSkuName()); - log.warn("shoppingCart json =>"+JsonUtil.objectToJson(shoppingCart)); + log.warn("shoppingCart json =>" + JsonUtil.objectToJson(shoppingCart)); orderItem.setSkuTitle(goodsSku.getSkuName()); orderItem.setMarketPrice(goodsSku.getMarketPrice()); orderItem.setSalesPrice(goodsSku.getSalesPrice()); orderItem.setCusPrice(goodsSku.getSalesPrice()); } - }else { + } else { // 默认sku GoodSkuVo goodSkuVo = shoppingCart.getGoodSkuVo(); GoodsSpu goodsSpu = goodsSpuService.getByCode(goodSkuVo.getSpuCode()); @@ -588,9 +642,9 @@ public class OmsOrderServiceImpl extends ServiceImpl im try { String supplierCode = supplier.getCode(); List skuCodes = orderItems.stream().map(OmsOrderItem::getSkuCode).collect(Collectors.toList()); - if(skuCodes.size()>0){ - List customerPrices = goodsCustomerPriceService.getBySupplierCodeAndCode(supplierCode,skuCodes); - inventoryCusPrices = customerPrices.stream().map(obj->{ + if (skuCodes.size() > 0) { + List customerPrices = goodsCustomerPriceService.getBySupplierCodeAndCode(supplierCode, skuCodes); + inventoryCusPrices = customerPrices.stream().map(obj -> { InventoryCusPrice cusPrice = new InventoryCusPrice(); cusPrice.setCusCode(supplierCode); cusPrice.setInvCode(obj.getSkuCode()); @@ -606,12 +660,12 @@ public class OmsOrderServiceImpl extends ServiceImpl im // } } } catch (Exception e) { - log.error("客户特殊价异常:{}",e.getMessage()); + log.error("客户特殊价异常:{}", e.getMessage()); } - if(inventoryCusPrices!=null){ + if (inventoryCusPrices != null) { for (OmsOrderItem orderItem : orderItems) { for (InventoryCusPrice cusPrice : inventoryCusPrices) { - if(orderItem.getSkuCode().equals(cusPrice.getInvCode())){ + if (orderItem.getSkuCode().equals(cusPrice.getInvCode())) { orderItem.setMarketPrice(cusPrice.getPrice()); orderItem.setCusPrice(cusPrice.getPrice()); orderItem.setSalesPrice(cusPrice.getPrice()); @@ -620,14 +674,14 @@ public class OmsOrderServiceImpl extends ServiceImpl im } } - this.handleCategoryRule(categoryRule,orderItems); + this.handleCategoryRule(categoryRule, orderItems); omsOrderItemService.saveBatch(orderItems); //清空勾选的购物车 List cartIds = confirmOrder.getShoppingCarts().stream() - .filter(a->a.getId()!=null) + .filter(a -> a.getId() != null) .map(OmsShoppingCart::getId).collect(Collectors.toList()); - if(CollectionUtil.isNotEmpty(cartIds)){ + if (CollectionUtil.isNotEmpty(cartIds)) { omsShoppingCartService.removeBatchByIds(cartIds); } return order; @@ -641,17 +695,17 @@ public class OmsOrderServiceImpl extends ServiceImpl im Integer month = param.getMonthNum(); String supplierId = param.getSupplierId(); LambdaQueryWrapper spLqw = new LambdaQueryWrapper<>(); - spLqw.eq(SalePlan::getYearNum,year); - spLqw.eq(SalePlan::getMonthNum,month); - spLqw.eq(SalePlan::getSupplierId,supplierId); + spLqw.eq(SalePlan::getYearNum, year); + spLqw.eq(SalePlan::getMonthNum, month); + spLqw.eq(SalePlan::getSupplierId, supplierId); //spLqw.eq(SalePlan::getPlanState,1); List salePlanList = salePlanMapper.selectList(spLqw); - Map spuIdAndSum = new HashMap<>(); - if(salePlanList.size()>0){ + Map spuIdAndSum = new HashMap<>(); + if (salePlanList.size() > 0) { List spIds = salePlanList.stream().map(SalePlan::getId).collect(Collectors.toList()); LambdaQueryWrapper spgLqw = new LambdaQueryWrapper<>(); - spgLqw.in(SalePlanGoods::getPlanId,spIds); - spgLqw.in(SalePlanGoods::getTargetId,spuIds); + spgLqw.in(SalePlanGoods::getPlanId, spIds); + spgLqw.in(SalePlanGoods::getTargetId, spuIds); List salePlanGoodsList = salePlanGoodsMapper.selectList(spgLqw); for (SalePlanGoods planGoods : salePlanGoodsList) { spuIdAndSum.merge(planGoods.getTargetId(), planGoods.getQty(), Integer::sum); @@ -662,7 +716,7 @@ public class OmsOrderServiceImpl extends ServiceImpl im OmsSpuAssesInfo assesInfo = new OmsSpuAssesInfo(); assesInfo.setSpuId(spuId); Integer sum = spuIdAndSum.get(spuId); - assesInfo.setNum(sum==null?0:sum); + assesInfo.setNum(sum == null ? 0 : sum); spuAssesInfoList.add(assesInfo); } return spuAssesInfoList; @@ -675,17 +729,18 @@ public class OmsOrderServiceImpl extends ServiceImpl im SysUser user = sysUserService.getById(AuthContextUtils.getSysUserId()); GoodsCategoryRule categoryRule = goodsCategoryRuleMapper.selectById(param.getBrandRuleId()); BmsSupplier supplier = bmsSupplierMapper.selectById(param.getSupplierId()); - BmsSupplierAddress supplierAddress = bmsSupplierAddressService.getById(param.getAddressId());; + BmsSupplierAddress supplierAddress = bmsSupplierAddressService.getById(param.getAddressId()); + ; OmsOrder order; - if(param.getId()!=null){ + if (param.getId() != null) { order = this.getById(param.getId()); - if(!order.getOrderType().equals(3)){ + if (!order.getOrderType().equals(3)) { Assert.throwEx("订单类型不支持混用"); } - }else { + } else { order = new OmsOrder(); - order.setOrderSn("SP"+CodeGenUtil.generate(CodeGenUtil.SourceKey.OmsOrder)); + order.setOrderSn("SP" + CodeGenUtil.generate(CodeGenUtil.SourceKey.OmsOrder)); } order.setLatitudeFrom("sp"); order.setCdOrderRemark(param.getCdOrderRemark()); @@ -693,7 +748,7 @@ public class OmsOrderServiceImpl extends ServiceImpl im order.setSupplierId(Long.parseLong(supplier.getId())); order.setSupplierCode(supplier.getCode()); order.setSupplierName(supplier.getName()); - order.setSupplierAddrId(supplierAddress!=null?supplierAddress.getId():0); + order.setSupplierAddrId(supplierAddress != null ? supplierAddress.getId() : 0); order.setBrandRuleId(param.getBrandRuleId()); order.setUserId(user.getId()); order.setUserName(user.getName()); @@ -706,25 +761,25 @@ public class OmsOrderServiceImpl extends ServiceImpl im List orderItems = new ArrayList<>(); - if(CollectionUtil.isNotEmpty(param.getItemList())){ + if (CollectionUtil.isNotEmpty(param.getItemList())) { Set batchSkuIds = param.getItemList().stream().map(OmsOrderImminentBo.ItemParam::getBatchSkuId) .collect(Collectors.toSet()); - if(order.getStatus()!=null&&!order.getStatus().equals(0)&&CollectionUtil.isEmpty(param.getItemList())){ + if (order.getStatus() != null && !order.getStatus().equals(0) && CollectionUtil.isEmpty(param.getItemList())) { Assert.throwEx("请选择商品"); } List imminentBatches = goodsImminentBatchService .list( new LambdaQueryWrapper() - .in(GoodsImminentBatch::getId,batchSkuIds) + .in(GoodsImminentBatch::getId, batchSkuIds) .ge(GoodsImminentBatch::getEndDate, LocalDate.now()) ); - if(CollectionUtil.isEmpty(imminentBatches)){ + if (CollectionUtil.isEmpty(imminentBatches)) { Assert.throwEx("参数过期或无效,请重新选择商品"); } Set skuIds = imminentBatches.stream() .map(GoodsImminentBatch::getSkuId).collect(Collectors.toSet()); - if(skuIds.size()!=imminentBatches.size()){ + if (skuIds.size() != imminentBatches.size()) { Assert.throwEx("不同批次相同产品,请分开下单"); } @@ -736,9 +791,9 @@ public class OmsOrderServiceImpl extends ServiceImpl im for (OmsOrderImminentBo.ItemParam item : param.getItemList()) { for (GoodsImminentBatch batch : imminentBatches) { - if(item.getBatchSkuId().equals(batch.getId())){ + if (item.getBatchSkuId().equals(batch.getId())) { for (GoodsSku sku : goodsSkuList) { - if(sku.getId().toString().equals(batch.getSkuId())){ + if (sku.getId().toString().equals(batch.getSkuId())) { //创建OrderItem OmsOrderItem orderItem = createImminentOrderItem(order, spuList, item, batch, sku); orderItems.add(orderItem); @@ -758,28 +813,28 @@ public class OmsOrderServiceImpl extends ServiceImpl im 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); } this.updateById(order); //移除已有的ITEM LambdaQueryWrapper rmItemLqw = new LambdaQueryWrapper<>(); - rmItemLqw.eq(OmsOrderItem::getOrderId,param.getId()); + rmItemLqw.eq(OmsOrderItem::getOrderId, param.getId()); omsOrderItemService.remove(rmItemLqw); //重新保存item - if(orderItems.size()>0){ + if (orderItems.size() > 0) { omsOrderItemService.saveBatch(orderItems); } //立即下单 - if(param.getInstantFlag()!=null&¶m.getInstantFlag().equals(1)){ - if(supplier.getCdOrderFlag().equals(1) && !StringUtils.hasText(param.getCdOrderRemark()) ){ + if (param.getInstantFlag() != null && param.getInstantFlag().equals(1)) { + if (supplier.getCdOrderFlag().equals(1) && !StringUtils.hasText(param.getCdOrderRemark())) { Assert.throwEx("请补充CD单号"); } - this.buildPriceOrder(order.getId()+"",null); + this.buildPriceOrder(order.getId() + "", null); } return order; } @@ -794,7 +849,7 @@ public class OmsOrderServiceImpl extends ServiceImpl im orderItem.setOrderSn(order.getOrderSn()); orderItem.setSpuId(sku.getSpuId()); for (GoodsSpu spu : spuList) { - if(sku.getSpuId().equals(spu.getId())){ + if (sku.getSpuId().equals(spu.getId())) { orderItem.setSpuCode(spu.getSpuCode()); orderItem.setSpuTitle(spu.getName()); break; @@ -829,43 +884,43 @@ public class OmsOrderServiceImpl extends ServiceImpl im } @Override - public void buildPriceOrder(String id,String amount) { - redisService.throwResLock(OmsOrder.class.getSimpleName(),id); + public void buildPriceOrder(String id, String amount) { + redisService.throwResLock(OmsOrder.class.getSimpleName(), id); OmsOrder omsOrder = super.getById(id); String userId = AuthContextUtils.getSysUserId(); SysUser sysUser = sysUserService.getById(userId); - if(omsOrder==null){ + if (omsOrder == null) { Assert.throwEx("订单不存在或被移除"); } - if(!omsOrder.getUserId().equals(userId)){ + if (!omsOrder.getUserId().equals(userId)) { Assert.throwEx("非制单人无法下单"); } this.checkMsOrderStatus(omsOrder); - if(!omsOrder.getStatus().equals(0)&&!omsOrder.getStatus().equals(6)){ + if (!omsOrder.getStatus().equals(0) && !omsOrder.getStatus().equals(6)) { Assert.throwEx("订单状态不支持下单"); } LambdaQueryWrapper iteLqw = new LambdaQueryWrapper<>(); - iteLqw.eq(OmsOrderItem::getOrderId,id); + iteLqw.eq(OmsOrderItem::getOrderId, id); List orderItemList = omsOrderItemService.list(iteLqw); - if(orderItemList.size()<1){ + if (orderItemList.size() < 1) { Assert.throwEx("空项目不支持下单"); } List imminentBatches = new ArrayList<>(); - if(omsOrder.getOrderType().equals(3)){ + if (omsOrder.getOrderType().equals(3)) { //临期品相关拦截 for (OmsOrderItem orderItem : orderItemList) { - if(orderItem.getSkuBatchId()==null){ + if (orderItem.getSkuBatchId() == null) { Assert.throwEx(orderItem.getSkuCode() + " 单品无效或过期"); } GoodsImminentBatch imminentBatch = goodsImminentBatchService.getById(orderItem.getSkuBatchId()); - if(imminentBatch==null){ + if (imminentBatch == null) { Assert.throwEx(orderItem.getSkuCode() + " 单品无效或过期"); } int spur = imminentBatch.getQuantity() - imminentBatch.getOrderQuantity(); - if(orderItem.getQuantity() > spur){ + if (orderItem.getQuantity() > spur) { Assert.throwEx(orderItem.getSkuCode() + " 单品库存不足"); } imminentBatch.setOrderQuantity(imminentBatch.getOrderQuantity() + orderItem.getQuantity()); @@ -875,19 +930,19 @@ public class OmsOrderServiceImpl extends ServiceImpl im } //拦截相同的skuItem long countDistinct = orderItemList.stream().map(OmsOrderItem::getSkuId).distinct().count(); - if(orderItemList.size()!=countDistinct){ + if (orderItemList.size() != countDistinct) { Assert.throwEx("有重复存货,请检查订单项"); } for (OmsOrderItem orderItem : orderItemList) { - if(orderItem.getQuantity()==null||orderItem.getQuantity()<1){ + if (orderItem.getQuantity() == null || orderItem.getQuantity() < 1) { Assert.throwEx("确认订单商品项数量不能为零"); } } //下单前规则拦截 GoodsCategoryRule categoryRule = goodsCategoryRuleMapper.selectById(omsOrder.getBrandRuleId()); - this.handleCategoryRule(categoryRule,orderItemList); + this.handleCategoryRule(categoryRule, orderItemList); //List spuIds = orderItemList.stream().map(OmsOrderItem::getSpuId).collect(Collectors.toList()); @@ -904,27 +959,27 @@ public class OmsOrderServiceImpl extends ServiceImpl im BmsSupplierAddress supplierAddress = bmsSupplierAddressService.getById(omsOrder.getSupplierAddrId()); String brands = Arrays.stream(categoryRule.getBrandNames()).collect(Collectors.joining(",")); BmsSupplier supplier = bmsSupplierMapper.selectById(omsOrder.getSupplierId()); - if(supplier.getCdOrderFlag().equals(1) && !StringUtils.hasText(omsOrder.getCdOrderRemark()) ){ + if (supplier.getCdOrderFlag().equals(1) && !StringUtils.hasText(omsOrder.getCdOrderRemark())) { Assert.throwEx("请补充CD单号"); } String lastRegionId = supplier.getRegionLast(); BmsRegion bmsRegion = bmsRegionMapper.selectById(lastRegionId); - if(bmsRegion==null){ - Assert.throwEx("客户档案["+supplier.getCode()+"]缺失销售区域数据,请联系管理员"); + if (bmsRegion == null) { + Assert.throwEx("客户档案[" + supplier.getCode() + "]缺失销售区域数据,请联系管理员"); } //保存到临时表-主表 LocalDateTime nowTime = LocalDateTime.now(); OmsXltOrder xltOrder = new OmsXltOrder(); - xltOrder.setId(IdUtil.getSnowFlakeId()+""); + xltOrder.setId(IdUtil.getSnowFlakeId() + ""); xltOrder.setDingDanHao(omsOrder.getOrderSn()); xltOrder.setShenQingRiQi(nowTime); xltOrder.setKeHuBianHao(omsOrder.getSupplierCode()); xltOrder.setShouHuoDiZhi(supplierAddress.getDetail()); xltOrder.setRenYuanBianHao(omsOrder.getUserCode()); xltOrder.setCdOrderRemark(omsOrder.getCdOrderRemark()); - String remark = sysUser.getName()+"("+sysUser.getMobile()+")"+omsOrder.getRemark()+supplierAddress.getDetail(); - if(remark.length()>120){ - remark = remark.substring(0,120); + String remark = sysUser.getName() + "(" + sysUser.getMobile() + ")" + omsOrder.getRemark() + supplierAddress.getDetail(); + if (remark.length() > 120) { + remark = remark.substring(0, 120); } xltOrder.setZhuYiShiXian(remark); xltOrder.setXieRuShiJian(nowTime); @@ -939,19 +994,19 @@ public class OmsOrderServiceImpl extends ServiceImpl im xltOrder.setStatus(0); //补充:调度系统写报价单给ERP时,要把地址ID写过去 - if(supplierAddress.getTmsSysId()==null){ + if (supplierAddress.getTmsSysId() == null) { Assert.throwEx("地址缺失TmsSysId关联"); } - xltOrder.setTmsSysId(supplierAddress.getId()+""); + xltOrder.setTmsSysId(supplierAddress.getId() + ""); xltOrder.setEmpName(omsOrder.getUserName()); xltOrder.setCusCode(omsOrder.getSupplierCode()); xltOrder.setCusName(omsOrder.getSupplierName()); String[] regions = bmsRegion.getPathNames().split("_"); - if(regions.length>1){ + if (regions.length > 1) { xltOrder.setDealerProvince(regions[1]); } - if(regions.length>0){ + if (regions.length > 0) { xltOrder.setDealerCity(regions[0]); } xltOrder.setDealerArea(bmsRegion.getPathNames()); @@ -961,15 +1016,15 @@ public class OmsOrderServiceImpl extends ServiceImpl im for (int i = 0; i < orderItemList.size(); i++) { OmsOrderItem orderItem = orderItemList.get(i); OmsXltOrderItem xltOrderItem = new OmsXltOrderItem(); - xltOrderItem.setId(xltOrder.getId()+"_"+(i+1)); + xltOrderItem.setId(xltOrder.getId() + "_" + (i + 1)); xltOrderItem.setDingDanID(xltOrder.getId()); xltOrderItem.setSpuCode(orderItem.getSpuCode()); boolean eq = orderItem.getSkuCode().equals(orderItem.getSpuCode()); - if(!StringUtils.hasText(orderItem.getSkuCode())||eq){ + if (!StringUtils.hasText(orderItem.getSkuCode()) || eq) { GoodsSku sku = goodsSkuService.getById(orderItem.getSkuId()); GoodsSpu spu = goodsSpuService.getById(orderItem.getSpuId()); - if(!sku.getSkuCode().equals(spu.getSpuCode())){ - Assert.throwEx("SKU【"+orderItem.getSpuCode()+"】存货缺失,请联系档案负责人"); + if (!sku.getSkuCode().equals(spu.getSpuCode())) { + Assert.throwEx("SKU【" + orderItem.getSpuCode() + "】存货缺失,请联系档案负责人"); } } xltOrderItem.setChanPinBianHao(orderItem.getSkuCode()); @@ -981,25 +1036,25 @@ public class OmsOrderServiceImpl extends ServiceImpl im xltOrderItem.setXieRuShiJian(nowTime); xltOrderItem.setChuLiShiJian(null); xltOrderItem.setRowCreateDate(nowTime); - if(omsOrder.getOrderType().equals(3)){ - String itemRm = orderItem.getRemark()==null?"":orderItem.getRemark(); - xltOrderItem.setBeiZhu("批号["+orderItem.getSkuBatchCode()+"]"+ itemRm); - }else { + if (omsOrder.getOrderType().equals(3)) { + String itemRm = orderItem.getRemark() == null ? "" : orderItem.getRemark(); + xltOrderItem.setBeiZhu("批号[" + orderItem.getSkuBatchCode() + "]" + itemRm); + } else { xltOrderItem.setBeiZhu(orderItem.getRemark()); } xltOrderItem.setZhuangTai(0); xltOrderItemList.add(xltOrderItem); } - XltOrderDTO xltOrderDTO = new XltOrderDTO(xltOrder,xltOrderItemList); + XltOrderDTO xltOrderDTO = new XltOrderDTO(xltOrder, xltOrderItemList); //请求到中间服务保存 - seeYonRequestBaseService.postBase(ERP_ORDER_CREATE,xltOrderDTO,"创建订单:"+xltOrder.getDingDanHao()); + seeYonRequestBaseService.postBase(ERP_ORDER_CREATE, xltOrderDTO, "创建订单:" + xltOrder.getDingDanHao()); //更新订单 omsOrder.setStatus(1); omsOrder.setCheckTime(LocalDateTime.now()); omsOrder.setCheckUserId(AuthContextUtils.getSysUserId()); this.updateById(omsOrder); - if(imminentBatches.size() > 0){ + if (imminentBatches.size() > 0) { goodsImminentBatchService.updateBatchById(imminentBatches); } @@ -1007,13 +1062,13 @@ public class OmsOrderServiceImpl extends ServiceImpl im @Override public boolean checkMsOrderStatus(OmsOrder omsOrder) { - if(omsOrder.getStatus().equals(1)){ + if (omsOrder.getStatus().equals(1)) { //检索是否能取消 - String status = seeYonRequestBaseService.postBase(ERP_ORDER_STATUS+"/"+omsOrder.getOrderSn() - ,null - ,"获取订单状态" + String status = seeYonRequestBaseService.postBase(ERP_ORDER_STATUS + "/" + omsOrder.getOrderSn() + , null + , "获取订单状态" ).getData(); - if(!status.equals("0")){ + if (!status.equals("0")) { omsOrder.setStatus(2); super.updateById(omsOrder); return true; @@ -1024,15 +1079,15 @@ public class OmsOrderServiceImpl extends ServiceImpl im @Override public boolean cancelOrder(String orderSn) { - OmsOrder order = this.getOne(new LambdaQueryWrapper().eq(OmsOrder::getOrderSn,orderSn)); - if(order==null){ + OmsOrder order = this.getOne(new LambdaQueryWrapper().eq(OmsOrder::getOrderSn, orderSn)); + if (order == null) { Assert.throwEx("订单编码异常"); } List updItemBatch = new ArrayList<>(); - if(order.getOrderType().equals(3)){ + if (order.getOrderType().equals(3)) { List itemList = omsOrderItemService.list(new LambdaQueryWrapper() - .eq(OmsOrderItem::getOrderId,order.getId())); + .eq(OmsOrderItem::getOrderId, order.getId())); for (OmsOrderItem orderItem : itemList) { GoodsImminentBatch batch = goodsImminentBatchService.getById(orderItem.getSkuBatchId()); GoodsImminentBatch newBatch = new GoodsImminentBatch(); @@ -1042,16 +1097,16 @@ public class OmsOrderServiceImpl extends ServiceImpl im } } - R r = seeYonRequestBaseService.postBase(ERP_ORDER_CANCEL+"/"+orderSn - ,null - ,"获取订单状态" + R r = seeYonRequestBaseService.postBase(ERP_ORDER_CANCEL + "/" + orderSn + , null + , "获取订单状态" ); - if(r.getStatus()==200){ - if(CollectionUtil.isNotEmpty(updItemBatch)){ + if (r.getStatus() == 200) { + if (CollectionUtil.isNotEmpty(updItemBatch)) { goodsImminentBatchService.updateBatchById(updItemBatch); } } - return r.getStatus()==200; + return r.getStatus() == 200; } }