终审代码,确认无误,添加开发维护文档

This commit is contained in:
2025-08-19 11:33:01 +08:00
parent c9ce661d55
commit 297853c0cd

View File

@@ -523,7 +523,6 @@
select concat('xjbjt-',count(a.id)) as `all`
from cph_new_good_class_apply as a
WHERE a.apply_status = 3
where a.xgstatus = 0
<!-- 知无涯 "中职升高职" 学校终审 -->
union
select concat('zsg-',count(a.id)) as `all`
@@ -635,10 +634,10 @@
WHERE a.apply_status = 2 and f.dept_id = #{id}
<!-- 知无涯"中职升高职" 学务审核 -->
union
select concat('jx-',count(a.id)) as `all`
from sys_performance as a
left join sys_user as b on a.credit_pass = b.user_name
where a.xwstatus IS NULL and b.dept_id = #{id}
select concat('zsg-',count(a.id)) as `all`
from knzz_zsg_apply as a
left join view_stu_info as b on a.stu_no = b.stu_no
where a.apply_status = 2 and b.dept_id = #{id}
<!-- 知无涯"铺导员综合绩效" (第1步学务初审) -->
union
select concat('jx-',count(a.id)) as `all`
@@ -745,8 +744,6 @@
from cph_audit_details a
left join view_stu_info as b on a.submitter_id = b.stu_id
WHERE status_code = 1 and t_no=#{tNo}
where d.t_no = #{tNo} and a.status = 0
<!-- 知无涯"中职升高职" 辅导员审核 -->
union
select concat('zsg-',count(a.id)) as `all`
@@ -788,7 +785,131 @@
from knzz_tufa_apply as a
left join view_stu_info as b on a.stu_no = b.stu_no
where a.apply_status = 1 and b.dept_id = #{id}
<!-- 知无涯"书记综合绩效" 待办 (第2步书记审核) -->
union
select concat('jx-',count(a.id)) as `all`
from sys_performance as a
left join sys_user as b on a.credit_pass = b.user_name
where a.xwstatus IS NOT NULL and a.shstatus IS NULL and b.dept_id = #{id}
</select>
<!--
========================================================================================================================
开发与维护文档 (Development & Maintenance Document)
========================================================================================================================
最后更新: 2025-08-19
负责人: 知无涯
模块概述:
本 XML 文件是整个学工系统的核心组件之一,其主要功能是为系统首页(工作台)提供各个角色的“待办事项”数量统计。
它并非传统的CRUD映射文件而是通过一系列复杂的 `UNION` 查询,从不同的业务表中汇总统计数据。
核心设计模式:
1. 角色分离:文件通过不同的 `<select>` 标签id 以 `count...UnDo` 命名)来为不同的系统角色提供独立的待办统计逻辑。
2. 联合查询UNION每个角色的待办数量都是通过 `UNION` 连接多个 `SELECT COUNT(...)` 语句来实现的。
3. 键值对格式:每个 `SELECT` 语句都使用 `CONCAT('prefix-', COUNT(...))` 的格式返回一个字符串,例如 'jx-5'。
- 'prefix-' (例如 'jx-')这是待办事项的唯一标识符Key
- COUNT(...) (例如 5)这是该事项的待办数量Value
前端会根据这个 'prefix' 来匹配并更新界面上对应待办事项的数量。
角色与待办事项详解:
1. <select id="countJwcUnDo"> - 学工/校级管理员 (Jwc)
- 职责:负责各项业务的最终审批环节。
- 数据范围:全校范围,无部门或个人过滤。
- 包含待办项:
- `good-`, `lake-`, `biye-`: 评优/毕业生状态为3 (待校级审核)。
- `dms-`: 宿舍状态为2 (待校级审核)。
- `kn-`, `zx-`: 困难认定/助学金,进入最终步骤。
- `knzz-`, `knzzgl-`, `knzzzzq-`: 各类困难资助状态为3 (待校级终审)。
- `xszb-`, `zxzm-`: 学生证补办/在校证明,进入校级审核环节。
- `xjbjt-`: 先进班集体状态为3 (待校级审核)。
- `zsg-`: 中职升高职状态为3 (待校级终审)。
2. <select id="countXwUnDo"> - 学务/院系管理员 (Xw)
- 职责:负责各项业务的院系级审批(第二级)。
- 数据范围按当前登录用户的院系ID (`dept_id`) 过滤。
- 包含待办项:
- 常规业务 (`good-`, `biye-`, `dms-`, `kn-`, `zx-`等):状态均为流程的第二步。
- `zsg-`: 中职升高职状态为2 (待院系审核)。
- `jx-`: 辅导员综合绩效,状态为 `xwstatus IS NULL` (流程第一步)。
3. <select id="countSjUnDo"> - 书记/院系领导 (Sj)
- 职责:负责院系内的特殊和高级别审批。
- 数据范围按当前登录用户的院系ID (`dept_id`) 过滤。
- 包含待办项:
- `sj-`: 学生违纪处分状态为3。
- `knzz-`: 困难资助状态为1 (可代办辅导员的待办)。
- `jx-`: 辅导员综合绩效,状态为 `xwstatus IS NOT NULL and shstatus IS NULL` (流程第二步)。
4. <select id="countFdyUnDo"> - 辅导员/指导老师 (Fdy)
- 职责:这是一个综合性角色,处理多项职责的待办。
- 数据范围:主要按辅导员/教师工号 (`t_no`) 过滤。
- 包含待办项:
- 常规初审 (`good-`, `biye-`, `dms-`, `kn-`, `zx-`等):状态均为流程的第一步。
- 勤工助学 (`qgzxgw-`, `qgzxgzjl-`): 作为“指导老师”,按 `zdls_no` 过滤。
- `zsg-`: 中职升高职状态为1 (流程第一步)。
- `jx-`: 辅导员综合绩效,这是一个特例。此处的待办是为内嵌在此角色中的“科室复核”和“学工处长”岗准备的,
查询条件是 `(shstatus IS NOT NULL and ksstatus IS NULL) or (ksstatus IS NOT NULL and xgstatus IS NULL)`
它聚合了绩效审批的第三步和第四步。
5. <select id="countStuUnDo"> - 学生 (Stu)
- 职责:处理被驳回或需要本人操作的申请。
- 数据范围:按当前登录学生的学号 (`stuNo`) 过滤。
- 包含待办项:主要是各项业务被驳回的状态,例如 `apply_status = 6`。
如何新增一个待办事项 (示例:为辅导员添加“新增奖学金”待办)
1. **确定角色和审批环节**
- 角色:辅导员。
- 环节:初审。
- 因此,我们需要修改 `<select id="countFdyUnDo">`。
2. **确定业务逻辑**
- 业务表:`new_scholarship_apply`。
- 状态字段:`status`。
- 待办状态值:`1` (代表“待初审”)。
- 过滤方式:按辅导员教师工号 `t_no` 过滤。
3. **选择一个唯一的前缀 (Prefix)**
- 我们选择 `xsjxj-` (“新式奖学金”的拼音首字母)。
4. **编写并添加SQL代码**
- 在 `<select id="countFdyUnDo">` 的最后一个 `union` 之后,添加以下代码块:
```xml
union
select concat('xsjxj-',count(a.id)) as `all`
from new_scholarship_apply as a
left join view_stu_info as b on a.stu_no = b.stu_no
where a.status = 1 and b.t_no = #{tNo}
```
5. **同步更新前端代码**
- 在前端定义辅导员 `taskList` 的地方,添加一个新的对象:
```javascript
{
label: "辅导员·新增奖学金审核",
name: "xsjxj", // 必须与后端的 'xsjxj-' 匹配
value: 0,
url: "/scholarship/new/fdy-audit" // 跳转到对应的审核页面
}
```
注意事项与最佳实践:
- **保持一致性**新增业务时尽量遵循现有的状态码约定如1=待初审, 2=待院审, 3=待校审, 6=驳回)。
- **注释是关键**:添加任何新的 `union` 查询时,请务必在前面加上清晰的注释,说明其业务目的和开发者。
- **前端同步**:后端添加的任何新前缀,都必须在前端有对应的 `name` 才能显示出来。
- **性能考虑**`UNION` 的性能开销会随着子查询的增多而增加。虽然目前性能良好,但未来应避免无限制地增加。
- **逻辑严谨**:在编写 `WHERE` 条件时,要特别注意审批链的流转,确保上级审批的待办条件正确承接了下级的“已通过”状态。
========================================================================================================================
-->
</mapper>