<?xml version="1.0" encoding="UTF-8"?>
|
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
<mapper namespace="com.zy.asrs.mapper.MonthlySettleMapper">
|
|
<!-- 通用查询映射结果 -->
|
<resultMap id="BaseResultMap" type="com.zy.asrs.entity.MonthlySettle">
|
<id column="id" property="id" />
|
<result column="settle_no" property="settleNo" />
|
<result column="start_date" property="startDate" />
|
<result column="end_date" property="endDate" />
|
<result column="status" property="status" />
|
<result column="total_in_qty" property="totalInQty" />
|
<result column="total_out_qty" property="totalOutQty" />
|
<result column="total_materials" property="totalMaterials" />
|
<result column="memo" property="memo" />
|
<result column="create_by" property="createBy" />
|
<result column="create_time" property="createTime" />
|
<result column="update_by" property="updateBy" />
|
<result column="update_time" property="updateTime" />
|
<result column="is_deleted" property="isDeleted" />
|
</resultMap>
|
|
<!-- 获取最近的月结记录 -->
|
<select id="selectLatestSettle" resultMap="BaseResultMap">
|
SELECT TOP 1 * FROM man_monthly_settle
|
WHERE is_deleted = 0
|
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 <= #{endDate}
|
</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 <= #{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 <= #{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>
|
|
<!-- 统计月结时间范围内的物料出入库数量(从入库表查询) -->
|
<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 <= #{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)
|
</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 <= #{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)
|
</select>
|
|
<!-- 获取上一个月结的物料期末库存 -->
|
<select id="getPreviousSettleEndingQty" resultType="com.zy.asrs.entity.result.PreviousSettleEndingQtyDTO">
|
SELECT
|
matnr,
|
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>
|
|
<!-- 更新入库订单的月结信息 -->
|
<update id="updateOrderSettleInfo">
|
UPDATE man_order_log_pakin
|
SET monthly_settle_id = #{settleId},
|
monthly_settle_no = #{settleNo}
|
WHERE status = 1
|
AND CONVERT(date, order_time) >= #{startDate}
|
AND order_time <= #{endDate}
|
AND move_status = 2
|
AND (monthly_settle_id IS NULL OR monthly_settle_id = 0)
|
</update>
|
|
<!-- 更新出库订单的月结信息 -->
|
<update id="updateOrderSettleInfoPakout">
|
UPDATE man_order_log_pakout
|
SET monthly_settle_id = #{settleId},
|
monthly_settle_no = #{settleNo}
|
WHERE status = 1
|
AND CONVERT(date, order_time) >= #{startDate}
|
AND order_time <= #{endDate}
|
AND move_status = 2
|
AND (monthly_settle_id IS NULL OR monthly_settle_id = 0)
|
</update>
|
|
<!-- 清除入库订单的月结信息 -->
|
<update id="clearOrderSettleInfo">
|
UPDATE man_order_log_pakin
|
SET monthly_settle_id = NULL,
|
monthly_settle_no = NULL
|
WHERE monthly_settle_id = #{settleId}
|
</update>
|
|
<!-- 清除出库订单的月结信息 -->
|
<update id="clearOrderSettleInfoPakout">
|
UPDATE man_order_log_pakout
|
SET monthly_settle_id = NULL,
|
monthly_settle_no = NULL
|
WHERE monthly_settle_id = #{settleId}
|
</update>
|
|
</mapper>
|