diff --git a/safety-cedu-service/src/班级管理.sql b/safety-cedu-service/src/班级管理.sql new file mode 100644 index 00000000..1148dce7 --- /dev/null +++ b/safety-cedu-service/src/班级管理.sql @@ -0,0 +1,167 @@ +create table class_course +( + id bigint not null comment '主键ID(由程序生成,不自增)' + primary key, + class_id bigint not null comment '所属班级ID(关联training_class.id)', + course_name varchar(200) not null comment '课程名称', + course_id bigint not null comment '课程id', + required_total_hours decimal(10, 2) null comment '要求完成总学时(小时)', + video_duration decimal(10, 2) null comment '视频累计时长(小时)', + delete_enum varchar(32) null comment '删除标识true false', + remarks varchar(255) null comment '备注', + create_name varchar(50) null comment '创建人姓名', + update_name varchar(50) null comment '更新人姓名', + tenant_id bigint null comment '租户id', + version int null comment '版本', + create_time datetime null comment '创建时间', + update_time datetime null comment '修改时间', + create_id bigint null comment '创建人id', + update_id bigint null comment '修改人id', + env varchar(50) null comment '环境' +) + comment '课程管理表' charset = utf8mb4; + +create index idx_class_id + on class_course (class_id); + +create table class_management +( + id bigint unsigned zerofill not null comment '主键ID(由程序生成,不自增)' + primary key, + class_code varchar(50) null comment '班级编码(唯一)', + class_name varchar(100) null comment '班级名称', + training_type varchar(50) null comment '培训类型', + unit_type int null comment '参训单位类型(1本企业2相关方)', + unit_name varchar(100) null comment '参训单位名称', + recorder varchar(50) null comment '记录人员(姓名或ID)', + assessor varchar(50) null comment '考核人员(姓名或ID)', + safety_manager varchar(50) null comment '安全管理部门负责人(姓名或ID)', + start_date datetime null comment '培训开始日期', + end_date datetime null comment '培训结束日期', + open_exam tinyint(1) default 0 null comment '是否开启考试(0-否,1-是)', + exam_face_recognition tinyint(1) default 0 null comment '考试前人脸识别(0-否,1-是)', + exam_count int null comment '考试次数', + face_recognition tinyint(1) default 0 null comment '是否人脸识别(0-否,1-是)', + face_recognition_time int null comment '人脸识别时间(分钟,可选5/10/20/30)', + shuffle_questions tinyint(1) default 0 null comment '是否打乱试题顺序(0-否,1-是)', + status int default 0 null comment '班级状态:0-未申请,1-待开班,2-培训中,3-培训结束', + delete_enum varchar(32) null comment '删除标识true false', + remarks varchar(255) null comment '备注', + create_name varchar(50) null comment '创建人姓名', + update_name varchar(50) null comment '更新人姓名', + tenant_id bigint null comment '租户id', + version int null comment '版本', + create_time datetime null comment '创建时间', + update_time datetime null comment '修改时间', + create_id bigint null comment '创建人id', + update_id bigint null comment '修改人id', + env varchar(50) null comment '环境', + delay_time datetime null comment '延期时间', + paper_type int null comment '试卷类型(如:1自动生成试卷、2平台组卷等)', + exam_minutes int null comment '考试时长(分钟)', + paper_id bigint null comment '试卷id' +) + comment '班级管理表' charset = utf8mb4; + +create table class_student +( + id bigint not null comment '主键ID(由程序生成,不自增)' + primary key, + class_id bigint not null comment '关联班级ID(training_class.id)', + student_name varchar(50) null comment '姓名', + unit_name varchar(100) null comment '参训单位', + department varchar(100) null comment '部门', + phone varchar(20) null comment '手机号', + file_number varchar(50) null comment '档案编号', + face_auth tinyint(1) default 0 null comment '人脸认证(0-未认证,1-已认证)', + required_hours decimal(10, 2) null comment '要求学时(小时)', + completed_hours decimal(10, 2) default 0.00 null comment '已完成学时(小时)', + study_status int default 0 null comment '学习状态:0-未学习,1-学习中,2-已学完,3-已完成', + exam_status int default 0 null comment '考试状态:0-不考试,1-待考试,2-考试未通过,3-考试通过,4-未参加', + entry_time datetime null comment '入班时间', + delete_enum varchar(32) null comment '删除标识true false', + remarks varchar(255) null comment '备注', + create_name varchar(50) null comment '创建人姓名', + update_name varchar(50) null comment '更新人姓名', + tenant_id bigint null comment '租户id', + version int null comment '版本', + create_time datetime null comment '创建时间', + update_time datetime null comment '修改时间', + create_id bigint null comment '创建人id', + update_id bigint null comment '修改人id', + env varchar(50) null comment '环境' +) + comment '班级学员学习记录表' charset = utf8mb4; + +create index idx_class_id + on class_student (class_id); + +create table class_student_exam_record +( + id bigint not null comment '主键ID(由程序生成,不自增)' + primary key, + student_id bigint not null comment '学员ID(关联class_student.id)', + student_name varchar(20) not null comment '学员名称', + class_id bigint not null comment '所属班级ID(关联training_class.id)', + paper_name varchar(200) not null comment '试卷名称', + paper_id bigint not null comment '试卷id', + score decimal(10, 2) null comment '得分', + passed tinyint(1) default 0 null comment '是否通过(0-未通过,1-通过)', + wrong_count int default 0 null comment '错误题数', + accuracy decimal(5, 2) null comment '正确率(百分比,如 96.66)', + start_time datetime null comment '考试开始时间', + end_time datetime null comment '考试结束时间', + delete_enum varchar(32) null comment '删除标识true false', + remarks varchar(255) null comment '备注', + create_name varchar(50) null comment '创建人姓名', + update_name varchar(50) null comment '更新人姓名', + tenant_id bigint null comment '租户id', + version int null comment '版本', + create_time datetime null comment '创建时间', + update_time datetime null comment '修改时间', + create_id bigint null comment '创建人id', + update_id bigint null comment '修改人id', + env varchar(50) null comment '环境' +) + comment '学员考试记录表' charset = utf8mb4; + +create index idx_student_id + on class_student_exam_record (student_id); + +create table class_student_learning_record +( + id bigint not null comment '主键ID(由程序生成,不自增)' + primary key, + student_id bigint not null comment '学员ID(关联class_student.id)', + class_id bigint not null comment '所属班级ID(关联training_class.id)', + course_id bigint not null comment '课程ID(关联training_course.id)', + course_name varchar(200) not null comment '课程名称', + courseware_name varchar(200) null comment '小节点名称(如章节名、视频文件名)', + study_status int default 0 null comment '学习状态:0-未学习,1-学习中,2-已完成', + learning_progress varchar(50) null comment '学习情况(如进度百分比或简要描述,冗余字段便于展示)', + start_time datetime null comment '开始学习时间(第一次开始观看/学习的时间)', + end_time datetime null comment '完成时间(标记为“已学完”或“已完成”的时间)', + last_watch_time datetime null comment '最近观看时间(最后一条学习行为的时间戳)', + delete_enum varchar(32) null comment '删除标识true false', + remarks varchar(255) null comment '备注', + create_name varchar(50) null comment '创建人姓名', + update_name varchar(50) null comment '更新人姓名', + tenant_id bigint null comment '租户id', + version int null comment '版本', + create_time datetime null comment '创建时间', + update_time datetime null comment '修改时间', + create_id bigint null comment '创建人id', + update_id bigint null comment '修改人id', + env varchar(50) null comment '环境' +) + comment '学员学习记录表(节点级)' charset = utf8mb4; + +create index idx_course_id + on class_student_learning_record (course_id); + +create index idx_student_id + on class_student_learning_record (student_id); + +create index idx_study_status + on class_student_learning_record (study_status); + diff --git a/safety-eval-adapter/src/main/java/org/qinan/safetyeval/adapter/web/institution/EvalProjectMemberController.java b/safety-eval-adapter/src/main/java/org/qinan/safetyeval/adapter/web/institution/EvalProjectMemberController.java index 142aefd3..a05ceded 100644 --- a/safety-eval-adapter/src/main/java/org/qinan/safetyeval/adapter/web/institution/EvalProjectMemberController.java +++ b/safety-eval-adapter/src/main/java/org/qinan/safetyeval/adapter/web/institution/EvalProjectMemberController.java @@ -2,12 +2,16 @@ package org.qinan.safetyeval.adapter.web.institution; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; +import io.swagger.annotations.ApiParam; import org.qinan.safetyeval.client.api.institution.EvalProjectMemberApi; +import org.qinan.safetyeval.client.api.institution.EvalRiskAnalysisApi; import org.qinan.safetyeval.client.co.institution.EvalProjectMemberCO; +import org.qinan.safetyeval.client.co.institution.EvalRiskParticipantCO; import org.qinan.safetyeval.client.dto.PageResponse; import org.qinan.safetyeval.client.dto.SingleResponse; import org.qinan.safetyeval.client.dto.institution.EvalProjectMemberAddCmd; import org.qinan.safetyeval.client.dto.institution.EvalProjectMemberPageQuery; +import org.qinan.safetyeval.client.dto.institution.EvalRiskParticipantSaveCmd; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; @@ -21,6 +25,9 @@ public class EvalProjectMemberController { @Resource private EvalProjectMemberApi evalProjectMemberApi; + @Resource + private EvalRiskAnalysisApi evalRiskAnalysisApi; + @ApiOperation("保存成员(id空新增/非空修改)") @PostMapping("/save") @@ -36,4 +43,18 @@ public class EvalProjectMemberController { public PageResponse page(@Validated EvalProjectMemberPageQuery query) { return evalProjectMemberApi.page(query); } + +//////////////////////////项目经理签字 + @ApiOperation("保存项目经理签字人") + @PostMapping("/participant/save") + public SingleResponse saveParticipant(@Validated @RequestBody List cmd) { + return evalRiskAnalysisApi.saveParticipant(cmd); + } + + @ApiOperation("参与人列表") + @GetMapping("/participant/list") + public SingleResponse> listParticipants( + @ApiParam("项目组id") @RequestParam String projectTeamId) { + return evalRiskAnalysisApi.listParticipants(projectTeamId); + } } diff --git a/safety-eval-app/src/main/java/org/qinan/safetyeval/app/executor/institution/EvalSignTaskExecutor.java b/safety-eval-app/src/main/java/org/qinan/safetyeval/app/executor/institution/EvalSignTaskExecutor.java index f333e397..c5c86a6e 100644 --- a/safety-eval-app/src/main/java/org/qinan/safetyeval/app/executor/institution/EvalSignTaskExecutor.java +++ b/safety-eval-app/src/main/java/org/qinan/safetyeval/app/executor/institution/EvalSignTaskExecutor.java @@ -84,7 +84,8 @@ public class EvalSignTaskExecutor implements EvalSignTaskApi { } private void support(String projectId, String signerPersonnelId, String nodeCode) { - if (ProjectStageEnum.RISK_ANALYSIS.getVal().equals(nodeCode)) { + if (ProjectStageEnum.RISK_ANALYSIS.getVal().equals(nodeCode) + || ProjectStageEnum.PROJECT_GROUP.getVal().equals(nodeCode)) { evalRiskParticipantMapper.update(new LambdaUpdateWrapper() .eq(EvalRiskParticipantDO::getProjectId, projectId) .eq(EvalRiskParticipantDO::getPersonnelId, signerPersonnelId) @@ -143,7 +144,8 @@ public class EvalSignTaskExecutor implements EvalSignTaskApi { .set(EvalSignTaskDO::getTaskStatusCode, SignTaskStatusEnum.SIGNED.getCode()) .set(EvalSignTaskDO::getSignerUrl, cmd.getSignerUrl())); - if (ProjectStageEnum.RISK_ANALYSIS.getVal().equals(evalSignTaskDO.getNodeCode())) { + if (ProjectStageEnum.RISK_ANALYSIS.getVal().equals(evalSignTaskDO.getNodeCode()) + || ProjectStageEnum.PROJECT_GROUP.getVal().equals(evalSignTaskDO.getNodeCode())) { evalRiskParticipantMapper.update(new LambdaUpdateWrapper() .eq(EvalRiskParticipantDO::getPersonnelId, evalSignTaskDO.getSignerPersonnelId()) .eq(EvalRiskParticipantDO::getProjectId, evalSignTaskDO.getProjectId()) diff --git a/safety-eval-client/src/main/java/org/qinan/safetyeval/client/co/institution/EvalProjectDocCO.java b/safety-eval-client/src/main/java/org/qinan/safetyeval/client/co/institution/EvalProjectDocCO.java index e63c8615..01e32a16 100644 --- a/safety-eval-client/src/main/java/org/qinan/safetyeval/client/co/institution/EvalProjectDocCO.java +++ b/safety-eval-client/src/main/java/org/qinan/safetyeval/client/co/institution/EvalProjectDocCO.java @@ -35,4 +35,7 @@ public class EvalProjectDocCO { @ApiModelProperty("查看文档列表, key对应资料类别枚举, val对应同类型的集合") private Map> projectDocUrlMap; + + @ApiModelProperty("备注") + private String remarks; } diff --git a/safety-eval-client/src/main/java/org/qinan/safetyeval/client/co/institution/EvalRiskParticipantCO.java b/safety-eval-client/src/main/java/org/qinan/safetyeval/client/co/institution/EvalRiskParticipantCO.java index b5659032..b08c44c9 100644 --- a/safety-eval-client/src/main/java/org/qinan/safetyeval/client/co/institution/EvalRiskParticipantCO.java +++ b/safety-eval-client/src/main/java/org/qinan/safetyeval/client/co/institution/EvalRiskParticipantCO.java @@ -9,7 +9,7 @@ public class EvalRiskParticipantCO { @ApiModelProperty("主键ID") private String id; - @ApiModelProperty("风险分析ID") + @ApiModelProperty("风险分析or项目组经理ID") private String riskId; @ApiModelProperty("项目ID") diff --git a/safety-eval-client/src/main/java/org/qinan/safetyeval/client/dto/institution/EvalProjectDocAddCmd.java b/safety-eval-client/src/main/java/org/qinan/safetyeval/client/dto/institution/EvalProjectDocAddCmd.java index 106d222c..3a2b8d3c 100644 --- a/safety-eval-client/src/main/java/org/qinan/safetyeval/client/dto/institution/EvalProjectDocAddCmd.java +++ b/safety-eval-client/src/main/java/org/qinan/safetyeval/client/dto/institution/EvalProjectDocAddCmd.java @@ -18,4 +18,5 @@ public class EvalProjectDocAddCmd { @NotEmpty(message = "资料列表不能为空") @ApiModelProperty(value = "资料上传地址", required = true) private List projectDocUrl; + private String remarks; } diff --git a/safety-eval-client/src/main/java/org/qinan/safetyeval/client/dto/institution/EvalRiskParticipantSaveCmd.java b/safety-eval-client/src/main/java/org/qinan/safetyeval/client/dto/institution/EvalRiskParticipantSaveCmd.java index 5c136548..e52d9c27 100644 --- a/safety-eval-client/src/main/java/org/qinan/safetyeval/client/dto/institution/EvalRiskParticipantSaveCmd.java +++ b/safety-eval-client/src/main/java/org/qinan/safetyeval/client/dto/institution/EvalRiskParticipantSaveCmd.java @@ -11,8 +11,8 @@ public class EvalRiskParticipantSaveCmd { @ApiModelProperty("主键ID(修改时传)") private String id; - @NotBlank(message = "风险分析ID不能为空") - @ApiModelProperty(value = "风险分析ID", required = true) + @NotBlank(message = "风险分析or项目组经理ID不能为空") + @ApiModelProperty(value = "风险分析or项目组经理ID", required = true) private String riskId; @ApiModelProperty("人员ID") diff --git a/safety-eval-domain/src/main/java/org/qinan/safetyeval/domain/entity/EvalProjectDocEntity.java b/safety-eval-domain/src/main/java/org/qinan/safetyeval/domain/entity/EvalProjectDocEntity.java index d4f44835..b6c5333a 100644 --- a/safety-eval-domain/src/main/java/org/qinan/safetyeval/domain/entity/EvalProjectDocEntity.java +++ b/safety-eval-domain/src/main/java/org/qinan/safetyeval/domain/entity/EvalProjectDocEntity.java @@ -15,4 +15,5 @@ public class EvalProjectDocEntity { /** 资料上传地址 JSON 原文 */ private String projectDocUrl; private Long tenantId; + private String remarks; } diff --git a/safety-eval-domain/src/main/java/org/qinan/safetyeval/domain/service/EvalProjectDocDomainService.java b/safety-eval-domain/src/main/java/org/qinan/safetyeval/domain/service/EvalProjectDocDomainService.java index e339cfe9..0324a5ea 100644 --- a/safety-eval-domain/src/main/java/org/qinan/safetyeval/domain/service/EvalProjectDocDomainService.java +++ b/safety-eval-domain/src/main/java/org/qinan/safetyeval/domain/service/EvalProjectDocDomainService.java @@ -36,6 +36,7 @@ public class EvalProjectDocDomainService { entity.setProjectName(project.getProjectName()); entity.setEvalTypeCode(project.getEvalTypeCode()); entity.setCustomerName(customer.getCustomerName()); + entity.setRemarks(entity.getRemarks()); return evalProjectDocGateway.save(entity); }