Commit 64bef238 authored by 鲁鸿波's avatar 鲁鸿波

教育培训补考bug修改

危险作业bug修改
parent 9a718b4b
......@@ -376,6 +376,18 @@ COMMENT ON COLUMN public.t_hazard_work_plan_monitoring_record_project.hazard_wor
#20251116上线需求
# 北良调整成短流程
update t_sys_config set status = '1' where config_id in('3','4');
INSERT INTO "public"."t_sys_config" ("config_id", "config_name", "config_key", "config_value", "config_type", "status", "create_by", "create_date", "update_by", "update_date", "remarks") VALUES ('6', '北良公司-公司级机构ids', 'sys.beiliang.orgs', '74ba35d937a3403ca59e37d238a0d93f,dafc181b7b314f8fb26c277afcbfeafc,bf729a8807ae4804baf5b719889a1b10,640323dc46334c8d8467a6d1889f90b1,8be46ac128e24c658ebc890f9da7818a
,71ccfa9b528c43eba3c374990472c5f4,703c7a0dbbe84d768bcb175905d3140d,a072abc298464c32a66761acbbf851be,bc8047cac1214b558ed9465a92cf3f27,51555a47ff6a42c0a75814fee3e60676,97180fe2554b4f2a9ec6d1cf213b7f67,ef4e50ad1da64b9ba0e9c894faca4487,b66916fcfad44412a17aa3f641cd2ad5
,b828ca4431854e699195888466057955,e5a463b08c9d4e54bd47ed416941380c,7ba23b0151cb49578cd3abd5ceea72ac,d4185815c13544c3950416d77cd6d65c,164b5cf61efe4a269911e2097eb997f9
,49d90fa9ddac4b94928afc126f72161c,b5e5a052640f4a5b82b0ce7ef0f31bb0,b82dc615aecb4b2dae28d82ce8eb4693,bed4208a45254ff8b072e3737cdbe85f,c4396dd90e964a208a9992186632ff59
,5c7b5e799ae6482bae0ca375e64210de,6f7549e8402643beb79e4f726722ed27,6ceddfaddf20442ca861f58ecb139012,311ee5aebc884803a0d0e1353db805cd,1335dbc3f81b4919bf59014fede4819d', 'N', '0', NULL, '2024-12-24 15:29:54', NULL, '2024-12-24 15:29:54', NULL);
INSERT INTO "public"."t_sys_config" ("config_id", "config_name", "config_key", "config_value", "config_type", "status", "create_by", "create_date", "update_by", "update_date", "remarks") VALUES ('5', '北良公司-部门级机构ids', 'sys.beiliang.depts', '', 'N', '0', NULL, '2024-12-24 15:29:54', NULL, '2024-12-24 15:29:54', NULL);
新增表: t_train_examination_manage_retake
ALTER TABLE t_hazard_work_plan ADD revoke_opinion varchar(255) NULL;
......
......@@ -309,6 +309,9 @@ public class THazardWorkPlan extends SuperModel
@TableField("guardian_signature")
private String guardianSignature;
@ApiModelProperty(value = "当前流程环节")
@TableField(exist = false)
private String currentTaskName;
public static final String ID ="id";
......
......@@ -294,6 +294,14 @@ public class THazardWorkPlanServiceImpl extends SuperServiceImpl<THazardWorkPlan
tHazardWorkPlanDTO.setWorkStatus(WorkPlanStatusEnum.TO_BE_CLOSED.getDescription());
}
tHazardWorkPlanDTO.setCheckCount(tHazardWorkPlanCheckDao.countByPlanId(tHazardWorkPlanDTO.getId()));
// 设置当前任务名称
if (StringUtils.isNotEmpty(tHazardWorkPlanDTO.getProcessId())) {
String taskName = getCurrentTaskName(tHazardWorkPlanDTO.getProcessId());
tHazardWorkPlanDTO.setCurrentTaskName(taskName);
} else {
tHazardWorkPlanDTO.setCurrentTaskName("未启动");
}
}
Page<THazardWorkPlanDTO> planPage = new Page<>();
planPage.setRecords(tHazardWorkPlanDTOS);
......@@ -303,6 +311,48 @@ public class THazardWorkPlanServiceImpl extends SuperServiceImpl<THazardWorkPlan
return planPage;
}
/**
* 获取当前流程的任务名称
*/
private String getCurrentTaskName(String processInstanceId) {
if (StringUtils.isEmpty(processInstanceId)) {
return "未启动流程";
}
try {
// 查询当前运行中的任务
List<Task> activeTasks = taskService.createTaskQuery()
.processInstanceId(processInstanceId)
.list();
if (activeTasks != null && !activeTasks.isEmpty()) {
StringBuilder taskNames = new StringBuilder();
for (Task task : activeTasks) {
if (taskNames.length() > 0) {
taskNames.append(",");
}
taskNames.append(task.getName()); // 获取任务名称
}
return taskNames.toString();
}
// 检查流程是否已结束
ProcessInstance processInstance = runtimeService.createProcessInstanceQuery()
.processInstanceId(processInstanceId)
.singleResult();
if (processInstance == null) {
return "流程已结束";
}
return "等待处理";
} catch (Exception e) {
log.error("查询任务名称失败,流程实例ID: {}", processInstanceId, e);
return "查询失败";
}
}
public String buildWorkStatus(THazardWorkPlanDTO tHazardWorkPlanDTO) {
if (tHazardWorkPlanDTO.getWorkStatus().equals(WorkPlanStatusEnum.PERMIT.getValue()) && StringUtils.isNotBlank(tHazardWorkPlanDTO.getLicenseStatus())) {
tHazardWorkPlanDTO.setBuildWorkStatus(WorkPlanStatusEnum.UNDER_APPROVAL.getValue());
......@@ -2253,6 +2303,11 @@ public class THazardWorkPlanServiceImpl extends SuperServiceImpl<THazardWorkPlan
if (StringHelper.isNotEmpty(vars) && StringHelper.isNotNull(vars.get("opinion"))) {
opinion = (String) vars.get("opinion");
}
// 先删除已办记录
deleteDoneRecords(completeTask.getBizId());
//关闭主流程数据
try {
if(byId.getProcessId() != null){
......@@ -2265,10 +2320,32 @@ public class THazardWorkPlanServiceImpl extends SuperServiceImpl<THazardWorkPlan
THazardWorkPlan tHazardWorkPlan = new THazardWorkPlan();
tHazardWorkPlan.setId(completeTask.getBizId());
tHazardWorkPlan.setWorkStatus(WorkPlanStatusEnum.DRAFT.getValue());
tHazardWorkPlan.setCancelOpinion(opinion);
tHazardWorkPlan.setRevokeOpinion(opinion);
this.updateById(tHazardWorkPlan);
}
private void deleteDoneRecords(String bizId) {
try {
// 获取流程实例ID
THazardWorkPlan entity = this.getById(bizId);
if (entity != null && entity.getProcessId() != null) {
String processInstanceId = entity.getProcessId();
// 删除历史任务记录(已办记录)
List<HistoricTaskInstance> historicTasks = historyService.createHistoricTaskInstanceQuery()
.processInstanceId(processInstanceId)
.list();
for (HistoricTaskInstance task : historicTasks) {
// 删除历史任务
historyService.deleteHistoricTaskInstance(task.getId());
}
}
} catch (Exception e) {
log.error("删除已办记录失败,业务ID: {}", bizId, e);
// 根据业务需求决定是否抛出异常
}
}
}
......@@ -412,39 +412,41 @@ public class TTrainMyManagementController extends SuperController {
for(TTrainMyManagementQueryVO item:list){
TrainExaminationManageRetake trainExaminationManageRetake = trainExaminationManageRetakeService.getByTrainExaminationManageId(item.getTaskId());
if(null != trainExaminationManageRetake){
item.setTrainExaminationManageRetake(trainExaminationManageRetake);
//判断正式考试成绩是否大于及格线,大于则不让补考
if(null != item.getTestScore() && !"".equals(item.getTestScore())){
if(Double.valueOf(item.getTestScore())>=Double.valueOf(trainExaminationManageRetake.getPassScore())){
item.setRepairStatus("2");
}else{
//判断是否在补考时间内
boolean isDuringExam = currentTime.after(trainExaminationManageRetake.getExamStartTime()) && currentTime.before(trainExaminationManageRetake.getExamEndTime());
if(isDuringExam){
//判断没有补考过
List<TTrainTestQuestionsExercise> tTrainTestQuestionsExercises = tTrainTestQuestionsExerciseService.getByMyIdAndCreateBy(item.getId(),getUserId());
if(tTrainTestQuestionsExercises.size() == 0){
//判断没有补考过
List<TTrainTestQuestionsExercise> tTrainTestQuestionsExercises = tTrainTestQuestionsExerciseService.getByMyIdAndCreateBy(item.getId(),getUserId());
if(tTrainTestQuestionsExercises.size() == 0){
//判断是否在补考时间内
boolean isDuringExam = currentTime.after(trainExaminationManageRetake.getExamStartTime()) && currentTime.before(trainExaminationManageRetake.getExamEndTime());
if(isDuringExam){
item.setRepairStatus("1");
}else{
item.setRepairStatus("3");
item.setRepairStatus("2");
}
}else{
item.setRepairStatus("2");
item.setRepairStatus("3");
}
}
}else{
//没有成绩
//判断是否在补考时间内
boolean isDuringExam = currentTime.after(trainExaminationManageRetake.getExamStartTime()) && currentTime.before(trainExaminationManageRetake.getExamEndTime());
if(isDuringExam){
//判断没有补考过
List<TTrainTestQuestionsExercise> tTrainTestQuestionsExercises = tTrainTestQuestionsExerciseService.getByMyIdAndCreateBy(item.getId(),getUserId());
if(tTrainTestQuestionsExercises.size() == 0){
//判断没有补考过
List<TTrainTestQuestionsExercise> tTrainTestQuestionsExercises = tTrainTestQuestionsExerciseService.getByMyIdAndCreateBy(item.getId(),getUserId());
if(tTrainTestQuestionsExercises.size() == 0){
//判断是否在补考时间内
boolean isDuringExam = currentTime.after(trainExaminationManageRetake.getExamStartTime()) && currentTime.before(trainExaminationManageRetake.getExamEndTime());
if(isDuringExam){
item.setRepairStatus("1");
}else{
item.setRepairStatus("3");
item.setRepairStatus("2");
}
}else{
item.setRepairStatus("2");
item.setRepairStatus("3");
}
}
}else{
......@@ -462,39 +464,41 @@ public class TTrainMyManagementController extends SuperController {
for(TTrainMyManagementQueryVO item:baseResponseListBaseResponse.getData().getData()){
TrainExaminationManageRetake trainExaminationManageRetake = trainExaminationManageRetakeService.getByTrainExaminationManageId(item.getTaskId());
if(null != trainExaminationManageRetake){
item.setTrainExaminationManageRetake(trainExaminationManageRetake);
//判断正式考试成绩是否大于及格线,大于则不让补考
if(null != item.getTestScore() && !"".equals(item.getTestScore())){
if(Double.valueOf(item.getTestScore())>=Double.valueOf(trainExaminationManageRetake.getPassScore())){
item.setRepairStatus("2");
}else{
//判断是否在补考时间内
boolean isDuringExam = currentTime.after(trainExaminationManageRetake.getExamStartTime()) && currentTime.before(trainExaminationManageRetake.getExamEndTime());
if(isDuringExam){
//判断没有补考过
List<TTrainTestQuestionsExercise> tTrainTestQuestionsExercises = tTrainTestQuestionsExerciseService.getByMyIdAndCreateBy(item.getId(),getUserId());
if(tTrainTestQuestionsExercises.size() == 0){
//判断没有补考过
List<TTrainTestQuestionsExercise> tTrainTestQuestionsExercises = tTrainTestQuestionsExerciseService.getByMyIdAndCreateBy(item.getId(),getUserId());
if(tTrainTestQuestionsExercises.size() == 0){
//判断是否在补考时间内
boolean isDuringExam = currentTime.after(trainExaminationManageRetake.getExamStartTime()) && currentTime.before(trainExaminationManageRetake.getExamEndTime());
if(isDuringExam){
item.setRepairStatus("1");
}else{
item.setRepairStatus("3");
item.setRepairStatus("2");
}
}else{
item.setRepairStatus("2");
item.setRepairStatus("3");
}
}
}else{
//没有成绩
//判断是否在补考时间内
boolean isDuringExam = currentTime.after(trainExaminationManageRetake.getExamStartTime()) && currentTime.before(trainExaminationManageRetake.getExamEndTime());
if(isDuringExam){
//判断没有补考过
List<TTrainTestQuestionsExercise> tTrainTestQuestionsExercises = tTrainTestQuestionsExerciseService.getByMyIdAndCreateBy(item.getId(),getUserId());
if(tTrainTestQuestionsExercises.size() == 0){
//判断没有补考过
List<TTrainTestQuestionsExercise> tTrainTestQuestionsExercises = tTrainTestQuestionsExerciseService.getByMyIdAndCreateBy(item.getId(),getUserId());
if(tTrainTestQuestionsExercises.size() == 0){
//判断是否在补考时间内
boolean isDuringExam = currentTime.after(trainExaminationManageRetake.getExamStartTime()) && currentTime.before(trainExaminationManageRetake.getExamEndTime());
if(isDuringExam){
item.setRepairStatus("1");
}else{
item.setRepairStatus("3");
item.setRepairStatus("2");
}
}else{
item.setRepairStatus("2");
item.setRepairStatus("3");
}
}
}else{
......
......@@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.testor.module.hazard.model.domain.TrainExaminationManageRetake;
import com.tongtech.tfw.backend.common.models.supers.SuperModel;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
......@@ -226,6 +227,10 @@ public class TTrainMyManagement extends SuperModel
@TableField(exist = false)
private String repairStatus;
@ApiModelProperty(value = "补考信息")
@TableField(exist = false)
private TrainExaminationManageRetake trainExaminationManageRetake;
public static final String ID ="id";
public static final String PARENT_ID ="parent_id";
public static final String PERSON_ID ="person_id";
......
......@@ -723,7 +723,8 @@ public class TTrainTestQuestionsExerciseServiceImpl extends SuperServiceImpl<TTr
update = tTrainMyManagementService.update(new UpdateWrapper<TTrainMyManagement>()
.eq(TTrainMyManagement.ID, myid)
.set(TTrainMyManagement.REPAIR_TEST, sum)
.set(TTrainMyManagement.PERCENTAGE,percentage));
.set(TTrainMyManagement.PERCENTAGE,percentage)
.set(TTrainMyManagement.IS_ADD_EXAM,"1"));
}
......
......@@ -108,5 +108,12 @@ public interface TTrainProjectDao extends SuperDao<TTrainProject> {
List<String> findScoreStat(@Param("projectId") String projectId);
/**
* 统计补考成绩
* @param projectId
* @return
*/
List<String> findScoreRepairTest(@Param("projectId") String projectId);
}
......@@ -55,7 +55,8 @@ public class TrainProjectUserDetailStat {
@ApiModelProperty(value = "考试地点")
private String examSite;
@ApiModelProperty(value = "补考成绩")
private String repairTest;
@ApiModelProperty(value = "是否是外部培训数据“ 1 是,0.否”")
......
......@@ -27,4 +27,11 @@ public interface TrainProjectStatisticsDetailService {
*/
List<String> findScoreStatByProjectId(ProjectStatPara para);
/**
* 培训计划下的学员考试统计
* @param para
* @return
*/
List<String> findScoreRepairTest(ProjectStatPara para);
}
\ No newline at end of file
......@@ -458,6 +458,7 @@ public class TTrainProjectServiceImpl extends SuperServiceImpl<TTrainProjectDao,
ProjectScoreStatVo scoreStatVo = new ProjectScoreStatVo();
List<String> scoreList = projectStatisticsDetailService.findScoreStatByProjectId(para);
scoreList.addAll(projectStatisticsDetailService.findScoreRepairTest(para));
List<BigDecimal> doubleList = new ArrayList<>();
if (!CollectionUtils.isEmpty(scoreList)) {
BigDecimal sum = BigDecimal.ZERO;
......
......@@ -8,6 +8,7 @@ import com.testor.module.train.project.service.TrainProjectStatisticsDetailServi
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.Collections;
import java.util.List;
/**
......@@ -34,4 +35,9 @@ public class TrainProjectStatisticsDetailServiceImpl implements TrainProjectStat
public List<String> findScoreStatByProjectId(ProjectStatPara para) {
return tTrainProjectDao.findScoreStat(para.getProjectId());
}
@Override
public List<String> findScoreRepairTest(ProjectStatPara para) {
return tTrainProjectDao.findScoreRepairTest(para.getProjectId());
}
}
......@@ -123,7 +123,8 @@
m.visit_end_time,
m.test_score,
m.exam_duration,
p.exam_site
p.exam_site,
m.repair_test
FROM
t_train_my_management m
LEFT JOIN t_train_project p ON p.id = m.task_id
......
......@@ -546,6 +546,26 @@
) AND m.test_score IS NOT NULL
</select>
<select id="findScoreRepairTest" resultType="java.lang.String">
SELECT
m.test_score
FROM
t_train_my_management m
WHERE
m.id IN (
SELECT
m.parent_id
FROM
t_train_my_management m
LEFT JOIN t_train_project p ON p.id = m.task_id
WHERE
p.id = #{projectId}
AND p.is_add_exam = '1'
) AND m.test_score IS NOT NULL
</select>
<select id="findTrainProjectCompleted" resultType="com.testor.module.train.project.model.stat.ProjectStatTotalVo">
SELECT
COUNT(m.person_id ) AS projectPersonCompleted
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment