From d6d25613f504d8fc4c6ffa8a1854beb4dac044d0 Mon Sep 17 00:00:00 2001
From: chen.llin <1442464845@qq.comm>
Date: 星期日, 18 一月 2026 09:16:24 +0800
Subject: [PATCH] 菜单

---
 src/main/resources/mapper/MonthlySettleMapper.xml |  146 +++++++++++++++++++++++-------------------------
 1 files changed, 71 insertions(+), 75 deletions(-)

diff --git a/src/main/resources/mapper/MonthlySettleMapper.xml b/src/main/resources/mapper/MonthlySettleMapper.xml
index 78cc204..77e8f9f 100644
--- a/src/main/resources/mapper/MonthlySettleMapper.xml
+++ b/src/main/resources/mapper/MonthlySettleMapper.xml
@@ -27,91 +27,87 @@
         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="statisticsMaterialInOut" resultType="com.zy.asrs.entity.result.MaterialInOutStatDTO">
+    <!-- 缁熻鏈堢粨鏃堕棿鑼冨洿鍐呯殑鐗╂枡鍑哄叆搴撴暟閲忥紙浠庡叆搴撹〃鏌ヨ锛� -->
+    <select id="statisticsMaterialInOutFromPakin" resultType="com.zy.asrs.entity.result.MaterialInOutRawDTO">
         SELECT 
-            matnr,
-            MAX(maktx) as maktx,
-            batch,
-            brand,
-            SUM(in_qty) as inQty,
-            SUM(out_qty) as outQty
-        FROM (
-            SELECT 
-                od.matnr,
-                MAX(od.maktx) as maktx,
-                ISNULL(od.batch, '') as batch,
-                ISNULL(od.brand, '') as brand,
-                SUM(od.qty) as in_qty,
-                0 as out_qty
-            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)
-            GROUP BY od.matnr, od.batch, od.brand
-            UNION ALL
-            SELECT 
-                od.matnr,
-                MAX(od.maktx) as maktx,
-                ISNULL(od.batch, '') as batch,
-                ISNULL(od.brand, '') as brand,
-                0 as in_qty,
-                SUM(od.qty) as out_qty
-            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)
-            GROUP BY od.matnr, od.batch, od.brand
-        ) t
-        GROUP BY matnr, batch, brand
+            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 
+            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>
 
     <!-- 鑾峰彇涓婁竴涓湀缁撶殑鐗╂枡鏈熸湯搴撳瓨 -->
     <select id="getPreviousSettleEndingQty" resultType="com.zy.asrs.entity.result.PreviousSettleEndingQtyDTO">
         SELECT 
             matnr,
-            batch,
-            brand,
+            ISNULL(batch, '') as batch,
+            ISNULL(brand, '') as brand,
+            ISNULL(maktx, '') as maktx,
             ending_qty as endingQty
         FROM man_monthly_settle_detail
         WHERE settle_id = #{previousSettleId}
+        AND is_deleted = 0
     </select>
 
     <!-- 鏇存柊鍏ュ簱璁㈠崟鐨勬湀缁撲俊鎭� -->
@@ -120,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>
 
@@ -132,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