自动化立体仓库 - WMS系统
chen.llin
2025-12-24 f7ac54f86129a2d4875c7107a84556849c3d8c2a
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>