From c145f0e2c2a4a301f11c8b4c132f50c8a56bec62 Mon Sep 17 00:00:00 2001
From: zss <zss@example.com>
Date: 星期四, 15 一月 2026 17:55:51 +0800
Subject: [PATCH] 生产订单重构

---
 src/main/java/com/ruoyi/production/controller/ProductProcessRouteItemController.java |  188 +++++++---------------------------------------
 1 files changed, 29 insertions(+), 159 deletions(-)

diff --git a/src/main/java/com/ruoyi/production/controller/ProductProcessRouteItemController.java b/src/main/java/com/ruoyi/production/controller/ProductProcessRouteItemController.java
index beefe5e..2d5231d 100644
--- a/src/main/java/com/ruoyi/production/controller/ProductProcessRouteItemController.java
+++ b/src/main/java/com/ruoyi/production/controller/ProductProcessRouteItemController.java
@@ -2,11 +2,13 @@
 
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.ruoyi.framework.web.domain.R;
 import com.ruoyi.production.dto.ProductProcessRouteItemDto;
 import com.ruoyi.production.mapper.*;
 import com.ruoyi.production.pojo.*;
 import com.ruoyi.production.service.ProductProcessRouteItemService;
+import com.ruoyi.production.service.ProductProcessRouteService;
 import com.ruoyi.production.service.ProductWorkOrderService;
 import com.ruoyi.quality.mapper.QualityInspectMapper;
 import com.ruoyi.quality.pojo.QualityInspect;
@@ -34,175 +36,43 @@
 @Api(tags = "鐢熶骇宸ヨ壓璺嚎")
 public class ProductProcessRouteItemController {
 
-    private final ProductOrderMapper productOrderMapper;
+
     private ProductProcessRouteItemService productProcessRouteItemService;
-
-    private ProductWorkOrderService productWorkOrderService;
-
-    private ProductWorkOrderMapper productWorkOrderMapper;
-
-    private SalesLedgerProductMapper salesLedgerProductMapper;
-
-    private ProductionProductMainMapper productionProductMainMapper;
-
-    private ProductionProductInputMapper productionProductInputMapper;
-
-    private ProductionProductOutputMapper productionProductOutputMapper;
-
-    private QualityInspectMapper qualityInspectMapper;
-
-    private SalesLedgerProductionAccountingMapper salesLedgerProductionAccountingMapper;
+    private ProductProcessRouteService productProcessRouteService;
 
     @GetMapping("list")
-    @ApiOperation("鏍规嵁Id鏌ヨ宸ヨ壓椤圭洰")
+    @ApiOperation("鏍规嵁Id鏌ヨ宸ヨ壓璺嚎瀛愯〃")
     public R list(Long orderId) {
         return R.ok(productProcessRouteItemService.listItem(orderId));
     }
 
-    @PostMapping("/updateRouteItem")
-    @ApiOperation("鎵归噺鏂板淇敼")
-    @Transactional(rollbackFor = Exception.class)
-    public R addOrUpdate(@RequestBody ProductProcessRouteItemDto processRouteItemDto) {
-
-        ProductOrder productOrder = productOrderMapper.selectById(processRouteItemDto.getRouteId());
-        if (productOrder == null) {
-            return R.fail("鏈壘鍒癐D涓篬" + processRouteItemDto.getRouteId() + "]鐨勪骇鍝佽鍗�");
-        }
-        SalesLedgerProduct salesLedgerProduct = salesLedgerProductMapper.selectOne(new LambdaQueryWrapper<SalesLedgerProduct>()
-                .eq(SalesLedgerProduct::getSalesLedgerId, productOrder.getSalesLedgerId()));
-
-        if (salesLedgerProduct == null) {
-            return R.fail("鏈壘鍒伴攢鍞彴璐D涓篬" + productOrder.getSalesLedgerId() + "]鐨勫彴璐︿骇鍝�");
-        }
-
-        List<ProductProcessRouteItem> items = processRouteItemDto.getProcessRouteItem();
-        if (CollectionUtils.isEmpty(items)) {
-            return R.ok();
-        }
-
-        Map<Boolean, List<ProductProcessRouteItem>> partitioned = items.stream()
-                .collect(Collectors.partitioningBy(
-                        item -> item.getId() != null && item.getId() > 0
-                ));
-
-        List<ProductProcessRouteItem> toUpdate = partitioned.get(true);
-        List<ProductProcessRouteItem> toInsert = partitioned.get(false);
-        // 鎵归噺澶勭悊
-        boolean result = true;
-        if (!toInsert.isEmpty()) {
-            result = productProcessRouteItemService.saveBatch(toInsert);
-            if (result) {
-                // 鐢熸垚宸ュ崟鍙�
-                String datePrefix = LocalDate.now().format(DateTimeFormatter.ofPattern("yyyyMMdd"));
-                // 鏌ヨ浠婃棩鏈�澶у伐鍗曞彿
-                QueryWrapper<ProductWorkOrder> queryWrapper = new QueryWrapper<>();
-                queryWrapper.likeRight("work_order_no", datePrefix)
-                        .select("MAX(work_order_no) as maxNo");
-
-                List<Map<String, Object>> maxNoList = productWorkOrderMapper.selectMaps(queryWrapper);
-                String maxWorkOrderNo = null;
-                if (!maxNoList.isEmpty() && maxNoList.get(0) != null && maxNoList.get(0).get("maxNo") != null) {
-                    maxWorkOrderNo = maxNoList.get(0).get("maxNo").toString();
-                }
-                int startSequence = 1;
-                if (maxWorkOrderNo != null && maxWorkOrderNo.startsWith(datePrefix)) {
-                    try {
-                        String seqStr = maxWorkOrderNo.substring(datePrefix.length());
-                        startSequence = Integer.parseInt(seqStr) + 1;
-                    } catch (NumberFormatException e) {
-                        startSequence = 1;
-                    }
-                }
-                // 鎵归噺鐢熸垚宸ュ崟
-                List<ProductWorkOrder> workOrders = new ArrayList<>();
-                for (int i = 0; i < toInsert.size(); i++) {
-                    ProductProcessRouteItem item = toInsert.get(i);
-                    String workOrderNoStr = String.format("%s%03d", datePrefix, startSequence + i);
-                    ProductWorkOrder workOrder = new ProductWorkOrder();
-                    workOrder.setProductProcessRouteItemId(item.getId());
-                    workOrder.setProductOrderId(item.getRouteId());
-                    workOrder.setWorkOrderNo(workOrderNoStr);
-                    workOrder.setPlanQuantity(salesLedgerProduct.getQuantity());
-                    workOrder.setStatus(1);
-                    workOrders.add(workOrder);
-                }
-                result = productWorkOrderService.saveBatch(workOrders);
-            }
-        }
-        if (!toUpdate.isEmpty()) {
-            result = productProcessRouteItemService.updateBatchById(toUpdate) && result;
-        }
-        return R.ok(result);
+    @GetMapping("listMain")
+    @ApiOperation("鏍规嵁Id鏌ヨ宸ヨ壓璺嚎涓昏〃")
+    public R listMain(Long orderId) {
+        return R.ok(productProcessRouteService.listMain(orderId));
     }
 
-    @DeleteMapping("/deleteRouteItem")
+    @PostMapping("/addRouteItem")
+    @ApiOperation("鏂板鐢熶骇璁㈠崟鐨勫伐鑹鸿矾绾胯鎯�")
+    public R addRouteItem(@RequestBody ProductProcessRouteItem productProcessRouteItem) {
+        return productProcessRouteItemService.addRouteItem(productProcessRouteItem);
+    }
+
+    @PostMapping("/updateRouteItem")
+    @ApiOperation("淇敼鐢熶骇璁㈠崟鐨勫伐鑹鸿矾绾胯鎯�")
+    public R updateRouteItem(@RequestBody ProductProcessRouteItem productProcessRouteItem) {
+        return R.ok(productProcessRouteItemService.updateById(productProcessRouteItem));
+    }
+
+    @DeleteMapping("/deleteRouteItem/{id}")
     @ApiOperation("鍒犻櫎鐢熶骇宸ヨ壓璺嚎")
-    @Transactional(rollbackFor = Exception.class)
-    public R deleteRouteItem(@RequestBody ProductProcessRouteItemDto processRouteItemDto) {
+    public R deleteRouteItem(@PathVariable("id") Long id) {
+        return productProcessRouteItemService.deleteRouteItem(id);
+    }
 
-        if (processRouteItemDto == null || processRouteItemDto.getId() == null) {
-            return R.fail("鍒犻櫎澶辫触锛氬伐鑹鸿矾绾块」ID涓嶈兘涓虹┖");
-        }
-        Long routeItemId = processRouteItemDto.getId();
-
-        try {
-            // 鏌ヨ宸ュ崟
-            ProductWorkOrder productWorkOrder = productWorkOrderMapper.selectOne(
-                    new LambdaQueryWrapper<ProductWorkOrder>()
-                            .eq(ProductWorkOrder::getProductProcessRouteItemId, routeItemId)
-                            .last("LIMIT 1")
-            );
-            if (productWorkOrder == null) {
-                return R.fail("鍒犻櫎澶辫触锛氭湭鎵惧埌鍏宠仈鐨勭敓浜у伐鍗�");
-            }
-            Long workOrderId = productWorkOrder.getId();
-            Long productOrderId = productWorkOrder.getProductOrderId();
-
-            // 鏌ヨ鐢熶骇涓昏〃
-            List<ProductionProductMain> productionProductMains = productionProductMainMapper.selectList(
-                    new LambdaQueryWrapper<ProductionProductMain>()
-                            .eq(ProductionProductMain::getWorkOrderId, workOrderId)
-            );
-            if (!productionProductMains.isEmpty()) {
-                // 鎵归噺鍒犻櫎瀛愯〃
-                for (ProductionProductMain main : productionProductMains) {
-                    Long mainId = main.getId();
-                    // 鍒犻櫎鎶曞叆
-                    productionProductInputMapper.delete(new LambdaQueryWrapper<ProductionProductInput>()
-                            .eq(ProductionProductInput::getProductMainId, mainId));
-                    // 鍒犻櫎浜у嚭
-                    productionProductOutputMapper.delete(new LambdaQueryWrapper<ProductionProductOutput>()
-                            .eq(ProductionProductOutput::getProductMainId, mainId));
-                    // 鍒犻櫎璐ㄦ
-                    qualityInspectMapper.delete(new LambdaQueryWrapper<QualityInspect>()
-                            .eq(QualityInspect::getProductMainId, mainId));
-                }
-            }
-
-            //  鍒犻櫎鎶ュ伐锛堢敓浜т富琛級
-            productionProductMainMapper.delete(new LambdaQueryWrapper<ProductionProductMain>()
-                    .eq(ProductionProductMain::getWorkOrderId, workOrderId));
-
-            // 鏌ヨ璁㈠崟 + 鍒犻櫎鏍哥畻
-            ProductOrder productOrder = productOrderMapper.selectById(productOrderId);
-            if (productOrder != null && productOrder.getSalesLedgerId() != null) {
-                salesLedgerProductionAccountingMapper.delete(new LambdaQueryWrapper<SalesLedgerProductionAccounting>()
-                        .eq(SalesLedgerProductionAccounting::getSalesLedgerId, productOrder.getSalesLedgerId()));
-            }
-
-            // 鍒犻櫎鍏宠仈宸ュ崟
-            productWorkOrderMapper.delete(new LambdaQueryWrapper<ProductWorkOrder>()
-                    .eq(ProductWorkOrder::getProductProcessRouteItemId, routeItemId));
-
-            // 鍒犻櫎涓昏〃鏁版嵁
-            boolean removeFlag = productProcessRouteItemService.removeById(routeItemId);
-            if (!removeFlag) {
-                return R.fail("鍒犻櫎澶辫触锛氬伐鑹鸿矾绾块」涓昏〃鏁版嵁涓嶅瓨鍦�");
-            }
-
-            return R.ok();
-        } catch (Exception e) {
-            return R.fail("鍒犻櫎鐢熶骇宸ヨ壓璺嚎澶辫触锛�" + e.getMessage());
-        }
+    @PostMapping ("/sortRouteItem")
+    @ApiOperation("鎺掑簭")
+    public R sortRouteItem(@RequestBody ProductProcessRouteItem productProcessRouteItem) {
+        return R.ok(productProcessRouteItemService.sortRouteItem(productProcessRouteItem));
     }
 }

--
Gitblit v1.9.3