From 2d03ec79e1892248b520cf097e8a58dd82a4892f Mon Sep 17 00:00:00 2001
From: liyong <18434998025@163.com>
Date: 星期五, 22 五月 2026 15:19:15 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/dev_天津_阳光彩印' into dev_天津_阳光彩印

---
 src/main/resources/mapper/production/ProductOrderMapper.xml |  101 ++++++++++++++++++++++++++++++++++++++++++--------
 1 files changed, 84 insertions(+), 17 deletions(-)

diff --git a/src/main/resources/mapper/production/ProductOrderMapper.xml b/src/main/resources/mapper/production/ProductOrderMapper.xml
index 7fe84fa..ca237eb 100644
--- a/src/main/resources/mapper/production/ProductOrderMapper.xml
+++ b/src/main/resources/mapper/production/ProductOrderMapper.xml
@@ -17,14 +17,49 @@
         select po.*,
         sl.sales_contract_no,
         sl.customer_name,
-        slp.product_category,
-        slp.specification_model,
+        p.product_name as product_category,
+        pm.model as specification_model,
+        pm.unit,
         ppr.process_route_code,
-        ROUND(po.complete_quantity / po.quantity * 100, 2) AS completionStatus
+        pb.bom_no,
+        sl.id as sales_ledger_id,
+        ROUND(po.complete_quantity / po.quantity * 100, 2) AS completionStatus,
+        DATEDIFF(sl.delivery_date, CURDATE()) AS delivery_days_diff,
+        sl.delivery_date,
+        sl.actually_delivery_date,
+        sl.execution_date,
+        t6.id as print_id,
+        CASE
+        WHEN shipping_status_counts.total_count = 0 THEN false
+        WHEN shipping_status_counts.unshipped_count = 0 THEN true
+        ELSE false
+        END AS is_fh,
+        CASE
+        WHEN t7.product_num > 0 THEN 1
+        ELSE 0
+        END AS has_product
         from product_order po
         left join sales_ledger sl on po.sales_ledger_id = sl.id
-        left join sales_ledger_product slp on po.product_model_id = slp.id
+        LEFT JOIN (
+        SELECT sales_ledger_id,
+        COUNT(*) as total_count,
+        SUM(CASE WHEN status != '宸插彂璐�' THEN 1 ELSE 0 END) as unshipped_count
+        FROM shipping_info
+        GROUP BY sales_ledger_id
+        ) shipping_status_counts ON sl.id = shipping_status_counts.sales_ledger_id
+            left join product_model pm on po.product_model_id = pm.id
+            left join product p on pm.product_id = p.id
+        left join sales_ledger_product slp on po.sale_ledger_product_id = slp.id and slp.type = 1
         left join product_process_route ppr on po.id = ppr.product_order_id
+        left join product_bom pb on pb.id = ppr.bom_id
+        left join production_print_order as t6 on t6.product_order_id = po.id
+        LEFT JOIN (SELECT n1.product_order_id,
+            COUNT(1) AS product_num
+            FROM product_work_order n1
+            INNER JOIN production_product_main n2
+            ON n1.id = n2.work_order_id
+            GROUP BY n1.product_order_id) t7
+        ON t7.product_order_id = po.id
         <where>
             <if test="c.npsNo != null and c.npsNo != ''">
                 and po.nps_no like concat('%',#{c.npsNo},'%')
@@ -41,26 +76,58 @@
             <if test="c.specificationModel != null and c.specificationModel != ''">
                 and slp.specification_model like concat('%',#{c.specificationModel},'%')
             </if>
+            <if test="c.startTime != null and c.endTime != null">
+                and po.create_time between #{c.startTime} and #{c.endTime}
+            </if>
         </where>
-    </select>
-    <select id="productMainByOrderId" resultType="com.ruoyi.production.dto.ProductOrderDto">
-        select po.*,
-               pwo.work_order_no,
-               pwo.report_work,
-               pwo.status,
-               pwo.quantity,
-               pwo.plan_quantity
-        from product_order po
-                 left join product_work_order pwo on po.id = pwo.product_order_id
-        where po.id = #{c.id}
+        order by po.id desc
     </select>
     <select id="listProcessRoute" resultType="com.ruoyi.production.pojo.ProcessRoute">
         select pr.*
         from process_route pr
                  left join product_model pm on pr.product_model_id = pm.id
-                 left join sales_ledger_product slp on pm.id = slp.product_model_id
-        where slp.id = #{productModelId}
+        where pm.id = #{productModelId}
+    </select>
+    <select id="listProcessBom" resultType="com.ruoyi.production.dto.ProductStructureDto">
+        select ps.id,
+               ps.product_model_id,
+               ps.process_id,
+               ps.unit_quantity,
+               ps.unit_quantity * po.quantity as demandedQuantity,
+               ps.unit,
+               p.product_name,
+               pp.name as  process_name,
+               pm.product_id,
+               pm.model,
+               ps.process_route_open_num,
+               ps.process_route_num,
+               ps.process_route_add_num
+        from
+            product_structure ps
+                left join product_model pm on ps.product_model_id = pm.id
+                left join product p on pm.product_id = p.id
+                left join product_process pp on ps.process_id = pp.id
+                left join product_process_route ppr on ps.bom_id = ppr.bom_id
+                left join product_order po on po.id = ppr.product_order_id
+        where ppr.product_order_id = #{orderId}
+        order by ps.id
     </select>
 
 
+    <select id="countCreated" resultType="java.lang.Integer">
+        SELECT count(1) FROM product_order
+        WHERE create_time &gt;= #{startDate} AND create_time &lt;= #{endDate}
+    </select>
+
+    <select id="countCompleted" resultType="java.lang.Integer">
+        SELECT count(1) FROM product_order
+        WHERE end_time &gt;= #{startDate} AND end_time &lt;= #{endDate}
+          AND complete_quantity &gt;= quantity
+    </select>
+
+    <select id="countPending" resultType="java.lang.Integer">
+        SELECT count(1) FROM product_order
+        WHERE create_time &gt;= #{startDate} AND create_time &lt;= #{endDate}
+          AND complete_quantity &lt; quantity
+    </select>
 </mapper>

--
Gitblit v1.9.3