|
|
@ -1,5 +1,6 @@ |
|
|
|
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.model.dto.R; |
|
|
|
import com.qs.serve.common.util.*; |
|
|
@ -17,11 +18,17 @@ import com.qs.serve.modules.oms.entity.bo.CreateOrderParam; |
|
|
|
import com.qs.serve.modules.oms.entity.bo.OmsOrderBo; |
|
|
|
import com.qs.serve.modules.oms.entity.bo.OmsOrderBo.*; |
|
|
|
import com.qs.serve.modules.oms.entity.bo.OmsOrderPcBo; |
|
|
|
import com.qs.serve.modules.oms.entity.bo.OmsSpuAssesInfoBo; |
|
|
|
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.vo.OmsConfirmOrderResult; |
|
|
|
import com.qs.serve.modules.oms.entity.vo.OmsSpuAssesInfo; |
|
|
|
import com.qs.serve.modules.oms.service.OmsOrderItemService; |
|
|
|
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.sys.entity.SysUser; |
|
|
|
import com.qs.serve.modules.sys.service.SysUserService; |
|
|
|
import lombok.AllArgsConstructor; |
|
|
@ -34,9 +41,7 @@ import com.qs.serve.modules.oms.mapper.OmsOrderMapper; |
|
|
|
import org.springframework.transaction.annotation.Transactional; |
|
|
|
|
|
|
|
import java.math.BigDecimal; |
|
|
|
import java.util.ArrayList; |
|
|
|
import java.util.Arrays; |
|
|
|
import java.util.List; |
|
|
|
import java.util.*; |
|
|
|
import java.util.stream.Collectors; |
|
|
|
|
|
|
|
/** |
|
|
@ -55,6 +60,8 @@ public class OmsOrderServiceImpl extends ServiceImpl<OmsOrderMapper,OmsOrder> im |
|
|
|
private BmsSupplierAddressService bmsSupplierAddressService; |
|
|
|
private SysUserService sysUserService; |
|
|
|
private OmsOrderItemService omsOrderItemService; |
|
|
|
private SalePlanMapper salePlanMapper; |
|
|
|
private SalePlanGoodsMapper salePlanGoodsMapper; |
|
|
|
|
|
|
|
|
|
|
|
@Override |
|
|
@ -98,6 +105,7 @@ public class OmsOrderServiceImpl extends ServiceImpl<OmsOrderMapper,OmsOrder> im |
|
|
|
BmsSupplierAddress supplierAddress = bmsSupplierAddressService.getDefault(Long.parseLong(supplier.getId())); |
|
|
|
OmsConfirmOrderResult confirmOrderResult = new OmsConfirmOrderResult(); |
|
|
|
confirmOrderResult.setSupplier(supplier); |
|
|
|
confirmOrderResult.setOrderType(confirmOrder.getOrderType()); |
|
|
|
confirmOrderResult.setShoppingCarts(shoppingCarts); |
|
|
|
confirmOrderResult.setDefaultAddress(supplierAddress); |
|
|
|
confirmOrderResult.setAmountInfo(calcAmount); |
|
|
@ -150,6 +158,7 @@ public class OmsOrderServiceImpl extends ServiceImpl<OmsOrderMapper,OmsOrder> im |
|
|
|
confirmOrderResult.setDefaultAddress(supplierAddress); |
|
|
|
confirmOrderResult.setAmountInfo(calcAmount); |
|
|
|
confirmOrderResult.setShoppingCarts(shoppingCartList); |
|
|
|
confirmOrderResult.setOrderType(confirmOrder.getOrderType()); |
|
|
|
return confirmOrderResult; |
|
|
|
} |
|
|
|
|
|
|
@ -157,14 +166,17 @@ public class OmsOrderServiceImpl extends ServiceImpl<OmsOrderMapper,OmsOrder> im |
|
|
|
@Transactional(rollbackFor = Exception.class) |
|
|
|
public OmsOrder createOrder(OmsOrderBo omsOrderBo) { |
|
|
|
OmsConfirmOrderResult confirmOrder = this.confirmOrder(omsOrderBo); |
|
|
|
confirmOrder.setLatitudeFrom("SKU"); |
|
|
|
CreateOrderParam createOrderParam = omsOrderBo.getCreateOrderParam(); |
|
|
|
return this.buildOmsOrder(confirmOrder, createOrderParam); |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
@Transactional(rollbackFor = Exception.class) |
|
|
|
public OmsOrder createOrderPc(OmsOrderPcBo omsOrderBo) { |
|
|
|
OmsConfirmOrderResult confirmOrder = this.confirmOrderPc(omsOrderBo); |
|
|
|
confirmOrder.setLatitudeFrom("SPU"); |
|
|
|
CreateOrderParam createOrderParam = omsOrderBo.getCreateOrderParam(); |
|
|
|
return this.buildOmsOrder(confirmOrder, createOrderParam); |
|
|
|
} |
|
|
@ -180,6 +192,7 @@ public class OmsOrderServiceImpl extends ServiceImpl<OmsOrderMapper,OmsOrder> im |
|
|
|
List<OmsShoppingCart> shoppingCarts = confirmOrder.getShoppingCarts(); |
|
|
|
OmsOrder order = new OmsOrder(); |
|
|
|
order.setOrderSn("SN"+CodeGenUtil.generate(CodeGenUtil.SourceKey.OmsOrder)); |
|
|
|
order.setOrderType(confirmOrder.getOrderType()); |
|
|
|
order.setSupplierId(Long.parseLong(supplier.getId())); |
|
|
|
order.setSupplierCode(supplier.getCode()); |
|
|
|
order.setSupplierName(supplier.getName()); |
|
|
@ -195,27 +208,43 @@ public class OmsOrderServiceImpl extends ServiceImpl<OmsOrderMapper,OmsOrder> im |
|
|
|
this.save(order); |
|
|
|
List<OmsOrderItem> orderItems = new ArrayList<>(); |
|
|
|
for (OmsShoppingCart shoppingCart : shoppingCarts) { |
|
|
|
GoodSkuVo goodSkuVo = shoppingCart.getGoodSkuVo(); |
|
|
|
OmsOrderItem orderItem = new OmsOrderItem(); |
|
|
|
orderItem.setOrderId(order.getId()); |
|
|
|
orderItem.setOrderSn(order.getOrderSn()); |
|
|
|
orderItem.setSpuId(goodSkuVo.getSpuId()); |
|
|
|
orderItem.setSpuCode(goodSkuVo.getSpuCode()); |
|
|
|
orderItem.setSpuTitle(goodSkuVo.getName()); |
|
|
|
orderItem.setSkuId(goodSkuVo.getId()); |
|
|
|
orderItem.setSkuCode(goodSkuVo.getSkuCode()); |
|
|
|
orderItem.setSkuUnit(goodSkuVo.getUnitName()); |
|
|
|
orderItem.setSkuImg(goodSkuVo.getPicUrl()); |
|
|
|
orderItem.setSpecValues(goodSkuVo.getSpecInfos()); |
|
|
|
if(confirmOrder.getLatitudeFrom()!=null&&confirmOrder.getLatitudeFrom().equals("SPU")){ |
|
|
|
// spu维度
|
|
|
|
orderItem.setSpuId(shoppingCart.getSpuId()); |
|
|
|
orderItem.setSpuCode(shoppingCart.getSpuCode()); |
|
|
|
orderItem.setSpuTitle(shoppingCart.getSpecInfo()); |
|
|
|
orderItem.setSkuId(shoppingCart.getId()); |
|
|
|
orderItem.setSkuCode(shoppingCart.getSkuCode()); |
|
|
|
orderItem.setSkuUnit(null); |
|
|
|
orderItem.setSkuImg(shoppingCart.getPicUrl()); |
|
|
|
orderItem.setSpecValues(shoppingCart.getSpecInfo()); |
|
|
|
orderItem.setMarketPrice(BigDecimal.ZERO); |
|
|
|
orderItem.setSalesPrice(BigDecimal.ZERO); |
|
|
|
}else { |
|
|
|
// 默认sku
|
|
|
|
GoodSkuVo goodSkuVo = shoppingCart.getGoodSkuVo(); |
|
|
|
orderItem.setSpuId(goodSkuVo.getSpuId()); |
|
|
|
orderItem.setSpuCode(goodSkuVo.getSpuCode()); |
|
|
|
orderItem.setSpuTitle(goodSkuVo.getName()); |
|
|
|
orderItem.setSkuId(goodSkuVo.getId()); |
|
|
|
orderItem.setSkuCode(goodSkuVo.getSkuCode()); |
|
|
|
orderItem.setSkuUnit(goodSkuVo.getUnitName()); |
|
|
|
orderItem.setSkuImg(goodSkuVo.getPicUrl()); |
|
|
|
orderItem.setSpecValues(goodSkuVo.getSpecInfos()); |
|
|
|
orderItem.setMarketPrice(goodSkuVo.getMarketPrice()); |
|
|
|
orderItem.setSalesPrice(goodSkuVo.getSalesPrice()); |
|
|
|
} |
|
|
|
orderItem.setQuantity(shoppingCart.getQuantity()); |
|
|
|
orderItem.setMarketPrice(goodSkuVo.getMarketPrice()); |
|
|
|
orderItem.setSalesPrice(goodSkuVo.getSalesPrice()); |
|
|
|
orderItem.setCusPrice(shoppingCart.getSupplierSalesPrice()); |
|
|
|
orderItems.add(orderItem); |
|
|
|
} |
|
|
|
omsOrderItemService.saveBatch(orderItems); |
|
|
|
//清空勾选的购物车
|
|
|
|
List<Long> cartIds = confirmOrder.getShoppingCarts().stream() |
|
|
|
.filter(a->a.getId()!=null) |
|
|
|
.map(OmsShoppingCart::getId).collect(Collectors.toList()); |
|
|
|
if(CollectionUtil.isNotEmpty(cartIds)){ |
|
|
|
omsShoppingCartService.removeBatchByIds(cartIds); |
|
|
@ -223,5 +252,39 @@ public class OmsOrderServiceImpl extends ServiceImpl<OmsOrderMapper,OmsOrder> im |
|
|
|
return order; |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
public List<OmsSpuAssesInfo> getSpuAssess(OmsSpuAssesInfoBo param) { |
|
|
|
List<Long> spuIds = param.getSpuIds(); |
|
|
|
Integer year = param.getYearNum(); |
|
|
|
Integer month = param.getMonthNum(); |
|
|
|
String supplierId = param.getSupplierId(); |
|
|
|
LambdaQueryWrapper<SalePlan> spLqw = new LambdaQueryWrapper<>(); |
|
|
|
spLqw.eq(SalePlan::getYearNum,year); |
|
|
|
spLqw.eq(SalePlan::getMonthNum,month); |
|
|
|
spLqw.eq(SalePlan::getSupplierId,supplierId); |
|
|
|
spLqw.eq(SalePlan::getPlanState,1); |
|
|
|
List<SalePlan> salePlanList = salePlanMapper.selectList(spLqw); |
|
|
|
Map<Long,Integer> spuIdAndSum = new HashMap<>(); |
|
|
|
if(salePlanList.size()>0){ |
|
|
|
List<Long> spIds = salePlanList.stream().map(SalePlan::getId).collect(Collectors.toList()); |
|
|
|
LambdaQueryWrapper<SalePlanGoods> spgLqw = new LambdaQueryWrapper<>(); |
|
|
|
spgLqw.eq(SalePlanGoods::getPlanId,spIds); |
|
|
|
spgLqw.in(SalePlanGoods::getTargetId,spuIds); |
|
|
|
List<SalePlanGoods> salePlanGoodsList = salePlanGoodsMapper.selectList(spgLqw); |
|
|
|
for (SalePlanGoods planGoods : salePlanGoodsList) { |
|
|
|
spuIdAndSum.merge(planGoods.getTargetId(), planGoods.getQty(), Integer::sum); |
|
|
|
} |
|
|
|
} |
|
|
|
List<OmsSpuAssesInfo> spuAssesInfoList = new ArrayList<>(); |
|
|
|
for (Long spuId : spuIds) { |
|
|
|
OmsSpuAssesInfo assesInfo = new OmsSpuAssesInfo(); |
|
|
|
assesInfo.setSpuId(spuId); |
|
|
|
Integer sum = spuIdAndSum.get(spuId); |
|
|
|
assesInfo.setNum(sum==null?0:sum); |
|
|
|
spuAssesInfoList.add(assesInfo); |
|
|
|
} |
|
|
|
return spuAssesInfoList; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|