5.6 KiB
5.6 KiB
培训大纲接口说明
功能概述
培训大纲使用统一层级表维护,支持三种层级:
1年度2月度3周度
层级关系如下:
- 年度大纲没有上级,
parentId=0 - 月度大纲的上级必须是年度大纲
- 周度大纲的上级必须是月度大纲
培训类型字段 trainingType 为字典值,对应字典类型 hot_training_type,前端按项目现有字典接口获取可选项。
数据字段
| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
| id | Long | 否 | 主键,编辑/删除/详情时使用 |
| companyId | Long | 否 | 公司ID;不传时后端优先取当前登录公司 |
| parentId | Long | 条件必填 | 上级大纲ID;年度传 0 或不传,月度/周度必传 |
| outlineLevel | Long | 是 | 大纲层级:1=年度、2=月度、3=周度 |
| outlineName | String | 是 | 大纲名称 |
| outlineFile | String | 是 | 大纲文件,建议传 OSS ID 或文件 URL |
| trainingType | String | 是 | 培训类型字典值 |
| isEnabled | Long | 否 | 是否启用:0=禁用、1=启用,默认 1 |
| sortNo | Long | 否 | 排序号,越小越靠前,默认 0 |
| remark | String | 否 | 备注 |
返回字段补充说明
除上述字段外,列表/详情接口还会返回:
parentName:上级大纲名称outlineLevelName:层级名称,取值为年度、月度、周度trainingTypeLabel:培训类型字典标签isEnabled:是否启用,0=禁用、1=启用hasChildren:是否存在直属子级
可见性规则
- 总部端可新增、修改
isEnabled - 企业端查询列表、年度列表、直属子级、详情、导出时,只能看到
isEnabled=1的大纲 - 企业端即使知道禁用大纲的 ID,也无法通过详情或子级接口查看
1. 分页查询培训大纲
- 路径:
GET /securityManagement/trainingOutline/list - 说明:后台通用分页查询,可按名称、层级、父级、培训类型筛选
请求参数
| 参数 | 类型 | 说明 |
|---|---|---|
| pageNum | Integer | 页码 |
| pageSize | Integer | 每页条数 |
| companyId | Long | 公司ID |
| parentId | Long | 上级大纲ID |
| outlineLevel | Long | 层级 |
| outlineName | String | 大纲名称,模糊匹配 |
| trainingType | String | 培训类型字典值 |
| isEnabled | Long | 是否启用 |
2. 查询全部年度大纲
- 路径:
GET /securityManagement/trainingOutline/annuals - 说明:返回所有年度层级的大纲列表
可选参数
| 参数 | 类型 | 说明 |
|---|---|---|
| companyId | Long | 公司ID |
| trainingType | String | 培训类型字典值 |
| outlineName | String | 大纲名称,模糊匹配 |
| isEnabled | Long | 是否启用,总部端可用 |
返回示例
[
{
"id": 1,
"companyId": 1,
"parentId": 0,
"outlineLevel": 1,
"outlineLevelName": "年度",
"outlineName": "2026年度培训大纲",
"outlineFile": "197845612345678901",
"trainingType": "pre-job",
"trainingTypeLabel": "岗前培训",
"isEnabled": 1,
"sortNo": 1,
"remark": "",
"hasChildren": true
}
]
3. 查询直属子大纲列表
- 路径:
GET /securityManagement/trainingOutline/children/{parentId} - 说明:前端传入某个大纲ID,返回该大纲的直属子级列表
场景说明
- 传入年度大纲ID:返回该年度下全部月度大纲
- 传入月度大纲ID:返回该月度下全部周度大纲
- 传入周度大纲ID:返回空数组
4. 查询详情
- 路径:
GET /securityManagement/trainingOutline/{id}
5. 新增培训大纲
- 路径:
POST /securityManagement/trainingOutline Content-Type:application/json
年度新增示例
{
"companyId": 1,
"outlineLevel": 1,
"outlineName": "2026年度培训大纲",
"outlineFile": "197845612345678901",
"trainingType": "pre-job",
"isEnabled": 1,
"sortNo": 1,
"remark": "年度培训总纲"
}
月度新增示例
{
"companyId": 1,
"parentId": 1,
"outlineLevel": 2,
"outlineName": "2026年12月培训大纲",
"outlineFile": "197845612345678902",
"trainingType": "pre-job",
"isEnabled": 1,
"sortNo": 12
}
周度新增示例
{
"companyId": 1,
"parentId": 2,
"outlineLevel": 3,
"outlineName": "2026年12月第1周培训大纲",
"outlineFile": "197845612345678903",
"trainingType": "pre-job",
"isEnabled": 1,
"sortNo": 1
}
后端校验规则
- 年度大纲自动按
parentId=0处理 - 月度大纲的上级必须是年度大纲
- 周度大纲的上级必须是月度大纲
- 同一公司、同一父级、同一层级下不允许同名
isEnabled仅总部端可控制;未传时默认按启用处理
6. 修改培训大纲
- 路径:
PUT /securityManagement/trainingOutline Content-Type:application/json
请求示例
{
"id": 3,
"companyId": 1,
"parentId": 2,
"outlineLevel": 3,
"outlineName": "2026年12月第2周培训大纲",
"outlineFile": "197845612345678904",
"trainingType": "daily",
"isEnabled": 0,
"sortNo": 2,
"remark": "更新后的周度大纲"
}
7. 删除培训大纲
- 路径:
DELETE /securityManagement/trainingOutline/{ids} - 示例:
DELETE /securityManagement/trainingOutline/3 - 说明:支持批量,多个ID使用英文逗号分隔
删除限制
- 存在直属子级时不可删除
8. 导出列表
- 路径:
POST /securityManagement/trainingOutline/export - 说明:按查询条件导出 Excel
9. 导出 PDF
- 路径:
POST /securityManagement/trainingOutline/exportPdf - 说明:默认导出年度大纲;如传
id,则导出该节点所属年度的大纲内容