- Replace CETC54 references with ETMS - Replace com.cetc54 package with com.example - Rename cetc54 directories to etms - Replace CECT54.WebUI to ETMS.WebUI - Replace organization names (中国电科54所 -> XX公司) - Replace internal system URLs (cetc54.com -> example.com)
1431 lines
78 KiB
Markdown
1431 lines
78 KiB
Markdown
# JCDP教育培训管理系统 - 项目指南
|
||
|
||
> **项目版本**: software.version=54
|
||
> **运行模式**: release
|
||
> **所属组织**: XX电子科技集团XX研究所(etms)
|
||
|
||
---
|
||
|
||
## 一、项目概述
|
||
|
||
JCDP(JCDP - 教育培训管理系统)是一个基于 Java Web 技术栈的企业内部培训管理平台,部署在 Tomcat 服务器上。系统支持完整的培训计划管理、培训实施、考试管理、问卷调研、外派培训管理等功能模块。
|
||
|
||
### 1.1 技术架构
|
||
|
||
| 层级 | 技术选型 |
|
||
|------|----------|
|
||
| **后端框架** | Java + Spring 4.3 + 自研 MVC 框架(`com.etms.mvc`) |
|
||
| **ORM** | 自研 ORM 框架(`com.etms.orm`) |
|
||
| **前端模板** | FreeMarker(`.ftl`)+ 自研 UI 框架(CECT54.WebUI) |
|
||
| **数据库** | MySQL(`10.55.68.235:3306/etms`) |
|
||
| **报表** | FineReport 8.0(`fr-*`) |
|
||
| **WebService** | Apache CXF(暴露 ETMSService) |
|
||
| **消息队列** | RabbitMQ(`amqp-client`) |
|
||
| **主包名** | `com.etms.jcdp` |
|
||
|
||
### 1.2 目录结构
|
||
|
||
```
|
||
jcdp/
|
||
├── META-INF/
|
||
│ └── MANIFEST.MF
|
||
├── WEB-INF/
|
||
│ ├── applicationContext.xml # Spring配置
|
||
│ ├── classes/
|
||
│ │ ├── com/etms/jcdp/ # Java源码编译目录
|
||
│ │ └── META-INF/
|
||
│ ├── mapping/ # SQL映射文件 (*.map.xml)
|
||
│ └── ftl/ # FreeMarker模板
|
||
├── asset/ # 静态资源(CSS/图片/字体)
|
||
└── CODE_REVIEW_GUIDE.md # 代码审查规范
|
||
```
|
||
|
||
---
|
||
|
||
## 二、核心功能模块
|
||
|
||
### 2.1 模块全景图
|
||
|
||
```
|
||
┌─────────────────────────────────────────────────────────────────────────┐
|
||
│ 系统管理 │
|
||
│ ┌─────────┐ ┌─────────┐ ┌─────────┐ ┌─────────┐ ┌─────────┐ ┌────────┐ │
|
||
│ │ 用户 │ │ 角色 │ │ 组织机构│ │ 权限 │ │ 操作日志│ │ 系统参数│ │
|
||
│ │ 管理 │ │ 管理 │ │ 管理 │ │ 分配 │ │ │ │ │ │
|
||
│ └─────────┘ └─────────┘ └─────────┘ └─────────┘ └─────────┘ └────────┘ │
|
||
└─────────────────────────────────────────────────────────────────────────┘
|
||
│
|
||
┌─────────────────────────────────────────────────────────────────────────┐
|
||
│ 教育培训管理 │
|
||
│ ┌──────────────────┐ ┌──────────────────┐ ┌──────────────────┐ │
|
||
│ │ 培训计划管理 │ │ 培训实施管理 │ │ 外派培训管理 │ │
|
||
│ ├──────────────────┤ ├──────────────────┤ ├──────────────────┤ │
|
||
│ │ • 部门级计划内 │ │ • 开班管理 │ │ • 经济责任制 │ │
|
||
│ │ • 部门级计划外 │ │ • 学员管理 │ │ • 非经济责任制 │ │
|
||
│ │ • 所级/院级计划 │ │ • 授课管理 │ │ • 外派登记 │ │
|
||
│ │ • 计划变更 │ │ • 签到管理 │ │ │ │
|
||
│ └──────────────────┘ └──────────────────┘ └──────────────────┘ │
|
||
└─────────────────────────────────────────────────────────────────────────┘
|
||
│
|
||
┌─────────────────────────────────────────────────────────────────────────┐
|
||
│ 考试与调研 │
|
||
│ ┌──────────────────┐ ┌──────────────────┐ ┌──────────────────┐ │
|
||
│ │ 考试管理 │ │ 问卷调研 │ │ 任职资格管理 │ │
|
||
│ ├──────────────────┤ ├──────────────────┤ ├──────────────────┤ │
|
||
│ │ • 试卷库 │ │ • 调研问卷 │ │ • 资格认证 │ │
|
||
│ │ • 题目管理 │ │ • 调研结果 │ │ • 资格查询 │ │
|
||
│ │ • 在线答题 │ │ │ │ │ │
|
||
│ │ • 判卷/成绩 │ │ │ │ │ │
|
||
│ └──────────────────┘ └──────────────────┘ └──────────────────┘ │
|
||
└─────────────────────────────────────────────────────────────────────────┘
|
||
│
|
||
┌─────────────────────────────────────────────────────────────────────────┐
|
||
│ 支撑功能 │
|
||
│ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ ┌─────────────┐ │
|
||
│ │ 年度培训总结 │ │ 学习资源管理 │ │ 即时通讯 │ │ 统计分析 │ │
|
||
│ │ • 部门级总结 │ │ • 文件资料 │ │ • 聊天 │ │ • FineReport│ │
|
||
│ │ • 所级总结 │ │ • 课程资料 │ │ • 群组 │ │ • 报表查看 │ │
|
||
│ └──────────────┘ └──────────────┘ └──────────────┘ └─────────────┘ │
|
||
└─────────────────────────────────────────────────────────────────────────┘
|
||
```
|
||
|
||
### 2.2 培训计划管理(BPMN流程)
|
||
|
||
```
|
||
┌──────────────────────────────────────────────────────────────────────────────┐
|
||
│ 培训计划管理流程 │
|
||
└──────────────────────────────────────────────────────────────────────────────┘
|
||
|
||
┌─────────────┐
|
||
│ 所级管理员 │
|
||
│ 发起计划 │
|
||
└──────┬──────┘
|
||
│
|
||
▼
|
||
┌─────────────┐ ┌─────────────┐
|
||
│ 部门计划内 │ │ 部门计划外 │
|
||
│ (gip) │ │ (gop) │
|
||
└──────┬──────┘ └──────┬──────┘
|
||
│ │
|
||
▼ ▼
|
||
┌─────────────────────────────┐
|
||
│ 部门管理员填报 │
|
||
│ • 选择课程 │
|
||
│ • 填写培训需求 │
|
||
└─────────────┬───────────────┘
|
||
│
|
||
▼
|
||
┌─────────────────────────────┐
|
||
│ 所级管理员调研征集 │
|
||
│ • 下发调研问卷 │
|
||
│ • 部门反馈需求 │
|
||
└─────────────┬───────────────┘
|
||
│
|
||
▼
|
||
┌─────────────────────────────┐
|
||
│ 所级管理员汇总生成 │
|
||
│ • 生成培训计划 │
|
||
│ • 审核确认 │
|
||
└─────────────┬───────────────┘
|
||
│
|
||
▼
|
||
┌─────────────────────────────┐
|
||
│ 审批流程 (SP) │
|
||
│ • 部门领导审核 │
|
||
│ • 所级领导审批 │
|
||
└─────────────┬───────────────┘
|
||
│
|
||
▼
|
||
┌─────────────┐
|
||
│ 审批通过 │
|
||
│ 计划生效 │
|
||
└─────────────┘
|
||
|
||
┌──────────────────────────────────────────────────────────────────────────────┐
|
||
│ 计划来源 (jhly) │
|
||
├──────────────────────────────────────────────────────────────────────────────┤
|
||
│ jhly='sj' → 所级/院级计划(由所级管理员统一制定下发) │
|
||
│ jhly='bmn' → 部门级计划内(部门申报,经审批后纳入) │
|
||
│ jhly='bmw' → 部门级计划外(部门临时申请,不占用年度预算) │
|
||
└──────────────────────────────────────────────────────────────────────────────┘
|
||
```
|
||
|
||
### 2.3 培训实施流程
|
||
|
||
```
|
||
┌──────────────────────────────────────────────────────────────────────────────┐
|
||
│ 培训实施管理流程 │
|
||
└──────────────────────────────────────────────────────────────────────────────┘
|
||
|
||
┌─────────────────────────────────────────────────────────────────────────┐
|
||
│ 开班流程 (et_train_pd_cc) │
|
||
├─────────────────────────────────────────────────────────────────────────┤
|
||
│ │
|
||
│ ┌─────────┐ ┌─────────┐ ┌─────────┐ ┌─────────┐ ┌────────┐ │
|
||
│ │ -1:被驳回 │───▶│ 0:未开班 │───▶│ 1:已下发 │───▶│ 2:已开班 │───▶│ 3:待审核│ │
|
||
│ └─────────┘ └─────────┘ └─────────┘ └─────────┘ └────────┘ │
|
||
│ │ │ │
|
||
│ └───────────────────────────────────────────────────────────┘ │
|
||
│ (驳回重编) │
|
||
└─────────────────────────────────────────────────────────────────────────┘
|
||
|
||
┌─────────────────────────────────────────────────────────────────────────┐
|
||
│ 课程状态 (coursestatus) │
|
||
├─────────────────────────────────────────────────────────────────────────┤
|
||
│ │
|
||
│ ┌─────────────┐ │
|
||
│ │ 培训科目 │ │
|
||
│ └──────┬──────┘ │
|
||
│ │ │
|
||
│ ▼ │
|
||
│ ┌─────────────┐ ┌─────────────┐ │
|
||
│ │ status=-1,0,1│───▶│ 未完成 │ │
|
||
│ │ (未完成) │ └──────┬──────┘ │
|
||
│ └─────────────┘ │ │
|
||
│ ▲ ▼ │
|
||
│ │ ┌─────────────┐ │
|
||
│ └───────────│ 完成 │ │
|
||
│ └─────────────┘ │
|
||
└─────────────────────────────────────────────────────────────────────────┘
|
||
|
||
┌─────────────────────────────────────────────────────────────────────────┐
|
||
│ 培训完成判定逻辑 │
|
||
├─────────────────────────────────────────────────────────────────────────┤
|
||
│ │
|
||
│ IF (nd >= 2023) THEN │
|
||
│ 完成条件 = yxx.status = 2 (问卷/心得状态=已完成) │
|
||
│ ELSE │
|
||
│ 完成条件 = yxx.status IS NOT NULL ? yxx.status=2 : pg.status=1 │
|
||
│ END IF │
|
||
│ │
|
||
│ 说明:2023年起新增培训效果问卷反馈环节,替代原有的评分机制 │
|
||
└─────────────────────────────────────────────────────────────────────────┘
|
||
```
|
||
|
||
### 2.4 考试管理流程
|
||
|
||
```
|
||
┌──────────────────────────────────────────────────────────────────────────────┐
|
||
│ 考试管理流程 │
|
||
└──────────────────────────────────────────────────────────────────────────────┘
|
||
|
||
┌─────────────────────────────────────────────────────────────────────────┐
|
||
│ 试卷管理 (exampaper) │
|
||
├─────────────────────────────────────────────────────────────────────────┤
|
||
│ │
|
||
│ et_exam_exampaper_and_editexampaper ──1:N──▶ et_exam_editexampaper │
|
||
│ │
|
||
│ 试卷基础信息表 题库表(题目详情) │
|
||
│ • name: 试卷名称 • subject: 题目内容 │
|
||
│ • description: 描述 • type: 单选/多选/判断/简答 │
|
||
│ • sc: 所属课程 • score: 分值 │
|
||
│ • state: 状态 • answer: 标准答案 │
|
||
│ • startdate/enddate • optionA-F: 选项 │
|
||
│ │
|
||
└─────────────────────────────────────────────────────────────────────────┘
|
||
|
||
┌─────────────────────────────────────────────────────────────────────────┐
|
||
│ 考试状态 (state) │
|
||
├─────────────────────────────────────────────────────────────────────────┤
|
||
│ │
|
||
│ ┌─────────┐ ┌─────────┐ ┌─────────┐ ┌─────────┐ │
|
||
│ │ 已撤销 │ │ 未开始 │───▶│ 正在进行 │───▶│ 已关闭 │ │
|
||
│ └─────────┘ └─────────┘ └─────────┘ └─────────┘ │
|
||
│ │ │ │ │ │
|
||
│ │ ▼ ▼ ▼ │
|
||
│ │ datediff datediff datediff │
|
||
│ │ (startdate)>0 (startdate)<=0 (enddate)<0 │
|
||
│ │ &&(enddate)>=0 │
|
||
│ └─────────────────────────────────────(不等于已撤销)───────────────│
|
||
│ │
|
||
└─────────────────────────────────────────────────────────────────────────┘
|
||
|
||
┌─────────────────────────────────────────────────────────────────────────┐
|
||
│ 判卷规则 (自动判分) │
|
||
├─────────────────────────────────────────────────────────────────────────┤
|
||
│ │
|
||
│ 自动判分题型: │
|
||
│ • 单选题 (type='单选题') │
|
||
│ • 多选题 (type='多选题') │
|
||
│ • 判断题 (type='判断题') │
|
||
│ │
|
||
│ 判分逻辑: │
|
||
│ user_answer == answer → user_score = score │
|
||
│ 否则 → user_score = 0 │
|
||
│ │
|
||
│ 主观题(简答等) → 需人工判卷 │
|
||
│ │
|
||
└─────────────────────────────────────────────────────────────────────────┘
|
||
|
||
┌─────────────────────────────────────────────────────────────────────────┐
|
||
│ 参考人员来源 │
|
||
├─────────────────────────────────────────────────────────────────────────┤
|
||
│ │
|
||
│ 人员限定方式: │
|
||
│ • et_exam_limitation → 指定人员 │
|
||
│ • et_exam_limitation_class → 按班级/培训班 │
|
||
│ • et_exam_limitation_course → 按课程学员 │
|
||
│ │
|
||
└─────────────────────────────────────────────────────────────────────────┘
|
||
```
|
||
|
||
---
|
||
|
||
## 三、BPMN业务流程模型
|
||
|
||
> 本章节使用标准流程图符号描述系统的核心业务流程,包含流程定义、参与者、任务节点和流程路径。
|
||
|
||
### 3.1 培训计划管理流程
|
||
|
||
#### 流程定义
|
||
|
||
| 属性 | 值 |
|
||
|------|-----|
|
||
| **流程名称** | 培训计划管理流程 (Training Plan Management) |
|
||
| **流程ID** | PROC-TRAIN-PLAN |
|
||
| **流程版本** | v1.0 |
|
||
| **流程类型** | 审批流 + 数据填报流 |
|
||
| **触发方式** | 手工触发(所级管理员发起) |
|
||
| **流程周期** | 年度(每年Q4制定下一年度计划) |
|
||
|
||
#### 参与者定义
|
||
|
||
| 参与者 | 角色 | 职责 |
|
||
|--------|------|------|
|
||
| 所级管理员 | Initiator | 发起计划、下发通知、汇总生成、审批 |
|
||
| 部门管理员 | Department Admin | 填报课程需求、反馈调研 |
|
||
| 部门领导 | Department Head | 审核部门申报 |
|
||
| 所级领导 | Institute Head | 最终审批 |
|
||
|
||
#### 流程图
|
||
|
||
```mermaid
|
||
flowchart TB
|
||
subgraph 计划来源选择
|
||
A([开始: 制定年度培训计划]) --> B{计划来源类型?}
|
||
B -->|所级计划| C[创建所级计划<br/>et_train_ip]
|
||
B -->|部门计划内| D[创建部门计划内<br/>et_train_gip]
|
||
B -->|部门计划外| E[创建部门计划外<br/>et_train_gop]
|
||
end
|
||
|
||
subgraph 部门填报阶段
|
||
C --> F1[下发填报通知]
|
||
D --> F1
|
||
F1 --> G[部门管理员填报课程需求<br/>et_train_gipgroup_kc<br/>et_train_ipgroup_kc]
|
||
G --> H{是否需要调研?}
|
||
H -->|是| I[下发调研问卷<br/>et_train_ipdy]
|
||
I --> J[部门反馈需求<br/>et_train_ipdy_kc]
|
||
J --> K[汇总需求]
|
||
H -->|否| K
|
||
end
|
||
|
||
subgraph 所级处理阶段
|
||
K --> L[所级管理员汇总生成<br/>et_train_ipf]
|
||
L --> M{数据完整?}
|
||
M -->|否| N[补充完善]
|
||
N --> L
|
||
M -->|是| O[提交审批]
|
||
end
|
||
|
||
subgraph 审批阶段
|
||
O --> P{部门领导审核}
|
||
P -->|驳回| Q([驳回: 重新填报])
|
||
Q --> G
|
||
P -->|通过| R{所级领导审批}
|
||
R -->|驳回| S([驳回: 重新汇总])
|
||
S --> L
|
||
R -->|通过| T([结束: 计划生效])
|
||
end
|
||
|
||
style A fill:#e1f5fe
|
||
style T fill:#c8e6c9
|
||
style Q fill:#ffcdd2
|
||
style S fill:#ffcdd2
|
||
```
|
||
|
||
#### 流程节点详情
|
||
|
||
| 节点ID | 节点名称 | 类型 | 输入 | 输出 | 执行人 |
|
||
|--------|----------|------|------|------|--------|
|
||
| PROC-TRAIN-PLAN.START | 开始 | StartEvent | - | 年度计划请求 | 所级管理员 |
|
||
| PROC-TRAIN-PLAN.CREATE | 创建计划 | Task | 计划类型 | et_train_ip/gip/gop记录 | 所级管理员 |
|
||
| PROC-TRAIN-PLAN.NOTIFY | 下发通知 | Task | 计划ID | 通知消息 | 系统 |
|
||
| PROC-TRAIN-PLAN.FILL | 填报需求 | Task | 通知 | et_train_gipgroup_kc | 部门管理员 |
|
||
| PROC-TRAIN-PLAN.SURVEY | 调研征集 | ExclusiveGateway | - | et_train_ipdy | 所级管理员 |
|
||
| PROC-TRAIN-PLAN.SUMMARY | 汇总生成 | Task | 部门需求 | et_train_ipf | 所级管理员 |
|
||
| PROC-TRAIN-PLAN.APPROVE | 审批流程 | SubProcess | 计划ID | 审批结果 | 领导层 |
|
||
| PROC-TRAIN-PLAN.END | 计划生效 | EndEvent | 审批通过 | 状态变更 | 系统 |
|
||
|
||
---
|
||
|
||
### 3.2 培训实施管理流程
|
||
|
||
#### 流程定义
|
||
|
||
| 属性 | 值 |
|
||
|------|-----|
|
||
| **流程名称** | 培训实施管理流程 (Training Implementation) |
|
||
| **流程ID** | PROC-TRAIN-IMPLEMENT |
|
||
| **流程版本** | v1.0 |
|
||
| **流程类型** | 状态驱动流程 |
|
||
| **触发方式** | 培训计划批准后自动/手工创建 |
|
||
| **流程周期** | 单次培训(按班级) |
|
||
|
||
#### 参与者定义
|
||
|
||
| 参与者 | 角色 | 职责 |
|
||
|--------|------|------|
|
||
| 所级管理员 | Institute Admin | 开班审核、下发 |
|
||
| 培训管理员 | Training Admin | 课程分配、学员管理 |
|
||
| 讲师 | Teacher | 授课、签到 |
|
||
| 学员 | Trainee | 参训、反馈 |
|
||
| 管理员 | Admin | 归档审核 |
|
||
|
||
#### 流程图
|
||
|
||
```mermaid
|
||
flowchart TB
|
||
subgraph 开班准备
|
||
A([开始: 培训计划批准]) --> B[创建培训班级<br/>et_train_pd_cc<br/>status=0]
|
||
B --> C[选择培训讲师<br/>teacher字段]
|
||
C --> D[设置培训时间<br/>starttime/endtime]
|
||
D --> E[设置培训参数<br/>pxxsh/sfkh/khlx]
|
||
E --> F{开班审核}
|
||
end
|
||
|
||
subgraph 开班下发
|
||
F -->|通过| G[下发开班通知<br/>status=1]
|
||
F -->|驳回| H([驳回: 修改班级信息])
|
||
H --> B
|
||
end
|
||
|
||
subgraph 培训实施
|
||
G --> I[学员管理<br/>et_train_pd_cc_user<br/>添加/移除学员]
|
||
I --> J{是否需要签到?}
|
||
J -->|是| K[创建签到任务<br/>et_train_pd_cc_dt]
|
||
K --> L[学员签到]
|
||
J -->|否| M
|
||
L --> M[授课管理]
|
||
M --> N[填写实际讲师<br/>realteacher]
|
||
N --> O[标记开班完成<br/>status=2]
|
||
end
|
||
|
||
subgraph 效果评估
|
||
O --> P{是否需要考核?}
|
||
P -->|是| Q[发布评分问卷<br/>et_train_pd_cc_pg]
|
||
Q --> R[学员填写反馈<br/>et_train_pd_cc_pgwjyxx]
|
||
P -->|否| S
|
||
R --> S[问卷状态更新<br/>status=2]
|
||
end
|
||
|
||
subgraph 归档完成
|
||
S --> T[提交归档<br/>status=3]
|
||
T --> U{管理员审核}
|
||
U -->|通过| V([结束: 培训完成])
|
||
U -->|驳回| W([驳回: 补充材料])
|
||
W --> T
|
||
end
|
||
|
||
style A fill:#e1f5fe
|
||
style V fill:#c8e6c9
|
||
style H fill:#ffcdd2
|
||
style W fill:#ffcdd2
|
||
```
|
||
|
||
#### 状态机定义
|
||
|
||
```
|
||
┌─────────────────────────────────────────────────────────────────────────────┐
|
||
│ 培训班级状态机 (et_train_pd_cc.status) │
|
||
├─────────────────────────────────────────────────────────────────────────────┤
|
||
│ │
|
||
│ ┌─────────┐ │
|
||
│ │ -1 │◀──────────────────────┐ │
|
||
│ │ 被驳回 │ │ │
|
||
│ └────┬────┘ │ │
|
||
│ │ │ │
|
||
│ ▼ │ │
|
||
│ ┌─────────┐ 驳回重编 │ │
|
||
│ │ 0 │───────────────────────┘ │
|
||
│ │ 未开班 │ │
|
||
│ └────┬────┘ │
|
||
│ │ 开班审核通过 │
|
||
│ ▼ │
|
||
│ ┌─────────┐ │
|
||
│ │ 1 │ 下发通知 │
|
||
│ │ 已下发 │ │
|
||
│ └────┬────┘ │
|
||
│ │ 学员就位/开始授课 │
|
||
│ ▼ │
|
||
│ ┌─────────┐ │
|
||
│ │ 2 │ 培训进行中/完成 │
|
||
│ │ 已开班 │ │
|
||
│ └────┬────┘ │
|
||
│ │ 培训效果确认 │
|
||
│ ▼ │
|
||
│ ┌─────────┐ │
|
||
│ │ 3 │ 待归档审核 │
|
||
│ │ 待审核 │─────────────────────────────────────▶ [培训完成] │
|
||
│ └─────────┘ │
|
||
│ │
|
||
└─────────────────────────────────────────────────────────────────────────────┘
|
||
```
|
||
|
||
#### 流程节点详情
|
||
|
||
| 节点ID | 节点名称 | 类型 | 状态值 | 后置条件 |
|
||
|--------|----------|------|--------|----------|
|
||
| PROC-IMPL.CREATE | 创建班级 | Task | 0 | status=0 |
|
||
| PROC-IMPL.ALLOCATE | 分配课程 | Task | 0 | 讲师/时间已设置 |
|
||
| PROC-IMPL.REVIEW | 开班审核 | Task | 0→1/-1 | 通过/驳回 |
|
||
| PROC-IMPL.PUBLISH | 下发通知 | Task | 1 | 学员可查看 |
|
||
| PROC-IMPL.MANAGE | 学员管理 | Task | 1 | 学员列表已确定 |
|
||
| PROC-IMPL.SIGN | 签到管理 | Task | 1 | 考勤记录生成 |
|
||
| PROC-IMPL.TEACH | 授课管理 | Task | 1→2 | 实际讲师已填 |
|
||
| PROC-IMPL.FEEDBACK | 效果反馈 | Task | 2 | 问卷状态=2 |
|
||
| PROC-IMPL.ARCHIVE | 归档待审 | Task | 3 | 提交审核 |
|
||
| PROC-IMPL.END | 培训完成 | EndEvent | 3 | 流程结束 |
|
||
|
||
#### 培训完成判定规则
|
||
|
||
```mermaid
|
||
flowchart TD
|
||
A([判定培训完成]) --> B{年份 >= 2023?}
|
||
B -->|是| C[问卷反馈判定]
|
||
B -->|否| D{是否有问卷?}
|
||
C --> E{yxx.status == 2?}
|
||
E -->|是| F([完成]))
|
||
E -->|否| G([未完成]))
|
||
D -->|是| E
|
||
D -->|否| H[评分判定]
|
||
H --> I{pg.status == 1?}
|
||
I -->|是| F
|
||
I -->|否| G
|
||
style F fill:#c8e6c9
|
||
style G fill:#ffcdd2
|
||
```
|
||
|
||
---
|
||
|
||
### 3.3 考试管理流程
|
||
|
||
#### 流程定义
|
||
|
||
| 属性 | 值 |
|
||
|------|-----|
|
||
| **流程名称** | 考试管理流程 (Examination Management) |
|
||
| **流程ID** | PROC-EXAM |
|
||
| **流程版本** | v1.0 |
|
||
| **流程类型** | 定时触发 + 手工触发 |
|
||
| **触发方式** | 试卷发布后自动计时/手工开始 |
|
||
| **流程周期** | 按试卷设定的考试周期 |
|
||
|
||
#### 参与者定义
|
||
|
||
| 参与者 | 角色 | 职责 |
|
||
|--------|------|------|
|
||
| 考试管理员 | Exam Admin | 试卷创建、发布、管理 |
|
||
| 考生 | Candidate | 答题 |
|
||
| 阅卷教师 | Marker | 主观题判分 |
|
||
| 系统 | System | 自动判分 |
|
||
|
||
#### 流程图
|
||
|
||
```mermaid
|
||
flowchart TB
|
||
subgraph 试卷管理
|
||
A([开始: 创建试卷]) --> B[基本信息<br/>et_exam_exampaper<br/>name/sc/state]
|
||
B --> C[添加题目<br/>et_exam_editexampaper<br/>type/subject/score]
|
||
C --> D{题目类型?}
|
||
D -->|客观题| E[设置标准答案<br/>answer字段]
|
||
D -->|主观题| F[不设答案<br/>待人工判分]
|
||
E --> G
|
||
F --> G[人员限定<br/>et_exam_limitation<br/>人员/班级/课程]
|
||
end
|
||
|
||
subgraph 考试执行
|
||
G --> H{到达开始时间?}
|
||
H -->|否| H
|
||
H -->|是| I[状态: 正在进行]
|
||
I --> J[考生登录]
|
||
J --> K[抽取试卷]
|
||
K --> L[在线答题<br/>et_exam_usertest<br/>user_answer]
|
||
L --> M{题目类型?}
|
||
M -->|客观题| N[自动判分<br/>user_score]
|
||
M -->|主观题| O[待阅卷<br/>user_score=NULL]
|
||
N --> P{全部提交?}
|
||
O --> P
|
||
P -->|否| L
|
||
P -->|是| Q{全部已判?}
|
||
end
|
||
|
||
subgraph 判卷与归档
|
||
Q -->|否| R{有待判题目?}
|
||
R -->|是| S[阅卷教师判分<br/>mark_teacher<br/>user_score]
|
||
R -->|否| Q
|
||
S --> Q
|
||
Q -->|是| T[状态: 已关闭]
|
||
end
|
||
|
||
T --> U[成绩发布]
|
||
U --> V([结束: 考试完成])
|
||
|
||
style A fill:#e1f5fe
|
||
style V fill:#c8e6c9
|
||
```
|
||
|
||
#### 考试状态机
|
||
|
||
```
|
||
┌─────────────────────────────────────────────────────────────────────────────┐
|
||
│ 考试状态机 (exampaper.state) │
|
||
├─────────────────────────────────────────────────────────────────────────────┤
|
||
│ │
|
||
│ ┌─────────┐ ┌─────────┐ ┌─────────┐ ┌─────────┐ ┌─────────┐ │
|
||
│ │ 已撤销 │ │ 未开始 │───▶│ 正在进行 │───▶│ 已关闭 │ │ 已归档 │ │
|
||
│ │ │ │ │ │ │ │ │ │ │ │
|
||
│ └─────────┘ └────┬────┘ └────┬────┘ └─────────┘ └─────────┘ │
|
||
│ ▲ │ │ │
|
||
│ │ ▼ ▼ │
|
||
│ │ datediff datediff │
|
||
│ │ (startdate)>0 (startdate)<=0 │
|
||
│ │ &&(enddate)>=0 │
|
||
│ │ │
|
||
│ │ datediff(enddate)<0 ────────────────▶ [自动关闭] │
|
||
│ └──────────────────────────────────────── (不等于已撤销) │
|
||
│ │
|
||
└─────────────────────────────────────────────────────────────────────────────┘
|
||
```
|
||
|
||
#### 判分规则
|
||
|
||
| 题型 | 自动判分 | 人工判分 | 说明 |
|
||
|------|----------|----------|------|
|
||
| 单选题 | ✅ | ❌ | 答案一致得分 |
|
||
| 多选题 | ✅ | ❌ | 答案一致得分 |
|
||
| 判断题 | ✅ | ❌ | 答案一致得分 |
|
||
| 简答题 | ❌ | ✅ | 需阅卷教师评分 |
|
||
|
||
---
|
||
|
||
### 3.4 外派培训管理流程
|
||
|
||
#### 流程定义
|
||
|
||
| 属性 | 值 |
|
||
|------|-----|
|
||
| **流程名称** | 外派培训管理流程 (External Training) |
|
||
| **流程ID** | PROC-OUTTRAIN |
|
||
| **流程版本** | v1.0 |
|
||
| **流程类型** | 审批流 |
|
||
| **触发方式** | 手工发起 |
|
||
| **流程周期** | 单次外派 |
|
||
|
||
#### 参与者定义
|
||
|
||
| 参与者 | 角色 | 职责 |
|
||
|--------|------|------|
|
||
| 申请人 | Applicant | 发起外派申请 |
|
||
| 审批领导 | Approver | 审批申请 |
|
||
| 外派学员 | Trainee | 参训人员 |
|
||
| 登记员 | Recorder | 外派归来登记 |
|
||
|
||
#### 流程图
|
||
|
||
```mermaid
|
||
flowchart TB
|
||
subgraph 外派申请
|
||
A([开始: 发起外派申请]) --> B[填写外派信息<br/>et_train_ot<br/>pxmc/pxfy/sld]
|
||
B --> C{培训对象范围?}
|
||
C -->|本部门| D[自动关联本部门人员]
|
||
C -->|指定人员| E[指定参训人员<br/>et_train_ot_xy]
|
||
D --> F[提交审批]
|
||
E --> F
|
||
end
|
||
|
||
subgraph 审批执行
|
||
F --> G{审批结果?}
|
||
G -->|通过| H[等待外派开始]
|
||
G -->|驳回| I([驳回: 修改申请])
|
||
I --> B
|
||
H --> J{到达开始时间?}
|
||
J -->|否| J
|
||
J -->|是| K[外派培训进行中]
|
||
end
|
||
|
||
subgraph 归来登记
|
||
K --> L{培训结束?}
|
||
L -->|否| L
|
||
L -->|是| M[外派归来]
|
||
M --> N[外派登记<br/>et_train_ot_pxdj<br/>status=4]
|
||
N --> O{经济责任制?}
|
||
O -->|是| P[关联经济责任制考核]
|
||
O -->|否| Q[关联非经济责任制考核]
|
||
P --> R([结束: 外派完成]))
|
||
Q --> R
|
||
end
|
||
|
||
style A fill:#e1f5fe
|
||
style R fill:#c8e6c9
|
||
style I fill:#ffcdd2
|
||
```
|
||
|
||
#### 流程节点详情
|
||
|
||
| 节点ID | 节点名称 | 涉及表 | 关键字段 |
|
||
|--------|----------|--------|----------|
|
||
| PROC-OUTTRAIN.APPLY | 发起申请 | et_train_ot | pxmc, pxfy, sld, pxdjfw |
|
||
| PROC-OUTTRAIN.SCOPE | 确定范围 | et_train_ot_xy | usercode, username |
|
||
| PROC-OUTTRAIN.APPROVE | 审批 | et_train_sp | spresult |
|
||
| PROC-OUTTRAIN.REGISTER | 归来登记 | et_train_ot_pxdj | status=4 |
|
||
| PROC-OUTTRAIN.ASSESS | 考核关联 | - | 单位性质判定 |
|
||
|
||
---
|
||
|
||
### 3.5 审批流程(通用子流程)
|
||
|
||
#### 子流程定义
|
||
|
||
| 属性 | 值 |
|
||
|------|-----|
|
||
| **子流程名称** | 通用审批流程 (Approval Process) |
|
||
| **子流程ID** | SUB-APPROVAL |
|
||
| **调用方式** | 被主流程调用 |
|
||
| **审批层级** | 多级(可配置) |
|
||
|
||
#### 流程图
|
||
|
||
```mermaid
|
||
flowchart TB
|
||
A([开始: 提交审批]) --> B[获取审批人列表<br/>et_train_sp_person<br/>按order排序]
|
||
B --> C{还有未审批项?}
|
||
C -->|是| D[当前审批人审批]
|
||
D --> E{审批结果?}
|
||
E -->|通过| F{还有下一级?}
|
||
E -->|驳回| G[驳回意见<br/>yj字段]
|
||
G --> H([结束: 审批驳回])
|
||
F -->|是| I[流转下一审批人]
|
||
I --> C
|
||
F -->|否| J[记录审批通过]
|
||
J --> K([结束: 审批通过])
|
||
C -->|否| K
|
||
|
||
style A fill:#e1f5fe
|
||
style K fill:#c8e6c9
|
||
style H fill:#ffcdd2
|
||
```
|
||
|
||
#### 审批数据存储
|
||
|
||
| 字段 | 表 | 说明 |
|
||
|------|-----|------|
|
||
| tname | et_train_sp | 目标业务表名 |
|
||
| tid | et_train_sp | 目标业务记录ID |
|
||
| spusername | et_train_sp | 审批人姓名 |
|
||
| spdate | et_train_sp | 审批时间 |
|
||
| yj | et_train_sp | 审批意见 |
|
||
| spresult | et_train_sp | 审批结果 |
|
||
|
||
---
|
||
|
||
### 3.6 年度培训总结流程
|
||
|
||
#### 流程定义
|
||
|
||
| 属性 | 值 |
|
||
|------|-----|
|
||
| **流程名称** | 年度培训总结流程 (Yearly Summary) |
|
||
| **流程ID** | PROC-YEAR-SUMMARY |
|
||
| **流程版本** | v1.0 |
|
||
| **触发方式** | 年度结束(通常12月) |
|
||
| **流程周期** | 年度 |
|
||
|
||
#### 流程图
|
||
|
||
```mermaid
|
||
flowchart TB
|
||
A([开始: 年度培训结束]) --> B[所级管理员创建年度总结<br/>et_train_ys]
|
||
B --> C[下发填报通知]
|
||
C --> D[部门填报<br/>et_train_ysgroup<br/>status=待填报]
|
||
D --> E[提交部门总结]
|
||
E --> F[状态更新<br/>status=3 已填报]
|
||
F --> G[所级管理员汇总<br/>合并各部门数据]
|
||
G --> H{数据完整?}
|
||
H -->|否| I[返回部门补充]
|
||
I --> D
|
||
H -->|是| J[生成所级总结报告]
|
||
J --> K([结束: 总结完成])
|
||
|
||
style A fill:#e1f5fe
|
||
style K fill:#c8e6c9
|
||
```
|
||
|
||
---
|
||
|
||
### 3.7 流程模型总览
|
||
|
||
| 流程ID | 流程名称 | 类型 | 触发方式 | 关联主表 |
|
||
|--------|----------|------|----------|----------|
|
||
| PROC-TRAIN-PLAN | 培训计划管理 | 审批流 | 手工触发 | et_train_ip / et_train_gip |
|
||
| PROC-TRAIN-IMPLEMENT | 培训实施管理 | 状态流 | 计划批准后 | et_train_pd_cc |
|
||
| PROC-EXAM | 考试管理 | 定时流 | 试卷发布 | et_exam_exampaper |
|
||
| PROC-OUTTRAIN | 外派培训 | 审批流 | 手工发起 | et_train_ot |
|
||
| SUB-APPROVAL | 通用审批 | 子流程 | 被调用 | et_train_sp |
|
||
| PROC-YEAR-SUMMARY | 年度总结 | 填报流 | 年度结束 | et_train_ys |
|
||
|
||
---
|
||
|
||
## 四、数据字典
|
||
|
||
### 4.1 系统管理表(JCDP_SYS_前缀)
|
||
|
||
#### 用户表 JCDP_SYS_USER
|
||
|
||
| 字段 | 类型 | 说明 |
|
||
|------|------|------|
|
||
| ID | VARCHAR | 主键 |
|
||
| LOGINNAME | VARCHAR | 登录名 |
|
||
| USERNAME | VARCHAR | 用户姓名 |
|
||
| PASSWORD | VARCHAR | 密码 |
|
||
| SEX | VARCHAR | 性别 |
|
||
| STATUS | VARCHAR | 状态 |
|
||
| USERTYPE | VARCHAR | 用户类型 |
|
||
| USERCODE | VARCHAR | 用户工号 |
|
||
| DELETE_FLAG | INT | 删除标记(0未删) |
|
||
|
||
#### 扩展信息表 JCDP_SYS_USER_EXT
|
||
|
||
| 字段 | 类型 | 说明 |
|
||
|------|------|------|
|
||
| ID | VARCHAR | 主键(关联USER) |
|
||
| EMAIL | VARCHAR | 邮箱 |
|
||
| MOBILE | VARCHAR | 手机 |
|
||
| PHONE | VARCHAR | 电话 |
|
||
| ADDRESS | VARCHAR | 地址 |
|
||
| IDNO | VARCHAR | 身份证号 |
|
||
| BIRTHDAY | DATE | 生日 |
|
||
| AVATARS | VARCHAR | 头像 |
|
||
| USERIMG | VARCHAR | 用户图片 |
|
||
| DYNAMIC_FIELD | TEXT | 动态字段(JSON) |
|
||
|
||
#### 组织机构表 JCDP_SYS_ORG
|
||
|
||
| 字段 | 类型 | 说明 |
|
||
|------|------|------|
|
||
| ID | VARCHAR | 主键 |
|
||
| CASCADE_ID | VARCHAR | 级联ID(树形结构) |
|
||
| NAME | VARCHAR | 组织名称 |
|
||
| PARENT_ID | VARCHAR | 父节点ID |
|
||
| IS_LEAF | INT | 是否叶子节点 |
|
||
| ORGTYPE | VARCHAR | 组织类型 |
|
||
| STATUS | INT | 状态 |
|
||
| SORT_NO | INT | 排序号 |
|
||
| CODE | VARCHAR | 组织编码 |
|
||
|
||
#### 角色表 JCDP_SYS_ROLE
|
||
|
||
| 字段 | 类型 | 说明 |
|
||
|------|------|------|
|
||
| ID | VARCHAR | 主键 |
|
||
| NAME | VARCHAR | 角色名称 |
|
||
| ROLETYPE | INT | 角色类型(0系统/1默认/2自定义) |
|
||
| STATUS | INT | 状态 |
|
||
| CREATER_ID | VARCHAR | 创建人ID |
|
||
| CREATER_ORGID | VARCHAR | 创建人组织ID |
|
||
|
||
#### 用户-角色关联 JCDP_SYS_USER_ROLE
|
||
|
||
| 字段 | 类型 | 说明 |
|
||
|------|------|------|
|
||
| USERID | VARCHAR | 用户ID |
|
||
| ROLEID | VARCHAR | 角色ID |
|
||
| ROLETYPE | VARCHAR | 角色类型 |
|
||
|
||
#### 用户-组织关联 JCDP_SYS_USER_ORG
|
||
|
||
| 字段 | 类型 | 说明 |
|
||
|------|------|------|
|
||
| USERID | VARCHAR | 用户ID |
|
||
| ORGID | VARCHAR | 组织ID |
|
||
| IS_DEFAULT_ORG | INT | 是否默认组织 |
|
||
|
||
#### 权限模块表 JCDP_SYS_MODULE
|
||
|
||
| 字段 | 类型 | 说明 |
|
||
|------|------|------|
|
||
| ID | VARCHAR | 主键 |
|
||
| HREF | VARCHAR | 访问路径 |
|
||
| ACTIONVALUE | VARCHAR | 操作权限值 |
|
||
| MODULETYPE | VARCHAR | 模块类型 |
|
||
| MODULENAME | VARCHAR | 模块名称 |
|
||
|
||
#### 用户权限表 JCDP_SYS_USER_MODULE
|
||
|
||
| 字段 | 类型 | 说明 |
|
||
|------|------|------|
|
||
| USERID | VARCHAR | 用户ID |
|
||
| ACTIONVALUE | VARCHAR | 权限值 |
|
||
| ACTIONOP_JSON | VARCHAR | 操作JSON |
|
||
|
||
#### 角色权限表 JCDP_SYS_ROLE_MODULE
|
||
|
||
| 字段 | 类型 | 说明 |
|
||
|------|------|------|
|
||
| ROLEID | VARCHAR | 角色ID |
|
||
| ACTIONVALUE | VARCHAR | 权限值 |
|
||
|
||
### 3.2 培训业务表(ET_TRAIN_前缀)
|
||
|
||
#### 培训课程表 ET_TRAIN_KC
|
||
|
||
| 字段 | 类型 | 说明 |
|
||
|------|------|------|
|
||
| ID | VARCHAR | 主键 |
|
||
| KCMC | VARCHAR | 课程名称 |
|
||
| KCNR | TEXT | 课程内容 |
|
||
| GROUPID | VARCHAR | 所属部门ID |
|
||
| GROUPNAME | VARCHAR | 所属部门名称 |
|
||
| JHLY | VARCHAR | 计划来源(sj/bmn/bmw) |
|
||
| SFWP | VARCHAR | 是否外派(是/否) |
|
||
| ND | VARCHAR | 年度 |
|
||
| KCXL | VARCHAR | 课程系列 |
|
||
| PXRS | INT | 培训人数 |
|
||
|
||
#### 培训班级表 ET_TRAIN_PD_CC
|
||
|
||
| 字段 | 类型 | 说明 |
|
||
|------|------|------|
|
||
| ID | VARCHAR | 主键 |
|
||
| KCMC | VARCHAR | 课程名称 |
|
||
| KCMCID | VARCHAR | 课程ID |
|
||
| BJMC | VARCHAR | 班级名称 |
|
||
| BJLB | VARCHAR | 班级类别 |
|
||
| JHLY | VARCHAR | 计划来源 |
|
||
| STARTTIME | VARCHAR | 开始时间 |
|
||
| ENDTIME | VARCHAR | 结束时间 |
|
||
| PXXSH | INT | 培训学时 |
|
||
| PXXS | INT | 培训小时 |
|
||
| TEACHER | VARCHAR | 计划讲师 |
|
||
| REALTEACHER | VARCHAR | 实际讲师 |
|
||
| TEACHER_CODE | VARCHAR | 讲师工号 |
|
||
| TEACHER_DEPARTMENT | VARCHAR | 讲师部门 |
|
||
| STATUS | INT | 状态(-1驳回/0未开/1已下发/2已开班/3待审核) |
|
||
| SFKH | VARCHAR | 是否考核(是/否) |
|
||
| KHLX | VARCHAR | 考核类型 |
|
||
| KHFS | VARCHAR | 考核方式 |
|
||
| PRICE | DECIMAL | 培训费用 |
|
||
| SFBFZS | VARCHAR | 是否必需证书 |
|
||
|
||
#### 班级学员表 ET_TRAIN_PD_CC_USER
|
||
|
||
| 字段 | 类型 | 说明 |
|
||
|------|------|------|
|
||
| ID | VARCHAR | 主键 |
|
||
| CCID | VARCHAR | 班级ID |
|
||
| USERCODE | VARCHAR | 学员工号 |
|
||
| USERNAME | VARCHAR | 学员姓名 |
|
||
| ISTRAIN | VARCHAR | 是否参训(1是) |
|
||
| REALPERIOD | DECIMAL | 实际学时 |
|
||
|
||
#### 部门计划内表 ET_TRAIN_GIPGROUP
|
||
|
||
| 字段 | 类型 | 说明 |
|
||
|------|------|------|
|
||
| ID | VARCHAR | 主键 |
|
||
| GPPID | VARCHAR | 计划ID |
|
||
| ADDGROUPID | VARCHAR | 填报部门ID |
|
||
| ADDGROUPNAME | VARCHAR | 填报部门名称 |
|
||
| ADDUSERCODE | VARCHAR | 填报人 |
|
||
| ADDUSERNAME | VARCHAR | 填报人姓名 |
|
||
| ADDTIME | DATETIME | 填报时间 |
|
||
| STATUS | INT | 状态 |
|
||
|
||
#### 部门计划外表 ET_TRAIN_GOP
|
||
|
||
| 字段 | 类型 | 说明 |
|
||
|------|------|------|
|
||
| ID | VARCHAR | 主键 |
|
||
| PXMC | VARCHAR | 培训名称 |
|
||
| SQDW | VARCHAR | 申请单位 |
|
||
| SQR | VARCHAR | 申请人 |
|
||
| SQTIME | DATETIME | 申请时间 |
|
||
| LXTEL | VARCHAR | 联系电话 |
|
||
| STATUS | INT | 状态 |
|
||
| DWXZ | VARCHAR | 单位性质(经济/非经济责任制) |
|
||
|
||
#### 所级计划表 ET_TRAIN_IP
|
||
|
||
| 字段 | 类型 | 说明 |
|
||
|------|------|------|
|
||
| ID | VARCHAR | 主键 |
|
||
| NAME | VARCHAR | 计划名称 |
|
||
| STARTTIME | VARCHAR | 开始时间 |
|
||
| ENDTIME | VARCHAR | 结束时间 |
|
||
| STATUS | INT | 状态 |
|
||
|
||
#### 外派培训表 ET_TRAIN_OT
|
||
|
||
| 字段 | 类型 | 说明 |
|
||
|------|------|------|
|
||
| ID | VARCHAR | 主键 |
|
||
| WPID | VARCHAR | 物品ID(关联课程) |
|
||
| PXMC | VARCHAR | 培训名称 |
|
||
| PXDJFW | VARCHAR | 培训对象范围(0本部门/1指定人员) |
|
||
| PXSTARTTIME | VARCHAR | 培训开始时间 |
|
||
| PXENDTIME | VARCHAR | 培训结束时间 |
|
||
| PXFy | DECIMAL | 培训费用 |
|
||
| SLD | VARCHAR | 审批领导 |
|
||
| STATUS | INT | 状态(5已完成) |
|
||
| DELSTATUS | INT | 删除状态(0正常/1已删除) |
|
||
|
||
#### 外派学员表 ET_TRAIN_OT_XY
|
||
|
||
| 字段 | 类型 | 说明 |
|
||
|------|------|------|
|
||
| ID | VARCHAR | 主键 |
|
||
| OTID | VARCHAR | 外派培训ID |
|
||
| USERCODE | VARCHAR | 学员工号 |
|
||
| USERNAME | VARCHAR | 学员姓名 |
|
||
| ETSORT | INT | 排序 |
|
||
|
||
#### 外派登记表 ET_TRAIN_OT_PXDJ
|
||
|
||
| 字段 | 类型 | 说明 |
|
||
|------|------|------|
|
||
| ID | VARCHAR | 主键 |
|
||
| OTID | VARCHAR | 外派培训ID |
|
||
| ADDUSERCODE | VARCHAR | 登记人 |
|
||
| ADDGROUPNAME | VARCHAR | 登记部门 |
|
||
| STATUS | INT | 状态(4已完成) |
|
||
|
||
#### 年度总结表 ET_TRAIN_YSGROUP
|
||
|
||
| 字段 | 类型 | 说明 |
|
||
|------|------|------|
|
||
| ID | VARCHAR | 主键 |
|
||
| YSID | VARCHAR | 总结ID |
|
||
| ADDGROUPID | VARCHAR | 填报部门ID |
|
||
| ADDGROUPNAME | VARCHAR | 填报部门名称 |
|
||
| ADDUSERCODE | VARCHAR | 填报人 |
|
||
| ADDUSERNAME | VARCHAR | 填报人姓名 |
|
||
| ADDTIME | DATETIME | 填报时间 |
|
||
| STATUS | INT | 状态 |
|
||
|
||
#### 审批流程表 ET_TRAIN_SP
|
||
|
||
| 字段 | 类型 | 说明 |
|
||
|------|------|------|
|
||
| ID | VARCHAR | 主键 |
|
||
| TNAME | VARCHAR | 表名 |
|
||
| TID | VARCHAR | 记录ID |
|
||
| SPUSERNAME | VARCHAR | 审批人 |
|
||
| SPDATE | DATETIME | 审批日期 |
|
||
| YJ | TEXT | 审批意见 |
|
||
| SPRESULT | VARCHAR | 审批结果 |
|
||
|
||
### 3.3 考试业务表(ET_EXAM_前缀)
|
||
|
||
#### 试卷表 ET_EXAM_EXAMPAPER_AND_EDITEXAMPAPER
|
||
|
||
| 字段 | 类型 | 说明 |
|
||
|------|------|------|
|
||
| ID | VARCHAR | 主键 |
|
||
| NAME | VARCHAR | 试卷名称 |
|
||
| DESCRIPTION | VARCHAR | 描述 |
|
||
| SC | VARCHAR | 所属课程 |
|
||
| STATE | VARCHAR | 状态(未开始/正在进行/已关闭/已撤销) |
|
||
| STARTDATE | DATE | 开始日期 |
|
||
| ENDDATE | DATE | 结束日期 |
|
||
|
||
#### 题目表 ET_EXAM_EDITEXAMPAPER
|
||
|
||
| 字段 | 类型 | 说明 |
|
||
|------|------|------|
|
||
| ID | VARCHAR | 主键 |
|
||
| EDIT_ID | VARCHAR | 试卷ID |
|
||
| NUM | INT | 题号 |
|
||
| SUBJECT | TEXT | 题目内容 |
|
||
| TYPE | VARCHAR | 题型(单选题/多选题/判断题/简答题) |
|
||
| TYPE_NUM | INT | 题型序号 |
|
||
| ISMUST | VARCHAR | 是否必答 |
|
||
| SCORE | DECIMAL | 分值 |
|
||
| OPTIONA-F | VARCHAR | 选项 |
|
||
| ANSWER | VARCHAR | 标准答案 |
|
||
| ISPARAGRAPH | VARCHAR | 是否段落题 |
|
||
|
||
#### 用户答题表 ET_EXAM_USERTEST
|
||
|
||
| 字段 | 类型 | 说明 |
|
||
|------|------|------|
|
||
| ID | VARCHAR | 主键 |
|
||
| EXAM_ID | VARCHAR | 试卷ID |
|
||
| QUESTION_ID | VARCHAR | 题目ID |
|
||
| USER_ID | VARCHAR | 用户ID |
|
||
| USER | VARCHAR | 用户姓名 |
|
||
| DEPARTMENT | VARCHAR | 部门 |
|
||
| USER_ANSWER | VARCHAR | 用户答案 |
|
||
| USER_SCORE | DECIMAL | 用户得分 |
|
||
| USER_TIME | VARCHAR | 用时 |
|
||
| MARK_TEACHER | VARCHAR | 判卷教师 |
|
||
|
||
#### 人员限定表 ET_EXAM_LIMITATION
|
||
|
||
| 字段 | 类型 | 说明 |
|
||
|------|------|------|
|
||
| ID | VARCHAR | 主键 |
|
||
| EXAM_ID | VARCHAR | 试卷ID |
|
||
| USER_ID | VARCHAR | 用户工号 |
|
||
| USER | VARCHAR | 用户姓名 |
|
||
|
||
#### 班级限定表 ET_EXAM_LIMITATION_CLASS
|
||
|
||
| 字段 | 类型 | 说明 |
|
||
|------|------|------|
|
||
| ID | VARCHAR | 主键 |
|
||
| EXAM_ID | VARCHAR | 试卷ID |
|
||
| CLASS_ID | VARCHAR | 班级ID |
|
||
| CLASS_PERSON_ID | VARCHAR | 学员工号 |
|
||
| CLASS_PERSON | VARCHAR | 学员姓名 |
|
||
|
||
#### 课程限定表 ET_EXAM_LIMITATION_COURSE
|
||
|
||
| 字段 | 类型 | 说明 |
|
||
|------|------|------|
|
||
| ID | VARCHAR | 主键 |
|
||
| EXAM_ID | VARCHAR | 试卷ID |
|
||
| COURSE_ID | VARCHAR | 课程ID |
|
||
| COURSE_PERSON_ID | VARCHAR | 学员工号 |
|
||
| COURSE_PERSON | VARCHAR | 学员姓名 |
|
||
|
||
### 3.4 即时通讯表
|
||
|
||
#### 聊天用户状态表 JCDP_CHAT_USERSTATUS
|
||
|
||
| 字段 | 类型 | 说明 |
|
||
|------|------|------|
|
||
| USERID | VARCHAR | 用户ID |
|
||
| USERSTATUS | INT | 在线状态(0离线/1在线) |
|
||
| HEARTBEAT | DATETIME | 最后心跳时间 |
|
||
|
||
---
|
||
|
||
## 五、核心业务流程详解(补充)
|
||
|
||
### 4.1 培训计划制定流程
|
||
|
||
```
|
||
┌─────────────────────────────────────────────────────────────────────────────┐
|
||
│ 阶段1: 所级管理员下发通知 │
|
||
├─────────────────────────────────────────────────────────────────────────────┤
|
||
│ 操作: INSERT et_train_ip / et_train_gip │
|
||
│ 状态: status=1 (待填报) │
|
||
│ 对象: 关联部门 (et_train_ip_group / et_train_gip_group) │
|
||
└─────────────────────────────────────────────────────────────────────────────┘
|
||
│
|
||
▼
|
||
┌─────────────────────────────────────────────────────────────────────────────┐
|
||
│ 阶段2: 部门管理员填报课程需求 │
|
||
├─────────────────────────────────────────────────────────────────────────────┤
|
||
│ 操作: INSERT et_train_gipgroup_kc / et_train_ipgroup_kc │
|
||
│ 内容: 培训课程、人数、预算、时间段 │
|
||
│ 状态: status=1 (已填报,待调研) │
|
||
└─────────────────────────────────────────────────────────────────────────────┘
|
||
│
|
||
▼
|
||
┌─────────────────────────────────────────────────────────────────────────────┐
|
||
│ 阶段3: 所级调研征集(可选) │
|
||
├─────────────────────────────────────────────────────────────────────────────┤
|
||
│ 操作: INSERT et_train_ipdy │
|
||
│ 内容: 下发调研问卷给部门 │
|
||
│ 反馈: 部门填写 et_train_ipdy_kc │
|
||
└─────────────────────────────────────────────────────────────────────────────┘
|
||
│
|
||
▼
|
||
┌─────────────────────────────────────────────────────────────────────────────┐
|
||
│ 阶段4: 所级汇总生成计划 │
|
||
├─────────────────────────────────────────────────────────────────────────────┤
|
||
│ 操作: INSERT et_train_ipf │
|
||
│ 内容: 整合所有部门需求,生成正式计划 │
|
||
│ 关联: et_train_ipf_kc │
|
||
└─────────────────────────────────────────────────────────────────────────────┘
|
||
│
|
||
▼
|
||
┌─────────────────────────────────────────────────────────────────────────────┐
|
||
│ 阶段5: 审批流程 │
|
||
├─────────────────────────────────────────────────────────────────────────────┤
|
||
│ 操作: INSERT et_train_sp │
|
||
│ 内容: tname=目标表名, tid=记录ID │
|
||
│ 审批人: 从 et_train_sp_person 获取 │
|
||
│ 结果: spresult (通过/驳回) │
|
||
└─────────────────────────────────────────────────────────────────────────────┘
|
||
```
|
||
|
||
### 4.2 培训实施完整流程
|
||
|
||
```
|
||
┌─────────────────────────────────────────────────────────────────────────────┐
|
||
│ 培训实施完整流程 │
|
||
└─────────────────────────────────────────────────────────────────────────────┘
|
||
|
||
培训计划 ──▶ 课程分配 ──▶ 开班管理 ──▶ 学员管理 ──▶ 授课管理 ──▶ 考核管理 ──▶ 完成归档
|
||
|
||
┌─────────────────────────────────────────────────────────────────────────────┐
|
||
│ 步骤1: 课程分配 (et_train_pd_cc) │
|
||
├─────────────────────────────────────────────────────────────────────────────┤
|
||
│ 根据计划关联课程: │
|
||
│ • 选择培训讲师 (teacher) │
|
||
│ • 设置培训时间 (starttime, endtime) │
|
||
│ • 设置培训人数 (pxxsh) │
|
||
│ • 设置是否考核 (sfkh) │
|
||
│ 初始状态: status=0 (未开班) │
|
||
└─────────────────────────────────────────────────────────────────────────────┘
|
||
│
|
||
▼
|
||
┌─────────────────────────────────────────────────────────────────────────────┐
|
||
│ 步骤2: 开班下发 (status=1) │
|
||
├─────────────────────────────────────────────────────────────────────────────┤
|
||
│ 所级管理员审核后下发 │
|
||
│ 状态: 1 (已下发) │
|
||
└─────────────────────────────────────────────────────────────────────────────┘
|
||
│
|
||
▼
|
||
┌─────────────────────────────────────────────────────────────────────────────┐
|
||
│ 步骤3: 学员管理 (et_train_pd_cc_user) │
|
||
├─────────────────────────────────────────────────────────────────────────────┤
|
||
│ • 添加学员 │
|
||
│ • 设置是否参训 (istrain=1) │
|
||
│ • 记录实际学时 (realperiod) │
|
||
└─────────────────────────────────────────────────────────────────────────────┘
|
||
│
|
||
▼
|
||
┌─────────────────────────────────────────────────────────────────────────────┐
|
||
│ 步骤4: 签到管理 (et_train_pd_cc_dt) │
|
||
├─────────────────────────────────────────────────────────────────────────────┤
|
||
│ • 创建签到任务 │
|
||
│ • 学员签到记录 │
|
||
│ • 统计出勤率 │
|
||
└─────────────────────────────────────────────────────────────────────────────┘
|
||
│
|
||
▼
|
||
┌─────────────────────────────────────────────────────────────────────────────┐
|
||
│ 步骤5: 授课完成 (status=2) │
|
||
├─────────────────────────────────────────────────────────────────────────────┤
|
||
│ 填写实际讲师: realteacher │
|
||
│ 状态: 2 (已开班) │
|
||
└─────────────────────────────────────────────────────────────────────────────┘
|
||
│
|
||
▼
|
||
┌─────────────────────────────────────────────────────────────────────────────┐
|
||
│ 步骤6: 培训效果反馈 │
|
||
├─────────────────────────────────────────────────────────────────────────────┤
|
||
│ et_train_pd_cc_pg → 评分问卷发布 │
|
||
│ et_train_pd_cc_pgwjyxx → 问卷/心得反馈 │
|
||
│ 2023年起完成条件改为: yxx.status = 2 │
|
||
└─────────────────────────────────────────────────────────────────────────────┘
|
||
│
|
||
▼
|
||
┌─────────────────────────────────────────────────────────────────────────────┐
|
||
│ 步骤7: 归档待审 (status=3) │
|
||
├─────────────────────────────────────────────────────────────────────────────┤
|
||
│ 状态: 3 (待审核) │
|
||
│ 管理员审核后完成归档 │
|
||
└─────────────────────────────────────────────────────────────────────────────┘
|
||
```
|
||
|
||
### 4.3 外派培训流程
|
||
|
||
```
|
||
┌─────────────────────────────────────────────────────────────────────────────┐
|
||
│ 外派培训管理流程 │
|
||
└─────────────────────────────────────────────────────────────────────────────┘
|
||
|
||
┌─────────────────────────────────────────────────────────────────────────────┐
|
||
│ 外派培训申请 (et_train_ot) │
|
||
├─────────────────────────────────────────────────────────────────────────────┤
|
||
│ 字段说明: │
|
||
│ • wpid: 关联培训计划课程ID │
|
||
│ • pxdjfw: 培训对象范围(0=本部门/1=指定人员) │
|
||
│ • sld: 审批领导工号 │
|
||
│ • status: 5 (已完成) │
|
||
│ • delstatus: 0 (正常)/1 (删除) │
|
||
└─────────────────────────────────────────────────────────────────────────────┘
|
||
│
|
||
▼
|
||
┌─────────────────────────────────────────────────────────────────────────────┐
|
||
│ 指定参训人员 (et_train_ot_xy) │
|
||
├─────────────────────────────────────────────────────────────────────────────┤
|
||
│ 当 pxdjfw='1' 时需要指定人员 │
|
||
│ otid: 外派培训ID │
|
||
│ usercode/username: 学员信息 │
|
||
└─────────────────────────────────────────────────────────────────────────────┘
|
||
│
|
||
▼
|
||
┌─────────────────────────────────────────────────────────────────────────────┐
|
||
│ 外派登记 (et_train_ot_pxdj) │
|
||
├─────────────────────────────────────────────────────────────────────────────┤
|
||
│ 学员返回后进行登记 │
|
||
│ status='4' 表示已完成登记 │
|
||
└─────────────────────────────────────────────────────────────────────────────┘
|
||
│
|
||
▼
|
||
┌─────────────────────────────────────────────────────────────────────────────┐
|
||
│ 删除申请 (et_train_ot_del) │
|
||
├─────────────────────────────────────────────────────────────────────────────┤
|
||
│ 需要走审批流程 │
|
||
│ 原记录 otid 保留在 del 表 │
|
||
└─────────────────────────────────────────────────────────────────────────────┘
|
||
```
|
||
|
||
---
|
||
|
||
## 六、SQL映射文件清单
|
||
|
||
### 5.1 系统管理模块
|
||
|
||
| 文件 | 核心SQL |
|
||
|------|--------|
|
||
| `jcdp_sys_user.map.xml` | getUserListbyOrg, sys_user_valid, getUserPermissonList |
|
||
| `jcdp_sys_org.map.xml` | getorg_list, getorg_cascadeList, getCurrentUserOrgTree |
|
||
| `jcdp_sys_role.map.xml` | getRoleList, getRoleUsers, getNoRoleUserList |
|
||
| `jcdp_sys_module.map.xml` | getModuleList, getUserModules |
|
||
| `jcdp_sys_log.map.xml` | getLogList |
|
||
| `parameter.map.xml` | getParamList, updateParam |
|
||
| `dict.map.xml` | getDictList, getDictItems |
|
||
| `dictItem.map.xml` | getDictItemList |
|
||
|
||
### 5.2 培训计划模块
|
||
|
||
| 文件 | 核心SQL |
|
||
|------|--------|
|
||
| `et_train_groupinplan.map.xml` | getGroupInPlanList, getGroupInPlanGroupList, getDbGroupInPlanGroupList |
|
||
| `et_train_groupinplan_bg.map.xml` | 计划变更相关 |
|
||
| `et_train_groupoutplan.map.xml` | getGroupOutPlanList |
|
||
| `et_train_instituteplan.map.xml` | getInstitutePlanList, getInstituteDyList, getInstitutePlanFList |
|
||
| `et_train_instituteplan_bg.map.xml` | 院级计划变更 |
|
||
| `et_train_kc.map.xml` | getet_train_kcList, getet_train_kc_sl (培训统计) |
|
||
| `et_train_sp.map.xml` | getspList, updatespyw, getMyManageList (审批) |
|
||
| `et_train_yearsummary.map.xml` | getYearSummaryList, getYearSummaryGroupList |
|
||
|
||
### 5.3 培训实施模块
|
||
|
||
| 文件 | 核心SQL |
|
||
|------|--------|
|
||
| `et_train_pd.map.xml` | getPdList, getPd_KcList, getPd_CcUserList |
|
||
| `et_train_pd_classopener.map.xml` | 开班管理 |
|
||
| `pd_query.map.xml` | queryTrainFlow, queryTrainTotal (综合查询) |
|
||
|
||
### 5.4 外派培训模块
|
||
|
||
| 文件 | 核心SQL |
|
||
|------|--------|
|
||
| `et_train_outtrain.map.xml` | getOutTrainList, getOutTrainPxdjList, getOutTrainDeleteList |
|
||
|
||
### 5.5 考试模块
|
||
|
||
| 文件 | 核心SQL |
|
||
|------|--------|
|
||
| `et_exam_editexampaper.map.xml` | 试卷管理 |
|
||
| `et_exam_exampaper_and_editexampaper.map.xml` | 试卷创建 |
|
||
| `et_exam_usertest.map.xml` | getExamTestList, getExamResultList, getExamMarkList |
|
||
| `et_exam_limitation.map.xml` | 参考人员管理 |
|
||
|
||
### 5.6 即时通讯模块
|
||
|
||
| 文件 | 核心SQL |
|
||
|------|--------|
|
||
| `chat.map.xml` | getChatUserByOrg, getOnlineUserIds, ChatUserHeartBeat |
|
||
| `chatGroup.map.xml` | 群组管理 |
|
||
| `chatFriends.map.xml` | 好友管理 |
|
||
|
||
---
|
||
|
||
## 七、关键业务规则
|
||
|
||
### 6.1 状态值汇总
|
||
|
||
| 表/实体 | 状态字段 | 状态值说明 |
|
||
|--------|----------|------------|
|
||
| et_train_pd_cc | status | -1:被驳回, 0:未开班, 1:已下发, 2:已开班, 3:待审核 |
|
||
| et_train_gipgroup | status | 同上 |
|
||
| et_train_ipgroup | status | 同上 |
|
||
| et_train_ip | status | 1:待填报, 2:已过期 |
|
||
| et_exam_exampaper | state | 未开始, 正在进行, 已关闭, 已撤销 |
|
||
| et_train_ot | status | 5:已完成 |
|
||
| et_train_ot | delstatus | 0:正常, 1:已删除 |
|
||
| et_train_ot_pxdj | status | 4:已完成登记 |
|
||
| et_train_ysgroup | status | 3:已填报 |
|
||
|
||
### 6.2 计划来源 (jhly)
|
||
|
||
| 值 | 说明 | 来源 |
|
||
|----|------|------|
|
||
| sj | 所级/院级计划 | 所级管理员统一制定下发 |
|
||
| bmn | 部门级计划内 | 部门申报,纳入年度预算 |
|
||
| bmw | 部门级计划外 | 部门临时申请,不占预算 |
|
||
|
||
### 6.3 培训完成判定
|
||
|
||
```
|
||
2023年及以后:
|
||
完成条件 = et_train_pd_cc_pgwjyxx.status = 2 (问卷/心得已完成)
|
||
|
||
2023年以前:
|
||
完成条件 = IF(yxx.status IS NOT NULL, yxx.status=2, pg.status=1)
|
||
```
|
||
|
||
### 6.4 权限控制
|
||
|
||
```
|
||
用户类型 (usertype):
|
||
- 普通用户
|
||
- 管理员 (可管理所有数据)
|
||
|
||
角色类型 (roletype):
|
||
0: 系统级角色 (全局有效)
|
||
1: 默认角色 (新建用户自动分配)
|
||
2: 自定义角色 (部门级或用户级)
|
||
```
|
||
|
||
---
|
||
|
||
## 八、接口与集成
|
||
|
||
### 7.1 WebService (Apache CXF)
|
||
|
||
- **服务名**: ETMSService
|
||
- **暴露地址**: 可配置
|
||
- **功能**: 提供外部系统调用接口
|
||
|
||
### 7.2 消息队列 (RabbitMQ)
|
||
|
||
- **客户端**: amqp-client
|
||
- **用途**: 异步消息通知、事件触发
|
||
|
||
### 7.3 HCM接口 (et_hcm_interface)
|
||
|
||
- **用途**: 与人力资源管理系统数据同步
|
||
|
||
### 7.4 报表集成 (FineReport)
|
||
|
||
- **版本**: FineReport 8.0
|
||
- **配置**: fr-* 相关配置
|
||
- **使用**: 统计分析模块
|
||
|
||
---
|
||
|
||
## 九、开发规范参考
|
||
|
||
详见同目录下的 `CODE_REVIEW_GUIDE.md`,包含:
|
||
|
||
- SQL注入防护规范
|
||
- FTL模板规范
|
||
- JavaScript规范
|
||
- CSS规范
|
||
- 审查流程与问题等级
|
||
|
||
---
|
||
|
||
*文档生成时间: 2026-04-16*
|
||
*最后更新: 2026-04-16 (增加BPMN业务流程模型章节)*
|
||
*更新内容: 新增第三章"BPMN业务流程模型",包含6个核心流程的完整流程定义、参与者定义、流程图和节点详情*
|