|
@ -2,6 +2,7 @@ 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.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; |
|
@ -9,6 +10,7 @@ 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.GoodsCategoryRule; |
|
|
import com.qs.serve.modules.goods.entity.GoodsCategoryRule; |
|
|
import com.qs.serve.modules.goods.entity.GoodsSku; |
|
|
import com.qs.serve.modules.goods.entity.GoodsSku; |
|
|
import com.qs.serve.modules.goods.entity.GoodsSpu; |
|
|
import com.qs.serve.modules.goods.entity.GoodsSpu; |
|
@ -18,20 +20,16 @@ import com.qs.serve.modules.goods.service.GoodsSkuService; |
|
|
import com.qs.serve.modules.goods.service.GoodsSpuService; |
|
|
import com.qs.serve.modules.goods.service.GoodsSpuService; |
|
|
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.ErpOfferOrderParam; |
|
|
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.OmsSpuToSkuKey; |
|
|
|
|
|
import com.qs.serve.modules.oms.entity.dto.ShoppingCartsCheckResult; |
|
|
|
|
|
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.OmsXltOrderItemMapper; |
|
|
|
|
|
import com.qs.serve.modules.oms.mapper.OmsXltOrderMapper; |
|
|
|
|
|
import com.qs.serve.modules.oms.service.OmsOrderItemService; |
|
|
import com.qs.serve.modules.oms.service.OmsOrderItemService; |
|
|
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.sys.entity.SysDept; |
|
|
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; |
|
@ -49,6 +47,8 @@ import java.time.LocalDateTime; |
|
|
import java.util.*; |
|
|
import java.util.*; |
|
|
import java.util.stream.Collectors; |
|
|
import java.util.stream.Collectors; |
|
|
|
|
|
|
|
|
|
|
|
import static com.qs.serve.modules.tbs.common.TbsSeeYonConst.ERP_ORDER_CREATE; |
|
|
|
|
|
|
|
|
/** |
|
|
/** |
|
|
* 订单 服务实现类 |
|
|
* 订单 服务实现类 |
|
|
* @author YenHex |
|
|
* @author YenHex |
|
@ -73,9 +73,8 @@ public class OmsOrderServiceImpl extends ServiceImpl<OmsOrderMapper,OmsOrder> im |
|
|
private SalePlanGoodsMapper salePlanGoodsMapper; |
|
|
private SalePlanGoodsMapper salePlanGoodsMapper; |
|
|
|
|
|
|
|
|
private OmsOrderItemService omsOrderItemService; |
|
|
private OmsOrderItemService omsOrderItemService; |
|
|
private OmsXltOrderMapper omsXltOrderMapper; |
|
|
|
|
|
private OmsXltOrderItemMapper omsXltOrderItemMapper; |
|
|
|
|
|
private OmsShoppingCartService omsShoppingCartService; |
|
|
private OmsShoppingCartService omsShoppingCartService; |
|
|
|
|
|
private SeeYonRequestBaseService seeYonRequestBaseService; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@Override |
|
|
@Override |
|
@ -135,6 +134,17 @@ public class OmsOrderServiceImpl extends ServiceImpl<OmsOrderMapper,OmsOrder> im |
|
|
.map(OmsOrderSkuBo.SpuParam::getSpuId).collect(Collectors.toList()); |
|
|
.map(OmsOrderSkuBo.SpuParam::getSpuId).collect(Collectors.toList()); |
|
|
List<GoodsSpu> spuList = goodsSpuService.listByIds(spuIds); |
|
|
List<GoodsSpu> spuList = goodsSpuService.listByIds(spuIds); |
|
|
|
|
|
|
|
|
|
|
|
//通过当前函数获取当前账套对于的skuID,默认全部转化为开平(001)的sku
|
|
|
|
|
|
Map<Long,GoodsSpu> goodsSpuMap = new HashMap<>(spuList.size()); |
|
|
|
|
|
for (GoodsSpu goodsSpu : spuList) { |
|
|
|
|
|
goodsSpuMap.put(goodsSpu.getId(),goodsSpu); |
|
|
|
|
|
} |
|
|
|
|
|
List<String> spuCodeList = spuList.stream().map(GoodsSpu::getSpuCode).collect(Collectors.toList()); |
|
|
|
|
|
List<OmsSpuToSkuKey> spuToSkuKeys = goodsSpuService.getSpuToSkuInfo(GoodsConst.DEFAULT_BOOK,spuCodeList); |
|
|
|
|
|
Map<String,String> spuGetSkuMap = new HashMap<>(spuToSkuKeys.size()); |
|
|
|
|
|
for (OmsSpuToSkuKey toSkuKey : spuToSkuKeys) { |
|
|
|
|
|
spuGetSkuMap.put(toSkuKey.getSkuCode(),toSkuKey.getInvCode()); |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
//构建临时购物车列表
|
|
|
//构建临时购物车列表
|
|
|
List<OmsShoppingCart> shoppingCartList = new ArrayList<>(); |
|
|
List<OmsShoppingCart> shoppingCartList = new ArrayList<>(); |
|
@ -145,14 +155,16 @@ public class OmsOrderServiceImpl extends ServiceImpl<OmsOrderMapper,OmsOrder> im |
|
|
qty = spuParam.getQty(); |
|
|
qty = spuParam.getQty(); |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
|
|
|
String skuCode = spuGetSkuMap.get(goodsSpu.getSpuCode()); |
|
|
|
|
|
GoodsSku goodsSku = goodsSkuService.getByCode(skuCode); |
|
|
OmsShoppingCart shoppingCart = new OmsShoppingCart(); |
|
|
OmsShoppingCart shoppingCart = new OmsShoppingCart(); |
|
|
shoppingCart.setSpuId(goodsSpu.getId()); |
|
|
shoppingCart.setSpuId(goodsSpu.getId()); |
|
|
shoppingCart.setSpuCode(goodsSpu.getSpuCode()); |
|
|
shoppingCart.setSpuCode(goodsSpu.getSpuCode()); |
|
|
shoppingCart.setQuantity(qty); |
|
|
shoppingCart.setQuantity(qty); |
|
|
shoppingCart.setSkuId(0L); |
|
|
shoppingCart.setSkuId(goodsSku.getId()); |
|
|
shoppingCart.setSkuCode(""); |
|
|
shoppingCart.setSkuCode(goodsSku.getSkuCode()); |
|
|
shoppingCart.setSpecInfo(goodsSpu.getName()); |
|
|
shoppingCart.setSpecInfo(goodsSku.getSpecInfos()); |
|
|
shoppingCart.setAddPrice(BigDecimal.ZERO); |
|
|
shoppingCart.setAddPrice(goodsSku.getSalesPrice()); |
|
|
shoppingCartList.add(shoppingCart); |
|
|
shoppingCartList.add(shoppingCart); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
@ -209,6 +221,20 @@ public class OmsOrderServiceImpl extends ServiceImpl<OmsOrderMapper,OmsOrder> im |
|
|
order.setUrgentFlag(param.getUrgentFlag()); |
|
|
order.setUrgentFlag(param.getUrgentFlag()); |
|
|
order.setRemark(param.getRemark()); |
|
|
order.setRemark(param.getRemark()); |
|
|
|
|
|
|
|
|
|
|
|
//通过当前函数获取当前账套对于的skuID,默认全部转化为开平(001)的sku
|
|
|
|
|
|
List<Long> spuIds = param.getOrderItems().stream().map(OmsOrderModifyParam.OmsOrderItemModifyBo::getSpuId).collect(Collectors.toList()); |
|
|
|
|
|
List<GoodsSpu> spuList = goodsSpuService.listByIds(spuIds); |
|
|
|
|
|
Map<Long,GoodsSpu> goodsSpuMap = new HashMap<>(spuList.size()); |
|
|
|
|
|
for (GoodsSpu goodsSpu : spuList) { |
|
|
|
|
|
goodsSpuMap.put(goodsSpu.getId(),goodsSpu); |
|
|
|
|
|
} |
|
|
|
|
|
List<String> spuCodeList = spuList.stream().map(GoodsSpu::getSpuCode).collect(Collectors.toList()); |
|
|
|
|
|
List<OmsSpuToSkuKey> spuToSkuKeys = goodsSpuService.getSpuToSkuInfo(GoodsConst.DEFAULT_BOOK,spuCodeList); |
|
|
|
|
|
Map<String,String> spuGetSkuMap = new HashMap<>(spuToSkuKeys.size()); |
|
|
|
|
|
for (OmsSpuToSkuKey toSkuKey : spuToSkuKeys) { |
|
|
|
|
|
spuGetSkuMap.put(toSkuKey.getSkuCode(),toSkuKey.getInvCode()); |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
//构建新的item
|
|
|
//构建新的item
|
|
|
List<OmsOrderItem> newOrderItemList = new ArrayList<>(); |
|
|
List<OmsOrderItem> newOrderItemList = new ArrayList<>(); |
|
|
List<OmsOrderModifyParam.OmsOrderItemModifyBo> orderModifyItems = param.getOrderItems(); |
|
|
List<OmsOrderModifyParam.OmsOrderItemModifyBo> orderModifyItems = param.getOrderItems(); |
|
@ -221,7 +247,10 @@ public class OmsOrderServiceImpl extends ServiceImpl<OmsOrderMapper,OmsOrder> im |
|
|
goodsSpu = goodsSpuService.getById(goodsSku.getSpuId()); |
|
|
goodsSpu = goodsSpuService.getById(goodsSku.getSpuId()); |
|
|
}else { |
|
|
}else { |
|
|
//PC下单
|
|
|
//PC下单
|
|
|
goodsSpu = goodsSpuService.getById(modifyItem.getSpuId()); |
|
|
//goodsSpu = goodsSpuService.getById(modifyItem.getSpuId());
|
|
|
|
|
|
goodsSpu = goodsSpuMap.get(modifyItem.getSpuId()); |
|
|
|
|
|
String skuCode = spuGetSkuMap.get(goodsSpu.getSpuCode()); |
|
|
|
|
|
goodsSku = goodsSkuService.getByCode(skuCode); |
|
|
} |
|
|
} |
|
|
OmsOrderItem orderItem = new OmsOrderItem(); |
|
|
OmsOrderItem orderItem = new OmsOrderItem(); |
|
|
orderItem.setOrderId(order.getId()); |
|
|
orderItem.setOrderId(order.getId()); |
|
@ -390,7 +419,7 @@ public class OmsOrderServiceImpl extends ServiceImpl<OmsOrderMapper,OmsOrder> im |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
@Override |
|
|
@Override |
|
|
public void buildPriceOrder(String id) { |
|
|
public void buildPriceOrder(String id,String amount) { |
|
|
OmsOrder omsOrder = super.getById(id); |
|
|
OmsOrder omsOrder = super.getById(id); |
|
|
String userId = AuthContextUtils.getSysUserId(); |
|
|
String userId = AuthContextUtils.getSysUserId(); |
|
|
// if(omsOrder==null || !omsOrder.getUserId().equals(userId)){
|
|
|
// if(omsOrder==null || !omsOrder.getUserId().equals(userId)){
|
|
@ -401,36 +430,11 @@ public class OmsOrderServiceImpl extends ServiceImpl<OmsOrderMapper,OmsOrder> im |
|
|
List<OmsOrderItem> orderItemList = omsOrderItemService.list(iteLqw); |
|
|
List<OmsOrderItem> orderItemList = omsOrderItemService.list(iteLqw); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
List<Long> spuIds = orderItemList.stream().map(OmsOrderItem::getSpuId).collect(Collectors.toList()); |
|
|
//List<Long> spuIds = orderItemList.stream().map(OmsOrderItem::getSpuId).collect(Collectors.toList());
|
|
|
|
|
|
|
|
|
//通过当前函数获取当前账套对于的skuID,默认全部转化为开平的sku
|
|
|
|
|
|
List<OmsSpuToSkuKey> spuToSkuKeys = this.getSpuToSkuInfo("001",spuIds); |
|
|
|
|
|
|
|
|
|
|
|
for (OmsOrderItem orderItem : orderItemList) { |
|
|
|
|
|
if( orderItem.getSkuId()!=null && !orderItem.getSkuId().equals(0L) ){ |
|
|
|
|
|
continue; |
|
|
|
|
|
} |
|
|
|
|
|
//设置订单的sku信息
|
|
|
|
|
|
GoodsSku goodsSku = null; |
|
|
|
|
|
for (OmsSpuToSkuKey toSkuKey : spuToSkuKeys) { |
|
|
|
|
|
if(orderItem.getSpuId().equals(toSkuKey.getSpuId())){ |
|
|
|
|
|
goodsSku = goodsSkuService.getById(toSkuKey.getSkuId()); |
|
|
|
|
|
break; |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
if(goodsSku==null){ |
|
|
|
|
|
Assert.throwEx("未能匹配当前账号的产品信息:"+orderItem.getSpuCode()); |
|
|
|
|
|
}else { |
|
|
|
|
|
orderItem.setSkuId(goodsSku.getId()); |
|
|
|
|
|
orderItem.setSkuCode(goodsSku.getSkuCode()); |
|
|
|
|
|
orderItem.setSpecValues(goodsSku.getSpecInfos()); |
|
|
|
|
|
orderItem.setSalesPrice(goodsSku.getSalesPrice()); |
|
|
|
|
|
orderItem.setSalesPrice(goodsSku.getSalesPrice()); |
|
|
|
|
|
orderItem.setMarketPrice(goodsSku.getSalesPrice()); |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
//更新设置sku后的信息
|
|
|
//更新设置sku后的信息
|
|
|
omsOrderItemService.updateBatchById(orderItemList); |
|
|
//omsOrderItemService.updateBatchById(orderItemList);
|
|
|
|
|
|
|
|
|
//直接调用U8接口生成
|
|
|
//直接调用U8接口生成
|
|
|
//SysUser sysUser = sysUserService.getById(userId);
|
|
|
//SysUser sysUser = sysUserService.getById(userId);
|
|
@ -478,11 +482,14 @@ public class OmsOrderServiceImpl extends ServiceImpl<OmsOrderMapper,OmsOrder> im |
|
|
} |
|
|
} |
|
|
xltOrder.setDealerArea(bmsRegion.getPathNames()); |
|
|
xltOrder.setDealerArea(bmsRegion.getPathNames()); |
|
|
|
|
|
|
|
|
omsXltOrderMapper.insert(xltOrder); |
|
|
|
|
|
//保存到临时表-明细表
|
|
|
//保存到临时表-明细表
|
|
|
for (OmsOrderItem orderItem : orderItemList) { |
|
|
List<OmsXltOrderItem> xltOrderItemList = new ArrayList<>(); |
|
|
|
|
|
for (int i = 0; i < orderItemList.size(); i++) { |
|
|
|
|
|
OmsOrderItem orderItem = orderItemList.get(i); |
|
|
OmsXltOrderItem xltOrderItem = new OmsXltOrderItem(); |
|
|
OmsXltOrderItem xltOrderItem = new OmsXltOrderItem(); |
|
|
|
|
|
xltOrderItem.setId(xltOrder.getId()+"_"+(i+1)); |
|
|
xltOrderItem.setDingDanID(xltOrder.getId()); |
|
|
xltOrderItem.setDingDanID(xltOrder.getId()); |
|
|
|
|
|
xltOrderItem.setSpuCode(orderItem.getSpuCode()); |
|
|
xltOrderItem.setChanPinBianHao(orderItem.getSkuCode()); |
|
|
xltOrderItem.setChanPinBianHao(orderItem.getSkuCode()); |
|
|
xltOrderItem.setChanPinDanWei(orderItem.getSkuUnit()); |
|
|
xltOrderItem.setChanPinDanWei(orderItem.getSkuUnit()); |
|
|
xltOrderItem.setDingHuoShuLiang(orderItem.getQuantity()); |
|
|
xltOrderItem.setDingHuoShuLiang(orderItem.getQuantity()); |
|
@ -494,9 +501,11 @@ public class OmsOrderServiceImpl extends ServiceImpl<OmsOrderMapper,OmsOrder> im |
|
|
xltOrderItem.setRowCreateDate(nowTime); |
|
|
xltOrderItem.setRowCreateDate(nowTime); |
|
|
xltOrderItem.setBeiZhu(null); |
|
|
xltOrderItem.setBeiZhu(null); |
|
|
xltOrderItem.setZhuangTai(0); |
|
|
xltOrderItem.setZhuangTai(0); |
|
|
omsXltOrderItemMapper.insert(xltOrderItem); |
|
|
xltOrderItemList.add(xltOrderItem); |
|
|
} |
|
|
} |
|
|
|
|
|
XltOrderDTO xltOrderDTO = new XltOrderDTO(xltOrder,xltOrderItemList); |
|
|
|
|
|
//请求到中间服务保存
|
|
|
|
|
|
seeYonRequestBaseService.postBase(ERP_ORDER_CREATE,xltOrderDTO,"创建订单:"+xltOrder.getDingDanHao()); |
|
|
//更新订单
|
|
|
//更新订单
|
|
|
omsOrder.setStatus(1); |
|
|
omsOrder.setStatus(1); |
|
|
this.updateById(omsOrder); |
|
|
this.updateById(omsOrder); |
|
@ -538,39 +547,5 @@ public class OmsOrderServiceImpl extends ServiceImpl<OmsOrderMapper,OmsOrder> im |
|
|
offerOrder.setMakerName(sysUser.getName()); |
|
|
offerOrder.setMakerName(sysUser.getName()); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
|
* TODO: 根据账套,获取spuId对应的skuId |
|
|
|
|
|
* @param book 账套 |
|
|
|
|
|
* @param spuIds 嘉士利的SKU-CODE |
|
|
|
|
|
* @return 嘉士利的invCode |
|
|
|
|
|
*/ |
|
|
|
|
|
public List<OmsSpuToSkuKey> getSpuToSkuInfo(String book, List<Long> spuIds){ |
|
|
|
|
|
//TODO 测试数据
|
|
|
|
|
|
List<OmsSpuToSkuKey> rs = new ArrayList<>(); |
|
|
|
|
|
Long[] skuIds = {2315912284L, |
|
|
|
|
|
2315912286L, |
|
|
|
|
|
2315912287L, |
|
|
|
|
|
2315912288L, |
|
|
|
|
|
2315912289L, |
|
|
|
|
|
2315912290L, |
|
|
|
|
|
2315912291L, |
|
|
|
|
|
2315912292L, |
|
|
|
|
|
2315912293L, |
|
|
|
|
|
2315912294L, |
|
|
|
|
|
2315912295L, |
|
|
|
|
|
2315912296L, |
|
|
|
|
|
2315912297L, |
|
|
|
|
|
2315912298L, |
|
|
|
|
|
2315912300L,}; |
|
|
|
|
|
for (int i = 0; i < spuIds.size(); i++) { |
|
|
|
|
|
OmsSpuToSkuKey skuKey = new OmsSpuToSkuKey(); |
|
|
|
|
|
skuKey.setSpuId(spuIds.get(i)); |
|
|
|
|
|
skuKey.setSkuId(skuIds[i]); |
|
|
|
|
|
rs.add(skuKey); |
|
|
|
|
|
} |
|
|
|
|
|
return rs; |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|