From 1bc0c6c7842e29711e576e58b0aca00fabd92df0 Mon Sep 17 00:00:00 2001
From: gongchunyi <deslre0381@gmail.com>
Date: 星期一, 02 二月 2026 09:11:11 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/dev_New' into dev_New

---
 src/main/java/com/ruoyi/production/service/ProductionProductMainService.java            |    6 +-----
 src/main/resources/mapper/production/ProductWorkOrderMapper.xml                         |    6 +++++-
 src/main/java/com/ruoyi/production/service/impl/ProductionProductMainServiceImpl.java   |    5 ++---
 src/main/resources/mapper/production/ProductProcessRouteItemMapper.xml                  |    4 +++-
 src/main/java/com/ruoyi/production/dto/ProductWorkOrderDto.java                         |    3 +++
 src/main/java/com/ruoyi/production/controller/ProductionProductMainController.java      |    3 ++-
 src/main/java/com/ruoyi/production/service/impl/ProductProcessRouteItemServiceImpl.java |   31 ++++++++++++++++++-------------
 src/main/java/com/ruoyi/production/dto/ProductProcessRouteItemDto.java                  |    2 ++
 8 files changed, 36 insertions(+), 24 deletions(-)

diff --git a/src/main/java/com/ruoyi/production/controller/ProductionProductMainController.java b/src/main/java/com/ruoyi/production/controller/ProductionProductMainController.java
index b32af78..1dd597b 100644
--- a/src/main/java/com/ruoyi/production/controller/ProductionProductMainController.java
+++ b/src/main/java/com/ruoyi/production/controller/ProductionProductMainController.java
@@ -50,7 +50,8 @@
     @DeleteMapping("/delete")
     @Transactional(rollbackFor = Exception.class)
     public R delete(@RequestBody ProductionProductMainDto productionProductMainDto) {
-        return R.ok(productionProductMainService.removeProductMain(productionProductMainDto));
+
+        return R.ok(productionProductMainService.removeProductMain(productionProductMainDto.getId()));
     }
 
 
diff --git a/src/main/java/com/ruoyi/production/dto/ProductProcessRouteItemDto.java b/src/main/java/com/ruoyi/production/dto/ProductProcessRouteItemDto.java
index d235ccb..d6ec3f1 100644
--- a/src/main/java/com/ruoyi/production/dto/ProductProcessRouteItemDto.java
+++ b/src/main/java/com/ruoyi/production/dto/ProductProcessRouteItemDto.java
@@ -24,4 +24,6 @@
     private String productName;
 
     private String model;
+
+    private Boolean isComplete;
 }
diff --git a/src/main/java/com/ruoyi/production/dto/ProductWorkOrderDto.java b/src/main/java/com/ruoyi/production/dto/ProductWorkOrderDto.java
index 50a91f5..6e2ca95 100644
--- a/src/main/java/com/ruoyi/production/dto/ProductWorkOrderDto.java
+++ b/src/main/java/com/ruoyi/production/dto/ProductWorkOrderDto.java
@@ -40,4 +40,7 @@
 
     @ApiModelProperty(value = "鎶ュ簾鏁伴噺")
     private BigDecimal scrapQty;
+
+    @ApiModelProperty(value = "宸ュ崟绫诲瀷 姝e父 /杩斿伐杩斾慨")
+    private String workOrderType;
 }
diff --git a/src/main/java/com/ruoyi/production/service/ProductionProductMainService.java b/src/main/java/com/ruoyi/production/service/ProductionProductMainService.java
index 0980cae..af6e414 100644
--- a/src/main/java/com/ruoyi/production/service/ProductionProductMainService.java
+++ b/src/main/java/com/ruoyi/production/service/ProductionProductMainService.java
@@ -3,17 +3,13 @@
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.IService;
-import com.ruoyi.production.dto.ProcessRouteItemDto;
-import com.ruoyi.production.dto.ProductOrderDto;
 import com.ruoyi.production.dto.ProductionProductMainDto;
 import com.ruoyi.production.pojo.ProductionProductMain;
-
-import java.util.List;
 
 public interface ProductionProductMainService extends IService<ProductionProductMain> {
     IPage<ProductionProductMainDto> listPageProductionProductMainDto(Page page, ProductionProductMainDto productionProductMainDto);
 
     Boolean addProductMain(ProductionProductMainDto productionProductMainDto);
 
-    Boolean removeProductMain(ProductionProductMainDto productionProductMainDto);
+    Boolean removeProductMain(Long id);
 }
diff --git a/src/main/java/com/ruoyi/production/service/impl/ProductProcessRouteItemServiceImpl.java b/src/main/java/com/ruoyi/production/service/impl/ProductProcessRouteItemServiceImpl.java
index 4db1c0c..7f73d6b 100644
--- a/src/main/java/com/ruoyi/production/service/impl/ProductProcessRouteItemServiceImpl.java
+++ b/src/main/java/com/ruoyi/production/service/impl/ProductProcessRouteItemServiceImpl.java
@@ -6,9 +6,11 @@
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.ruoyi.framework.web.domain.R;
 import com.ruoyi.production.dto.ProductProcessRouteItemDto;
+import com.ruoyi.production.dto.ProductionProductMainDto;
 import com.ruoyi.production.mapper.*;
 import com.ruoyi.production.pojo.*;
 import com.ruoyi.production.service.ProductProcessRouteItemService;
+import com.ruoyi.production.service.ProductionProductMainService;
 import com.ruoyi.quality.mapper.QualityInspectMapper;
 import com.ruoyi.quality.pojo.QualityInspect;
 import com.ruoyi.sales.mapper.SalesLedgerProductMapper;
@@ -20,6 +22,7 @@
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.util.CollectionUtils;
 
+import java.math.BigDecimal;
 import java.time.LocalDate;
 import java.time.format.DateTimeFormatter;
 import java.util.ArrayList;
@@ -34,6 +37,7 @@
 public class ProductProcessRouteItemServiceImpl extends ServiceImpl<ProductProcessRouteItemMapper, ProductProcessRouteItem> implements ProductProcessRouteItemService {
 
 
+    private ProductionProductMainService productionProductMainService;
     private ProductProcessRouteItemMapper productProcessRouteItemMapper;
 
     private ProductionProductMainMapper productionProductMainMapper;
@@ -73,6 +77,9 @@
             if (productWorkOrder == null) {
                 throw new RuntimeException("鍒犻櫎澶辫触锛氭湭鎵惧埌鍏宠仈鐨勭敓浜у伐鍗�");
             }
+            if (BigDecimal.ZERO.compareTo(productWorkOrder.getCompleteQuantity()) < 0) {
+                throw new RuntimeException("鍒犻櫎澶辫触锛氳宸ュ崟宸插紑濮嬬敓浜э紝璇峰厛鍒犻櫎鐢熶骇鎶ュ伐");
+            }
             Long workOrderId = productWorkOrder.getId();
             Long productOrderId = productWorkOrder.getProductOrderId();
             // 鏌ヨ鐢熶骇涓昏〃
@@ -83,21 +90,19 @@
             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));
+                    productionProductMainService.removeProductMain(main.getId());
+//                    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) {
diff --git a/src/main/java/com/ruoyi/production/service/impl/ProductionProductMainServiceImpl.java b/src/main/java/com/ruoyi/production/service/impl/ProductionProductMainServiceImpl.java
index b2c914b..76a5757 100644
--- a/src/main/java/com/ruoyi/production/service/impl/ProductionProductMainServiceImpl.java
+++ b/src/main/java/com/ruoyi/production/service/impl/ProductionProductMainServiceImpl.java
@@ -248,8 +248,8 @@
     }
 
     @Override
-    public Boolean removeProductMain(ProductionProductMainDto dto) {
-        ProductionProductMain productionProductMain = productionProductMainMapper.selectById(dto.getId());
+    public Boolean removeProductMain(Long id) {
+        ProductionProductMain productionProductMain = productionProductMainMapper.selectById(id);
         //璇ユ姤宸ュ搴旂殑宸ヨ壓璺嚎璇︽儏
         ProductProcessRouteItem productProcessRouteItem = productProcessRouteItemMapper.selectById(productionProductMain.getProductProcessRouteItemId());
         ProductionProductOutput productionProductOutput = productionProductOutputMapper.selectList(Wrappers.<ProductionProductOutput>lambdaQuery().eq(ProductionProductOutput::getProductMainId, productionProductMain.getId())).get(0);
@@ -271,7 +271,6 @@
             productOrder.setEndTime(null);
             productOrderMapper.updateById(productOrder);
         }
-        /*鍒犻櫎浜у嚭*/
         //鍒犻櫎璐ㄦ
         qualityInspectMapper.selectList(
                 new LambdaQueryWrapper<QualityInspect>()
diff --git a/src/main/resources/mapper/production/ProductProcessRouteItemMapper.xml b/src/main/resources/mapper/production/ProductProcessRouteItemMapper.xml
index 13f0ad7..302a0fb 100644
--- a/src/main/resources/mapper/production/ProductProcessRouteItemMapper.xml
+++ b/src/main/resources/mapper/production/ProductProcessRouteItemMapper.xml
@@ -15,11 +15,13 @@
                pp.name as process_name,
                pm.model,
                pm.unit,
-               p.product_name
+               p.product_name,
+               case when pwo.complete_quantity>0 then true else false end as is_complete
         from product_process_route_item ppri
                  left join product_model pm on ppri.product_model_id = pm.id
                  left join product p on pm.product_id = p.id
                  left join product_process pp on pp.id = ppri.process_id
+                 left join product_work_order pwo on pwo.product_process_route_item_id = ppri.id
         where ppri.product_order_id = #{orderId}
         order by ppri.drag_sort
     </select>
diff --git a/src/main/resources/mapper/production/ProductWorkOrderMapper.xml b/src/main/resources/mapper/production/ProductWorkOrderMapper.xml
index 2e9aca1..fef6bef 100644
--- a/src/main/resources/mapper/production/ProductWorkOrderMapper.xml
+++ b/src/main/resources/mapper/production/ProductWorkOrderMapper.xml
@@ -26,7 +26,11 @@
         pm.unit,
         p.product_name AS productName,
         po.nps_no AS productOrderNpsNo,
-        ROUND(pwo.complete_quantity / pwo.plan_quantity * 100, 2) AS completionStatus
+        ROUND(pwo.complete_quantity / pwo.plan_quantity * 100, 2) AS completionStatus,
+        CASE
+        WHEN pwo.work_order_no LIKE 'FG%' THEN '杩斿伐杩斾慨'
+        ELSE '姝e父'
+        END AS work_order_type
         FROM
         product_work_order pwo
         LEFT JOIN product_process_route_item ppri ON ppri.id = pwo.product_process_route_item_id

--
Gitblit v1.9.3