Files
xgy-oa/klp-wms/src/main/resources/mapper/klp/WmsDeliveryPlanCoilOperateMapper.xml
Joshi f6ea637c29 fix(sql): 优化coil操作查询逻辑
- 使用ROW_NUMBER窗口函数替代子查询和JOIN操作
- 简化查询结构,提高执行效率
- 保留对coilIds的可选过滤条件
- 确保每个coilId只返回最新的记录
2025-12-17 14:32:30 +08:00

38 lines
1.5 KiB
XML

<?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.klp.mapper.WmsDeliveryPlanCoilOperateMapper">
<resultMap type="com.klp.domain.WmsDeliveryPlanCoilOperate" id="WmsDeliveryPlanCoilOperateResult">
<result property="operateId" column="operate_id"/>
<result property="planId" column="plan_id"/>
<result property="coilId" column="coil_id"/>
<result property="operateType" column="operate_type"/>
<result property="createBy" column="create_by"/>
<result property="createTime" column="create_time"/>
<result property="remark" column="remark"/>
<result property="delFlag" column="del_flag"/>
<result property="updateBy" column="update_by"/>
<result property="updateTime" column="update_time"/>
</resultMap>
<select id="getCoilOperate" resultMap="WmsDeliveryPlanCoilOperateResult">
SELECT * FROM (
SELECT
t.*,
ROW_NUMBER() OVER (PARTITION BY t.coil_id ORDER BY t.create_time DESC) AS rn
FROM wms_delivery_plan_coil_operate t
WHERE plan_id = #{planId}
<if test="coilIds != null and coilIds.length > 0">
AND coil_id IN
<foreach collection="coilIds" item="coilId" open="(" separator="," close=")">
#{coilId}
</foreach>
</if>
) tmp
WHERE tmp.rn = 1
</select>
</mapper>