From e37d509fa6ccfbd9e1936c24022be0c19919bdb3 Mon Sep 17 00:00:00 2001 From: Yen Date: Wed, 18 Dec 2024 09:35:33 +0800 Subject: [PATCH] =?UTF-8?q?feat(order):=20=E4=B8=B4=E6=97=B6=E4=BF=9D?= =?UTF-8?q?=E5=AD=98=EF=BC=8C=E9=94=80=E5=94=AE=E8=AE=A2=E5=8D=95=E5=BC=82?= =?UTF-8?q?=E5=B8=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../modules/oms/entity/OmsSaleOrder.java | 3 +- .../oms/event/OrderCreateCacheEvent.java | 24 ++++ .../listener/OrderCreateCacheListener.java | 53 +++++++++ .../oms/mapper/ErpSaleOrderItemMapper.java | 16 +++ .../oms/mapper/ErpSaleOrderMapper.java | 21 ++++ .../oms/mapper/OmsSaleOrderItemMapper.java | 1 - .../oms/mapper/OmsSaleOrderMapper.java | 4 - .../service/impl/OmsSaleOrderServiceImpl.java | 105 ++++++++++++++++-- .../service/PortalOfCostApplication.java | 3 + 9 files changed, 214 insertions(+), 16 deletions(-) create mode 100644 src/main/java/com/qs/serve/modules/oms/event/OrderCreateCacheEvent.java create mode 100644 src/main/java/com/qs/serve/modules/oms/listener/OrderCreateCacheListener.java create mode 100644 src/main/java/com/qs/serve/modules/oms/mapper/ErpSaleOrderItemMapper.java create mode 100644 src/main/java/com/qs/serve/modules/oms/mapper/ErpSaleOrderMapper.java diff --git a/src/main/java/com/qs/serve/modules/oms/entity/OmsSaleOrder.java b/src/main/java/com/qs/serve/modules/oms/entity/OmsSaleOrder.java index 55496311..505310cf 100644 --- a/src/main/java/com/qs/serve/modules/oms/entity/OmsSaleOrder.java +++ b/src/main/java/com/qs/serve/modules/oms/entity/OmsSaleOrder.java @@ -135,7 +135,8 @@ public class OmsSaleOrder implements Serializable { /** 订单状态 * 0->草稿; - * 1->下单(同步到调度系统); + * 1->已确认下单 + * 2->同步到调度系统 * 2->已确认(已生成报价单); * 6->已取消 **/ diff --git a/src/main/java/com/qs/serve/modules/oms/event/OrderCreateCacheEvent.java b/src/main/java/com/qs/serve/modules/oms/event/OrderCreateCacheEvent.java new file mode 100644 index 00000000..593bee53 --- /dev/null +++ b/src/main/java/com/qs/serve/modules/oms/event/OrderCreateCacheEvent.java @@ -0,0 +1,24 @@ +package com.qs.serve.modules.oms.event; + +import org.springframework.context.ApplicationEvent; + +/** + * 监听事件 + * @author YenHex + * @since 2024/12/17 + */ +public class OrderCreateCacheEvent extends ApplicationEvent { + + private String orderId; + + public OrderCreateCacheEvent(Object source,String orderId) { + super(source); + this.orderId = orderId; + } + + + public String getOrderId(){ + return orderId; + } + +} diff --git a/src/main/java/com/qs/serve/modules/oms/listener/OrderCreateCacheListener.java b/src/main/java/com/qs/serve/modules/oms/listener/OrderCreateCacheListener.java new file mode 100644 index 00000000..f1eb4188 --- /dev/null +++ b/src/main/java/com/qs/serve/modules/oms/listener/OrderCreateCacheListener.java @@ -0,0 +1,53 @@ +package com.qs.serve.modules.oms.listener; + +import com.qs.serve.common.util.AuthContextUtils; +import com.qs.serve.modules.oms.entity.OmsSaleOrder; +import com.qs.serve.modules.oms.entity.OmsSaleOrderItem; +import com.qs.serve.modules.oms.event.OrderCreateCacheEvent; +import com.qs.serve.modules.oms.mapper.ErpSaleOrderItemMapper; +import com.qs.serve.modules.oms.mapper.ErpSaleOrderMapper; +import com.qs.serve.modules.oms.service.OmsSaleOrderItemService; +import com.qs.serve.modules.oms.service.OmsSaleOrderService; +import lombok.AllArgsConstructor; +import org.springframework.context.event.EventListener; +import org.springframework.scheduling.annotation.Async; +import org.springframework.stereotype.Component; + +import java.util.List; + +/** + * @author YenHex + * @since 2024/12/17 + */ +@Component +@AllArgsConstructor +public class OrderCreateCacheListener { + + private OmsSaleOrderService omsSaleOrderService; + private OmsSaleOrderItemService omsSaleOrderItemService; + private ErpSaleOrderMapper erpSaleOrderMapper; + private ErpSaleOrderItemMapper erpSaleOrderItemMapper; + + /** + * 监听订单创建事件,将订单信息保存到ERP系统 + * @param event 订单创建事件 + */ + @Async + @EventListener + public void handle(OrderCreateCacheEvent event) { + AuthContextUtils.setTenant("001"); + // 1.查询订单信息 + OmsSaleOrder omsSaleOrder = omsSaleOrderService.getById(event.getOrderId()); + // 2.查询订单明细 + List orderItemList = omsSaleOrderItemService.listByOrderId(omsSaleOrder.getId()); + // 3.保存到ERP订单 + erpSaleOrderMapper.insert(omsSaleOrder); + for (OmsSaleOrderItem orderItem : orderItemList) { + erpSaleOrderItemMapper.insert(orderItem); + } + omsSaleOrder.setStatus(2); + omsSaleOrderService.updateById(omsSaleOrder); + } + + +} diff --git a/src/main/java/com/qs/serve/modules/oms/mapper/ErpSaleOrderItemMapper.java b/src/main/java/com/qs/serve/modules/oms/mapper/ErpSaleOrderItemMapper.java new file mode 100644 index 00000000..2b4f053f --- /dev/null +++ b/src/main/java/com/qs/serve/modules/oms/mapper/ErpSaleOrderItemMapper.java @@ -0,0 +1,16 @@ +package com.qs.serve.modules.oms.mapper; + +import com.baomidou.dynamic.datasource.annotation.DS; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.qs.serve.modules.oms.entity.OmsSaleOrderItem; + +/** + * 订单明细 Mapper + * @author YenHex + * @date 2022-10-14 + */ +@DS("qisheng") +public interface ErpSaleOrderItemMapper extends BaseMapper { + +} + diff --git a/src/main/java/com/qs/serve/modules/oms/mapper/ErpSaleOrderMapper.java b/src/main/java/com/qs/serve/modules/oms/mapper/ErpSaleOrderMapper.java new file mode 100644 index 00000000..863621e7 --- /dev/null +++ b/src/main/java/com/qs/serve/modules/oms/mapper/ErpSaleOrderMapper.java @@ -0,0 +1,21 @@ +package com.qs.serve.modules.oms.mapper; + +import com.baomidou.dynamic.datasource.annotation.DS; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.qs.serve.common.model.dto.SimpleKeyValue; +import com.qs.serve.modules.oms.entity.OmsSaleOrder; +import org.apache.ibatis.annotations.Select; + +import java.math.BigDecimal; +import java.util.List; + +/** + * 订单 Mapper + * @author YenHex + * @date 2022-10-14 + */ +@DS("qisheng") +public interface ErpSaleOrderMapper extends BaseMapper { + +} + diff --git a/src/main/java/com/qs/serve/modules/oms/mapper/OmsSaleOrderItemMapper.java b/src/main/java/com/qs/serve/modules/oms/mapper/OmsSaleOrderItemMapper.java index dd9376a1..db46ccaf 100644 --- a/src/main/java/com/qs/serve/modules/oms/mapper/OmsSaleOrderItemMapper.java +++ b/src/main/java/com/qs/serve/modules/oms/mapper/OmsSaleOrderItemMapper.java @@ -9,7 +9,6 @@ import com.qs.serve.modules.oms.entity.OmsSaleOrderItem; * @author YenHex * @date 2022-10-14 */ -@DS("qisheng") public interface OmsSaleOrderItemMapper extends BaseMapper { } diff --git a/src/main/java/com/qs/serve/modules/oms/mapper/OmsSaleOrderMapper.java b/src/main/java/com/qs/serve/modules/oms/mapper/OmsSaleOrderMapper.java index 8c58964f..7779913e 100644 --- a/src/main/java/com/qs/serve/modules/oms/mapper/OmsSaleOrderMapper.java +++ b/src/main/java/com/qs/serve/modules/oms/mapper/OmsSaleOrderMapper.java @@ -14,18 +14,14 @@ import java.util.List; * @author YenHex * @date 2022-10-14 */ -@DS("qisheng") public interface OmsSaleOrderMapper extends BaseMapper { - @DS("crm_db") @Select("SELECT rate FROM `ext_expire_order_rate` where oa_id = #{oaId} and del_flag = 0 ") BigDecimal getExpiredOrderRates(String oaId); - @DS("crm_db") @Select("SELECT oa_id as `value`,`name` as label,rate as value2 FROM `ext_expire_order_rate` where del_flag = 0 order by rate") List> selectExpiredOrderRates(); - @DS("crm_db") @Select("SELECT oa_id as `value`,`name` as label,rate as value2 FROM `ext_expire_order_rate` where del_flag = 0 and oa_id = #{oaId} ") SimpleKeyValue getExpiredRateInfo(String oaId); diff --git a/src/main/java/com/qs/serve/modules/oms/service/impl/OmsSaleOrderServiceImpl.java b/src/main/java/com/qs/serve/modules/oms/service/impl/OmsSaleOrderServiceImpl.java index 9364a887..3282ab53 100644 --- a/src/main/java/com/qs/serve/modules/oms/service/impl/OmsSaleOrderServiceImpl.java +++ b/src/main/java/com/qs/serve/modules/oms/service/impl/OmsSaleOrderServiceImpl.java @@ -31,6 +31,7 @@ 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.event.OrderCreateCacheEvent; import com.qs.serve.modules.oms.mapper.OmsSaleOrderMapper; import com.qs.serve.modules.oms.service.*; import com.qs.serve.modules.oms.utils.OmsOrderUtil; @@ -46,6 +47,7 @@ import com.qs.serve.modules.tbs.common.TbsSeeYonConst; import lombok.AllArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.jetbrains.annotations.NotNull; +import org.springframework.context.ApplicationEventPublisher; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -91,6 +93,7 @@ public class OmsSaleOrderServiceImpl extends ServiceImpl 120) { +// remark = remark.substring(0, 120); +// } +// xltOrder.setZhuYiShiXian(remark); +// xltOrder.setXieRuShiJian(nowTime); +// xltOrder.setChuLiShiJian(null); +// xltOrder.setRowCreateDate(nowTime); +// xltOrder.setRenYuanXingMing(omsOrder.getUserName()); +// xltOrder.setRenYuanDianHua(omsOrder.getUserPhone()); +// xltOrder.setXianZhiWeiDu("品牌"); +// xltOrder.setXianZhiWeiDuMingChen(brands); +// xltOrder.setZhuangTai(0); +// //状态:0未使用;1报价单;2销售订单 +// xltOrder.setStatus(0); +// +// xltOrder.setTmsSysId(supplierAddress.getId() + ""); +// xltOrder.setEmpName(omsOrder.getUserName()); +// xltOrder.setCusCode(omsOrder.getSupplierCode()); +// xltOrder.setCusName(omsOrder.getSupplierName()); +// +// try { +// String[] regions = bmsRegion.getPathNames().split("_"); +// if (regions.length > 1) { +// xltOrder.setDealerProvince(regions[1]); +// } +// if (regions.length > 0) { +// xltOrder.setDealerCity(regions[0]); +// } +// } catch (Exception e) { +// log.warn("区域档案异常:{}",bmsRegion.getName()); +// } +// xltOrder.setDealerArea(bmsRegion.getPathNames()); +// +// //保存到临时表-明细表 +// List xltOrderItemList = new ArrayList<>(); +// for (int i = 0; i < orderItemList.size(); i++) { +// OmsSaleOrderItem orderItem = orderItemList.get(i); +// OmsXltOrderItem xltOrderItem = new OmsXltOrderItem(); +// 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) { +// GoodsSku sku = goodsSkuService.getById(orderItem.getSkuId()); +// GoodsSpu spu = goodsSpuService.getById(orderItem.getSpuId()); +// if (!sku.getSkuCode().equals(spu.getSpuCode())) { +// Assert.throwEx("SKU【" + orderItem.getSpuCode() + "】存货缺失,请联系档案负责人"); +// } +// } +// xltOrderItem.setChanPinBianHao(orderItem.getSkuCode()); +// xltOrderItem.setChanPinDanWei(orderItem.getSkuUnit()); +// xltOrderItem.setDingHuoShuLiang(orderItem.getQuantity()); +// xltOrderItem.setDaZengShuLiang(BigDecimal.ZERO); +// xltOrderItem.setChanPinYuanJia(orderItem.getMarketPrice()); +// xltOrderItem.setChanPinXianJia(orderItem.getSalesPrice()); +// 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 { +// xltOrderItem.setBeiZhu(orderItem.getRemark()); +// } +// xltOrderItem.setZhuangTai(0); +// xltOrderItemList.add(xltOrderItem); +// } +// XltOrderDTO xltOrderDTO = new XltOrderDTO(xltOrder, xltOrderItemList); +// //请求到中间服务保存 +// seeYonRequestBaseService.postBase(ERP_ORDER_CREATE, xltOrderDTO, "创建订单:" + xltOrder.getDingDanHao()); omsOrder.setStatus(1); omsOrder.setCheckTime(LocalDateTime.now()); omsOrder.setCheckUserId(omsOrder.getCreateBy()); @@ -1103,6 +1186,8 @@ public class OmsSaleOrderServiceImpl extends ServiceImpl