部分表名写成了英文名调整

This commit is contained in:
2026-09-18 17:48:31 +08:00
parent cff7b039e3
commit 68b02ea58e
6 changed files with 215 additions and 109 deletions
@@ -13,13 +13,13 @@ import java.time.LocalDateTime;
* </p> * </p>
*/ */
@Data @Data
@TableName("教学日志_学员学习情况") @TableName("课堂日志学员考勤表")
public class JXRZXYXXQK { public class JXRZXYXXQK {
@TableId(value = "编号", type = IdType.INPUT) @TableId(value = "编号", type = IdType.INPUT)
private String bh; private String bh;
@TableField("教学日志编号") @TableField("日志编号")
private String jxrzbh; private String jxrzbh;
@TableField("学员编号") @TableField("学员编号")
@@ -35,7 +35,7 @@ public class JXRZXYXXQK {
@TableField("到课情况") @TableField("到课情况")
private Integer dkqk; private Integer dkqk;
@TableField("请假情况") @TableField("请示情况")
private Integer qjqk; private Integer qjqk;
} }
@@ -3,6 +3,7 @@ package com.roomroot.jwgl.entity;
import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableField;
import lombok.Data; import lombok.Data;
import lombok.EqualsAndHashCode; import lombok.EqualsAndHashCode;
@@ -24,136 +25,163 @@ public class JXSSJHTJB {
/** /**
* 日期 * 日期
*/ */
@TableField("日期")
private LocalDateTime rq; private LocalDateTime rq;
/** /**
* 节次 * 节次
*/ */
@TableField("节次")
private Integer jc; private Integer jc;
/** /**
* 总学时 * 总学时
*/ */
@TableField("总学时")
private Integer zxs; private Integer zxs;
/** /**
* 总节次 * 总节次
*/ */
@TableField("总节次")
private Integer zjc; private Integer zjc;
/** /**
* 已办理计划调整数 * 已办理计划调整数
*/ */
@TableField("已办理计划调整数")
private Integer ybljhdzs; private Integer ybljhdzs;
/** /**
* 调课数 * 调课数
*/ */
@TableField("调课数")
private Integer dks; private Integer dks;
/** /**
* 教学日志填写数 * 教学日志填写数
*/ */
@TableField("教学日志填写数")
private Integer jxrztxs; private Integer jxrztxs;
/** /**
* 已审核教学日志数 * 已审核教学日志数
*/ */
@TableField("已审核教学日志数")
private Integer yshjxrzs; private Integer yshjxrzs;
/** /**
* 听查课数 * 听查课数
*/ */
@TableField("听查课数")
private Integer tcks; private Integer tcks;
/** /**
* 教学督导数 * 教学督导数
*/ */
@TableField("教学督导数")
private Integer jxdds; private Integer jxdds;
/** /**
* 开课课程门数 * 开课课程门数
*/ */
@TableField("开课课程门数")
private Integer kkkcms; private Integer kkkcms;
/** /**
* 课程考核次数 * 课程考核次数
*/ */
@TableField("课程考核次数")
private Integer kckhcs; private Integer kckhcs;
/** /**
* 动用教学场地数 * 动用教学场地数
*/ */
@TableField("动用教学场地数")
private Integer dyjxcds; private Integer dyjxcds;
/** /**
* 上课教员数 * 上课教员数
*/ */
@TableField("上课教员数")
private Integer skjys; private Integer skjys;
/** /**
* 教学班次数 * 教学班次数
*/ */
@TableField("教学班次数")
private Integer jxbcs; private Integer jxbcs;
/** /**
* 实体教学班次数 * 实体教学班次数
*/ */
@TableField("实体教学班次数")
private Integer stjxbcs; private Integer stjxbcs;
/** /**
* 选修教学班次数 * 选修教学班次数
*/ */
@TableField("选修教学班次数")
private Integer xxjxbcs; private Integer xxjxbcs;
/** /**
* 学员总人数 * 学员总人数
*/ */
@TableField("学员总人数")
private Integer xyzrs; private Integer xyzrs;
/** /**
* 教学请假人次 * 教学请假人次
*/ */
@TableField("教学请假人次")
private Integer jxqjrc; private Integer jxqjrc;
/** /**
* 教学请假学员人数 * 教学请假学员人数
*/ */
@TableField("教学请假学员人数")
private Integer jxqjxyrs; private Integer jxqjxyrs;
/** /**
* 缺课人次 * 缺课人次
*/ */
@TableField("缺课人次")
private Integer qkrc; private Integer qkrc;
/** /**
* 缺课人数 * 缺课人数
*/ */
@TableField("缺课人数")
private Integer qkrs; private Integer qkrs;
/** /**
* 已请假缺课人次 * 已请假缺课人次
*/ */
@TableField("已请假缺课人次")
private Integer yqjqkrc; private Integer yqjqkrc;
/** /**
* 已请假缺课人数 * 已请假缺课人数
*/ */
@TableField("已请假缺课人数")
private Integer yqjqkrs; private Integer yqjqkrs;
/** /**
* 未请假缺课人次 * 未请假缺课人次
*/ */
@TableField("未请假缺课人次")
private Integer wqjqkrc; private Integer wqjqkrc;
/** /**
* 未请假缺课人数 * 未请假缺课人数
*/ */
@TableField("未请假缺课人数")
private Integer wqjqkrs; private Integer wqjqkrs;
/** /**
* 修改时间 * 修改时间
*/ */
@TableField("修改时间")
private LocalDateTime xgsj; private LocalDateTime xgsj;
} }
@@ -3,6 +3,7 @@ package com.roomroot.jwgl.entity;
import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableField;
import lombok.Data; import lombok.Data;
import lombok.EqualsAndHashCode; import lombok.EqualsAndHashCode;
@@ -24,231 +25,277 @@ public class KCBMBB {
/** /**
* 模版名称 * 模版名称
*/ */
@TableField("模版名称")
private String mBMC; private String mBMC;
/** /**
* 标题位置 * 标题位置
*/ */
@TableField("标题位置")
private String bTWZ; private String bTWZ;
/** /**
* 专业信息位置 * 专业信息位置
*/ */
@TableField("专业信息位置")
private String zYXXWZ; private String zYXXWZ;
/** /**
* 课表时间行号 * 课表时间行号
*/ */
@TableField("课表时间行号")
private String kBSJHH; private String kBSJHH;
/** /**
* 显示夜间 * 显示夜间
*/ */
@TableField("显示夜间")
private Boolean xSYJ; private Boolean xSYJ;
/** /**
* 末尾列位置 * 末尾列位置
*/ */
@TableField("末尾列位置")
private String mWLWZ; private String mWLWZ;
/** /**
* 课程行位置 * 课程行位置
*/ */
@TableField("课程行位置")
private String kCHWZ; private String kCHWZ;
/** /**
* 课程序号列位置 * 课程序号列位置
*/ */
@TableField("课程序号列位置")
private String kCXHLWZ; private String kCXHLWZ;
/** /**
* 课程名称列位置 * 课程名称列位置
*/ */
@TableField("课程名称列位置")
private String kCMCLWZ; private String kCMCLWZ;
/** /**
* 课程简称列位置 * 课程简称列位置
*/ */
@TableField("课程简称列位置")
private String kCJCLWZ; private String kCJCLWZ;
/** /**
* 课程学时列位置 * 课程学时列位置
*/ */
@TableField("课程学时列位置")
private String kCXSLWZ; private String kCXSLWZ;
/** /**
* 课程类型列位置 * 课程类型列位置
*/ */
@TableField("课程类型列位置")
private String kCLXLWZ; private String kCLXLWZ;
/** /**
* 课程责任教研室列位置 * 课程责任教研室列位置
*/ */
@TableField("课程责任教研室列位置")
private String kCZRJYSLWZ; private String kCZRJYSLWZ;
/** /**
* 课程责任教员列位置 * 课程责任教员列位置
*/ */
@TableField("课程责任教员列位置")
private String kCZRJYLWZ; private String kCZRJYLWZ;
/** /**
* 课程授课教员列位置 * 课程授课教员列位置
*/ */
@TableField("课程授课教员列位置")
private String kCSKJYLWZ; private String kCSKJYLWZ;
/** /**
* 课程人数列位置 * 课程人数列位置
*/ */
@TableField("课程人数列位置")
private String kCRSLWZ; private String kCRSLWZ;
/** /**
* 课程场地列位置 * 课程场地列位置
*/ */
@TableField("课程场地列位置")
private String kCCDLWZ; private String kCCDLWZ;
/** /**
* 全局备注位置 * 全局备注位置
*/ */
@TableField("全局备注位置")
private String qJBZWZ; private String qJBZWZ;
/** /**
* 更新时间 * 更新时间
*/ */
@TableField("更新时间")
private LocalDateTime gXSJ; private LocalDateTime gXSJ;
/** /**
* 上传者 * 上传者
*/ */
@TableField("上传者")
private String sCZ; private String sCZ;
/** /**
* 备注 * 备注
*/ */
@TableField("备注")
private String bZ; private String bZ;
/** /**
* 模版 * 模版
*/ */
@TableField("模版")
private String mB; private String mB;
/** /**
* 模版存在 * 模版存在
*/ */
@TableField("模版存在")
private Boolean mBCZ; private Boolean mBCZ;
/** /**
* 模版可用 * 模版可用
*/ */
@TableField("模版可用")
private Boolean mBKY; private Boolean mBKY;
/** /**
* 备注纵向样式 * 备注纵向样式
*/ */
@TableField("备注纵向样式")
private Boolean bZZXYS; private Boolean bZZXYS;
/** /**
* 无课站位字符 * 无课站位字符
*/ */
@TableField("无课站位字符")
private String wKZWZF; private String wKZWZF;
/** /**
* 队别位置 * 队别位置
*/ */
@TableField("队别位置")
private String dBWZ; private String dBWZ;
/** /**
* 课程合班信息位置 * 课程合班信息位置
*/ */
@TableField("课程合班信息位置")
private String kCHBXXWZ; private String kCHBXXWZ;
/** /**
* 标题格式 * 标题格式
*/ */
@TableField("标题格式")
private String bTGS; private String bTGS;
/** /**
* 副标题格式 * 副标题格式
*/ */
@TableField("副标题格式")
private String fBTGS; private String fBTGS;
/** /**
* 专用教室位置 * 专用教室位置
*/ */
@TableField("专用教室位置")
private String zYJSWZ; private String zYJSWZ;
/** /**
* 附加备注1位置 * 附加备注1位置
*/ */
@TableField("附加备注1位置")
private String fJBZ1WZ; private String fJBZ1WZ;
/** /**
* 附加备注2位置 * 附加备注2位置
*/ */
@TableField("附加备注2位置")
private String fJBZ2WZ; private String fJBZ2WZ;
/** /**
* 课表样式 * 课表样式
*/ */
@TableField("课表样式")
private String kBYS; private String kBYS;
/** /**
* 课表包含选修 * 课表包含选修
*/ */
@TableField("课表包含选修")
private Boolean kBBHXX; private Boolean kBBHXX;
/** /**
* 纵向显示78节 * 纵向显示78节
*/ */
@TableField("纵向显示78节")
private Boolean zXXS78J; private Boolean zXXS78J;
/** /**
* 纵向显示晚上 * 纵向显示晚上
*/ */
@TableField("纵向显示晚上")
private Boolean zXXSWS; private Boolean zXXSWS;
/** /**
* 纵向显示天数 * 纵向显示天数
*/ */
@TableField("纵向显示天数")
private Integer zXXSTS; private Integer zXXSTS;
/** /**
* 课程全部场地列位置 * 课程全部场地列位置
*/ */
@TableField("课程全部场地列位置")
private String kCQBCDLWZ; private String kCQBCDLWZ;
/** /**
* 课程表样式 * 课程表样式
*/ */
@TableField("课程表样式")
private String kCBYS; private String kCBYS;
/** /**
* 课程主讲教员列位置 * 课程主讲教员列位置
*/ */
@TableField("课程主讲教员列位置")
private String kCZJJYLWZ; private String kCZJJYLWZ;
/** /**
* 课程辅导教员列位置 * 课程辅导教员列位置
*/ */
@TableField("课程辅导教员列位置")
private String kCFDJYLWZ; private String kCFDJYLWZ;
/** /**
* 课程周次范围列位置 * 课程周次范围列位置
*/ */
@TableField("课程周次范围列位置")
private String kCZCFWLWZ; private String kCZCFWLWZ;
/** /**
* 课程表起始列位置 * 课程表起始列位置
*/ */
@TableField("课程表起始列位置")
private String kCBQSLWZ; private String kCBQSLWZ;
/** /**
* 课程表一周正课天数 * 课程表一周正课天数
*/ */
@TableField("课程表一周正课天数")
private Integer kCBYZZKTS; private Integer kCBYZZKTS;
/** /**
* JSONZD * JSONZD
*/ */
@TableField("\"json字典\"")
private String jsonZD; private String jsonZD;
} }
@@ -12,7 +12,7 @@ import java.time.LocalDateTime;
* </p> * </p>
*/ */
@Data @Data
@TableName("课时核算标准") @TableName("课时系数方案")
public class KSHBZ { public class KSHBZ {
@TableId(value = "编号", type = IdType.INPUT) @TableId(value = "编号", type = IdType.INPUT)
@@ -22,23 +22,23 @@ public class KSHBZ {
private String mc; private String mc;
/** 主讲教师课时系数 */ /** 主讲教师课时系数 */
@TableField("主讲教师课时系数") @TableField("主讲课时系数")
private Float zjjyksxs; private Float zjjyksxs;
/** 辅讲教师课时系数 */ /** 辅讲教师课时系数 */
@TableField("辅讲教师课时系数") @TableField("辅讲课时系数")
private Float fjjyksxs; private Float fjjyksxs;
/** 讲授方式系数(JSON格式:{"讲授":1.0,"实验":0.8,"实践":0.6}) */ /** 讲授方式系数(JSON格式:{"讲授":1.0,"实验":0.8,"实践":0.6}),实际库中为独立子表[讲授方式课时系数] */
@TableField("讲授方式系数") @TableField(exist = false)
private String jsfsxs; private String jsfsxs;
/** 考试主讲系数 */ /** 考试主讲系数,实际库中无对应列 */
@TableField("考试主讲系数") @TableField(exist = false)
private Float kszjxs; private Float kszjxs;
/** 考试指导教师系数 */ /** 考试指导教师系数,实际库中无对应列 */
@TableField("考试指导教师系数") @TableField(exist = false)
private Float kszdjsxs; private Float kszdjsxs;
@TableField("说明") @TableField("说明")
@@ -3,6 +3,7 @@ package com.roomroot.jwgl.entity;
import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableField;
import lombok.Data; import lombok.Data;
import lombok.EqualsAndHashCode; import lombok.EqualsAndHashCode;
@@ -22,36 +23,43 @@ public class KTRZXYKQB {
/** /**
* 日志编号 * 日志编号
*/ */
@TableField("日志编号")
private String rzbh; private String rzbh;
/** /**
* 学员编号 * 学员编号
*/ */
@TableField("学员编号")
private String xybh; private String xybh;
/** /**
* 学习情况 * 学习情况
*/ */
@TableField("学习情况")
private String xxqk; private String xxqk;
/** /**
* 到课情况 * 到课情况
*/ */
@TableField("到课情况")
private Integer dkqk; private Integer dkqk;
/** /**
* 请示情况 * 请示情况
*/ */
@TableField("请示情况")
private Integer qsqk; private Integer qsqk;
/** /**
* 备注 * 备注
*/ */
@TableField("备注")
private String bz; private String bz;
/** /**
* 学习效果 * 学习效果
*/ */
@TableField("学习效果")
private String xxxg; private String xxxg;
} }
@@ -2,75 +2,105 @@
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.roomroot.jwgl.mapper.OperationAnalysisMapper"> <mapper namespace="com.roomroot.jwgl.mapper.OperationAnalysisMapper">
<!--
各教学系(教研室表.部系)排课完成率:
课程归属经 实施_课程.科目编号 -> 课表.教研室代号 -> 教研室表.部系 解析;
完成判定:该课程在实施_课程表下至少有一条未删除课次。
目标表均无"学期第次"列,xqd 参数保留签名不参与过滤。
-->
<select id="selectCourseCompletionByDept" resultType="com.roomroot.jwgl.vo.courserunning.CourseCompletionByDeptVO"> <select id="selectCourseCompletionByDept" resultType="com.roomroot.jwgl.vo.courserunning.CourseCompletionByDeptVO">
SELECT SELECT
t.JXXBH as jxxbh, COALESCE(jys.部系, '未分配') AS jxxbh,
t.JXXMC as jxxmc, COALESCE(jys.部系, '未分配') AS jxxmc,
COUNT(c.BH) as completedCount, COUNT(DISTINCT CASE WHEN kc.实施_课程编号 IS NOT NULL THEN c.编号 END) AS completedCount,
SUM(c.KCS) as totalCount, COUNT(DISTINCT c.编号) AS totalCount,
CASE WHEN SUM(c.KCS) > 0 THEN ROUND(COUNT(c.BH) * 100.0 / SUM(c.KCS), 2) ELSE 0 END as completionRate CASE WHEN COUNT(DISTINCT c.编号) > 0
FROM SSKC c THEN ROUND(COUNT(DISTINCT CASE WHEN kc.实施_课程编号 IS NOT NULL THEN c.编号 END) * 100.0 / COUNT(DISTINCT c.编号), 2)
LEFT JOIN SSKCB b ON c.SSKCBBH = b.BH ELSE 0 END AS completionRate
LEFT JOIN JXX t ON b.JXXBH = t.BH FROM 实施_课程 c
WHERE c.SCZTF = 0 LEFT JOIN 课表 k ON k.课编号 = c.科目编号
LEFT JOIN 教研室表 jys ON jys.教研室代号 = k.教研室代号
LEFT JOIN (
SELECT DISTINCT 实施_课程编号
FROM 实施_课程表
WHERE COALESCE(删除状态, 0) = 0
) kc ON LOWER(RAWTOHEX(c.编号)) = LOWER(REPLACE(TRIM(kc.实施_课程编号), '-', ''))
WHERE 1 = 1
<if test="nd != null and nd != ''"> <if test="nd != null and nd != ''">
AND c.ND = #{nd} AND c.年度 = #{nd}
</if> </if>
<if test="xqd != null and xqd != ''"> GROUP BY COALESCE(jys.部系, '未分配')
AND c.XQD = #{xqd}
</if>
GROUP BY t.JXXBH, t.JXXMC
ORDER BY completionRate DESC ORDER BY completionRate DESC
</select> </select>
<!--
场地使用率分布(教室表.教学场地类型):
使用率 = 该场地类型下被课次实际使用的教室数 / 启用教室总数;
课次经 实施_课程表_教室 -> 实施_课程表(删除状态=0)关联。
-->
<select id="selectVenueUsageRate" resultType="com.roomroot.jwgl.vo.courserunning.VenueUsageRateVO"> <select id="selectVenueUsageRate" resultType="com.roomroot.jwgl.vo.courserunning.VenueUsageRateVO">
SELECT SELECT
c.CDLYBH as cdlybh, t.lx AS cdlybh,
c.CDLYMC as cdlymc, t.lx AS cdlymc,
COUNT(b.BH) as usageCount, COALESCE(u.usedCount, 0) AS usageCount,
COUNT(DISTINCT b.CDBH) as totalCount, t.totalCount,
CASE WHEN COUNT(DISTINCT b.CDBH) > 0 THEN ROUND(COUNT(b.BH) * 100.0 / COUNT(DISTINCT b.CDBH), 2) ELSE 0 END as usageRate CASE WHEN t.totalCount > 0
FROM SSKC c THEN ROUND(COALESCE(u.usedCount, 0) * 100.0 / t.totalCount, 2)
LEFT JOIN SSKCB b ON c.SSKCBBH = b.BH ELSE 0 END AS usageRate
LEFT JOIN CDLY cdl ON b.CDLYBH = cdl.BH FROM (
WHERE c.SCZTF = 0 SELECT COALESCE(教学场地类型, '未分类') AS lx,
<if test="nd != null and nd != ''"> COUNT(DISTINCT 教室编号) AS totalCount
AND c.ND = #{nd} FROM 教室表
</if> WHERE COALESCE(停用, 0) = 0
<if test="xqd != null and xqd != ''"> GROUP BY COALESCE(教学场地类型, '未分类')
AND c.XQD = #{xqd} ) t
</if> LEFT JOIN (
GROUP BY c.CDLYBH, c.CDLYMC SELECT COALESCE(j.教学场地类型, '未分类') AS lx,
COUNT(DISTINCT kjs.教室编号) AS usedCount
FROM 实施_课程表_教室 kjs
JOIN 实施_课程表 kcb
ON kcb.编号 = kjs.实施_课程表编号
AND COALESCE(kcb.删除状态, 0) = 0
JOIN 教室表 j ON j.教室编号 = kjs.教室编号
WHERE 1 = 1
<if test="nd != null and nd != ''">
AND kcb.年度 = #{nd}
</if>
GROUP BY COALESCE(j.教学场地类型, '未分类')
) u ON u.lx = t.lx
ORDER BY usageRate DESC ORDER BY usageRate DESC
</select> </select>
<!-- 调课频次趋势:实施_调课申请按创建时间所在周(IW)聚合。 -->
<select id="selectScheduleAdjustTrend" resultType="com.roomroot.jwgl.vo.courserunning.ScheduleAdjustTrendVO"> <select id="selectScheduleAdjustTrend" resultType="com.roomroot.jwgl.vo.courserunning.ScheduleAdjustTrendVO">
SELECT SELECT
TO_CHAR(a.CJSJ, 'IW') as period, TO_CHAR(a.创建时间, 'IW') AS period,
'第' || TO_CHAR(a.CJSJ, 'IW') || '周' as periodName, '第' || TO_CHAR(a.创建时间, 'IW') || '周' AS periodName,
COUNT(a.BH) as adjustCount COUNT(a.编号) AS adjustCount
FROM SSDKSQ a FROM 实施_调课申请 a
WHERE a.SCZTF = 0 WHERE COALESCE(a.删除状态, 0) = 0
<if test="nd != null and nd != ''"> <if test="nd != null and nd != ''">
AND a.ND = #{nd} AND a.年度 = #{nd}
</if> </if>
<if test="xqd != null and xqd != ''"> GROUP BY TO_CHAR(a.创建时间, 'IW')
AND a.XQD = #{xqd}
</if>
GROUP BY TO_CHAR(a.CJSJ, 'IW')
ORDER BY period ORDER BY period
</select> </select>
<!-- 整体排课完成率:有未删除课次的课程数 / 课程总数。 -->
<select id="selectOverallCourseCompletionRate" resultType="java.lang.Double"> <select id="selectOverallCourseCompletionRate" resultType="java.lang.Double">
SELECT SELECT
CASE WHEN SUM(c.KCS) > 0 THEN ROUND(COUNT(c.BH) * 100.0 / SUM(c.KCS), 2) ELSE 0 END CASE WHEN COUNT(DISTINCT c.编号) > 0
FROM SSKC c THEN ROUND(COUNT(DISTINCT CASE WHEN kc.实施_课程编号 IS NOT NULL THEN c.编号 END) * 100.0 / COUNT(DISTINCT c.编号), 2)
WHERE c.SCZTF = 0 ELSE 0 END
FROM 实施_课程 c
LEFT JOIN (
SELECT DISTINCT 实施_课程编号
FROM 实施_课程表
WHERE COALESCE(删除状态, 0) = 0
) kc ON LOWER(RAWTOHEX(c.编号)) = LOWER(REPLACE(TRIM(kc.实施_课程编号), '-', ''))
WHERE 1 = 1
<if test="nd != null and nd != ''"> <if test="nd != null and nd != ''">
AND c.ND = #{nd} AND c.年度 = #{nd}
</if>
<if test="xqd != null and xqd != ''">
AND c.XQD = #{xqd}
</if> </if>
</select> </select>
@@ -78,22 +108,28 @@
SELECT 0.0 SELECT 0.0
</select> </select>
<!-- 场地平均使用率:被课次使用的启用教室数 / 启用教室总数。 -->
<select id="selectVenueAvgUsageRate" resultType="java.lang.Double"> <select id="selectVenueAvgUsageRate" resultType="java.lang.Double">
SELECT AVG(v.usageRate) SELECT
CASE WHEN t.totalCount > 0
THEN ROUND(u.usedCount * 100.0 / t.totalCount, 2)
ELSE 0 END
FROM ( FROM (
SELECT SELECT COUNT(DISTINCT 教室编号) AS totalCount
CASE WHEN COUNT(DISTINCT b.CDBH) > 0 THEN ROUND(COUNT(b.BH) * 100.0 / COUNT(DISTINCT b.CDBH), 2) ELSE 0 END as usageRate FROM 教室表
FROM SSKC c WHERE COALESCE(停用, 0) = 0
LEFT JOIN SSKCB b ON c.SSKCBBH = b.BH ) t,
WHERE c.SCZTF = 0 (
SELECT COUNT(DISTINCT kjs.教室编号) AS usedCount
FROM 实施_课程表_教室 kjs
JOIN 实施_课程表 kcb
ON kcb.编号 = kjs.实施_课程表编号
AND COALESCE(kcb.删除状态, 0) = 0
WHERE 1 = 1
<if test="nd != null and nd != ''"> <if test="nd != null and nd != ''">
AND c.ND = #{nd} AND kcb.年度 = #{nd}
</if> </if>
<if test="xqd != null and xqd != ''"> ) u
AND c.XQD = #{xqd}
</if>
GROUP BY b.CDBH
) v
</select> </select>
<select id="selectAvgWeeklyHoursPerTeacher" resultType="java.lang.Double"> <select id="selectAvgWeeklyHoursPerTeacher" resultType="java.lang.Double">
@@ -101,64 +137,51 @@
</select> </select>
<select id="selectTotalScheduleAdjustCount" resultType="java.lang.Integer"> <select id="selectTotalScheduleAdjustCount" resultType="java.lang.Integer">
SELECT COUNT(BH) SELECT COUNT(编号)
FROM SSDKSQ FROM 实施_调课申请
WHERE SCZTF = 0 WHERE COALESCE(删除状态, 0) = 0
<if test="nd != null and nd != ''"> <if test="nd != null and nd != ''">
AND ND = #{nd} AND 年度 = #{nd}
</if>
<if test="xqd != null and xqd != ''">
AND XQD = #{xqd}
</if> </if>
</select> </select>
<select id="selectTotalSupportPlanCount" resultType="java.lang.Integer"> <select id="selectTotalSupportPlanCount" resultType="java.lang.Integer">
SELECT COUNT(BH) SELECT COUNT(编号)
FROM KCBBZMX FROM 课程表_保障明细
WHERE SCZTF = 0 WHERE 1 = 1
<if test="nd != null and nd != ''"> <if test="nd != null and nd != ''">
AND ND = #{nd} AND 年度 = #{nd}
</if>
<if test="xqd != null and xqd != ''">
AND XQD = #{xqd}
</if> </if>
</select> </select>
<!-- 学员教学请假表无"年度"列,按创建时间年份过滤。 -->
<select id="selectTotalLeaveCount" resultType="java.lang.Integer"> <select id="selectTotalLeaveCount" resultType="java.lang.Integer">
SELECT COUNT(BH) SELECT COUNT(编号)
FROM XYJXQJB FROM 学员教学请假表
WHERE SCZTF = 0 WHERE 1 = 1
<if test="nd != null and nd != ''"> <if test="nd != null and nd != ''">
AND ND = #{nd} AND TO_CHAR(创建时间, 'YYYY') = #{nd}
</if>
<if test="xqd != null and xqd != ''">
AND XQD = #{xqd}
</if> </if>
</select> </select>
<!-- 待审批调课:教研室批准状态为 0。 -->
<select id="selectPendingAdjustCount" resultType="java.lang.Integer"> <select id="selectPendingAdjustCount" resultType="java.lang.Integer">
SELECT COUNT(BH) SELECT COUNT(编号)
FROM SSDKSQ FROM 实施_调课申请
WHERE SCZTF = 0 WHERE COALESCE(删除状态, 0) = 0
AND JYSPZZT = 0 AND COALESCE(教研室批准状态, 0) = 0
<if test="nd != null and nd != ''"> <if test="nd != null and nd != ''">
AND ND = #{nd} AND 年度 = #{nd}
</if>
<if test="xqd != null and xqd != ''">
AND XQD = #{xqd}
</if> </if>
</select> </select>
<!-- 待审批请假:状态 = '0'。 -->
<select id="selectPendingLeaveCount" resultType="java.lang.Integer"> <select id="selectPendingLeaveCount" resultType="java.lang.Integer">
SELECT COUNT(BH) SELECT COUNT(编号)
FROM XYJXQJB FROM 学员教学请假表
WHERE SCZTF = 0 WHERE 状态 = '0'
AND ZT = '0'
<if test="nd != null and nd != ''"> <if test="nd != null and nd != ''">
AND ND = #{nd} AND TO_CHAR(创建时间, 'YYYY') = #{nd}
</if>
<if test="xqd != null and xqd != ''">
AND XQD = #{xqd}
</if> </if>
</select> </select>