From 703a357683c01aa47e79084ff16bd52a789a4ac5 Mon Sep 17 00:00:00 2001
From: liyong <18434998025@163.com>
Date: 星期五, 16 一月 2026 09:43:22 +0800
Subject: [PATCH] fix(procurement): 修复采购记录和销售台账相关字段映射及业务逻辑问题

---
 src/main/java/com/ruoyi/production/controller/ProductProcessRouteItemController.java |  123 ++++++++++++-----------------------------
 1 files changed, 36 insertions(+), 87 deletions(-)

diff --git a/src/main/java/com/ruoyi/production/controller/ProductProcessRouteItemController.java b/src/main/java/com/ruoyi/production/controller/ProductProcessRouteItemController.java
index 5a502d7..2d5231d 100644
--- a/src/main/java/com/ruoyi/production/controller/ProductProcessRouteItemController.java
+++ b/src/main/java/com/ruoyi/production/controller/ProductProcessRouteItemController.java
@@ -2,13 +2,20 @@
 
 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.ProductWorkOrderMapper;
-import com.ruoyi.production.pojo.ProductProcessRouteItem;
-import com.ruoyi.production.pojo.ProductWorkOrder;
+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;
+import com.ruoyi.sales.mapper.SalesLedgerMapper;
+import com.ruoyi.sales.mapper.SalesLedgerProductMapper;
+import com.ruoyi.sales.pojo.SalesLedger;
+import com.ruoyi.sales.pojo.SalesLedgerProduct;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import lombok.AllArgsConstructor;
@@ -29,101 +36,43 @@
 @Api(tags = "鐢熶骇宸ヨ壓璺嚎")
 public class ProductProcessRouteItemController {
 
+
     private ProductProcessRouteItemService productProcessRouteItemService;
-
-    private ProductWorkOrderService productWorkOrderService;
-
-    private ProductWorkOrderMapper productWorkOrderMapper;
+    private ProductProcessRouteService productProcessRouteService;
 
     @GetMapping("list")
-    @ApiOperation("鏍规嵁Id鏌ヨ宸ヨ壓椤圭洰")
+    @ApiOperation("鏍规嵁Id鏌ヨ宸ヨ壓璺嚎瀛愯〃")
     public R list(Long orderId) {
         return R.ok(productProcessRouteItemService.listItem(orderId));
     }
 
+    @GetMapping("listMain")
+    @ApiOperation("鏍规嵁Id鏌ヨ宸ヨ壓璺嚎涓昏〃")
+    public R listMain(Long orderId) {
+        return R.ok(productProcessRouteService.listMain(orderId));
+    }
+
+    @PostMapping("/addRouteItem")
+    @ApiOperation("鏂板鐢熶骇璁㈠崟鐨勫伐鑹鸿矾绾胯鎯�")
+    public R addRouteItem(@RequestBody ProductProcessRouteItem productProcessRouteItem) {
+        return productProcessRouteItemService.addRouteItem(productProcessRouteItem);
+    }
+
     @PostMapping("/updateRouteItem")
-    @ApiOperation("鎵归噺鏂板淇敼")
-    @Transactional(rollbackFor = Exception.class)
-    public R addOrUpdate(@RequestBody ProductProcessRouteItemDto processRouteItemDto) {
-        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.setStatus(1);
-                    workOrders.add(workOrder);
-                }
-                result = productWorkOrderService.saveBatch(workOrders);
-            }
-        }
-        if (!toUpdate.isEmpty()) {
-            result = productProcessRouteItemService.updateBatchById(toUpdate) && result;
-        }
-        return R.ok(result);
+    @ApiOperation("淇敼鐢熶骇璁㈠崟鐨勫伐鑹鸿矾绾胯鎯�")
+    public R updateRouteItem(@RequestBody ProductProcessRouteItem productProcessRouteItem) {
+        return R.ok(productProcessRouteItemService.updateById(productProcessRouteItem));
     }
 
-    @DeleteMapping("/deleteRouteItem")
+    @DeleteMapping("/deleteRouteItem/{id}")
     @ApiOperation("鍒犻櫎鐢熶骇宸ヨ壓璺嚎")
-    @Transactional(rollbackFor = Exception.class)
-    public R deleteRouteItem(@RequestBody ProductProcessRouteItemDto processRouteItemDto) {
-        if (processRouteItemDto == null || processRouteItemDto.getId() == null) {
-            return R.fail("鍙傛暟閿欒锛孖D涓嶈兘涓虹┖");
-        }
-
-        try {
-            // 鍏堝垹闄ゅ叧鑱旂殑宸ュ崟鏁版嵁
-            LambdaQueryWrapper<ProductWorkOrder> wrapper = new LambdaQueryWrapper<>();
-            wrapper.eq(ProductWorkOrder::getProductProcessRouteItemId, processRouteItemDto.getId());
-            productWorkOrderMapper.delete(wrapper);
-
-            // 鍒犻櫎涓昏〃鏁版嵁
-            productProcessRouteItemService.removeById(processRouteItemDto.getId());
-            return R.ok();
-        } catch (Exception e) {
-            throw new RuntimeException("鍒犻櫎澶辫触锛�" + e.getMessage());
-        }
+    public R deleteRouteItem(@PathVariable("id") Long id) {
+        return productProcessRouteItemService.deleteRouteItem(id);
     }
 
+    @PostMapping ("/sortRouteItem")
+    @ApiOperation("鎺掑簭")
+    public R sortRouteItem(@RequestBody ProductProcessRouteItem productProcessRouteItem) {
+        return R.ok(productProcessRouteItemService.sortRouteItem(productProcessRouteItem));
+    }
 }

--
Gitblit v1.9.3