From 5140e16bd1cb2bdf974d47a4342f9e27ef804655 Mon Sep 17 00:00:00 2001
From: 云 <2163098428@qq.com>
Date: 星期六, 18 七月 2026 15:54:07 +0800
Subject: [PATCH] feat(erp): 增加销售订单MPS集成与发货通知单控制功能
---
yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/service/purchase/ErpPurchaseRequestServiceImpl.java | 43 ++++++++++++++++++++++++++++++++++++-------
1 files changed, 36 insertions(+), 7 deletions(-)
diff --git a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/service/purchase/ErpPurchaseRequestServiceImpl.java b/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/service/purchase/ErpPurchaseRequestServiceImpl.java
index 1811e98..f12da1b 100644
--- a/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/service/purchase/ErpPurchaseRequestServiceImpl.java
+++ b/yudao-module-erp/src/main/java/cn/iocoder/yudao/module/erp/service/purchase/ErpPurchaseRequestServiceImpl.java
@@ -309,6 +309,19 @@
purchaseRequestMapper.updateById(new ErpPurchaseRequestDO()
.setId(id).setStatus(newStatus));
}
+
+ // 3. 瀹℃壒閫氳繃涓旀湁渚涘簲鍟嗭紝鑷姩鐢熸垚閲囪喘璁㈠崟
+ if (ErpPurchaseRequestStatusEnum.APPROVE.getStatus().equals(newStatus)
+ && purchaseRequest.getSupplierId() != null
+ && purchaseRequest.getOrderId() == null) {
+ try {
+ Long orderId = doGeneratePurchaseOrder(purchaseRequest);
+ log.info("[updatePurchaseRequestAuditStatus] 閲囪喘鐢宠({}) 鑷姩鐢熸垚閲囪喘璁㈠崟({})", id, orderId);
+ } catch (Exception e) {
+ log.error("[updatePurchaseRequestAuditStatus] 閲囪喘鐢宠({}) 鑷姩鐢熸垚閲囪喘璁㈠崟澶辫触", id, e);
+ // 涓嶆姏鍑哄紓甯革紝閬垮厤褰卞搷鐘舵�佹洿鏂�
+ }
+ }
}
@Override
@@ -326,23 +339,37 @@
// 3. 鏍¢獙渚涘簲鍟�
supplierService.validateSupplier(supplierId);
- // 4. 鑾峰彇鐢宠鏄庣粏
+ // 4. 璁剧疆渚涘簲鍟嗗苟鐢熸垚璁㈠崟
+ purchaseRequest.setSupplierId(supplierId);
+ return doGeneratePurchaseOrder(purchaseRequest);
+ }
+
+ /**
+ * 鎵ц鐢熸垚閲囪喘璁㈠崟
+ *
+ * @param purchaseRequest 閲囪喘鐢宠锛堥渶鍖呭惈 supplierId锛�
+ * @return 閲囪喘璁㈠崟 ID
+ */
+ private Long doGeneratePurchaseOrder(ErpPurchaseRequestDO purchaseRequest) {
+ Long id = purchaseRequest.getId();
+
+ // 1. 鑾峰彇鐢宠鏄庣粏
List<ErpPurchaseRequestItemDO> requestItems = purchaseRequestItemMapper.selectListByRequestId(id);
if (CollUtil.isEmpty(requestItems)) {
throw exception(PURCHASE_REQUEST_NOT_EXISTS);
}
- // 5. 鐢熸垚閲囪喘璁㈠崟鍙�
+ // 2. 鐢熸垚閲囪喘璁㈠崟鍙�
String orderNo = noRedisDAO.generate(ErpNoRedisDAO.PURCHASE_ORDER_NO_PREFIX);
if (purchaseOrderMapper.selectByNo(orderNo) != null) {
throw exception(PURCHASE_ORDER_NO_EXISTS);
}
- // 6. 鍒涘缓閲囪喘璁㈠崟
+ // 3. 鍒涘缓閲囪喘璁㈠崟
ErpPurchaseOrderDO purchaseOrder = new ErpPurchaseOrderDO();
purchaseOrder.setNo(orderNo);
purchaseOrder.setStatus(ErpAuditStatus.APPROVE.getStatus()); // 閲囪喘璁㈠崟鐩存帴涓哄凡瀹℃牳鐘舵��
- purchaseOrder.setSupplierId(supplierId);
+ purchaseOrder.setSupplierId(purchaseRequest.getSupplierId());
purchaseOrder.setOrderTime(purchaseRequest.getRequestTime());
purchaseOrder.setTotalCount(purchaseRequest.getTotalCount());
purchaseOrder.setTotalPrice(purchaseRequest.getTotalPrice());
@@ -350,15 +377,17 @@
purchaseOrder.setTotalTaxPrice(purchaseRequest.getTotalTaxPrice());
purchaseOrder.setDiscountPercent(purchaseRequest.getDiscountPercent());
purchaseOrder.setDiscountPrice(purchaseRequest.getDiscountPrice());
+ purchaseOrder.setDepositPrice(purchaseRequest.getDepositPrice() != null ? purchaseRequest.getDepositPrice() : BigDecimal.ZERO);
purchaseOrder.setRemark(purchaseRequest.getRemark());
purchaseOrder.setInCount(BigDecimal.ZERO);
purchaseOrder.setInStatus(0);
purchaseOrderMapper.insert(purchaseOrder);
- // 7. 鍒涘缓閲囪喘璁㈠崟鏄庣粏
+ // 4. 鍒涘缓閲囪喘璁㈠崟鏄庣粏
List<ErpPurchaseOrderItemDO> orderItems = convertList(requestItems, item -> {
ErpPurchaseOrderItemDO orderItem = new ErpPurchaseOrderItemDO();
orderItem.setOrderId(purchaseOrder.getId());
+ orderItem.setRequestItemId(item.getId()); // 鍏宠仈閲囪喘鐢宠鏄庣粏
orderItem.setProductId(item.getProductId());
orderItem.setProductUnitId(item.getProductUnitId());
orderItem.setProductPrice(item.getProductPrice());
@@ -368,12 +397,12 @@
orderItem.setTaxPrice(item.getTaxPrice());
orderItem.setRemark(item.getRemark());
orderItem.setInCount(BigDecimal.ZERO);
- orderItem.setQcCheckFlag(false); // 榛樿涓嶉渶瑕佽川妫�
+ orderItem.setQcCheckFlag(item.getQcCheckFlag() != null ? item.getQcCheckFlag() : false);
return orderItem;
});
purchaseOrderItemMapper.insertBatch(orderItems);
- // 8. 鏇存柊閲囪喘鐢宠鐨勮鍗曚俊鎭�
+ // 5. 鏇存柊閲囪喘鐢宠鐨勮鍗曚俊鎭�
purchaseRequestMapper.updateById(new ErpPurchaseRequestDO()
.setId(id)
.setOrderId(purchaseOrder.getId())
--
Gitblit v1.9.3