From 0a73b4d40662ea554bdf80b22966901da1abb424 Mon Sep 17 00:00:00 2001
From: zss <zss@example.com>
Date: 星期一, 26 一月 2026 13:45:13 +0800
Subject: [PATCH] 生产工单流转卡

---
 src/main/java/com/ruoyi/production/mapper/ProductWorkOrderMapper.java            |    1 
 src/main/resources/mapper/production/ProductWorkOrderMapper.xml                  |   26 +++++++++++-
 src/main/java/com/ruoyi/production/service/impl/ProductWorkOrderServiceImpl.java |   14 +++++++
 src/main/java/com/ruoyi/production/service/impl/ProductOrderServiceImpl.java     |   23 +++++++++++
 src/main/java/com/ruoyi/production/controller/ProductOrderController.java        |   10 +++++
 src/main/java/com/ruoyi/production/controller/ProductWorkOrderController.java    |    9 ++++
 src/main/java/com/ruoyi/production/service/ProductOrderService.java              |    3 +
 src/main/java/com/ruoyi/production/service/ProductWorkOrderService.java          |    1 
 src/main/java/com/ruoyi/production/dto/ProductWorkOrderDto.java                  |    5 ++
 9 files changed, 89 insertions(+), 3 deletions(-)

diff --git a/src/main/java/com/ruoyi/production/controller/ProductOrderController.java b/src/main/java/com/ruoyi/production/controller/ProductOrderController.java
index 658b40a..442528d 100644
--- a/src/main/java/com/ruoyi/production/controller/ProductOrderController.java
+++ b/src/main/java/com/ruoyi/production/controller/ProductOrderController.java
@@ -64,4 +64,14 @@
     }
 
 
+    /**
+     * 鐢熶骇璁㈠崟娴佽浆鍗℃樉绀哄唴瀹�
+     */
+    @ApiOperation("鐢熶骇璁㈠崟娴佽浆鍗℃樉绀哄唴瀹�")
+    @GetMapping("/getProductOrderFlowCard")
+    public R getProductOrderFlowCard(Long orderId) {
+        return R.ok(productOrderService.getProductOrderFlowCard(orderId));
+    }
+
+
 }
diff --git a/src/main/java/com/ruoyi/production/controller/ProductWorkOrderController.java b/src/main/java/com/ruoyi/production/controller/ProductWorkOrderController.java
index 188a701..001316b 100644
--- a/src/main/java/com/ruoyi/production/controller/ProductWorkOrderController.java
+++ b/src/main/java/com/ruoyi/production/controller/ProductWorkOrderController.java
@@ -43,4 +43,13 @@
         return R.ok(productWorkOrderservice.getById(id));
     }
 
+    /**
+     * 鐢熶骇宸ュ崟娴佽浆鍗℃樉绀哄唴瀹�
+     */
+    @ApiOperation("鐢熶骇宸ュ崟娴佽浆鍗℃樉绀哄唴瀹�")
+    @GetMapping("/getProductWorkOrderFlowCard")
+    public R getProductWorkOrderFlowCard(Long id) {
+        return R.ok(productWorkOrderservice.getProductWorkOrderFlowCard(id));
+    }
+
 }
diff --git a/src/main/java/com/ruoyi/production/dto/ProductWorkOrderDto.java b/src/main/java/com/ruoyi/production/dto/ProductWorkOrderDto.java
index f4ebe75..563260d 100644
--- a/src/main/java/com/ruoyi/production/dto/ProductWorkOrderDto.java
+++ b/src/main/java/com/ruoyi/production/dto/ProductWorkOrderDto.java
@@ -2,11 +2,13 @@
 
 import com.ruoyi.framework.aspectj.lang.annotation.Excel;
 import com.ruoyi.production.pojo.ProductWorkOrder;
+import com.ruoyi.production.pojo.ProductWorkOrderFile;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 
 import java.math.BigDecimal;
+import java.util.List;
 
 @EqualsAndHashCode(callSuper = true)
 @Data
@@ -35,4 +37,7 @@
 
     @ApiModelProperty(value = "瀹屾垚杩涘害")
     private BigDecimal completionStatus;
+
+    @ApiModelProperty(value = "闄勪欢璇︽儏")
+    private List<ProductWorkOrderFile> productWorkOrderFiles;
 }
diff --git a/src/main/java/com/ruoyi/production/mapper/ProductWorkOrderMapper.java b/src/main/java/com/ruoyi/production/mapper/ProductWorkOrderMapper.java
index 8a8a52f..b0b8d6a 100644
--- a/src/main/java/com/ruoyi/production/mapper/ProductWorkOrderMapper.java
+++ b/src/main/java/com/ruoyi/production/mapper/ProductWorkOrderMapper.java
@@ -17,4 +17,5 @@
 
     IPage<ProductWorkOrderDto> pageProductWorkOrder(Page<ProductWorkOrderDto> page, @Param("c") ProductWorkOrderDto productWorkOrder);
 
+    ProductWorkOrderDto getProductWorkOrderFlowCard(@Param("id") Long id);
 }
diff --git a/src/main/java/com/ruoyi/production/service/ProductOrderService.java b/src/main/java/com/ruoyi/production/service/ProductOrderService.java
index 78a3de1..4babc68 100644
--- a/src/main/java/com/ruoyi/production/service/ProductOrderService.java
+++ b/src/main/java/com/ruoyi/production/service/ProductOrderService.java
@@ -6,6 +6,7 @@
 import com.ruoyi.production.dto.ProductBomDto;
 import com.ruoyi.production.dto.ProductOrderDto;
 import com.ruoyi.production.dto.ProductStructureDto;
+import com.ruoyi.production.dto.ProductWorkOrderDto;
 import com.ruoyi.production.pojo.ProcessRoute;
 import com.ruoyi.production.pojo.ProductOrder;
 
@@ -21,4 +22,6 @@
     List<ProcessRoute> listProcessRoute(Long productModelId);
 
     List<ProductStructureDto> listProcessBom(Long orderId);
+
+    List<ProductWorkOrderDto> getProductOrderFlowCard(Long orderId);
 }
diff --git a/src/main/java/com/ruoyi/production/service/ProductWorkOrderService.java b/src/main/java/com/ruoyi/production/service/ProductWorkOrderService.java
index 392230e..49b4fcc 100644
--- a/src/main/java/com/ruoyi/production/service/ProductWorkOrderService.java
+++ b/src/main/java/com/ruoyi/production/service/ProductWorkOrderService.java
@@ -12,4 +12,5 @@
 
     int updateProductWorkOrder(ProductWorkOrderDto productWorkOrderDto);
 
+    ProductWorkOrderDto getProductWorkOrderFlowCard(Long id);
 }
diff --git a/src/main/java/com/ruoyi/production/service/impl/ProductOrderServiceImpl.java b/src/main/java/com/ruoyi/production/service/impl/ProductOrderServiceImpl.java
index 3dc98a1..d2cbd73 100644
--- a/src/main/java/com/ruoyi/production/service/impl/ProductOrderServiceImpl.java
+++ b/src/main/java/com/ruoyi/production/service/impl/ProductOrderServiceImpl.java
@@ -2,11 +2,13 @@
 
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.ruoyi.production.dto.ProductBomDto;
 import com.ruoyi.production.dto.ProductOrderDto;
 import com.ruoyi.production.dto.ProductStructureDto;
+import com.ruoyi.production.dto.ProductWorkOrderDto;
 import com.ruoyi.production.mapper.*;
 import com.ruoyi.production.pojo.*;
 import com.ruoyi.production.service.ProcessRouteService;
@@ -17,6 +19,7 @@
 import java.time.LocalDate;
 import java.time.format.DateTimeFormatter;
 import java.util.List;
+import java.util.stream.Collectors;
 
 @Service
 public class ProductOrderServiceImpl extends ServiceImpl<ProductOrderMapper, ProductOrder> implements ProductOrderService {
@@ -38,6 +41,9 @@
 
     @Autowired
     private ProductWorkOrderMapper productWorkOrderMapper;
+
+    @Autowired
+    private ProductWorkOrderFileMapper productWorkOrderFileMapper;
 
 
     @Override
@@ -110,4 +116,21 @@
     public List<ProductStructureDto> listProcessBom(Long orderId) {
         return productOrderMapper.listProcessBom(orderId);
     }
+
+    @Override
+    public List<ProductWorkOrderDto> getProductOrderFlowCard(Long orderId) {
+        //鏌ヨ璁㈠崟涓嬬殑鎵�鏈夊伐鍗曞苟鎸夌収宸ュ簭鐨勯『搴�
+        List<ProductWorkOrder> productWorkOrders = productWorkOrderMapper.selectList(Wrappers.<ProductWorkOrder>lambdaQuery()
+                .eq(ProductWorkOrder::getProductOrderId, orderId));
+        if (productWorkOrders.size()==0){
+            return null;
+        }
+        List<ProductWorkOrderDto> productWorkOrderDtos = productWorkOrders.stream().map(productWorkOrder -> {
+            ProductWorkOrderDto productWorkOrderFlowCard = productWorkOrderMapper.getProductWorkOrderFlowCard(productWorkOrder.getId());
+            List<ProductWorkOrderFile> productWorkOrderFiles = productWorkOrderFileMapper.selectList(Wrappers.<ProductWorkOrderFile>lambdaQuery().eq(ProductWorkOrderFile::getWorkOrderId, productWorkOrder.getId()));
+            productWorkOrderFlowCard.setProductWorkOrderFiles(productWorkOrderFiles);
+            return productWorkOrderFlowCard;
+        }).collect(Collectors.toList());
+        return productWorkOrderDtos;
+    }
 }
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 6f70e7c..ec6b8a9 100644
--- a/src/main/java/com/ruoyi/production/service/impl/ProductWorkOrderServiceImpl.java
+++ b/src/main/java/com/ruoyi/production/service/impl/ProductWorkOrderServiceImpl.java
@@ -2,15 +2,20 @@
 
 
 import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.ruoyi.production.dto.ProductWorkOrderDto;
+import com.ruoyi.production.mapper.ProductWorkOrderFileMapper;
 import com.ruoyi.production.mapper.ProductWorkOrderMapper;
 import com.ruoyi.production.pojo.ProductWorkOrder;
+import com.ruoyi.production.pojo.ProductWorkOrderFile;
 import com.ruoyi.production.service.ProductWorkOrderService;
 import lombok.AllArgsConstructor;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
+
+import java.util.List;
 
 @Service
 @AllArgsConstructor
@@ -18,6 +23,7 @@
 public class ProductWorkOrderServiceImpl extends ServiceImpl<ProductWorkOrderMapper, ProductWorkOrder> implements ProductWorkOrderService {
 
     private ProductWorkOrderMapper productWorkOrdermapper;
+    private ProductWorkOrderFileMapper productWorkOrderFileMapper;
 
     @Override
     public IPage<ProductWorkOrderDto> listPage(Page<ProductWorkOrderDto> page, ProductWorkOrderDto productWorkOrder) {
@@ -29,4 +35,12 @@
         return productWorkOrdermapper.updateById(productWorkOrderDto);
     }
 
+    @Override
+    public ProductWorkOrderDto getProductWorkOrderFlowCard(Long id) {
+        ProductWorkOrderDto productWorkOrderFlowCard = productWorkOrdermapper.getProductWorkOrderFlowCard(id);
+        List<ProductWorkOrderFile> productWorkOrderFiles = productWorkOrderFileMapper.selectList(Wrappers.<ProductWorkOrderFile>lambdaQuery().eq(ProductWorkOrderFile::getWorkOrderId, id));
+        productWorkOrderFlowCard.setProductWorkOrderFiles(productWorkOrderFiles);
+        return productWorkOrderFlowCard;
+    }
+
 }
diff --git a/src/main/resources/mapper/production/ProductWorkOrderMapper.xml b/src/main/resources/mapper/production/ProductWorkOrderMapper.xml
index 06f79e1..67e5bb6 100644
--- a/src/main/resources/mapper/production/ProductWorkOrderMapper.xml
+++ b/src/main/resources/mapper/production/ProductWorkOrderMapper.xml
@@ -34,13 +34,33 @@
         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
-        <where>
+        where 1=1
             <if test="c.workOrderNo != null and c.workOrderNo != ''">
-                pwo.work_order_no like concat('%',#{c.workOrderNo},'%')
+               and pwo.work_order_no like concat('%',#{c.workOrderNo},'%')
             </if>
             <if test="c.planStartTime != null and c.planEndTime != null">
                 and DATE(pwo.create_time) between #{c.planStartTime} and #{c.planEndTime}
             </if>
-        </where>
+            <if test="c.orderId != null and c.orderId != ''">
+               and pwo.product_order_id = #{c.orderId}
+            </if>
+    </select>
+    <select id="getProductWorkOrderFlowCard" resultType="com.ruoyi.production.dto.ProductWorkOrderDto">
+        SELECT
+        pwo.*,
+        pp.NAME as processName,
+        pm.model,
+        pm.unit,
+        p.product_name AS productName,
+        po.nps_no AS productOrderNpsNo,
+        ROUND(pwo.complete_quantity / pwo.plan_quantity * 100, 2) AS completionStatus
+        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
+        WHERE pwo.id = #{id}
     </select>
 </mapper>

--
Gitblit v1.9.3