From 15032d66c35c8154316a4f0170f3b6f470bf4c50 Mon Sep 17 00:00:00 2001
From: liding <756868258@qq.com>
Date: 星期三, 29 四月 2026 18:01:20 +0800
Subject: [PATCH] fix:1.报工合格数量更改

---
 src/main/java/com/ruoyi/production/bean/vo/ProductionAccountVo.java                   |   33 +++++++++-------
 src/main/java/com/ruoyi/production/pojo/ProductionProductOutput.java                  |    2 
 src/main/java/com/ruoyi/production/service/impl/ProductionProductMainServiceImpl.java |    9 ++--
 src/main/resources/mapper/production/ProductionAccountMapper.xml                      |   19 +++++++++
 4 files changed, 43 insertions(+), 20 deletions(-)

diff --git a/src/main/java/com/ruoyi/production/bean/vo/ProductionAccountVo.java b/src/main/java/com/ruoyi/production/bean/vo/ProductionAccountVo.java
index 47cb059..5d86e7c 100644
--- a/src/main/java/com/ruoyi/production/bean/vo/ProductionAccountVo.java
+++ b/src/main/java/com/ruoyi/production/bean/vo/ProductionAccountVo.java
@@ -8,49 +8,52 @@
 import java.time.LocalDate;
 
 @Data
-@Schema(name = "ProductionAccountVo", description = "鐢熶骇鏍哥畻鍒嗛〉杩斿洖瀵硅薄")
+@Schema(name = "ProductionAccountVo", description = "production account page result")
 public class ProductionAccountVo {
 
-    @Schema(description = "瀹㈡埛鍚堝悓鍙�")
+    @Schema(description = "customer contract no")
     private String customerContractNo;
 
-    @Schema(description = "椤圭洰鍚嶇О")
+    @Schema(description = "project name")
     private String projectName;
 
-    @Schema(description = "瀹㈡埛鍚嶇О")
+    @Schema(description = "customer name")
     private String customerName;
 
-    @Schema(description = "浜у搧澶х被")
+    @Schema(description = "product category")
     private String productCategory;
 
-    @Schema(description = "瑙勬牸鍨嬪彿")
+    @Schema(description = "specification model")
     private String specificationModel;
 
-    @Schema(description = "鍗曚綅")
+    @Schema(description = "unit")
     private String unit;
 
-    @Schema(description = "鐢熶骇浜篒D")
+    @Schema(description = "scheduling user id")
     private Long schedulingUserId;
 
-    @Schema(description = "鐢熶骇浜哄悕绉�")
+    @Schema(description = "scheduling user name")
     private String schedulingUserName;
 
-    @Schema(description = "宸ヨ祫")
+    @Schema(description = "wages")
     private BigDecimal wages;
 
-    @Schema(description = "鐢熶骇鏁伴噺")
+    @Schema(description = "finished quantity")
     private BigDecimal finishedNum;
 
-    @Schema(description = "宸ユ椂瀹氶")
+    @Schema(description = "salary quota")
     private BigDecimal workHours;
 
-    @Schema(description = "宸ュ簭")
+    @Schema(description = "output rate")
+    private String outputRate;
+
+    @Schema(description = "process")
     private String process;
 
-    @Schema(description = "鐢熶骇鏃ユ湡")
+    @Schema(description = "scheduling date")
     @JsonFormat(pattern = "yyyy-MM-dd")
     private LocalDate schedulingDate;
 
-    @Schema(description = "鐢熶骇鏈堜唤(yyyy-MM)")
+    @Schema(description = "scheduling month(yyyy-MM)")
     private String schedulingMonth;
 }
diff --git a/src/main/java/com/ruoyi/production/pojo/ProductionProductOutput.java b/src/main/java/com/ruoyi/production/pojo/ProductionProductOutput.java
index badf048..5e1daef 100644
--- a/src/main/java/com/ruoyi/production/pojo/ProductionProductOutput.java
+++ b/src/main/java/com/ruoyi/production/pojo/ProductionProductOutput.java
@@ -23,7 +23,7 @@
     @Schema(description = "浜у搧id")
     private Long productModelId;
 
-    @Schema(description = "鎶ュ伐鏁伴噺(鎬绘暟閲�)")
+    @Schema(description = "鍚堟牸鏁伴噺")
     private BigDecimal quantity;
 
     @Schema(description = "鍒涘缓鏃堕棿")
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 9b967c4..216aafa 100644
--- a/src/main/java/com/ruoyi/production/service/impl/ProductionProductMainServiceImpl.java
+++ b/src/main/java/com/ruoyi/production/service/impl/ProductionProductMainServiceImpl.java
@@ -293,7 +293,8 @@
         productionProductOutput.setQuantity(defaultDecimal(dto.getQuantity()));
         productionProductOutput.setScrapQty(defaultDecimal(dto.getScrapQty()));
         productionProductOutputMapper.insert(productionProductOutput);
-        BigDecimal productQty = productionProductOutput.getQuantity().subtract(productionProductOutput.getScrapQty());
+        BigDecimal reportQty = defaultDecimal(productionProductOutput.getQuantity());
+        BigDecimal productQty = reportQty;
 
         List<ProductionOrderRoutingOperation> routingOperationList = productionOrderRoutingOperationMapper.selectList(
                 Wrappers.<ProductionOrderRoutingOperation>lambdaQuery()
@@ -534,8 +535,8 @@
 
         ProductionOperationTask productionOperationTask = productionOperationTaskMapper.selectById(productionProductMain.getProductionOperationTaskId());
         if (productionOperationTask != null && productionProductOutput != null) {
-            BigDecimal validQuantity = defaultDecimal(productionProductOutput.getQuantity()).subtract(defaultDecimal(productionProductOutput.getScrapQty()));
-            productionOperationTask.setCompleteQuantity(defaultDecimal(productionOperationTask.getCompleteQuantity()).subtract(validQuantity));
+            BigDecimal reportQuantity = defaultDecimal(productionProductOutput.getQuantity());
+            productionOperationTask.setCompleteQuantity(defaultDecimal(productionOperationTask.getCompleteQuantity()).subtract(reportQuantity));
             productionOperationTask.setActualEndTime(null);
             if (defaultDecimal(productionOperationTask.getCompleteQuantity()).compareTo(BigDecimal.ZERO) <= 0) {
                 productionOperationTask.setCompleteQuantity(BigDecimal.ZERO);
@@ -556,7 +557,7 @@
                                 .eq(ProductionOrderRoutingOperation::getProductionOrderId, routingOperation.getProductionOrderId()));
                 boolean isLastOperation = routingOperation.getDragSort() != null && routingOperation.getDragSort().equals(routingOperationList.size());
                 if (isLastOperation) {
-                    BigDecimal newCompleteQty = defaultDecimal(productionOrder.getCompleteQuantity()).subtract(validQuantity);
+                    BigDecimal newCompleteQty = defaultDecimal(productionOrder.getCompleteQuantity()).subtract(reportQuantity);
                     productionOrder.setCompleteQuantity(newCompleteQty.compareTo(BigDecimal.ZERO) < 0 ? BigDecimal.ZERO : newCompleteQty);
                     productionOrder.setEndTime(null);
                 }
diff --git a/src/main/resources/mapper/production/ProductionAccountMapper.xml b/src/main/resources/mapper/production/ProductionAccountMapper.xml
index f213a5f..2841854 100644
--- a/src/main/resources/mapper/production/ProductionAccountMapper.xml
+++ b/src/main/resources/mapper/production/ProductionAccountMapper.xml
@@ -38,6 +38,18 @@
         ) as decimal(18,4)) as wages,
         cast(sum(ifnull(pa.finished_num, 0)) as decimal(18,4)) as finishedNum,
         cast(sum(ifnull(pa.work_hours, 0)) as decimal(18,4)) as workHours,
+        case
+            when sum(ifnull(ppo.quantity, 0) + ifnull(ppo.scrapQty, 0)) = 0 then '0%'
+            else concat(
+                cast(
+                    round(
+                        sum(ifnull(ppo.quantity, 0)) /
+                        sum(ifnull(ppo.quantity, 0) + ifnull(ppo.scrapQty, 0)) * 100, 2
+                    ) as char
+                ),
+                '%'
+            )
+        end as outputRate,
         group_concat(distinct pa.technology_operation_name order by pa.technology_operation_name separator ',') as process,
         case
             when count(distinct date(pa.scheduling_date)) = 1 then min(date(pa.scheduling_date))
@@ -55,6 +67,13 @@
         left join product_model pm on pm.id = ifnull(poro.product_model_id, po.product_model_id)
         left join product p on pm.product_id = p.id
         left join product p_parent on p_parent.id = p.parent_id
+        left join (
+            select production_product_main_id,
+                   cast(sum(ifnull(quantity, 0)) as decimal(18,4)) as quantity,
+                   cast(sum(ifnull(scrap_qty, 0)) as decimal(18,4)) as scrapQty
+            from production_product_output
+            group by production_product_main_id
+        ) ppo on ppo.production_product_main_id = ppm.id
         <where>
             <if test="c != null">
                 <if test="c.productCategory != null and c.productCategory != ''">

--
Gitblit v1.9.3