课表申请功能重写 bug修复
This commit is contained in:
@@ -19,7 +19,7 @@
|
||||
a.数量,
|
||||
a.备注
|
||||
FROM "调课申请_保障明细" a
|
||||
LEFT JOIN "保障提供明细表" m ON a.保障提供明细编号 = m.编号
|
||||
LEFT JOIN "保障提供明细" m ON TRIM(m.编号) = TRIM(a.保障提供明细编号)
|
||||
WHERE a.申请编号 = #{dksqbh}
|
||||
ORDER BY a.编号
|
||||
</select>
|
||||
|
||||
@@ -15,11 +15,11 @@
|
||||
SELECT
|
||||
a.编号,
|
||||
a.辅助教员编号,
|
||||
t.姓名 AS 辅助教员姓名,
|
||||
t.教员姓名 AS 辅助教员姓名,
|
||||
a.主教员,
|
||||
a.备注
|
||||
FROM "调课申请_辅助教员" a
|
||||
LEFT JOIN "教员表" t ON a.辅助教员编号 = t.编号
|
||||
LEFT JOIN "教员表" t ON TRIM(t.教员编号) = TRIM(a.辅助教员编号)
|
||||
WHERE a.调课申请编号 = #{dksqbh}
|
||||
ORDER BY a.编号
|
||||
</select>
|
||||
|
||||
@@ -17,7 +17,7 @@
|
||||
r.教室名称,
|
||||
a.备注
|
||||
FROM "调课申请_教室" a
|
||||
LEFT JOIN "教室表" r ON a.教室编号 = r.编号
|
||||
LEFT JOIN "教室表" r ON TRIM(r.教室编号) = TRIM(a.教室编号)
|
||||
WHERE a.调课申请编号 = #{dksqbh}
|
||||
ORDER BY a.编号
|
||||
</select>
|
||||
|
||||
@@ -15,7 +15,7 @@
|
||||
a.学员队编号,
|
||||
d.学员队名称
|
||||
FROM "调课申请_学员队" a
|
||||
LEFT JOIN "学员队表" d ON a.学员队编号 = d.编号
|
||||
LEFT JOIN "学员队表" d ON TRIM(d.学员队编号) = TRIM(a.学员队编号)
|
||||
WHERE a.调课申请编号 = #{dksqbh}
|
||||
ORDER BY a.编号
|
||||
</select>
|
||||
|
||||
+13
-7
@@ -21,7 +21,7 @@
|
||||
<if test="cond != null and cond.xqdc != null">
|
||||
AND EXISTS (
|
||||
SELECT 1 FROM "实施_课程学员队" cxf
|
||||
WHERE cxf."实施_课程编号" = c."编号"
|
||||
WHERE LOWER(RAWTOHEX(c."编号")) = LOWER(REPLACE(TRIM(cxf."实施_课程编号"), '-', ''))
|
||||
AND cxf."学期第次" = #{cond.xqdc}
|
||||
)
|
||||
</if>
|
||||
@@ -49,7 +49,7 @@
|
||||
AND kcb."课次序号" = c."教员课次序号")
|
||||
)) AS bz
|
||||
FROM "实施_课程表" s
|
||||
LEFT JOIN "实施_课程" c ON CAST(c."编号" AS CHAR(36)) = TRIM(s."实施_课程编号")
|
||||
LEFT JOIN "实施_课程" c ON LOWER(RAWTOHEX(c."编号")) = LOWER(REPLACE(TRIM(s."实施_课程编号"), '-', ''))
|
||||
LEFT JOIN "课表" k ON (k."课编号" = c."科目编号" OR k."科目代码" = c."科目编号")
|
||||
LEFT JOIN "教研室表" jys ON jys."教研室代号" = k."教研室代号"
|
||||
LEFT JOIN "教员表" jy ON jy."教员编号" = c."教员编号"
|
||||
@@ -93,7 +93,13 @@
|
||||
|
||||
<sql id="ClassTimetableSelect">
|
||||
SELECT
|
||||
c."编号" AS sskcbh,
|
||||
LOWER(
|
||||
SUBSTR(RAWTOHEX(c."编号"), 1, 8) || '-' ||
|
||||
SUBSTR(RAWTOHEX(c."编号"), 9, 4) || '-' ||
|
||||
SUBSTR(RAWTOHEX(c."编号"), 13, 4) || '-' ||
|
||||
SUBSTR(RAWTOHEX(c."编号"), 17, 4) || '-' ||
|
||||
SUBSTR(RAWTOHEX(c."编号"), 21, 12)
|
||||
) AS sskcbh,
|
||||
(NVL(k."课名称", c."科目编号")
|
||||
|| ' / '
|
||||
|| NVL(TO_CHAR(c."课程课时系数"), '-')) AS kcmcksxs,
|
||||
@@ -101,7 +107,7 @@
|
||||
|| ' / '
|
||||
|| NVL(TO_CHAR(c."教员课次序号"),
|
||||
TO_CHAR((SELECT COUNT(1) FROM "实施_课程表" t
|
||||
WHERE CAST(c."编号" AS CHAR(36)) = TRIM(t."实施_课程编号")
|
||||
WHERE LOWER(RAWTOHEX(c."编号")) = LOWER(REPLACE(TRIM(t."实施_课程编号"), '-', ''))
|
||||
AND COALESCE(t."删除状态", 0) = 0)))) AS zrjykc,
|
||||
c."学时" AS jhxs,
|
||||
c."运行学时" AS yxxs,
|
||||
@@ -113,15 +119,15 @@
|
||||
FROM "实施_课程表" t
|
||||
LEFT JOIN "实施_课程表_教室" jsx ON jsx."实施_课程表编号" = t."编号"
|
||||
LEFT JOIN "教室表" js ON js."教室编号" = jsx."教室编号"
|
||||
WHERE CAST(c."编号" AS CHAR(36)) = TRIM(t."实施_课程编号")
|
||||
WHERE LOWER(RAWTOHEX(c."编号")) = LOWER(REPLACE(TRIM(t."实施_课程编号"), '-', ''))
|
||||
AND COALESCE(t."删除状态", 0) = 0),
|
||||
NVL(js0."教室名称", '-'))) AS rscd,
|
||||
(SELECT WM_CONCAT(DISTINCT sq."事由")
|
||||
FROM "实施_调课申请" sq
|
||||
INNER JOIN "实施_课程表" t ON t."编号" = sq."实施_课程表编号"
|
||||
WHERE CAST(c."编号" AS CHAR(36)) = TRIM(t."实施_课程编号")) AS ssjhbg
|
||||
WHERE LOWER(RAWTOHEX(c."编号")) = LOWER(REPLACE(TRIM(t."实施_课程编号"), '-', ''))) AS ssjhbg
|
||||
FROM "实施_课程" c
|
||||
INNER JOIN "实施_课程学员队" cx ON cx."实施_课程编号" = c."编号"
|
||||
INNER JOIN "实施_课程学员队" cx ON LOWER(RAWTOHEX(c."编号")) = LOWER(REPLACE(TRIM(cx."实施_课程编号"), '-', ''))
|
||||
LEFT JOIN "学员队表" xyd ON xyd."学员队编号" = cx."学员队编号"
|
||||
LEFT JOIN "课表" k ON (k."课编号" = c."科目编号" OR k."科目代码" = c."科目编号")
|
||||
LEFT JOIN "教员表" zjy ON zjy."教员编号" = c."责任教员编号"
|
||||
|
||||
@@ -30,7 +30,6 @@ public interface SSDKSQMapper extends BaseMapper<SSDKSQ> {
|
||||
@Param("nd") Integer nd,
|
||||
@Param("jyspzzt") Integer jyspzzt,
|
||||
@Param("jyscszt") Integer jyscszt,
|
||||
@Param("jgspzt") Integer jgspzt,
|
||||
@Param("sczt") Integer sczt,
|
||||
@Param("cjsjStart") String cjsjStart,
|
||||
@Param("cjsjEnd") String cjsjEnd);
|
||||
|
||||
@@ -22,7 +22,6 @@
|
||||
<result column="创建时间" property="cjsj"/>
|
||||
<result column="教研室批准状态" property="jyspzzt"/>
|
||||
<result column="教研室查收状态" property="jyscszt"/>
|
||||
<result column="机关审批状态" property="jgspzt"/>
|
||||
<result column="发回意见" property="fhyj"/>
|
||||
<result column="删除状态" property="sczt"/>
|
||||
</resultMap>
|
||||
@@ -57,6 +56,7 @@
|
||||
<result column="教研室查收状态" property="jyscszt"/>
|
||||
<result column="教研室查收时间" property="jyscssj"/>
|
||||
<result column="教研室查收人编号" property="jyscsrbh"/>
|
||||
<result column="发回意见" property="fhyj"/>
|
||||
</resultMap>
|
||||
|
||||
<resultMap id="AdjustableLessonMap" type="com.roomroot.jwgl.vo.courserunning.AdjustableLessonVO">
|
||||
@@ -103,17 +103,11 @@
|
||||
a.创建时间,
|
||||
a.教研室批准状态,
|
||||
a.教研室查收状态,
|
||||
(
|
||||
SELECT MAX(sp.审批状态)
|
||||
FROM "实施_调课申请审批" sp
|
||||
WHERE sp.实施_调课申请编号 = a.编号
|
||||
AND sp.审批状态 IS NOT NULL
|
||||
) AS 机关审批状态,
|
||||
a.发回意见,
|
||||
a.删除状态
|
||||
FROM "实施_调课申请" a
|
||||
LEFT JOIN "实施_课程表" b ON TRIM(b.编号) = TRIM(a.实施_课程表编号)
|
||||
LEFT JOIN "实施_课程" e ON CAST(e.编号 AS CHAR(36)) = TRIM(b.实施_课程编号)
|
||||
LEFT JOIN "实施_课程" e ON LOWER(RAWTOHEX(e."编号")) = LOWER(REPLACE(TRIM(b.实施_课程编号), '-', ''))
|
||||
LEFT JOIN "课表" kb ON kb.课编号 = COALESCE(NULLIF(TRIM(a.课编号), ''), e.科目编号)
|
||||
LEFT JOIN "教员表" j ON TRIM(j.教员编号) = TRIM(a.申请教员编号)
|
||||
LEFT JOIN "课程表" kcb ON TRIM(kcb.编号) = TRIM(a.课程表编号)
|
||||
@@ -142,14 +136,6 @@
|
||||
<if test="jyscszt != null">
|
||||
AND a.教研室查收状态 = #{jyscszt}
|
||||
</if>
|
||||
<if test="jgspzt != null">
|
||||
AND (
|
||||
SELECT MAX(sp.审批状态)
|
||||
FROM "实施_调课申请审批" sp
|
||||
WHERE sp.实施_调课申请编号 = a.编号
|
||||
AND sp.审批状态 IS NOT NULL
|
||||
) = #{jgspzt}
|
||||
</if>
|
||||
<if test="sczt != null">
|
||||
AND a.删除状态 = #{sczt}
|
||||
</if>
|
||||
@@ -197,10 +183,11 @@
|
||||
a.教研室批准人编号,
|
||||
a.教研室查收状态,
|
||||
a.教研室查收时间,
|
||||
a.教研室查收人编号
|
||||
a.教研室查收人编号,
|
||||
a.发回意见
|
||||
FROM "实施_调课申请" a
|
||||
LEFT JOIN "实施_课程表" b ON TRIM(b.编号) = TRIM(a.实施_课程表编号)
|
||||
LEFT JOIN "实施_课程" e ON CAST(e.编号 AS CHAR(36)) = TRIM(b.实施_课程编号)
|
||||
LEFT JOIN "实施_课程" e ON LOWER(RAWTOHEX(e."编号")) = LOWER(REPLACE(TRIM(b.实施_课程编号), '-', ''))
|
||||
LEFT JOIN "课表" kb ON kb.课编号 = COALESCE(NULLIF(TRIM(a.课编号), ''), e.科目编号)
|
||||
LEFT JOIN "教员表" j ON TRIM(j.教员编号) = TRIM(a.申请教员编号)
|
||||
WHERE a.编号 = #{ssdksqbh}
|
||||
@@ -252,7 +239,7 @@
|
||||
AND kcb.年度 = e.年度
|
||||
) AS 课程表编号
|
||||
FROM "实施_课程表" b
|
||||
JOIN "实施_课程" e ON CAST(e.编号 AS CHAR(36)) = TRIM(b.实施_课程编号)
|
||||
JOIN "实施_课程" e ON LOWER(RAWTOHEX(e."编号")) = LOWER(REPLACE(TRIM(b.实施_课程编号), '-', ''))
|
||||
LEFT JOIN "课表" kb ON kb.课编号 = e.科目编号
|
||||
LEFT JOIN "教员表" jy ON TRIM(jy.教员编号) = TRIM(e.教员编号)
|
||||
WHERE COALESCE(b.删除状态, 0) = 0
|
||||
|
||||
@@ -1,30 +0,0 @@
|
||||
package com.roomroot.jwgl.mapper;
|
||||
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import com.roomroot.jwgl.entity.SSDKSQSP;
|
||||
import com.roomroot.jwgl.vo.courserunning.ScheduleAdjustAuditVO;
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 实施_调课申请审批 Mapper。
|
||||
* <p>
|
||||
* 提供调课申请审批记录数据的CRUD操作及自定义查询。
|
||||
* </p>
|
||||
*/
|
||||
@Mapper
|
||||
public interface SSDKSQSPMapper extends BaseMapper<SSDKSQSP> {
|
||||
|
||||
/**
|
||||
* 根据调课申请编号查询审批记录列表。
|
||||
* <p>
|
||||
* 关联机构表获取机关名称,关联教员表获取审批人姓名。
|
||||
* </p>
|
||||
*
|
||||
* @param ssdksqbh 调课申请编号
|
||||
* @return 审批记录列表
|
||||
*/
|
||||
List<ScheduleAdjustAuditVO> selectBySsdksqbh(@Param("ssdksqbh") String ssdksqbh);
|
||||
}
|
||||
@@ -1,45 +0,0 @@
|
||||
<?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.SSDKSQSPMapper">
|
||||
|
||||
<!-- 调课申请审批记录结果映射 -->
|
||||
<resultMap id="ScheduleAdjustAuditMap" type="com.roomroot.jwgl.vo.courserunning.ScheduleAdjustAuditVO">
|
||||
<result column="编号" property="bh"/>
|
||||
<result column="实施_调课申请编号" property="ssdksqbh"/>
|
||||
<result column="机关编号" property="jgbh"/>
|
||||
<result column="机关名称" property="jgmc"/>
|
||||
<result column="审批时间" property="spsj"/>
|
||||
<result column="审批状态" property="spzt"/>
|
||||
<result column="审批人编号" property="sprbh"/>
|
||||
<result column="审批人姓名" property="sprxm"/>
|
||||
<result column="查收状态" property="cszt"/>
|
||||
<result column="查收时间" property="cssj"/>
|
||||
<result column="查收人编号" property="csrbh"/>
|
||||
<result column="发回意见" property="fhyj"/>
|
||||
<result column="年度" property="nd"/>
|
||||
</resultMap>
|
||||
|
||||
<!-- 根据调课申请编号查询审批记录列表 -->
|
||||
<select id="selectBySsdksqbh" resultMap="ScheduleAdjustAuditMap">
|
||||
SELECT
|
||||
a.编号,
|
||||
a.实施_调课申请编号,
|
||||
a.机关编号,
|
||||
j.名称 AS 机关名称,
|
||||
a.审批时间,
|
||||
a.审批状态,
|
||||
a.审批人编号,
|
||||
t.姓名 AS 审批人姓名,
|
||||
a.查收状态,
|
||||
a.查收时间,
|
||||
a.查收人编号,
|
||||
a.发回意见,
|
||||
a.年度
|
||||
FROM "实施_调课申请审批" a
|
||||
LEFT JOIN "机构表" j ON a.机关编号 = j.编号
|
||||
LEFT JOIN "教员表" t ON a.审批人编号 = t.编号
|
||||
WHERE a.实施_调课申请编号 = #{ssdksqbh}
|
||||
ORDER BY a.创建时间 DESC
|
||||
</select>
|
||||
|
||||
</mapper>
|
||||
@@ -61,7 +61,7 @@
|
||||
* 内层:按教员编号+日期+节次 GROUP BY,筛选出现>1课次的冲突
|
||||
*
|
||||
* 关键修正:
|
||||
* 1. 关联链路:SSKCB → 实施_课程 c → 课表 k;必须 CAST(c.编号 AS CHAR(36))
|
||||
* 1. 关联链路:SSKCB → 实施_课程 c → 课表 k;VARBINARY 主键用 RAWTOHEX 对齐 CHAR 外键
|
||||
* 2. 主讲/辅讲字段:真实列名「主教员」(1主/0辅)
|
||||
* 3. 日期节次:统一取主表 s
|
||||
*
|
||||
@@ -92,7 +92,7 @@
|
||||
/* 维度过滤主关联:只看该教员的课次(GROUP BY 维度)*/
|
||||
INNER JOIN "实施_课程表_辅助教员" f ON f."实施_课程表编号" = s."编号"
|
||||
/* 课表信息三层关联 */
|
||||
LEFT JOIN "实施_课程" c ON CAST(c."编号" AS CHAR(36)) = s."实施_课程编号"
|
||||
LEFT JOIN "实施_课程" c ON LOWER(RAWTOHEX(c."编号")) = LOWER(REPLACE(TRIM(s."实施_课程编号"), '-', ''))
|
||||
LEFT JOIN "课表" k ON k."科目代码" = c."科目编号"
|
||||
/* ========== 新增 JOIN:聚合该冲突课次的班次/教员/场地所有信息 ========== */
|
||||
LEFT JOIN "实施_课程表_学员队" xyd_link ON xyd_link."实施_课程表编号" = s."编号"
|
||||
|
||||
@@ -62,7 +62,7 @@
|
||||
* 内层:按教室编号+日期+节次 GROUP BY,筛选 COUNT(DISTINCT 课次) > 1
|
||||
*
|
||||
* 关键修正:
|
||||
* 1. 三层关联 JOIN:SSKCB → 实施_课程 → 课表;CAST(ss.编号 AS CHAR(36))
|
||||
* 1. 三层关联 JOIN:SSKCB → 实施_课程 → 课表;VARBINARY 主键用 RAWTOHEX 对齐 CHAR 外键
|
||||
* 2. 日期节次统一取主表 s
|
||||
*
|
||||
* 新增 JOIN(同其他维度):聚合该冲突课次的班次/教员/场地所有明细信息
|
||||
@@ -88,7 +88,7 @@
|
||||
/* 维度过滤主关联:教室维度分组 */
|
||||
INNER JOIN "实施_课程表_教室" c ON c."实施_课程表编号" = s."编号"
|
||||
/* 课表信息三层关联(ss=实施_课程别名,避免与聚合JOIN的别名冲突)*/
|
||||
LEFT JOIN "实施_课程" ss ON CAST(ss."编号" AS CHAR(36)) = s."实施_课程编号"
|
||||
LEFT JOIN "实施_课程" ss ON LOWER(RAWTOHEX(ss."编号")) = LOWER(REPLACE(TRIM(s."实施_课程编号"), '-', ''))
|
||||
LEFT JOIN "课表" k ON k."科目代码" = ss."科目编号"
|
||||
/* ========== 新增 JOIN:聚合该冲突课次的班次/教员/场地所有信息 ========== */
|
||||
LEFT JOIN "实施_课程表_学员队" xyd_link ON xyd_link."实施_课程表编号" = s."编号"
|
||||
|
||||
@@ -60,7 +60,7 @@
|
||||
b.创建时间,
|
||||
b.变动时间
|
||||
FROM "实施_课程表" b
|
||||
LEFT JOIN "实施_课程" a ON b.实施_课程编号 = a.编号
|
||||
LEFT JOIN "实施_课程" a ON LOWER(RAWTOHEX(a."编号")) = LOWER(REPLACE(TRIM(b.实施_课程编号), '-', ''))
|
||||
LEFT JOIN "课程表" c ON a.课编号 = c.课编号
|
||||
WHERE b.删除状态 = 0
|
||||
<if test="sskcbh != null and sskcbh != ''">
|
||||
@@ -116,7 +116,7 @@
|
||||
b.创建时间,
|
||||
b.变动时间
|
||||
FROM "实施_课程表" b
|
||||
LEFT JOIN "实施_课程" a ON b.实施_课程编号 = a.编号
|
||||
LEFT JOIN "实施_课程" a ON LOWER(RAWTOHEX(a."编号")) = LOWER(REPLACE(TRIM(b.实施_课程编号), '-', ''))
|
||||
LEFT JOIN "课程表" c ON a.课编号 = c.课编号
|
||||
WHERE b.编号 = #{sskcbbh}
|
||||
AND b.删除状态 = 0
|
||||
|
||||
@@ -32,10 +32,11 @@
|
||||
JOIN "实施_课程表_学员队" t ON t."实施_课程表编号" = s."编号"
|
||||
<!--
|
||||
修正:三层关联 SSKCB → 实施_课程 → 课表
|
||||
- 类型转换:c."编号" 是 VARBINARY,s."实施_课程编号" 是 CHAR,必须 CAST 才能匹配上
|
||||
- 类型转换:c."编号" 是 VARBINARY(16),s."实施_课程编号" 是 CHAR(36);
|
||||
禁止直接等号(-6147),须 RAWTOHEX 去横线后比较
|
||||
- 科目关联:KB.科目代码 = SSKC.科目编号
|
||||
-->
|
||||
LEFT JOIN "实施_课程" c ON CAST(c."编号" AS CHAR(36)) = s."实施_课程编号"
|
||||
LEFT JOIN "实施_课程" c ON LOWER(RAWTOHEX(c."编号")) = LOWER(REPLACE(TRIM(s."实施_课程编号"), '-', ''))
|
||||
LEFT JOIN "课表" k ON k."科目代码" = c."科目编号"
|
||||
WHERE t."学员队编号" = #{xydbh}
|
||||
<if test="nd != null">
|
||||
@@ -126,7 +127,7 @@
|
||||
/* 维度过滤用:主关联"教学班(学员队)" —— 教学班冲突就是按这个维度 GROUP BY */
|
||||
INNER JOIN "实施_课程表_学员队" t ON t."实施_课程表编号" = s."编号"
|
||||
/* 课表信息三层关联 */
|
||||
LEFT JOIN "实施_课程" c ON CAST(c."编号" AS CHAR(36)) = s."实施_课程编号"
|
||||
LEFT JOIN "实施_课程" c ON LOWER(RAWTOHEX(c."编号")) = LOWER(REPLACE(TRIM(s."实施_课程编号"), '-', ''))
|
||||
LEFT JOIN "课表" k ON k."科目代码" = c."科目编号"
|
||||
/* ========== 新增 JOIN:聚合该冲突课次涉及的所有班次/教员/教室信息 ========== */
|
||||
LEFT JOIN "实施_课程表_学员队" xyd_link ON xyd_link."实施_课程表编号" = s."编号"
|
||||
@@ -206,7 +207,7 @@
|
||||
WM_CONCAT(DISTINCT xyd_info."所属单位") AS responsible_dept_list
|
||||
FROM "实施_课程表" s
|
||||
INNER JOIN "实施_课程表_学员队" t ON t."实施_课程表编号" = s."编号"
|
||||
LEFT JOIN "实施_课程" c ON CAST(c."编号" AS CHAR(36)) = s."实施_课程编号"
|
||||
LEFT JOIN "实施_课程" c ON LOWER(RAWTOHEX(c."编号")) = LOWER(REPLACE(TRIM(s."实施_课程编号"), '-', ''))
|
||||
LEFT JOIN "课表" k ON k."科目代码" = c."科目编号"
|
||||
/* ========== 新增 JOIN:三类业务信息 ========== */
|
||||
LEFT JOIN "实施_课程表_学员队" xyd_link ON xyd_link."实施_课程表编号" = s."编号"
|
||||
|
||||
@@ -2,20 +2,32 @@
|
||||
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||
<mapper namespace="com.roomroot.jwgl.mapper.SSKCMapper">
|
||||
|
||||
<select id="selectBySemester" resultType="com.roomroot.jwgl.entity.SSKC">
|
||||
<resultMap id="SSKCMap" type="com.roomroot.jwgl.entity.SSKC" autoMapping="true">
|
||||
<id column="编号" property="bh" jdbcType="VARBINARY"
|
||||
typeHandler="com.roomroot.jwgl.handler.DmGuidTypeHandler"/>
|
||||
</resultMap>
|
||||
|
||||
<select id="selectBySemester" resultMap="SSKCMap">
|
||||
SELECT * FROM 实施_课程
|
||||
WHERE 年度 = #{nd} AND 学期第次 = #{xqdc} AND 停用 = 0
|
||||
</select>
|
||||
|
||||
<select id="selectByClassBh" resultType="com.roomroot.jwgl.entity.SSKC">
|
||||
<!--
|
||||
达梦:实施_课程.编号 为 VARBINARY(16),实施_课程学员队.实施_课程编号 为 CHAR(36)。
|
||||
禁止 编号 = 实施_课程编号:达梦会把 CHAR 当十六进制转 VARBINARY,UUID 中的 '-' 报 -6147。
|
||||
统一:LOWER(RAWTOHEX(主键)) = LOWER(REPLACE(TRIM(外键), '-', ''))
|
||||
-->
|
||||
<select id="selectByClassBh" resultMap="SSKCMap">
|
||||
SELECT DISTINCT sc.* FROM 实施_课程 sc
|
||||
INNER JOIN 实施_课程学员队 scxd ON sc.编号 = scxd.实施_课程编号
|
||||
INNER JOIN 实施_课程学员队 scxd
|
||||
ON LOWER(RAWTOHEX(sc."编号")) = LOWER(REPLACE(TRIM(scxd."实施_课程编号"), '-', ''))
|
||||
WHERE scxd.学员队编号 = #{classBh} AND sc.年度 = #{nd} AND sc.停用 = 0
|
||||
</select>
|
||||
|
||||
<select id="selectByCourseBhAndClassBh" resultType="com.roomroot.jwgl.entity.SSKC">
|
||||
<select id="selectByCourseBhAndClassBh" resultMap="SSKCMap">
|
||||
SELECT sc.* FROM 实施_课程 sc
|
||||
INNER JOIN 实施_课程学员队 scxd ON sc.编号 = scxd.实施_课程编号
|
||||
INNER JOIN 实施_课程学员队 scxd
|
||||
ON LOWER(RAWTOHEX(sc."编号")) = LOWER(REPLACE(TRIM(scxd."实施_课程编号"), '-', ''))
|
||||
WHERE sc.课编号 = #{courseBh} AND scxd.学员队编号 = #{classBh} AND sc.年度 = #{nd} AND sc.停用 = 0
|
||||
</select>
|
||||
|
||||
|
||||
-16
@@ -1,16 +0,0 @@
|
||||
package com.roomroot.jwgl.mapper;
|
||||
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import com.roomroot.jwgl.entity.ScheduleAdjustStrategy;
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
|
||||
/**
|
||||
* 实施_调课策略 Mapper。
|
||||
* <p>
|
||||
* 提供调课策略的基础 CRUD 能力,时间段限制与免审批策略的匹配查询
|
||||
* 由 Service 层调用 BaseMapper 方法完成。
|
||||
* </p>
|
||||
*/
|
||||
@Mapper
|
||||
public interface ScheduleAdjustStrategyMapper extends BaseMapper<ScheduleAdjustStrategy> {
|
||||
}
|
||||
@@ -1,12 +1,14 @@
|
||||
package com.roomroot.jwgl.mapper;
|
||||
|
||||
import com.roomroot.jwgl.vo.jwtest.PkConflictVO;
|
||||
import com.roomroot.jwgl.vo.jwtest.PkLessonVO;
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 排课测试全查。
|
||||
* 排课测试全查与冲突检查。
|
||||
*/
|
||||
@Mapper
|
||||
public interface TestPkMapper {
|
||||
@@ -15,4 +17,24 @@ public interface TestPkMapper {
|
||||
* 查询全部排课记录,无筛选条件。
|
||||
*/
|
||||
List<PkLessonVO> selectAll();
|
||||
|
||||
/**
|
||||
* 同一班次同一日期节次被安排多门课程。
|
||||
*/
|
||||
List<PkConflictVO> selectClassTimeConflict(@Param("nd") Integer nd);
|
||||
|
||||
/**
|
||||
* 同一班次同一日期节次必修课与选修课重叠。
|
||||
*/
|
||||
List<PkConflictVO> selectElectiveRequiredConflict(@Param("nd") Integer nd);
|
||||
|
||||
/**
|
||||
* 同一教员同一日期节次被安排多门课程。
|
||||
*/
|
||||
List<PkConflictVO> selectTeacherTimeConflict(@Param("nd") Integer nd);
|
||||
|
||||
/**
|
||||
* 同一教室同一日期节次被多门课程占用。
|
||||
*/
|
||||
List<PkConflictVO> selectClassroomTimeConflict(@Param("nd") Integer nd);
|
||||
}
|
||||
|
||||
@@ -39,8 +39,8 @@
|
||||
INNER JOIN "实施_课程表" s
|
||||
ON TRIM(s."编号") = TRIM(tx."实施_课程表编号")
|
||||
LEFT JOIN "实施_课程" c
|
||||
ON REPLACE(LOWER(TRIM(CAST(c."编号" AS CHAR(36)))), '-', '')
|
||||
= REPLACE(LOWER(TRIM(s."实施_课程编号")), '-', '')
|
||||
ON LOWER(RAWTOHEX(c."编号"))
|
||||
= LOWER(REPLACE(TRIM(s."实施_课程编号"), '-', ''))
|
||||
LEFT JOIN "课表" k
|
||||
ON k."课编号" = c."科目编号"
|
||||
LEFT JOIN "课程表" kcb
|
||||
@@ -64,4 +64,247 @@
|
||||
GROUP BY s."编号", s."日期", s."节次", s."年度"
|
||||
</select>
|
||||
|
||||
<!-- 课次明细:一门课一行,含课程/教员/班次/教室/节次时间 -->
|
||||
<sql id="pkLessonRows">
|
||||
SELECT
|
||||
s."编号" AS kcbh,
|
||||
TO_CHAR(s."日期", 'YYYY-MM-DD') AS skrq,
|
||||
s."日期" AS rq,
|
||||
s."节次" AS jc,
|
||||
MAX(jc."开始时间") AS kssj,
|
||||
MAX(jc."结束时间") AS jssj,
|
||||
COALESCE(NULLIF(TRIM(MAX(s."教学内容")), ''), MAX(k."课名称")) AS ktmc,
|
||||
MAX(k."课名称") AS kcmc,
|
||||
MAX(NVL(k."课程类型", NVL(k."课类型", c."课类型"))) AS kclx,
|
||||
COALESCE(WM_CONCAT(DISTINCT jyf."教员姓名"), MAX(jy."教员姓名")) AS jymc,
|
||||
WM_CONCAT(DISTINCT xyd."学员队名称") AS bjmc,
|
||||
COALESCE(WM_CONCAT(DISTINCT jsb."教室名称"), MAX(js."教室名称")) AS jsmc
|
||||
FROM "实施_课程表" s
|
||||
LEFT JOIN "实施_课程" c
|
||||
ON LOWER(RAWTOHEX(c."编号")) = LOWER(REPLACE(TRIM(s."实施_课程编号"), '-', ''))
|
||||
LEFT JOIN "课表" k
|
||||
ON (k."课编号" = c."科目编号" OR k."科目代码" = c."科目编号")
|
||||
LEFT JOIN "课程表" kcb
|
||||
ON kcb."年度" = s."年度"
|
||||
AND kcb."安排时间" = s."计划时间安排"
|
||||
AND TRIM(kcb."教员编号") = TRIM(c."教员编号")
|
||||
LEFT JOIN "教员表" jy
|
||||
ON TRIM(jy."教员编号") = TRIM(NVL(kcb."授课教员编号", c."教员编号"))
|
||||
LEFT JOIN "实施_课程表_辅助教员" fz ON TRIM(fz."实施_课程表编号") = TRIM(s."编号")
|
||||
LEFT JOIN "教员表" jyf ON TRIM(jyf."教员编号") = TRIM(fz."辅助教员编号")
|
||||
LEFT JOIN "实施_课程表_学员队" tx ON TRIM(tx."实施_课程表编号") = TRIM(s."编号")
|
||||
LEFT JOIN "学员队表" xyd ON xyd."学员队编号" = tx."学员队编号"
|
||||
LEFT JOIN "实施_课程表_教室" jsx ON TRIM(jsx."实施_课程表编号") = TRIM(s."编号")
|
||||
LEFT JOIN "教室表" jsb ON jsb."教室编号" = jsx."教室编号"
|
||||
LEFT JOIN "教室表" js ON js."教室编号" = NVL(kcb."教室编号", c."教室编号")
|
||||
LEFT JOIN "节次时间表" jc ON TRIM(jc."节次索引") = TRIM(CAST(s."节次" AS VARCHAR))
|
||||
WHERE NVL(s."删除状态", 0) = 0
|
||||
<if test="nd != null">
|
||||
AND s."年度" = #{nd}
|
||||
</if>
|
||||
GROUP BY s."编号", s."日期", s."节次"
|
||||
</sql>
|
||||
|
||||
<!-- 1. 同一班次同一时间被安排多门课程 -->
|
||||
<select id="selectClassTimeConflict" resultType="com.roomroot.jwgl.vo.jwtest.PkConflictVO">
|
||||
WITH lesson AS (
|
||||
<include refid="pkLessonRows"/>
|
||||
)
|
||||
SELECT
|
||||
'教学班时间冲突' AS ctlx,
|
||||
COALESCE(xyd."学员队名称", ta."学员队编号") AS ctzy,
|
||||
a.skrq AS skrq,
|
||||
a.jc AS jc,
|
||||
a.kssj AS kssj,
|
||||
a.jssj AS jssj,
|
||||
'【' || COALESCE(xyd."学员队名称", ta."学员队编号") || '】在 '
|
||||
|| a.skrq || ' 第' || CAST(a.jc AS VARCHAR) || '节('
|
||||
|| NVL(a.kssj, '-') || '~' || NVL(a.jssj, '-') || ')同时安排了《'
|
||||
|| NVL(a.kcmc, NVL(a.ktmc, '未命名')) || '》(教员:' || NVL(a.jymc, '无')
|
||||
|| ',教室:' || NVL(a.jsmc, '无') || ')与《'
|
||||
|| NVL(b.kcmc, NVL(b.ktmc, '未命名')) || '》(教员:' || NVL(b.jymc, '无')
|
||||
|| ',教室:' || NVL(b.jsmc, '无') || ')' AS sm,
|
||||
a.kcbh AS aKcBh, a.ktmc AS aKtmc, a.kcmc AS aKcmc, a.kclx AS aKclx,
|
||||
a.jymc AS aJymc, a.bjmc AS aBjmc, a.jsmc AS aJsmc,
|
||||
b.kcbh AS bKcBh, b.ktmc AS bKtmc, b.kcmc AS bKcmc, b.kclx AS bKclx,
|
||||
b.jymc AS bJymc, b.bjmc AS bBjmc, b.jsmc AS bJsmc
|
||||
FROM lesson a
|
||||
INNER JOIN lesson b
|
||||
ON TRUNC(a.rq) = TRUNC(b.rq)
|
||||
AND a.jc = b.jc
|
||||
AND TRIM(a.kcbh) < TRIM(b.kcbh)
|
||||
INNER JOIN "实施_课程表_学员队" ta ON TRIM(ta."实施_课程表编号") = TRIM(a.kcbh)
|
||||
INNER JOIN "实施_课程表_学员队" tb
|
||||
ON TRIM(tb."实施_课程表编号") = TRIM(b.kcbh)
|
||||
AND ta."学员队编号" = tb."学员队编号"
|
||||
LEFT JOIN "学员队表" xyd ON xyd."学员队编号" = ta."学员队编号"
|
||||
ORDER BY a.rq, a.jc, ta."学员队编号"
|
||||
</select>
|
||||
|
||||
<!-- 2. 同一班次同一时间必修课与选修课冲突 -->
|
||||
<select id="selectElectiveRequiredConflict" resultType="com.roomroot.jwgl.vo.jwtest.PkConflictVO">
|
||||
WITH lesson AS (
|
||||
<include refid="pkLessonRows"/>
|
||||
)
|
||||
SELECT
|
||||
'必修选修时间冲突' AS ctlx,
|
||||
COALESCE(xyd."学员队名称", ta."学员队编号") AS ctzy,
|
||||
a.skrq AS skrq,
|
||||
a.jc AS jc,
|
||||
a.kssj AS kssj,
|
||||
a.jssj AS jssj,
|
||||
'【' || COALESCE(xyd."学员队名称", ta."学员队编号") || '】在 '
|
||||
|| a.skrq || ' 第' || CAST(a.jc AS VARCHAR) || '节('
|
||||
|| NVL(a.kssj, '-') || '~' || NVL(a.jssj, '-') || ')必修课《'
|
||||
|| NVL(CASE WHEN INSTR(NVL(a.kclx, ''), '选修') > 0 THEN b.kcmc ELSE a.kcmc END,
|
||||
'未命名')
|
||||
|| '》与选修课《'
|
||||
|| NVL(CASE WHEN INSTR(NVL(a.kclx, ''), '选修') > 0 THEN a.kcmc ELSE b.kcmc END,
|
||||
'未命名')
|
||||
|| '》时间重叠;教员分别为 '
|
||||
|| NVL(a.jymc, '无') || ' / ' || NVL(b.jymc, '无')
|
||||
|| ',教室分别为 '
|
||||
|| NVL(a.jsmc, '无') || ' / ' || NVL(b.jsmc, '无') AS sm,
|
||||
a.kcbh AS aKcBh, a.ktmc AS aKtmc, a.kcmc AS aKcmc, a.kclx AS aKclx,
|
||||
a.jymc AS aJymc, a.bjmc AS aBjmc, a.jsmc AS aJsmc,
|
||||
b.kcbh AS bKcBh, b.ktmc AS bKtmc, b.kcmc AS bKcmc, b.kclx AS bKclx,
|
||||
b.jymc AS bJymc, b.bjmc AS bBjmc, b.jsmc AS bJsmc
|
||||
FROM lesson a
|
||||
INNER JOIN lesson b
|
||||
ON TRUNC(a.rq) = TRUNC(b.rq)
|
||||
AND a.jc = b.jc
|
||||
AND TRIM(a.kcbh) < TRIM(b.kcbh)
|
||||
INNER JOIN "实施_课程表_学员队" ta ON TRIM(ta."实施_课程表编号") = TRIM(a.kcbh)
|
||||
INNER JOIN "实施_课程表_学员队" tb
|
||||
ON TRIM(tb."实施_课程表编号") = TRIM(b.kcbh)
|
||||
AND ta."学员队编号" = tb."学员队编号"
|
||||
LEFT JOIN "学员队表" xyd ON xyd."学员队编号" = ta."学员队编号"
|
||||
WHERE (
|
||||
INSTR(NVL(a.kclx, ''), '必修') > 0 AND INSTR(NVL(b.kclx, ''), '选修') > 0
|
||||
) OR (
|
||||
INSTR(NVL(a.kclx, ''), '选修') > 0 AND INSTR(NVL(b.kclx, ''), '必修') > 0
|
||||
)
|
||||
ORDER BY a.rq, a.jc, ta."学员队编号"
|
||||
</select>
|
||||
|
||||
<!-- 3. 同一教员同一时间被安排多门课程 -->
|
||||
<select id="selectTeacherTimeConflict" resultType="com.roomroot.jwgl.vo.jwtest.PkConflictVO">
|
||||
WITH lesson AS (
|
||||
<include refid="pkLessonRows"/>
|
||||
),
|
||||
teacher_link AS (
|
||||
SELECT TRIM(s."编号") AS kcbh, TRIM(NVL(kcb."授课教员编号", c."教员编号")) AS jybh
|
||||
FROM "实施_课程表" s
|
||||
LEFT JOIN "实施_课程" c
|
||||
ON LOWER(RAWTOHEX(c."编号")) = LOWER(REPLACE(TRIM(s."实施_课程编号"), '-', ''))
|
||||
LEFT JOIN "课程表" kcb
|
||||
ON kcb."年度" = s."年度"
|
||||
AND kcb."安排时间" = s."计划时间安排"
|
||||
AND TRIM(kcb."教员编号") = TRIM(c."教员编号")
|
||||
WHERE NVL(s."删除状态", 0) = 0
|
||||
AND TRIM(NVL(kcb."授课教员编号", c."教员编号")) IS NOT NULL
|
||||
AND TRIM(NVL(kcb."授课教员编号", c."教员编号")) <> ''
|
||||
<if test="nd != null">
|
||||
AND s."年度" = #{nd}
|
||||
</if>
|
||||
UNION
|
||||
SELECT TRIM(fz."实施_课程表编号") AS kcbh, TRIM(fz."辅助教员编号") AS jybh
|
||||
FROM "实施_课程表_辅助教员" fz
|
||||
INNER JOIN "实施_课程表" s ON TRIM(s."编号") = TRIM(fz."实施_课程表编号")
|
||||
WHERE NVL(s."删除状态", 0) = 0
|
||||
AND TRIM(fz."辅助教员编号") IS NOT NULL
|
||||
AND TRIM(fz."辅助教员编号") <> ''
|
||||
<if test="nd != null">
|
||||
AND s."年度" = #{nd}
|
||||
</if>
|
||||
)
|
||||
SELECT
|
||||
'教员时间冲突' AS ctlx,
|
||||
COALESCE(jy."教员姓名", ta.jybh) AS ctzy,
|
||||
a.skrq AS skrq,
|
||||
a.jc AS jc,
|
||||
a.kssj AS kssj,
|
||||
a.jssj AS jssj,
|
||||
'教员【' || COALESCE(jy."教员姓名", ta.jybh) || '】在 '
|
||||
|| a.skrq || ' 第' || CAST(a.jc AS VARCHAR) || '节('
|
||||
|| NVL(a.kssj, '-') || '~' || NVL(a.jssj, '-') || ')同时被安排《'
|
||||
|| NVL(a.kcmc, NVL(a.ktmc, '未命名')) || '》(班级:' || NVL(a.bjmc, '无')
|
||||
|| ',教室:' || NVL(a.jsmc, '无') || ')与《'
|
||||
|| NVL(b.kcmc, NVL(b.ktmc, '未命名')) || '》(班级:' || NVL(b.bjmc, '无')
|
||||
|| ',教室:' || NVL(b.jsmc, '无') || ')' AS sm,
|
||||
a.kcbh AS aKcBh, a.ktmc AS aKtmc, a.kcmc AS aKcmc, a.kclx AS aKclx,
|
||||
a.jymc AS aJymc, a.bjmc AS aBjmc, a.jsmc AS aJsmc,
|
||||
b.kcbh AS bKcBh, b.ktmc AS bKtmc, b.kcmc AS bKcmc, b.kclx AS bKclx,
|
||||
b.jymc AS bJymc, b.bjmc AS bBjmc, b.jsmc AS bJsmc
|
||||
FROM lesson a
|
||||
INNER JOIN lesson b
|
||||
ON TRUNC(a.rq) = TRUNC(b.rq)
|
||||
AND a.jc = b.jc
|
||||
AND TRIM(a.kcbh) < TRIM(b.kcbh)
|
||||
INNER JOIN teacher_link ta ON TRIM(ta.kcbh) = TRIM(a.kcbh)
|
||||
INNER JOIN teacher_link tb ON TRIM(tb.kcbh) = TRIM(b.kcbh) AND ta.jybh = tb.jybh
|
||||
LEFT JOIN "教员表" jy ON TRIM(jy."教员编号") = ta.jybh
|
||||
ORDER BY a.rq, a.jc, ta.jybh
|
||||
</select>
|
||||
|
||||
<!-- 4. 同一教室同一时间被多门课程占用 -->
|
||||
<select id="selectClassroomTimeConflict" resultType="com.roomroot.jwgl.vo.jwtest.PkConflictVO">
|
||||
WITH lesson AS (
|
||||
<include refid="pkLessonRows"/>
|
||||
),
|
||||
room_link AS (
|
||||
SELECT TRIM(s."编号") AS kcbh, TRIM(NVL(kcb."教室编号", c."教室编号")) AS jsbh
|
||||
FROM "实施_课程表" s
|
||||
LEFT JOIN "实施_课程" c
|
||||
ON LOWER(RAWTOHEX(c."编号")) = LOWER(REPLACE(TRIM(s."实施_课程编号"), '-', ''))
|
||||
LEFT JOIN "课程表" kcb
|
||||
ON kcb."年度" = s."年度"
|
||||
AND kcb."安排时间" = s."计划时间安排"
|
||||
AND TRIM(kcb."教员编号") = TRIM(c."教员编号")
|
||||
WHERE NVL(s."删除状态", 0) = 0
|
||||
AND TRIM(NVL(kcb."教室编号", c."教室编号")) IS NOT NULL
|
||||
AND TRIM(NVL(kcb."教室编号", c."教室编号")) <> ''
|
||||
<if test="nd != null">
|
||||
AND s."年度" = #{nd}
|
||||
</if>
|
||||
UNION
|
||||
SELECT TRIM(jsx."实施_课程表编号") AS kcbh, TRIM(jsx."教室编号") AS jsbh
|
||||
FROM "实施_课程表_教室" jsx
|
||||
INNER JOIN "实施_课程表" s ON TRIM(s."编号") = TRIM(jsx."实施_课程表编号")
|
||||
WHERE NVL(s."删除状态", 0) = 0
|
||||
AND TRIM(jsx."教室编号") IS NOT NULL
|
||||
AND TRIM(jsx."教室编号") <> ''
|
||||
<if test="nd != null">
|
||||
AND s."年度" = #{nd}
|
||||
</if>
|
||||
)
|
||||
SELECT
|
||||
'教室时间冲突' AS ctlx,
|
||||
COALESCE(js."教室名称", ta.jsbh) AS ctzy,
|
||||
a.skrq AS skrq,
|
||||
a.jc AS jc,
|
||||
a.kssj AS kssj,
|
||||
a.jssj AS jssj,
|
||||
'教室【' || COALESCE(js."教室名称", ta.jsbh) || '】在 '
|
||||
|| a.skrq || ' 第' || CAST(a.jc AS VARCHAR) || '节('
|
||||
|| NVL(a.kssj, '-') || '~' || NVL(a.jssj, '-') || ')同时被《'
|
||||
|| NVL(a.kcmc, NVL(a.ktmc, '未命名')) || '》(教员:' || NVL(a.jymc, '无')
|
||||
|| ',班级:' || NVL(a.bjmc, '无') || ')与《'
|
||||
|| NVL(b.kcmc, NVL(b.ktmc, '未命名')) || '》(教员:' || NVL(b.jymc, '无')
|
||||
|| ',班级:' || NVL(b.bjmc, '无') || ')占用' AS sm,
|
||||
a.kcbh AS aKcBh, a.ktmc AS aKtmc, a.kcmc AS aKcmc, a.kclx AS aKclx,
|
||||
a.jymc AS aJymc, a.bjmc AS aBjmc, a.jsmc AS aJsmc,
|
||||
b.kcbh AS bKcBh, b.ktmc AS bKtmc, b.kcmc AS bKcmc, b.kclx AS bKclx,
|
||||
b.jymc AS bJymc, b.bjmc AS bBjmc, b.jsmc AS bJsmc
|
||||
FROM lesson a
|
||||
INNER JOIN lesson b
|
||||
ON TRUNC(a.rq) = TRUNC(b.rq)
|
||||
AND a.jc = b.jc
|
||||
AND TRIM(a.kcbh) < TRIM(b.kcbh)
|
||||
INNER JOIN room_link ta ON TRIM(ta.kcbh) = TRIM(a.kcbh)
|
||||
INNER JOIN room_link tb ON TRIM(tb.kcbh) = TRIM(b.kcbh) AND ta.jsbh = tb.jsbh
|
||||
LEFT JOIN "教室表" js ON TRIM(js."教室编号") = ta.jsbh
|
||||
ORDER BY a.rq, a.jc, ta.jsbh
|
||||
</select>
|
||||
|
||||
</mapper>
|
||||
|
||||
@@ -216,7 +216,7 @@
|
||||
LEFT JOIN "教员表" j ON j."教员编号" = sp."审批人编号"
|
||||
LEFT JOIN "请假课堂表" qjkt ON qjkt."请假编号" = q."编号"
|
||||
LEFT JOIN "实施_课程表" sskcb ON sskcb."编号" = qjkt."实施_课堂编号"
|
||||
LEFT JOIN "实施_课程" sskc ON sskcb."实施_课程编号" = sskc."编号"
|
||||
LEFT JOIN "实施_课程" sskc ON LOWER(RAWTOHEX(sskc."编号")) = LOWER(REPLACE(TRIM(sskcb."实施_课程编号"), '-', ''))
|
||||
LEFT JOIN "课表" kb ON sskc."科目编号" = kb."课编号"
|
||||
WHERE q."编号" = #{qjbh}
|
||||
</select>
|
||||
|
||||
Reference in New Issue
Block a user