Files
education/backend/roomroot-jwgl/target/classes/com/roomroot/jwgl/mapper/KCBBZMXMapper.xml
T
2026-08-21 14:39:03 +08:00

114 lines
5.1 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.roomroot.jwgl.mapper.KCBBZMXMapper">
<!-- 教学保障计划列表结果映射 -->
<resultMap id="TeachingSupportPlanMap" type="com.roomroot.jwgl.vo.courserunning.TeachingSupportPlanVO">
<result column="保障明细编号" property="kcbbzmxbh"/>
<result column="课次编号" property="sskcbbh"/>
<result column="保障提供明细编号" property="bztgmxbh"/>
<result column="保障提供明细名称" property="bztgmxmc"/>
<result column="单位" property="dw"/>
<result column="保障类别名称" property="zzlmc"/>
<result column="年度" property="nd"/>
<result column="数量" property="sl"/>
<result column="备注" property="bz"/>
<result column="确认状态" property="qrzt"/>
<result column="确认人编号" property="qrrbh"/>
<result column="确认人姓名" property="qrrxm"/>
<result column="确认时间" property="qrsj"/>
<result column="确认备注" property="qrbz"/>
<result column="创建时间" property="cjsj"/>
<result column="更新时间" property="updateTime"/>
</resultMap>
<!-- 教学保障历史联想结果映射 -->
<resultMap id="TeachingSupportHistoryMap" type="com.roomroot.jwgl.vo.courserunning.TeachingSupportHistoryVO">
<result column="保障提供明细编号" property="bztgmxbh"/>
<result column="保障提供明细名称" property="bztgmxmc"/>
<result column="单位" property="dw"/>
<result column="保障类别编号" property="bzlbbh"/>
<result column="保障类别名称" property="zzlmc"/>
<result column="使用次数" property="syscs"/>
<result column="最近时间" property="zjsj"/>
<result column="平均数量" property="pjsl"/>
<result column="最近数量" property="zjsl"/>
</resultMap>
<!-- 根据实施_课程编号查询历史登记过的保障物资(历史联想) -->
<select id="selectHistoryBySskcbh" resultMap="TeachingSupportHistoryMap">
SELECT
a.保障提供明细编号 AS 保障提供明细编号,
m.名称 AS 保障提供明细名称,
m.单位,
m.保障类别编号,
l.名称 AS 保障类别名称,
COUNT(a.编号) AS 使用次数,
MAX(a.创建时间) AS 最近时间,
CAST(ROUND(AVG(a.数量), 0) AS INT) AS 平均数量,
MAX(a.数量) KEEP (DENSE_RANK LAST ORDER BY a.创建时间) AS 最近数量
FROM "课程表_保障明细" a
INNER JOIN "实施_课程表" b ON a.课程表编号 = b.编号
LEFT JOIN "保障提供明细" m ON a.保障提供明细编号 = m.编号
LEFT JOIN "保障类别" l ON m.保障类别编号 = l.编号
WHERE b.实施_课程编号 = #{sskcbh}
AND a.课程表编号 != #{sskcbbh}
GROUP BY
a.保障提供明细编号,
m.名称,
m.单位,
m.保障类别编号,
l.名称
ORDER BY 使用次数 DESC, 最近时间 DESC
</select>
<!-- 根据课次编号查询教学保障计划列表 -->
<select id="selectBySskcbbh" resultMap="TeachingSupportPlanMap">
SELECT
a.编号 AS 保障明细编号,
a.课程表编号 AS 课次编号,
a.保障提供明细编号,
m.名称 AS 保障提供明细名称,
m.单位,
l.名称 AS 保障类别名称,
a.年度,
a.数量,
a.备注,
CASE
WHEN a.备注 LIKE '%"confirmed":true%' THEN 1
ELSE 0
END AS 确认状态,
CASE
WHEN a.备注 LIKE '%"confirmed":true%' THEN
REGEXP_SUBSTR(a.备注, '"confirmedBy":"([^"]*)"', 1, 1, NULL, 1)
ELSE NULL
END AS 确认人编号,
t.姓名 AS 确认人姓名,
CASE
WHEN a.备注 LIKE '%"confirmed":true%' THEN
TO_DATE(REGEXP_SUBSTR(a.备注, '"confirmedAt":"([^"]*)"', 1, 1, NULL, 1), 'YYYY-MM-DD HH24:MI:SS')
ELSE NULL
END AS 确认时间,
CASE
WHEN a.备注 LIKE '%"confirmed":true%' THEN
REGEXP_SUBSTR(a.备注, '"confirmRemark":"([^"]*)"', 1, 1, NULL, 1)
ELSE NULL
END AS 确认备注,
a.创建时间,
a.update_time AS 更新时间
FROM "课程表_保障明细" a
LEFT JOIN "保障提供明细" m ON a.保障提供明细编号 = m.编号
LEFT JOIN "保障类别" l ON m.保障类别编号 = l.编号
LEFT JOIN "教员表" t ON (
CASE
WHEN a.备注 LIKE '%"confirmed":true%' THEN
REGEXP_SUBSTR(a.备注, '"confirmedBy":"([^"]*)"', 1, 1, NULL, 1)
ELSE NULL
END
) = t.编号
WHERE a.课程表编号 = #{sskcbbh}
ORDER BY a.创建时间 DESC
</select>
</mapper>