# 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[创建所级计划
et_train_ip] B -->|部门计划内| D[创建部门计划内
et_train_gip] B -->|部门计划外| E[创建部门计划外
et_train_gop] end subgraph 部门填报阶段 C --> F1[下发填报通知] D --> F1 F1 --> G[部门管理员填报课程需求
et_train_gipgroup_kc
et_train_ipgroup_kc] G --> H{是否需要调研?} H -->|是| I[下发调研问卷
et_train_ipdy] I --> J[部门反馈需求
et_train_ipdy_kc] J --> K[汇总需求] H -->|否| K end subgraph 所级处理阶段 K --> L[所级管理员汇总生成
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[创建培训班级
et_train_pd_cc
status=0] B --> C[选择培训讲师
teacher字段] C --> D[设置培训时间
starttime/endtime] D --> E[设置培训参数
pxxsh/sfkh/khlx] E --> F{开班审核} end subgraph 开班下发 F -->|通过| G[下发开班通知
status=1] F -->|驳回| H([驳回: 修改班级信息]) H --> B end subgraph 培训实施 G --> I[学员管理
et_train_pd_cc_user
添加/移除学员] I --> J{是否需要签到?} J -->|是| K[创建签到任务
et_train_pd_cc_dt] K --> L[学员签到] J -->|否| M L --> M[授课管理] M --> N[填写实际讲师
realteacher] N --> O[标记开班完成
status=2] end subgraph 效果评估 O --> P{是否需要考核?} P -->|是| Q[发布评分问卷
et_train_pd_cc_pg] Q --> R[学员填写反馈
et_train_pd_cc_pgwjyxx] P -->|否| S R --> S[问卷状态更新
status=2] end subgraph 归档完成 S --> T[提交归档
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[基本信息
et_exam_exampaper
name/sc/state] B --> C[添加题目
et_exam_editexampaper
type/subject/score] C --> D{题目类型?} D -->|客观题| E[设置标准答案
answer字段] D -->|主观题| F[不设答案
待人工判分] E --> G F --> G[人员限定
et_exam_limitation
人员/班级/课程] end subgraph 考试执行 G --> H{到达开始时间?} H -->|否| H H -->|是| I[状态: 正在进行] I --> J[考生登录] J --> K[抽取试卷] K --> L[在线答题
et_exam_usertest
user_answer] L --> M{题目类型?} M -->|客观题| N[自动判分
user_score] M -->|主观题| O[待阅卷
user_score=NULL] N --> P{全部提交?} O --> P P -->|否| L P -->|是| Q{全部已判?} end subgraph 判卷与归档 Q -->|否| R{有待判题目?} R -->|是| S[阅卷教师判分
mark_teacher
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[填写外派信息
et_train_ot
pxmc/pxfy/sld] B --> C{培训对象范围?} C -->|本部门| D[自动关联本部门人员] C -->|指定人员| E[指定参训人员
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[外派登记
et_train_ot_pxdj
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[获取审批人列表
et_train_sp_person
按order排序] B --> C{还有未审批项?} C -->|是| D[当前审批人审批] D --> E{审批结果?} E -->|通过| F{还有下一级?} E -->|驳回| G[驳回意见
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[所级管理员创建年度总结
et_train_ys] B --> C[下发填报通知] C --> D[部门填报
et_train_ysgroup
status=待填报] D --> E[提交部门总结] E --> F[状态更新
status=3 已填报] F --> G[所级管理员汇总
合并各部门数据] 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个核心流程的完整流程定义、参与者定义、流程图和节点详情*