From 67c5d3ea86cfaad45c0150b96949dbcb6729b4d0 Mon Sep 17 00:00:00 2001
From: 云 <2163098428@qq.com>
Date: 星期一, 13 七月 2026 11:58:11 +0800
Subject: [PATCH] 1.仓储物流-库存可用量管理
---
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/productissue/MesWmProductIssueServiceImpl.java | 30 ++++++++++++++++++++++++++++--
1 files changed, 28 insertions(+), 2 deletions(-)
diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/productissue/MesWmProductIssueServiceImpl.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/productissue/MesWmProductIssueServiceImpl.java
index e794078..b193252 100644
--- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/productissue/MesWmProductIssueServiceImpl.java
+++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/productissue/MesWmProductIssueServiceImpl.java
@@ -14,9 +14,11 @@
import cn.iocoder.yudao.module.mes.dal.mysql.wm.productissue.MesWmProductIssueMapper;
import cn.iocoder.yudao.module.mes.enums.MesBizTypeConstants;
import cn.iocoder.yudao.module.mes.enums.wm.MesWmProductIssueStatusEnum;
+import cn.iocoder.yudao.module.mes.enums.wm.MesWmStockReserveBizTypeEnum;
import cn.iocoder.yudao.module.mes.enums.wm.MesWmTransactionTypeEnum;
import cn.iocoder.yudao.module.mes.service.md.workstation.MesMdWorkstationService;
import cn.iocoder.yudao.module.mes.service.pro.workorder.MesProWorkOrderService;
+import cn.iocoder.yudao.module.mes.service.wm.stockreserve.MesWmStockReserveService;
import cn.iocoder.yudao.module.mes.service.wm.transaction.MesWmTransactionService;
import cn.iocoder.yudao.module.mes.service.wm.transaction.dto.MesWmTransactionSaveReqDTO;
import cn.iocoder.yudao.module.mes.service.wm.warehouse.MesWmWarehouseAreaService;
@@ -63,6 +65,8 @@
private MesWmWarehouseLocationService locationService;
@Resource
private MesWmWarehouseAreaService areaService;
+ @Resource
+ private MesWmStockReserveService stockReserveService;
@Override
@Transactional(rollbackFor = Exception.class)
@@ -143,6 +147,22 @@
throw exception(WM_PRODUCT_ISSUE_DETAIL_QUANTITY_MISMATCH);
}
+ // 鍒涘缓搴撳瓨鍗犵敤锛堟寜鏄庣粏鍗犵敤搴撳瓨锛�
+ List<MesWmProductIssueDetailDO> details = issueDetailService.getProductIssueDetailListByIssueId(id);
+ for (MesWmProductIssueDetailDO detail : details) {
+ if (detail.getMaterialStockId() != null && detail.getQuantity() != null) {
+ stockReserveService.createReserve(
+ detail.getMaterialStockId(),
+ MesWmStockReserveBizTypeEnum.PRODUCT_ISSUE.getType(),
+ id,
+ issue.getCode(),
+ detail.getId(),
+ detail.getItemId(),
+ detail.getQuantity()
+ );
+ }
+ }
+
// 鎵ц鎷h揣锛堝緟鎷h揣 鈫� 寰呮墽琛岄鍑猴級
issueMapper.updateById(new MesWmProductIssueDO()
.setId(id).setStatus(MesWmProductIssueStatusEnum.APPROVED.getStatus()));
@@ -166,10 +186,13 @@
throw exception(WM_PRODUCT_ISSUE_DETAIL_QUANTITY_MISMATCH);
}
- // 2. 閬嶅巻鎵�鏈夋槑缁嗭紝鍒涘缓搴撳瓨浜嬪姟锛堟墸鍑忓簱瀛� + 璁板綍娴佹按锛�
+ // 2. 纭鍗犵敤杞嚭搴擄紙閲婃斁鍗犵敤閲忥級
+ stockReserveService.confirmReserveToOutbound(MesWmStockReserveBizTypeEnum.PRODUCT_ISSUE.getType(), id);
+
+ // 3. 閬嶅巻鎵�鏈夋槑缁嗭紝鍒涘缓搴撳瓨浜嬪姟锛堟墸鍑忓簱瀛� + 璁板綍娴佹按锛�
createTransactionList(issue);
- // 3. 鏇存柊鍑哄簱鍗曠姸鎬� + 棰嗘枡鏃ユ湡
+ // 4. 鏇存柊鍑哄簱鍗曠姸鎬� + 棰嗘枡鏃ユ湡
issueMapper.updateById(new MesWmProductIssueDO()
.setId(id).setStatus(MesWmProductIssueStatusEnum.FINISHED.getStatus())
.setIssueDate(LocalDateTime.now()));
@@ -216,6 +239,9 @@
throw exception(WM_PRODUCT_ISSUE_CANCEL_NOT_ALLOWED);
}
+ // 閲婃斁搴撳瓨鍗犵敤
+ stockReserveService.releaseReserve(MesWmStockReserveBizTypeEnum.PRODUCT_ISSUE.getType(), id);
+
// 鍙栨秷
issueMapper.updateById(new MesWmProductIssueDO()
.setId(id).setStatus(MesWmProductIssueStatusEnum.CANCELED.getStatus()));
--
Gitblit v1.9.3