From c9cd6e47dbdf173060496f3d8ce0f228f6a17cda Mon Sep 17 00:00:00 2001
From: huminmin <mac@MacBook-Pro.local>
Date: 星期四, 30 七月 2026 17:56:18 +0800
Subject: [PATCH] 修改报工审批查询

---
 src/main/java/com/ruoyi/production/service/impl/ProductionProductMainServiceImpl.java |   23 +++++++++++++++++++++++
 src/main/resources/mapper/production/ProductionProductMainMapper.xml                  |   16 ++++++++++++++++
 src/main/java/com/ruoyi/production/bean/dto/ProductionProductMainDto.java             |    6 ++++++
 3 files changed, 45 insertions(+), 0 deletions(-)

diff --git a/src/main/java/com/ruoyi/production/bean/dto/ProductionProductMainDto.java b/src/main/java/com/ruoyi/production/bean/dto/ProductionProductMainDto.java
index 87e35d3..85d3ed8 100644
--- a/src/main/java/com/ruoyi/production/bean/dto/ProductionProductMainDto.java
+++ b/src/main/java/com/ruoyi/production/bean/dto/ProductionProductMainDto.java
@@ -54,6 +54,12 @@
     @Schema(description = "鏁伴噺")
     private BigDecimal quantity;
 
+    @Schema(description = "鎺掍骇鏁伴噺")
+    private BigDecimal schedulingNum;
+
+    @Schema(description = "寰呯敓浜ф暟閲�")
+    private BigDecimal pendingNum;
+
     @Schema(description = "鎶ュ簾鏁伴噺")
     private BigDecimal scrapQty;
 
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 b6230aa..872d52f 100644
--- a/src/main/java/com/ruoyi/production/service/impl/ProductionProductMainServiceImpl.java
+++ b/src/main/java/com/ruoyi/production/service/impl/ProductionProductMainServiceImpl.java
@@ -459,10 +459,28 @@
         formConfig.put("summaryPlaceholder", "鎶ュ伐瀹℃壒");
         formConfig.put("approvalType", "production_report");
 
+        ProductionOperationTask task = productionOperationTaskMapper.selectById(productionProductMain.getProductionOperationTaskId());
+        ProductionProductOutput output = productionProductOutputMapper.selectOne(
+                Wrappers.<ProductionProductOutput>lambdaQuery()
+                        .eq(ProductionProductOutput::getProductionProductMainId, productionProductMain.getId())
+                        .last("limit 1"));
+        BigDecimal schedulingNum = task == null ? BigDecimal.ZERO : defaultDecimal(task.getPlanQuantity());
+        BigDecimal finishedNum = output == null ? BigDecimal.ZERO : defaultDecimal(output.getQuantity());
+        BigDecimal scrapQty = output == null ? BigDecimal.ZERO : defaultDecimal(output.getScrapQty());
+        BigDecimal pendingNum = schedulingNum.subtract(finishedNum);
+        if (pendingNum.compareTo(BigDecimal.ZERO) < 0) {
+            pendingNum = BigDecimal.ZERO;
+        }
+
         List<Map<String, Object>> fields = new ArrayList<>();
         fields.add(buildReportField("productNo", "鎶ュ伐鍗曞彿", "text", productionProductMain.getProductNo()));
         fields.add(buildReportField("userName", "鎶ュ伐浜哄憳", "text", productionProductMain.getUserName()));
+        fields.add(buildReportField("teamInfo", "鐝粍淇℃伅", "text", productionProductMain.getUserName()));
         fields.add(buildReportField("workOrderNo", "宸ュ崟缂栧彿", "text", resolveWorkOrderNo(productionProductMain.getProductionOperationTaskId())));
+        fields.add(buildReportField("schedulingNum", "鎺掍骇鏁伴噺", "number", schedulingNum));
+        fields.add(buildReportField("pendingNum", "寰呯敓浜ф暟閲�", "number", pendingNum));
+        fields.add(buildReportField("finishedNum", "鐢熶骇鍚堟牸鏁伴噺", "number", finishedNum));
+        fields.add(buildReportField("scrapQty", "鎶ュ簾鏁伴噺", "number", scrapQty));
         fields.add(buildReportField("reportType", "鎶ュ伐缁撴灉", "select", resolveReportTypeLabel(productionProductMain.getReportType())));
         fields.add(buildReportField("workHour", "宸ユ椂", "number", productionProductMain.getWorkHour()));
         fields.add(buildReportField("auditStatus", "瀹℃牳鐘舵��", "select", resolveAuditStatusLabel(productionProductMain.getAuditStatus())));
@@ -472,7 +490,12 @@
         Map<String, Object> formPayload = new LinkedHashMap<>();
         formPayload.put("productNo", productionProductMain.getProductNo());
         formPayload.put("userName", productionProductMain.getUserName());
+        formPayload.put("teamInfo", productionProductMain.getUserName());
         formPayload.put("workOrderNo", resolveWorkOrderNo(productionProductMain.getProductionOperationTaskId()));
+        formPayload.put("schedulingNum", schedulingNum);
+        formPayload.put("pendingNum", pendingNum);
+        formPayload.put("finishedNum", finishedNum);
+        formPayload.put("scrapQty", scrapQty);
         formPayload.put("reportType", resolveReportTypeLabel(productionProductMain.getReportType()));
         formPayload.put("workHour", productionProductMain.getWorkHour());
         formPayload.put("auditStatus", resolveAuditStatusLabel(productionProductMain.getAuditStatus()));
diff --git a/src/main/resources/mapper/production/ProductionProductMainMapper.xml b/src/main/resources/mapper/production/ProductionProductMainMapper.xml
index 77b74b7..2403afe 100644
--- a/src/main/resources/mapper/production/ProductionProductMainMapper.xml
+++ b/src/main/resources/mapper/production/ProductionProductMainMapper.xml
@@ -34,6 +34,14 @@
                    else '鏈煡'
                    end as auditStatusName,
                pot.work_order_no as workOrderNo,
+               ifnull(pot.plan_quantity, 0) as schedulingNum,
+               cast(
+                   case
+                       when ifnull(pot.plan_quantity, 0) - ifnull(ppo.quantity, 0) &lt; 0 then 0
+                       else ifnull(pot.plan_quantity, 0) - ifnull(ppo.quantity, 0)
+                   end
+                   as decimal(18,4)
+               ) as pendingNum,
                case pot.status
                    when 1 then '寰呯‘璁�'
                    when 2 then '寰呯敓浜�'
@@ -131,6 +139,14 @@
                    else '鏈煡'
                    end as auditStatusName,
                pot.work_order_no as workOrderNo,
+               ifnull(pot.plan_quantity, 0) as schedulingNum,
+               cast(
+                   case
+                       when ifnull(pot.plan_quantity, 0) - ifnull(ppo.quantity, 0) &lt; 0 then 0
+                       else ifnull(pot.plan_quantity, 0) - ifnull(ppo.quantity, 0)
+                   end
+                   as decimal(18,4)
+               ) as pendingNum,
                p.product_name as productName,
                ifnull(p.standard_quantity, 0) as productStandardQuantity,
                pm.model as productModelName,

--
Gitblit v1.9.3