From 88e384da863bb2f7324cb1e1474885df3b7cce91 Mon Sep 17 00:00:00 2001
From: liyong <18434998025@163.com>
Date: 星期一, 13 七月 2026 11:27:49 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/dev_business' into dev_business
---
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/salesnotice/MesWmSalesNoticeServiceImpl.java | 60 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 60 insertions(+), 0 deletions(-)
diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/salesnotice/MesWmSalesNoticeServiceImpl.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/salesnotice/MesWmSalesNoticeServiceImpl.java
index 30a2777..9301bb6 100644
--- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/salesnotice/MesWmSalesNoticeServiceImpl.java
+++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/salesnotice/MesWmSalesNoticeServiceImpl.java
@@ -9,7 +9,11 @@
import cn.iocoder.yudao.module.mes.dal.dataobject.wm.salesnotice.MesWmSalesNoticeDO;
import cn.iocoder.yudao.module.mes.dal.dataobject.wm.salesnotice.MesWmSalesNoticeLineDO;
import cn.iocoder.yudao.module.mes.dal.mysql.wm.salesnotice.MesWmSalesNoticeMapper;
+import cn.iocoder.yudao.module.mes.service.md.autocode.MesMdAutoCodeRecordService;
import cn.iocoder.yudao.module.mes.service.md.client.MesMdClientService;
+import cn.iocoder.yudao.module.erp.api.sale.ErpSaleOrderApi;
+import cn.iocoder.yudao.module.erp.api.sale.dto.ErpSaleOrderItemRespDTO;
+import cn.iocoder.yudao.module.erp.api.sale.dto.ErpSaleOrderRespDTO;
import jakarta.annotation.Resource;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
@@ -39,6 +43,11 @@
private MesWmSalesNoticeLineService salesNoticeLineService;
@Resource
private MesMdClientService clientService;
+
+ @Resource
+ private ErpSaleOrderApi saleOrderApi;
+ @Resource
+ private MesMdAutoCodeRecordService autoCodeRecordService;
@Override
public Long createSalesNotice(MesWmSalesNoticeSaveReqVO createReqVO) {
@@ -149,4 +158,55 @@
}
}
+ @Override
+ @Transactional(rollbackFor = Exception.class)
+ public Long generateSalesNoticeFromSaleOrder(Long saleOrderId) {
+ // 1. 鑾峰彇閿�鍞鍗曚俊鎭�
+ ErpSaleOrderRespDTO saleOrder = saleOrderApi.getSaleOrder(saleOrderId).getCheckedData();
+ if (saleOrder == null) {
+ throw exception(WM_SALES_NOTICE_SALE_ORDER_NOT_EXISTS);
+ }
+
+ // 2. 鑾峰彇閿�鍞鍗曟槑缁�
+ List<ErpSaleOrderItemRespDTO> saleOrderItems = saleOrderApi.getSaleOrderItemList(saleOrderId).getCheckedData();
+ if (CollUtil.isEmpty(saleOrderItems)) {
+ throw exception(WM_SALES_NOTICE_SALE_ORDER_ITEM_EMPTY);
+ }
+
+ // 3. 鐢熸垚鍙戣揣閫氱煡鍗曠紪鐮�
+ String code = autoCodeRecordService.generateAutoCode("SALESNOTICE_CODE", null);
+
+ // 4. 鍒涘缓鍙戣揣閫氱煡鍗曚富琛�
+ MesWmSalesNoticeDO notice = new MesWmSalesNoticeDO();
+ notice.setCode(code);
+ notice.setName("閿�鍞鍗昜" + saleOrder.getNo() + "]鍙戣揣閫氱煡");
+ notice.setClientId(saleOrder.getCustomerId());
+ notice.setSaleOrderId(saleOrderId);
+ notice.setSaleOrderCode(saleOrder.getNo());
+ notice.setSalesDate(java.time.LocalDateTime.now());
+ notice.setStatus(PREPARE.getStatus());
+ salesNoticeMapper.insert(notice);
+
+ // 5. 閬嶅巻鏄庣粏鍒涘缓鍙戣揣閫氱煡鍗曡
+ for (ErpSaleOrderItemRespDTO saleOrderItem : saleOrderItems) {
+ MesWmSalesNoticeLineDO line = new MesWmSalesNoticeLineDO();
+ line.setNoticeId(notice.getId());
+ line.setSaleOrderItemId(saleOrderItem.getId());
+ line.setItemId(saleOrderItem.getProductId());
+ line.setQuantity(saleOrderItem.getCount());
+ salesNoticeLineService.createSalesNoticeLine(line);
+ }
+
+ return notice.getId();
+ }
+
+ @Override
+ public void finishSalesNotice(Long id) {
+ // 鏍¢獙瀛樺湪
+ MesWmSalesNoticeDO notice = validateSalesNoticeExists(id);
+ // 鏇存柊鐘舵�佷负宸插畬鎴�
+ salesNoticeMapper.updateById(new MesWmSalesNoticeDO()
+ .setId(id).setStatus(FINISHED.getStatus()));
+ }
+
}
--
Gitblit v1.9.3