diff --git a/src/main/java/com/qs/serve/common/util/StringUtils.java b/src/main/java/com/qs/serve/common/util/StringUtils.java index 69d888b9..52d48eae 100644 --- a/src/main/java/com/qs/serve/common/util/StringUtils.java +++ b/src/main/java/com/qs/serve/common/util/StringUtils.java @@ -2,6 +2,11 @@ package com.qs.serve.common.util; import lombok.experimental.UtilityClass; +import java.time.LocalDateTime; +import java.time.ZoneId; +import java.time.format.DateTimeFormatter; +import java.util.concurrent.atomic.AtomicInteger; + /** * @author YenHex * @since 2022/2/28 @@ -9,6 +14,18 @@ import lombok.experimental.UtilityClass; @UtilityClass public class StringUtils extends org.springframework.util.StringUtils { + /** 订单号生成(NEW) **/ + private static final AtomicInteger SEQ = new AtomicInteger(1000); + private static final DateTimeFormatter DF_FMT_PREFIX = DateTimeFormatter.ofPattern("yyMMddHHmmssSS"); + private static ZoneId ZONE_ID = ZoneId.of("Asia/Shanghai"); + public static String generateOrderNo(){ + LocalDateTime dataTime = LocalDateTime.now(ZONE_ID); + if(SEQ.intValue()>9990){ + SEQ.getAndSet(1000); + } + return dataTime.format(DF_FMT_PREFIX)+SEQ.getAndIncrement(); + } + /** 非空 */ public static boolean isNotEmpty(String str){ return !isEmpty(str); diff --git a/src/main/java/com/qs/serve/modules/oms/entity/OmsShoppingCart.java b/src/main/java/com/qs/serve/modules/oms/entity/OmsShoppingCart.java index 1b387b46..1330b3c8 100644 --- a/src/main/java/com/qs/serve/modules/oms/entity/OmsShoppingCart.java +++ b/src/main/java/com/qs/serve/modules/oms/entity/OmsShoppingCart.java @@ -8,6 +8,7 @@ import com.baomidou.mybatisplus.annotation.*; import com.fasterxml.jackson.annotation.JsonFormat; import com.fasterxml.jackson.annotation.JsonIgnore; import com.fasterxml.jackson.annotation.JsonProperty; +import com.qs.serve.modules.goods.entity.vo.GoodSkuVo; import lombok.Data; import org.hibernate.validator.constraints.Length; import org.springframework.format.annotation.DateTimeFormat; @@ -113,10 +114,20 @@ public class OmsShoppingCart implements Serializable { @TableField(exist = false) private String errMessage; + /** 客户特殊价 */ + @JsonIgnore + @TableField(exist = false) + private BigDecimal supplierSalesPrice; + /** 异常信息 */ @JsonIgnore @TableField(exist = false) private BigDecimal itemSaleAmount; + /** 异常信息 */ + @JsonIgnore + @TableField(exist = false) + private GoodSkuVo goodSkuVo; + } diff --git a/src/main/java/com/qs/serve/modules/oms/service/OmsShoppingCartService.java b/src/main/java/com/qs/serve/modules/oms/service/OmsShoppingCartService.java index b004c009..1d2ff109 100644 --- a/src/main/java/com/qs/serve/modules/oms/service/OmsShoppingCartService.java +++ b/src/main/java/com/qs/serve/modules/oms/service/OmsShoppingCartService.java @@ -18,7 +18,7 @@ public interface OmsShoppingCartService extends IService { /** - * 检测购物车 + * 检测购物车,并绑定sku到购物车 * @param supplier * @param shoppingCarts * @param throwEx 购物车不抛异常 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 5ab0a1c9..78fe04a3 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 @@ -3,6 +3,7 @@ package com.qs.serve.modules.oms.service.impl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.qs.serve.common.util.AuthContextUtils; import com.qs.serve.common.util.CollectionUtil; +import com.qs.serve.common.util.StringUtils; import com.qs.serve.modules.bms.entity.BmsSupplier; import com.qs.serve.modules.bms.entity.BmsSupplierAddress; import com.qs.serve.modules.bms.service.BmsSupplierAddressService; @@ -10,12 +11,14 @@ import com.qs.serve.modules.goods.entity.GoodsSku; import com.qs.serve.modules.goods.entity.vo.GoodSkuVo; import com.qs.serve.modules.goods.service.GoodsSkuService; import com.qs.serve.modules.goods.service.GoodsSpuService; +import com.qs.serve.modules.oms.entity.OmsOrderItem; import com.qs.serve.modules.oms.entity.OmsShoppingCart; 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.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.service.OmsOrderItemService; import com.qs.serve.modules.oms.service.OmsShoppingCartService; import com.qs.serve.modules.sys.entity.SysUser; import com.qs.serve.modules.sys.service.SysUserService; @@ -28,6 +31,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; @@ -46,6 +50,7 @@ public class OmsOrderServiceImpl extends ServiceImpl im private GoodsSpuService goodsSpuService; private BmsSupplierAddressService bmsSupplierAddressService; private SysUserService sysUserService; + private OmsOrderItemService omsOrderItemService; @Override @@ -71,13 +76,11 @@ public class OmsOrderServiceImpl extends ServiceImpl im OmsCalcAmount calcAmount = new OmsCalcAmount(); BigDecimal totalAmount = BigDecimal.ZERO; for (OmsShoppingCart shoppingCart : shoppingCarts) { - BigDecimal salePrice = null; - for (GoodSkuVo goodSkuVo : cartsCheckResult.getGoodsSkus()) { - if(shoppingCart.getSkuId().equals(goodSkuVo.getId())){ - salePrice = goodSkuVo.getSalesPrice(); - break; - } - } + GoodSkuVo goodSkuVo = shoppingCart.getGoodSkuVo(); + //todo 客户特殊价 + BigDecimal salePrice = goodSkuVo.getSalesPrice(); + shoppingCart.setSupplierSalesPrice(salePrice); + BigDecimal itemPrice = new BigDecimal(shoppingCart.getQuantity()).multiply(salePrice); shoppingCart.setItemSaleAmount(itemPrice); totalAmount.add(itemPrice); @@ -103,9 +106,9 @@ public class OmsOrderServiceImpl extends ServiceImpl im SysUser user = sysUserService.getById(AuthContextUtils.getSysUserId()); BmsSupplier supplier = confirmOrder.getSupplier(); BmsSupplierAddress address = confirmOrder.getDefaultAddress(); - List goodSkuVos = confirmOrder.getCartsCheckResult().getGoodsSkus(); + List shoppingCarts = confirmOrder.getShoppingCarts(); OmsOrder order = new OmsOrder(); - order.setOrderSn(""); + order.setOrderSn(StringUtils.generateOrderNo()); order.setSupplierId(Long.parseLong(supplier.getId())); order.setSupplierCode(supplier.getCode()); order.setSupplierName(supplier.getName()); @@ -119,7 +122,27 @@ public class OmsOrderServiceImpl extends ServiceImpl im order.setUrgentFlag(createOrderParam.getUrgentFlag()); } this.save(order); - + List 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()); + orderItem.setQuantity(shoppingCart.getQuantity()); + orderItem.setMarketPrice(goodSkuVo.getMarketPrice()); + orderItem.setSalesPrice(goodSkuVo.getSalesPrice()); + orderItem.setCusPrice(shoppingCart.getSupplierSalesPrice()); + orderItems.add(orderItem); + } + omsOrderItemService.saveBatch(orderItems); return null; } diff --git a/src/main/java/com/qs/serve/modules/oms/service/impl/OmsShoppingCartServiceImpl.java b/src/main/java/com/qs/serve/modules/oms/service/impl/OmsShoppingCartServiceImpl.java index 0638aa36..b7ad66ee 100644 --- a/src/main/java/com/qs/serve/modules/oms/service/impl/OmsShoppingCartServiceImpl.java +++ b/src/main/java/com/qs/serve/modules/oms/service/impl/OmsShoppingCartServiceImpl.java @@ -67,6 +67,13 @@ public class OmsShoppingCartServiceImpl extends ServiceImplvo.getShelf().equals(1)&&vo.getEnable().equals(1)).collect(Collectors.toList()); //todo 检验库存 @@ -87,6 +94,7 @@ public class OmsShoppingCartServiceImpl extends ServiceImpl