|
@ -31,6 +31,7 @@ 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.OmsOrderService; |
|
|
import com.qs.serve.modules.oms.service.OmsShoppingCartService; |
|
|
import com.qs.serve.modules.oms.service.OmsShoppingCartService; |
|
|
|
|
|
import com.qs.serve.modules.oms.utils.OmsOrderUtil; |
|
|
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; |
|
@ -393,7 +394,8 @@ public class OmsOrderServiceImpl extends ServiceImpl<OmsOrderMapper, OmsOrder> i |
|
|
* @param categoryRule |
|
|
* @param categoryRule |
|
|
* @param orderItems |
|
|
* @param orderItems |
|
|
*/ |
|
|
*/ |
|
|
private void handleCategoryRule(GoodsCategoryRule categoryRule, List<OmsOrderItem> orderItems) { |
|
|
@Override |
|
|
|
|
|
public void handleCategoryRule(GoodsCategoryRule categoryRule, List<OmsOrderItem> orderItems) { |
|
|
if (categoryRule != null && orderItems.size() > 0) { |
|
|
if (categoryRule != null && orderItems.size() > 0) { |
|
|
List<String> cids = Arrays.asList(categoryRule.getBrandIds()); |
|
|
List<String> cids = Arrays.asList(categoryRule.getBrandIds()); |
|
|
List<String> igcids = null; |
|
|
List<String> igcids = null; |
|
@ -899,6 +901,10 @@ public class OmsOrderServiceImpl extends ServiceImpl<OmsOrderMapper, OmsOrder> i |
|
|
if (!omsOrder.getUserId().equals(userId)) { |
|
|
if (!omsOrder.getUserId().equals(userId)) { |
|
|
Assert.throwEx("非制单人无法下单"); |
|
|
Assert.throwEx("非制单人无法下单"); |
|
|
} |
|
|
} |
|
|
|
|
|
// 非临期品不走当前流程
|
|
|
|
|
|
if(omsOrder.getOrderType().equals(3)){ |
|
|
|
|
|
Assert.throwEx("临期品需要审批方式下单"); |
|
|
|
|
|
} |
|
|
this.checkMsOrderStatus(omsOrder); |
|
|
this.checkMsOrderStatus(omsOrder); |
|
|
if (!omsOrder.getStatus().equals(0) && !omsOrder.getStatus().equals(6)) { |
|
|
if (!omsOrder.getStatus().equals(0) && !omsOrder.getStatus().equals(6)) { |
|
|
Assert.throwEx("订单状态不支持下单"); |
|
|
Assert.throwEx("订单状态不支持下单"); |
|
@ -907,46 +913,13 @@ public class OmsOrderServiceImpl extends ServiceImpl<OmsOrderMapper, OmsOrder> i |
|
|
iteLqw.eq(OmsOrderItem::getOrderId, id); |
|
|
iteLqw.eq(OmsOrderItem::getOrderId, id); |
|
|
List<OmsOrderItem> orderItemList = omsOrderItemService.list(iteLqw); |
|
|
List<OmsOrderItem> orderItemList = omsOrderItemService.list(iteLqw); |
|
|
|
|
|
|
|
|
if (orderItemList.size() < 1) { |
|
|
// 加成订单项合法性
|
|
|
Assert.throwEx("空项目不支持下单"); |
|
|
OmsOrderUtil.checkOrderItemValues(orderItemList); |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
List<GoodsImminentBatch> imminentBatches = new ArrayList<>(); |
|
|
|
|
|
|
|
|
|
|
|
if (omsOrder.getOrderType().equals(3)) { |
|
|
|
|
|
//临期品相关拦截
|
|
|
|
|
|
for (OmsOrderItem orderItem : orderItemList) { |
|
|
|
|
|
if (orderItem.getSkuBatchId() == null) { |
|
|
|
|
|
Assert.throwEx(orderItem.getSkuCode() + " 单品无效或过期"); |
|
|
|
|
|
} |
|
|
|
|
|
GoodsImminentBatch imminentBatch = goodsImminentBatchService.getById(orderItem.getSkuBatchId()); |
|
|
|
|
|
if (imminentBatch == null) { |
|
|
|
|
|
Assert.throwEx(orderItem.getSkuCode() + " 单品无效或过期"); |
|
|
|
|
|
} |
|
|
|
|
|
int spur = imminentBatch.getQuantity() - imminentBatch.getOrderQuantity(); |
|
|
|
|
|
if (orderItem.getQuantity() > spur) { |
|
|
|
|
|
Assert.throwEx(orderItem.getSkuCode() + " 单品库存不足"); |
|
|
|
|
|
} |
|
|
|
|
|
imminentBatch.setOrderQuantity(imminentBatch.getOrderQuantity() + orderItem.getQuantity()); |
|
|
|
|
|
imminentBatches.add(imminentBatch); |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
|
//拦截相同的skuItem
|
|
|
|
|
|
long countDistinct = orderItemList.stream().map(OmsOrderItem::getSkuId).distinct().count(); |
|
|
|
|
|
if (orderItemList.size() != countDistinct) { |
|
|
|
|
|
Assert.throwEx("有重复存货,请检查订单项"); |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
for (OmsOrderItem orderItem : orderItemList) { |
|
|
|
|
|
if (orderItem.getQuantity() == null || orderItem.getQuantity() < 1) { |
|
|
|
|
|
Assert.throwEx("确认订单商品项数量不能为零"); |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
//下单前规则拦截
|
|
|
//下单前规则拦截
|
|
|
GoodsCategoryRule categoryRule = goodsCategoryRuleMapper.selectById(omsOrder.getBrandRuleId()); |
|
|
GoodsCategoryRule categoryRule = goodsCategoryRuleMapper.selectById(omsOrder.getBrandRuleId()); |
|
|
this.handleCategoryRule(categoryRule, orderItemList); |
|
|
this.handleCategoryRule(categoryRule, orderItemList); |
|
|
|
|
|
String brands = Arrays.stream(categoryRule.getBrandNames()).collect(Collectors.joining(",")); |
|
|
|
|
|
|
|
|
//List<Long> spuIds = orderItemList.stream().map(OmsOrderItem::getSpuId).collect(Collectors.toList());
|
|
|
//List<Long> spuIds = orderItemList.stream().map(OmsOrderItem::getSpuId).collect(Collectors.toList());
|
|
|
|
|
|
|
|
@ -959,9 +932,8 @@ public class OmsOrderServiceImpl extends ServiceImpl<OmsOrderMapper, OmsOrder> i |
|
|
//SysDept dept = sysDeptService.getById(sysUser.getDeptId());
|
|
|
//SysDept dept = sysDeptService.getById(sysUser.getDeptId());
|
|
|
//this.toU8Api(omsOrder, sysUser, dept, orderItemList);
|
|
|
//this.toU8Api(omsOrder, sysUser, dept, orderItemList);
|
|
|
|
|
|
|
|
|
//加载关联数据
|
|
|
//客户校验
|
|
|
BmsSupplierAddress supplierAddress = bmsSupplierAddressService.getById(omsOrder.getSupplierAddrId()); |
|
|
BmsSupplierAddress supplierAddress = bmsSupplierAddressService.getById(omsOrder.getSupplierAddrId()); |
|
|
String brands = Arrays.stream(categoryRule.getBrandNames()).collect(Collectors.joining(",")); |
|
|
|
|
|
BmsSupplier supplier = bmsSupplierMapper.selectById(omsOrder.getSupplierId()); |
|
|
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单号"); |
|
|
Assert.throwEx("请补充CD单号"); |
|
@ -972,26 +944,7 @@ public class OmsOrderServiceImpl extends ServiceImpl<OmsOrderMapper, OmsOrder> i |
|
|
Assert.throwEx("客户档案[" + supplier.getCode() + "]缺失销售区域数据,请联系管理员"); |
|
|
Assert.throwEx("客户档案[" + supplier.getCode() + "]缺失销售区域数据,请联系管理员"); |
|
|
} |
|
|
} |
|
|
//更新最新的用户特殊价格
|
|
|
//更新最新的用户特殊价格
|
|
|
List<String> codes = orderItemList.stream().map(OmsOrderItem::getSkuCode).distinct().collect(Collectors.toList()); |
|
|
this.updateCusPrice(omsOrder.getSupplierCode(), orderItemList); |
|
|
InventoryCusPriceQuery query = new InventoryCusPriceQuery(); |
|
|
|
|
|
query.setCusCode(omsOrder.getSupplierCode()); |
|
|
|
|
|
query.setInvCodes(codes); |
|
|
|
|
|
R<String> res = seeYonRequestBaseService.postBase(TbsSeeYonConst.ERP_CUS_INV_PRICE,query,"查询客户特殊价"); |
|
|
|
|
|
if(res.getStatus().equals(200)) { |
|
|
|
|
|
List<InventoryCusPrice> inventoryCusPrices = JsonUtil.jsonToList(res.getData(), InventoryCusPrice.class); |
|
|
|
|
|
if(CollectionUtil.isNotEmpty(inventoryCusPrices)){ |
|
|
|
|
|
assert inventoryCusPrices != null; |
|
|
|
|
|
for (InventoryCusPrice cusPrice : inventoryCusPrices) { |
|
|
|
|
|
for (OmsOrderItem orderItem : orderItemList) { |
|
|
|
|
|
if(orderItem.getSkuCode().equals(cusPrice.getInvCode())){ |
|
|
|
|
|
orderItem.setCusPrice(cusPrice.getPrice()); |
|
|
|
|
|
orderItem.setSalesPrice(cusPrice.getPrice()); |
|
|
|
|
|
omsOrderItemService.updateById(orderItem); |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
//保存到临时表-主表
|
|
|
//保存到临时表-主表
|
|
|
LocalDateTime nowTime = LocalDateTime.now(); |
|
|
LocalDateTime nowTime = LocalDateTime.now(); |
|
@ -1081,10 +1034,30 @@ public class OmsOrderServiceImpl extends ServiceImpl<OmsOrderMapper, OmsOrder> i |
|
|
omsOrder.setCheckUserId(AuthContextUtils.getSysUserId()); |
|
|
omsOrder.setCheckUserId(AuthContextUtils.getSysUserId()); |
|
|
this.updateById(omsOrder); |
|
|
this.updateById(omsOrder); |
|
|
|
|
|
|
|
|
if (imminentBatches.size() > 0) { |
|
|
} |
|
|
goodsImminentBatchService.updateBatchById(imminentBatches); |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
|
|
public void updateCusPrice(String cusCode, List<OmsOrderItem> orderItemList) { |
|
|
|
|
|
List<String> codes = orderItemList.stream().map(OmsOrderItem::getSkuCode).distinct().collect(Collectors.toList()); |
|
|
|
|
|
InventoryCusPriceQuery query = new InventoryCusPriceQuery(); |
|
|
|
|
|
query.setCusCode(cusCode); |
|
|
|
|
|
query.setInvCodes(codes); |
|
|
|
|
|
R<String> res = seeYonRequestBaseService.postBase(TbsSeeYonConst.ERP_CUS_INV_PRICE,query,"查询客户特殊价"); |
|
|
|
|
|
if(res.getStatus().equals(200)) { |
|
|
|
|
|
List<InventoryCusPrice> inventoryCusPrices = JsonUtil.jsonToList(res.getData(), InventoryCusPrice.class); |
|
|
|
|
|
if(CollectionUtil.isNotEmpty(inventoryCusPrices)){ |
|
|
|
|
|
assert inventoryCusPrices != null; |
|
|
|
|
|
for (InventoryCusPrice cusPrice : inventoryCusPrices) { |
|
|
|
|
|
for (OmsOrderItem orderItem : orderItemList) { |
|
|
|
|
|
if(orderItem.getSkuCode().equals(cusPrice.getInvCode())){ |
|
|
|
|
|
orderItem.setCusPrice(cusPrice.getPrice()); |
|
|
|
|
|
orderItem.setSalesPrice(cusPrice.getPrice()); |
|
|
|
|
|
omsOrderItemService.updateById(orderItem); |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
@Override |
|
|
@Override |
|
|