From 868e1e1f5d568e1bb8b50df758ca3d157a680678 Mon Sep 17 00:00:00 2001
From: huminmin <mac@MacBook-Pro.local>
Date: 星期五, 20 三月 2026 13:05:32 +0800
Subject: [PATCH] 根据生产订单查询工单信息,根据工单查询报工数据

---
 src/main/java/com/ruoyi/production/mapper/ProductWorkOrderMapper.java                 |    2 +
 src/main/java/com/ruoyi/production/service/ProductionProductMainService.java          |    2 +
 src/main/resources/mapper/production/ProductWorkOrderMapper.xml                       |   33 ++++++++++++++++
 src/main/java/com/ruoyi/production/service/impl/ProductWorkOrderServiceImpl.java      |   10 +++--
 src/main/java/com/ruoyi/production/service/impl/ProductionProductMainServiceImpl.java |    6 +++
 src/main/java/com/ruoyi/production/controller/ProductWorkOrderController.java         |    5 ++
 src/main/java/com/ruoyi/production/service/ProductWorkOrderService.java               |    3 +
 src/main/resources/mapper/production/ProductionProductMainMapper.xml                  |   28 ++++++++++++++
 src/main/java/com/ruoyi/production/dto/ProductWorkOrderDto.java                       |   10 +++++
 src/main/java/com/ruoyi/production/mapper/ProductionProductMainMapper.java            |    2 +
 src/main/java/com/ruoyi/production/controller/ProductionProductMainController.java    |    6 +++
 11 files changed, 103 insertions(+), 4 deletions(-)

diff --git a/src/main/java/com/ruoyi/production/controller/ProductWorkOrderController.java b/src/main/java/com/ruoyi/production/controller/ProductWorkOrderController.java
index 029e457..7e8e92c 100644
--- a/src/main/java/com/ruoyi/production/controller/ProductWorkOrderController.java
+++ b/src/main/java/com/ruoyi/production/controller/ProductWorkOrderController.java
@@ -57,4 +57,9 @@
         productWorkOrderservice.down(response, productWorkOrder);
     }
 
+    @ApiOperation("鏍规嵁鐢熶骇璁㈠崟id鏌ヨ鏁版嵁")
+    @GetMapping("/getByProductOrderId/{productOrderId}")
+    public R getProductWorkOrderListByProductOrderId(@PathVariable Long productOrderId) {
+        return R.ok(productWorkOrderservice.getByProductOrderId(productOrderId));
+    }
 }
diff --git a/src/main/java/com/ruoyi/production/controller/ProductionProductMainController.java b/src/main/java/com/ruoyi/production/controller/ProductionProductMainController.java
index 57348e6..3a47e6b 100644
--- a/src/main/java/com/ruoyi/production/controller/ProductionProductMainController.java
+++ b/src/main/java/com/ruoyi/production/controller/ProductionProductMainController.java
@@ -59,4 +59,10 @@
         ExcelUtil<ProductionProductMainDto> util = new ExcelUtil<ProductionProductMainDto>(ProductionProductMainDto.class);
         util.exportExcel(response, list, "鐢熶骇鎶ュ伐鏁版嵁");
     }
+
+    @GetMapping("/getByProductWorkOrderId/{productWorkOrderId}")
+    public R getByProductWorkOrderId(@PathVariable Long productWorkOrderId) {
+        return R.ok(productionProductMainService.getByProductWorkOrderId(productWorkOrderId));
+    }
+
 }
diff --git a/src/main/java/com/ruoyi/production/dto/ProductWorkOrderDto.java b/src/main/java/com/ruoyi/production/dto/ProductWorkOrderDto.java
index 4f53192..7a10f4a 100644
--- a/src/main/java/com/ruoyi/production/dto/ProductWorkOrderDto.java
+++ b/src/main/java/com/ruoyi/production/dto/ProductWorkOrderDto.java
@@ -25,6 +25,9 @@
 
     private Long processId;
 
+    @ApiModelProperty(value = "宸ュ簭缂栧彿")
+    private String processNo;
+
     //鍗曚綅
     @ApiModelProperty(value = "鍗曚綅")
     private String unit;
@@ -51,4 +54,11 @@
 
     @ApiModelProperty(value = "鏄惁鍙互鎶ュ伐")
     private Boolean isCanReport;
+
+    // 鍚堟牸鏁伴噺
+    @ApiModelProperty(value = "鍚堟牸鏁伴噺")
+    private BigDecimal completeQty;
+
+    @ApiModelProperty(value = "涓嶈壇鐜�")
+    private BigDecimal scrapRate;
 }
diff --git a/src/main/java/com/ruoyi/production/mapper/ProductWorkOrderMapper.java b/src/main/java/com/ruoyi/production/mapper/ProductWorkOrderMapper.java
index d637f7d..cd1844f 100644
--- a/src/main/java/com/ruoyi/production/mapper/ProductWorkOrderMapper.java
+++ b/src/main/java/com/ruoyi/production/mapper/ProductWorkOrderMapper.java
@@ -17,6 +17,8 @@
 
     IPage<ProductWorkOrderDto> pageProductWorkOrder(Page<ProductWorkOrderDto> page, @Param("c") ProductWorkOrderDto productWorkOrder);
 
+    List<ProductWorkOrderDto> getByProductOrderId(@Param("productOrderId") Long productOrderId);
+
     ProductWorkOrderDto getProductWorkOrderFlowCard(@Param("id") Long id);
 
     List<ProductWorkOrderDto> selectWorkOrderStartStats(@Param("startDate") String startDate, @Param("endDate") String endDate);
diff --git a/src/main/java/com/ruoyi/production/mapper/ProductionProductMainMapper.java b/src/main/java/com/ruoyi/production/mapper/ProductionProductMainMapper.java
index e63e032..2ccf787 100644
--- a/src/main/java/com/ruoyi/production/mapper/ProductionProductMainMapper.java
+++ b/src/main/java/com/ruoyi/production/mapper/ProductionProductMainMapper.java
@@ -33,4 +33,6 @@
     IPage<ProductionProductMainDto> listProductionDetails(@Param("ew") SalesLedgerProductionAccountingDto salesLedgerProductionAccountingDto, Page page);
 
     ArrayList<Long> listMain(List<Long> idList);
+
+    List<ProductionProductMainDto> getByProductWorkOrderId(Long productWorkOrderId);
 }
diff --git a/src/main/java/com/ruoyi/production/service/ProductWorkOrderService.java b/src/main/java/com/ruoyi/production/service/ProductWorkOrderService.java
index 8ef28e6..24f9adc 100644
--- a/src/main/java/com/ruoyi/production/service/ProductWorkOrderService.java
+++ b/src/main/java/com/ruoyi/production/service/ProductWorkOrderService.java
@@ -7,6 +7,7 @@
 import com.ruoyi.production.pojo.ProductWorkOrder;
 
 import javax.servlet.http.HttpServletResponse;
+import java.util.List;
 
 public interface ProductWorkOrderService extends IService<ProductWorkOrder>{
 
@@ -15,4 +16,6 @@
     int updateProductWorkOrder(ProductWorkOrderDto productWorkOrderDto);
 
     void down(HttpServletResponse response, ProductWorkOrder productWorkOrder);
+
+    List<ProductWorkOrderDto> getByProductOrderId(Long productOrderId);
 }
diff --git a/src/main/java/com/ruoyi/production/service/ProductionProductMainService.java b/src/main/java/com/ruoyi/production/service/ProductionProductMainService.java
index 72d868c..58d25d2 100644
--- a/src/main/java/com/ruoyi/production/service/ProductionProductMainService.java
+++ b/src/main/java/com/ruoyi/production/service/ProductionProductMainService.java
@@ -17,4 +17,6 @@
     Boolean removeProductMain(Long id);
 
     ArrayList<Long> listMain(List<Long> idList);
+
+    List<ProductionProductMainDto> getByProductWorkOrderId(Long productWorkOrderId);
 }
diff --git a/src/main/java/com/ruoyi/production/service/impl/ProductWorkOrderServiceImpl.java b/src/main/java/com/ruoyi/production/service/impl/ProductWorkOrderServiceImpl.java
index 23190db..dc6f264 100644
--- a/src/main/java/com/ruoyi/production/service/impl/ProductWorkOrderServiceImpl.java
+++ b/src/main/java/com/ruoyi/production/service/impl/ProductWorkOrderServiceImpl.java
@@ -29,10 +29,7 @@
 import java.io.InputStream;
 import java.io.OutputStream;
 import java.net.URLEncoder;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
 
 @Service
 @Transactional(rollbackFor = Exception.class)
@@ -143,4 +140,9 @@
         }
     }
 
+    @Override
+    public List<ProductWorkOrderDto> getByProductOrderId(Long productOrderId) {
+        return productWorkOrdermapper.getByProductOrderId(productOrderId);
+    }
+
 }
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 96e7f7e..b3ad019 100644
--- a/src/main/java/com/ruoyi/production/service/impl/ProductionProductMainServiceImpl.java
+++ b/src/main/java/com/ruoyi/production/service/impl/ProductionProductMainServiceImpl.java
@@ -37,6 +37,7 @@
 import java.time.LocalDateTime;
 import java.time.format.DateTimeFormatter;
 import java.util.ArrayList;
+import java.util.Collections;
 import java.util.List;
 import java.util.Map;
 import java.util.stream.Collectors;
@@ -374,4 +375,9 @@
     public ArrayList<Long> listMain(List<Long> idList) {
         return productionProductMainMapper.listMain(idList);
     }
+
+    @Override
+    public List<ProductionProductMainDto> getByProductWorkOrderId(Long productWorkOrderId) {
+        return productionProductMainMapper.getByProductWorkOrderId(productWorkOrderId);
+    }
 }
diff --git a/src/main/resources/mapper/production/ProductWorkOrderMapper.xml b/src/main/resources/mapper/production/ProductWorkOrderMapper.xml
index d697825..8a4a5de 100644
--- a/src/main/resources/mapper/production/ProductWorkOrderMapper.xml
+++ b/src/main/resources/mapper/production/ProductWorkOrderMapper.xml
@@ -53,6 +53,39 @@
             </if>
         order by pwo.priority
     </select>
+
+    <select id="getByProductOrderId" resultType="com.ruoyi.production.dto.ProductWorkOrderDto">
+        SELECT
+        pwo.*,
+        pp.id as processId,
+        pp.NAME as processName,
+        pp.no as processNo,
+        pm.model,
+        pm.unit,
+        p.product_name AS productName,
+        po.nps_no AS productOrderNpsNo,
+        ppri.drag_sort,
+        ppri.product_route_id,
+        sum(ppo.scrap_qty) scrapQty,
+        ROUND(pwo.complete_quantity / pwo.plan_quantity * 100, 2) AS completionStatus,
+        ROUND(sum(ppo.scrap_qty) / pwo.complete_quantity * 100, 2) AS scrapRate,
+        (pwo.complete_quantity - sum(ppo.scrap_qty)) AS completeQty,
+        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
+        LEFT JOIN product_order po ON po.id = pwo.product_order_id
+        LEFT JOIN product_process pp ON pp.id = ppri.process_id
+        LEFT JOIN product_model pm ON pm.id = ppri.product_model_id
+        LEFT JOIN product p ON p.id = pm.product_id
+        LEFT JOIN production_product_main ppm ON ppm.work_order_id = pwo.id
+        LEFT JOIN production_product_output ppo ON ppo.product_main_id = ppm.id
+        where po.id=#{productOrderId}
+        order by ppri.drag_sort
+    </select>
     <select id="getProductWorkOrderFlowCard" resultType="com.ruoyi.production.dto.ProductWorkOrderDto">
         SELECT
         pwo.*,
diff --git a/src/main/resources/mapper/production/ProductionProductMainMapper.xml b/src/main/resources/mapper/production/ProductionProductMainMapper.xml
index 11301ad..4ac2dce 100644
--- a/src/main/resources/mapper/production/ProductionProductMainMapper.xml
+++ b/src/main/resources/mapper/production/ProductionProductMainMapper.xml
@@ -53,6 +53,34 @@
         order by ppm.id
 
     </select>
+    <select id="getByProductWorkOrderId" resultType="com.ruoyi.production.dto.ProductionProductMainDto">
+        select ppm.*,
+        pwo.work_order_no as workOrderNo,
+        pwo.status as workOrderStatus,
+        u.nick_name as nickName,
+        p.product_name as productName,
+        pp.name as process,
+        pm.model as productModelName,
+        ppo.quantity,
+        ppo.scrap_qty,
+        ppo.other_data,
+        pm.unit,
+        sl.sales_contract_no salesContractNo
+        from
+        production_product_main ppm
+        left join product_work_order pwo on pwo.id = ppm.work_order_id
+        left join product_process_route_item ppri on ppri.id = pwo.product_process_route_item_id
+        left join product_process pp on pp.id = ppri.process_id
+        left join product_order po on po.id = pwo.product_order_id
+        left join production_product_output ppo on ppm.id = ppo.product_main_id
+        left join product_model pm on pm.id = ppo.product_model_id
+        left join product p on p.id = pm.product_id
+        left join sales_ledger sl on sl.id = po.sales_ledger_id
+        left join sys_user u on u.user_id = ppm.user_id
+        where pwo.id = #{productWorkOrderId}
+        order by ppm.id
+    </select>
+
     <select id="getOrderByMainId" resultType="com.ruoyi.production.pojo.ProductOrder">
         select po.*
         from product_order po

--
Gitblit v1.9.3