From f7ac54f86129a2d4875c7107a84556849c3d8c2a Mon Sep 17 00:00:00 2001
From: chen.llin <1442464845@qq.comm>
Date: 星期三, 24 十二月 2025 18:16:54 +0800
Subject: [PATCH] 月结-完成字段调整,和部分sql优化

---
 src/main/resources/mapper/MonthlySettleMapper.xml |  121 ++++++++++++++++++++--------------------
 1 files changed, 60 insertions(+), 61 deletions(-)

diff --git a/src/main/resources/mapper/MonthlySettleMapper.xml b/src/main/resources/mapper/MonthlySettleMapper.xml
index 318d66e..77e8f9f 100644
--- a/src/main/resources/mapper/MonthlySettleMapper.xml
+++ b/src/main/resources/mapper/MonthlySettleMapper.xml
@@ -27,75 +27,74 @@
         ORDER BY end_date DESC
     </select>
 
-    <!-- 缁熻鏈堢粨鏃堕棿鑼冨洿鍐呯殑璁㈠崟鏁伴噺 -->
-    <select id="countOrdersInRange" resultType="int">
-        SELECT COUNT(*) FROM man_order
-        WHERE status = 1
-        AND order_time >= #{startDate}
-        AND order_time &lt;= #{endDate}
+    <!-- 缁熻鏈堢粨鏃堕棿鑼冨洿鍐呮湭瀹屾垚鐨勫叆搴撹鍗曟暟閲� -->
+    <select id="countUnfinishedOrdersInRangePakin" resultType="int">
+        SELECT COUNT(1) FROM man_order_log_pakin molpi
+        WHERE molpi.status = 1
+        AND molpi.order_time >= #{startDate}
+        AND molpi.order_time &lt;= #{endDate}
+        AND (molpi.settle IS NULL OR molpi.settle != 6)
+        AND (molpi.monthly_settle_id IS NULL OR molpi.monthly_settle_id = 0)
+        AND EXISTS (
+            SELECT 1 FROM man_order_detl_log_pakin modlpi
+            WHERE modlpi.order_id = molpi.id
+            AND (modlpi.anfme > modlpi.qty OR modlpi.qty IS NULL)
+        )
     </select>
 
-    <!-- 缁熻鏈堢粨鏃堕棿鑼冨洿鍐呮湭瀹屾垚鐨勮鍗曟暟閲忥紙鍏ュ簱鍜屽嚭搴擄級 -->
-    <select id="countUnfinishedOrdersInRange" resultType="int">
-        SELECT COUNT(*) FROM (
-            SELECT DISTINCT o.id FROM man_order_log_pakin o
-            INNER JOIN man_order_detl_log_pakin od ON o.id = od.order_id
-            WHERE o.status = 1
-            AND CONVERT(date, o.order_time) >= #{startDate}
-            AND o.order_time &lt;= #{endDate}
-            AND o.move_status != 2
-            AND (od.anfme > od.qty OR od.qty IS NULL)
-            AND (o.monthly_settle_id IS NULL OR o.monthly_settle_id = 0)
-            UNION
-            SELECT DISTINCT o.id FROM man_order_log_pakout o
-            INNER JOIN man_order_detl_log_pakout od ON o.id = od.order_id
-            WHERE o.status = 1
-            AND CONVERT(date, o.order_time) >= #{startDate}
-            AND o.order_time &lt;= #{endDate}
-            AND o.move_status != 2
-            AND (od.anfme > od.qty OR od.qty IS NULL)
-            AND (o.monthly_settle_id IS NULL OR o.monthly_settle_id = 0)
-        ) t
+    <!-- 缁熻鏈堢粨鏃堕棿鑼冨洿鍐呮湭瀹屾垚鐨勫嚭搴撹鍗曟暟閲� -->
+    <select id="countUnfinishedOrdersInRangePakout" resultType="int">
+        SELECT COUNT(1) FROM man_order_log_pakout molpo
+        WHERE molpo.status = 1
+        AND molpo.order_time >= #{startDate}
+        AND molpo.order_time &lt;= #{endDate}
+        AND (molpo.settle IS NULL OR molpo.settle != 6)
+        AND (molpo.monthly_settle_id IS NULL OR molpo.monthly_settle_id = 0)
+        AND EXISTS (
+            SELECT 1 FROM man_order_detl_log_pakout modlpo
+            WHERE modlpo.order_id = molpo.id
+            AND (modlpo.anfme > modlpo.qty OR modlpo.qty IS NULL)
+        )
     </select>
 
     <!-- 缁熻鏈堢粨鏃堕棿鑼冨洿鍐呯殑鐗╂枡鍑哄叆搴撴暟閲忥紙浠庡叆搴撹〃鏌ヨ锛� -->
     <select id="statisticsMaterialInOutFromPakin" resultType="com.zy.asrs.entity.result.MaterialInOutRawDTO">
         SELECT 
-            od.matnr,
-            od.maktx,
-            od.batch,
-            od.brand,
-            SUM(od.qty) as qty,
-            COALESCE(od.pakin_pakout_status, o.pakin_pakout_status) as pakinPakoutStatus
-        FROM man_order_log_pakin o
-        INNER JOIN man_order_detl_log_pakin od ON o.id = od.order_id
-        WHERE o.status = 1
-        AND CONVERT(date, o.order_time) >= #{startDate}
-        AND o.order_time &lt;= #{endDate}
-        AND o.move_status = 2
-        AND (o.monthly_settle_id IS NULL OR o.monthly_settle_id = 0)
-        AND COALESCE(od.pakin_pakout_status, o.pakin_pakout_status) IN (1, 2)
-        GROUP BY od.matnr, od.maktx, od.batch, od.brand, COALESCE(od.pakin_pakout_status, o.pakin_pakout_status)
+            modlpi.matnr,
+            modlpi.maktx,
+            modlpi.batch,
+            modlpi.brand,
+            SUM(modlpi.qty) as qty,
+            COALESCE(modlpi.pakin_pakout_status, molpi.pakin_pakout_status) as pakinPakoutStatus
+        FROM man_order_log_pakin molpi
+        INNER JOIN man_order_detl_log_pakin modlpi ON molpi.id = modlpi.order_id
+        WHERE molpi.status = 1
+        AND molpi.order_time >= #{startDate}
+        AND molpi.order_time &lt;= #{endDate}
+        AND molpi.settle = 6
+        AND (molpi.monthly_settle_id IS NULL OR molpi.monthly_settle_id = 0)
+        AND COALESCE(modlpi.pakin_pakout_status, molpi.pakin_pakout_status) IN (1, 2)
+        GROUP BY modlpi.matnr, modlpi.maktx, modlpi.batch, modlpi.brand, COALESCE(modlpi.pakin_pakout_status, molpi.pakin_pakout_status)
     </select>
 
     <!-- 缁熻鏈堢粨鏃堕棿鑼冨洿鍐呯殑鐗╂枡鍑哄叆搴撴暟閲忥紙浠庡嚭搴撹〃鏌ヨ锛� -->
     <select id="statisticsMaterialInOutFromPakout" resultType="com.zy.asrs.entity.result.MaterialInOutRawDTO">
         SELECT 
-            od.matnr,
-            od.maktx,
-            od.batch,
-            od.brand,
-            SUM(od.qty) as qty,
-            COALESCE(od.pakin_pakout_status, o.pakin_pakout_status) as pakinPakoutStatus
-        FROM man_order_log_pakout o
-        INNER JOIN man_order_detl_log_pakout od ON o.id = od.order_id
-        WHERE o.status = 1
-        AND CONVERT(date, o.order_time) >= #{startDate}
-        AND o.order_time &lt;= #{endDate}
-        AND o.move_status = 2
-        AND (o.monthly_settle_id IS NULL OR o.monthly_settle_id = 0)
-        AND COALESCE(od.pakin_pakout_status, o.pakin_pakout_status) IN (1, 2)
-        GROUP BY od.matnr, od.maktx, od.batch, od.brand, COALESCE(od.pakin_pakout_status, o.pakin_pakout_status)
+            modlpo.matnr,
+            modlpo.maktx,
+            modlpo.batch,
+            modlpo.brand,
+            SUM(modlpo.qty) as qty,
+            COALESCE(modlpo.pakin_pakout_status, molpo.pakin_pakout_status) as pakinPakoutStatus
+        FROM man_order_log_pakout molpo
+        INNER JOIN man_order_detl_log_pakout modlpo ON molpo.id = modlpo.order_id
+        WHERE molpo.status = 1
+        AND molpo.order_time >= #{startDate}
+        AND molpo.order_time &lt;= #{endDate}
+        AND molpo.settle = 6
+        AND (molpo.monthly_settle_id IS NULL OR molpo.monthly_settle_id = 0)
+        AND COALESCE(modlpo.pakin_pakout_status, molpo.pakin_pakout_status) IN (1, 2)
+        GROUP BY modlpo.matnr, modlpo.maktx, modlpo.batch, modlpo.brand, COALESCE(modlpo.pakin_pakout_status, molpo.pakin_pakout_status)
     </select>
 
     <!-- 鑾峰彇涓婁竴涓湀缁撶殑鐗╂枡鏈熸湯搴撳瓨 -->
@@ -117,9 +116,9 @@
         SET monthly_settle_id = #{settleId},
             monthly_settle_no = #{settleNo}
         WHERE status = 1
-        AND CONVERT(date, order_time) >= #{startDate}
+        AND order_time >= #{startDate}
         AND order_time &lt;= #{endDate}
-        AND move_status = 2
+        AND settle = 6
         AND (monthly_settle_id IS NULL OR monthly_settle_id = 0)
     </update>
 
@@ -129,9 +128,9 @@
         SET monthly_settle_id = #{settleId},
             monthly_settle_no = #{settleNo}
         WHERE status = 1
-        AND CONVERT(date, order_time) >= #{startDate}
+        AND order_time >= #{startDate}
         AND order_time &lt;= #{endDate}
-        AND move_status = 2
+        AND settle = 6
         AND (monthly_settle_id IS NULL OR monthly_settle_id = 0)
     </update>
 

--
Gitblit v1.9.1