From 0e0307ae97edf2e4934ff3396be0deed6e4c1734 Mon Sep 17 00:00:00 2001
From: gongchunyi <deslre0381@gmail.com>
Date: 星期三, 29 四月 2026 14:00:15 +0800
Subject: [PATCH] fix: 生产订单手动新增修改

---
 src/main/java/com/ruoyi/production/service/impl/ProductOrderServiceImpl.java |   63 +++++++++++++++++++++++++++++++
 1 files changed, 63 insertions(+), 0 deletions(-)

diff --git a/src/main/java/com/ruoyi/production/service/impl/ProductOrderServiceImpl.java b/src/main/java/com/ruoyi/production/service/impl/ProductOrderServiceImpl.java
index 8a1099c..d030986 100644
--- a/src/main/java/com/ruoyi/production/service/impl/ProductOrderServiceImpl.java
+++ b/src/main/java/com/ruoyi/production/service/impl/ProductOrderServiceImpl.java
@@ -48,6 +48,9 @@
     private ProductWorkOrderMapper productWorkOrderMapper;
 
     @Autowired
+    private ProductProcessMapper productProcessMapper;
+
+    @Autowired
     private ProductionProductMainMapper productionProductMainMapper;
 
     @Autowired
@@ -140,10 +143,70 @@
         this.save(productOrder);
         if (ObjectUtils.isNotEmpty(productOrder.getRouteId())) {
             this.bindingRoute(productOrder);
+        } else {
+            // 鏃犳棫宸ヨ壓璺嚎鏃讹紝鎸変骇鍝佸瀷鍙锋媺鍙� product_process 鑷姩鐢熸垚宸ュ簭鍜屽伐鍗�
+            createRouteAndWorkOrdersByProductProcess(productOrder);
         }
         return true;
     }
 
+    /**
+     * 鎸� product_process 鑷姩鐢熸垚鐢熶骇璁㈠崟宸ュ簭涓庡伐鍗�
+     */
+    private void createRouteAndWorkOrdersByProductProcess(ProductOrder productOrder) {
+        List<ProductProcess> productProcesses = productProcessMapper.selectList(new QueryWrapper<ProductProcess>().lambda()
+                .eq(ProductProcess::getProductModelId, productOrder.getProductModelId())
+                .orderByAsc(ProductProcess::getId));
+        if (ObjectUtils.isEmpty(productProcesses)) {
+            return;
+        }
+
+        ProductProcessRoute productProcessRoute = new ProductProcessRoute();
+        productProcessRoute.setProductModelId(productOrder.getProductModelId());
+        productProcessRoute.setProductOrderId(productOrder.getId());
+        productProcessRouteMapper.insert(productProcessRoute);
+
+        String datePrefix = LocalDate.now().format(DateTimeFormatter.ofPattern("yyyyMMdd"));
+        ProductWorkOrder lastWorkOrder = productWorkOrderMapper.selectMax(datePrefix);
+        int sequenceNumber = 1;
+        if (lastWorkOrder != null && lastWorkOrder.getWorkOrderNo() != null) {
+            String lastNo = lastWorkOrder.getWorkOrderNo().toString();
+            if (lastNo.startsWith(datePrefix)) {
+                String seqStr = lastNo.substring(datePrefix.length());
+                try {
+                    sequenceNumber = Integer.parseInt(seqStr) + 1;
+                } catch (NumberFormatException e) {
+                    sequenceNumber = 1;
+                }
+            }
+        }
+
+        for (int i = 0; i < productProcesses.size(); i++) {
+            ProductProcess process = productProcesses.get(i);
+
+            ProductProcessRouteItem productProcessRouteItem = new ProductProcessRouteItem();
+            productProcessRouteItem.setProductModelId(productOrder.getProductModelId());
+            productProcessRouteItem.setProcessId(process.getId());
+            productProcessRouteItem.setProductOrderId(productOrder.getId());
+            productProcessRouteItem.setProductRouteId(productProcessRoute.getId());
+            productProcessRouteItem.setDragSort(i + 1);
+            productProcessRouteItem.setIsQuality(process.getIsQuality());
+            int insert = productProcessRouteItemMapper.insert(productProcessRouteItem);
+            if (insert > 0) {
+                String workOrderNoStr = "GD" + String.format("%s%03d", datePrefix, sequenceNumber);
+                sequenceNumber++;
+
+                ProductWorkOrder productWorkOrder = new ProductWorkOrder();
+                productWorkOrder.setProductProcessRouteItemId(productProcessRouteItem.getId());
+                productWorkOrder.setProductOrderId(productOrder.getId());
+                productWorkOrder.setPlanQuantity(productOrder.getQuantity());
+                productWorkOrder.setWorkOrderNo(workOrderNoStr);
+                productWorkOrder.setStatus(1);
+                productWorkOrderMapper.insert(productWorkOrder);
+            }
+        }
+    }
+
     @Override
     public Boolean delete(Long[] ids) {
         //濡傛灉宸茬粡寮�濮嬬敓浜�,涓嶈兘鍒犻櫎

--
Gitblit v1.9.3