From e1590017b716d77f88f075364c55cfbdb480286f Mon Sep 17 00:00:00 2001
From: gaoluyang <2820782392@qq.com>
Date: 星期一, 02 十一月 2026 10:27:26 +0800
Subject: [PATCH] 诚发五金:生产链路支持无工序/无工艺路线单工序模式
---
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/pro/mps/MesProMpsServiceImpl.java | 99 ++++++++++++++++++++++++-------------------------
1 files changed, 48 insertions(+), 51 deletions(-)
diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/pro/mps/MesProMpsServiceImpl.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/pro/mps/MesProMpsServiceImpl.java
index 1326d89..af3ad0d 100644
--- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/pro/mps/MesProMpsServiceImpl.java
+++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/pro/mps/MesProMpsServiceImpl.java
@@ -676,19 +676,12 @@
* 鏍规嵁 MPS 鍒涘缓鐢熶骇宸ュ崟
*/
private Long createWorkOrderFromMps(MesProMpsDO mps, BigDecimal quantity) {
- // 1. 鏍¢獙浜у搧鏄惁瀛樺湪宸ヨ壓璺嚎
+ // 1. 鏌ユ壘浜у搧宸ヨ壓璺嚎锛涙湭閰嶇疆鏃朵笉闃绘柇锛屾寜鍗曞伐搴忕敓浜у鐞�
MesProRouteProductDO routeProduct = routeProductService.getRouteProductByItemId(mps.getProductId());
- if (routeProduct == null) {
- throw exception(PRO_ROUTE_NOT_EXISTS);
- }
- Long routeId = routeProduct.getRouteId();
-
- // 2. 鏍¢獙宸ヨ壓璺嚎鏄惁鏈夊伐搴忥紙鎸変骇鍝佽繃婊ゅ叾瀹冧骇鍝佺殑浜у嚭鐗╂枡锛�
- List<MesProRouteProcessDO> routeProcesses = routeProcessService
- .getRouteProcessListByProductId(mps.getProductId());
- if (CollUtil.isEmpty(routeProcesses)) {
- throw exception(PRO_ROUTE_ENABLE_NO_PROCESS);
- }
+ Long routeId = routeProduct != null ? routeProduct.getRouteId() : null;
+ List<MesProRouteProcessDO> routeProcesses = routeProduct != null
+ ? routeProcessService.getRouteProcessListByProductId(mps.getProductId())
+ : Collections.emptyList();
// 3. 鍒涘缓鐢熶骇宸ュ崟
MesProWorkOrderSaveReqVO workOrderReq = new MesProWorkOrderSaveReqVO();
@@ -705,46 +698,50 @@
Long workOrderId = workOrderService.createWorkOrder(workOrderReq);
- // 4. 鏇存柊宸ュ崟宸ヨ壓璺嚎
- workOrderMapper.updateById(new MesProWorkOrderDO().setId(workOrderId).setRouteId(routeId));
-
- // 5. 淇濆瓨宸ュ崟宸ュ簭锛堜粠宸ヨ壓璺嚎宸ュ簭甯﹀叆锛屽惈鎶曟枡BOM锛�
- Map<Long, List<MesProRouteProductBomDO>> bomMap = routeProcessService.getRouteProcessBomMapByProductId(mps.getProductId());
- List<MesProWorkOrderProcessSaveReqVO> processList = new ArrayList<>();
- for (MesProRouteProcessDO rp : routeProcesses) {
- MesProWorkOrderProcessSaveReqVO process = new MesProWorkOrderProcessSaveReqVO();
- process.setWorkOrderId(workOrderId);
- process.setProcessId(rp.getProcessId());
- process.setSort(rp.getSort());
- process.setKeyFlag(rp.getKeyFlag());
- process.setCheckFlag(rp.getCheckFlag());
- process.setBackflushFlag(rp.getBackflushFlag());
- if (rp.getOutputItemId() != null && !rp.getOutputItemId().isBlank()) {
- process.setOutputItemIds(Arrays.stream(rp.getOutputItemId().split(","))
- .map(String::trim).filter(s -> !s.isEmpty())
- .map(Long::valueOf).collect(Collectors.toList()));
- }
- process.setColorCode(rp.getColorCode());
- // 甯﹀叆宸ヨ壓璺嚎浜у搧閰嶇疆鐨勬姤宸ヤ粨搴�
- process.setWarehouseId(routeProduct.getWarehouseId());
- process.setLocationId(routeProduct.getLocationId());
- process.setAreaId(routeProduct.getAreaId());
- // 甯﹀叆宸ュ簭鎶曟枡BOM
- List<MesProRouteProductBomDO> routeBomItems = bomMap != null ? bomMap.get(rp.getProcessId()) : null;
- if (CollUtil.isNotEmpty(routeBomItems)) {
- List<MesProWorkOrderProcessSaveReqVO.BomItem> bomItems = new ArrayList<>();
- for (MesProRouteProductBomDO bomDO : routeBomItems) {
- MesProWorkOrderProcessSaveReqVO.BomItem bomItem = new MesProWorkOrderProcessSaveReqVO.BomItem();
- bomItem.setItemId(bomDO.getItemId());
- bomItem.setQuantity(bomDO.getQuantity());
- bomItem.setRemark(bomDO.getRemark());
- bomItems.add(bomItem);
- }
- process.setBomItems(bomItems);
- }
- processList.add(process);
+ // 4. 鏇存柊宸ュ崟宸ヨ壓璺嚎锛堟湭閰嶇疆璺嚎鏃朵繚鎸佷负绌猴紝鎸夊崟宸ュ簭鐢熶骇锛�
+ if (routeId != null) {
+ workOrderMapper.updateById(new MesProWorkOrderDO().setId(workOrderId).setRouteId(routeId));
}
- workOrderProcessService.batchSaveWorkOrderProcess(processList);
+
+ // 5. 淇濆瓨宸ュ崟宸ュ簭锛堜粎閰嶇疆浜嗗伐鑹鸿矾绾垮伐搴忔椂甯﹀叆锛屽惈鎶曟枡BOM锛�
+ if (CollUtil.isNotEmpty(routeProcesses)) {
+ Map<Long, List<MesProRouteProductBomDO>> bomMap = routeProcessService.getRouteProcessBomMapByProductId(mps.getProductId());
+ List<MesProWorkOrderProcessSaveReqVO> processList = new ArrayList<>();
+ for (MesProRouteProcessDO rp : routeProcesses) {
+ MesProWorkOrderProcessSaveReqVO process = new MesProWorkOrderProcessSaveReqVO();
+ process.setWorkOrderId(workOrderId);
+ process.setProcessId(rp.getProcessId());
+ process.setSort(rp.getSort());
+ process.setKeyFlag(rp.getKeyFlag());
+ process.setCheckFlag(rp.getCheckFlag());
+ process.setBackflushFlag(rp.getBackflushFlag());
+ if (rp.getOutputItemId() != null && !rp.getOutputItemId().isBlank()) {
+ process.setOutputItemIds(Arrays.stream(rp.getOutputItemId().split(","))
+ .map(String::trim).filter(s -> !s.isEmpty())
+ .map(Long::valueOf).collect(Collectors.toList()));
+ }
+ process.setColorCode(rp.getColorCode());
+ // 甯﹀叆宸ヨ壓璺嚎浜у搧閰嶇疆鐨勬姤宸ヤ粨搴�
+ process.setWarehouseId(routeProduct.getWarehouseId());
+ process.setLocationId(routeProduct.getLocationId());
+ process.setAreaId(routeProduct.getAreaId());
+ // 甯﹀叆宸ュ簭鎶曟枡BOM
+ List<MesProRouteProductBomDO> routeBomItems = bomMap != null ? bomMap.get(rp.getProcessId()) : null;
+ if (CollUtil.isNotEmpty(routeBomItems)) {
+ List<MesProWorkOrderProcessSaveReqVO.BomItem> bomItems = new ArrayList<>();
+ for (MesProRouteProductBomDO bomDO : routeBomItems) {
+ MesProWorkOrderProcessSaveReqVO.BomItem bomItem = new MesProWorkOrderProcessSaveReqVO.BomItem();
+ bomItem.setItemId(bomDO.getItemId());
+ bomItem.setQuantity(bomDO.getQuantity());
+ bomItem.setRemark(bomDO.getRemark());
+ bomItems.add(bomItem);
+ }
+ process.setBomItems(bomItems);
+ }
+ processList.add(process);
+ }
+ workOrderProcessService.batchSaveWorkOrderProcess(processList);
+ }
// 6. 宸ュ崟鐩存帴纭涓哄凡纭鐘舵��
workOrderService.confirmWorkOrder(workOrderId);
--
Gitblit v1.9.3