diff --git a/src/main/java/com/zhgd/xmgl/modules/baotou/entity/ReturnTrainingDetail.java b/src/main/java/com/zhgd/xmgl/modules/baotou/entity/ReturnTrainingDetail.java index c787af688..92e2d3fe8 100644 --- a/src/main/java/com/zhgd/xmgl/modules/baotou/entity/ReturnTrainingDetail.java +++ b/src/main/java/com/zhgd/xmgl/modules/baotou/entity/ReturnTrainingDetail.java @@ -96,14 +96,20 @@ public class ReturnTrainingDetail implements Serializable { @TableField(exist = false) @ApiModelProperty(value = "工作区域(装置)名称") - private java.lang.String workAreaName; - @TableField(exist = false) - @ApiModelProperty(value = "岗位(工种)名称") - private java.lang.String postWorkTypeName; - @TableField(exist = false) - @ApiModelProperty(value = "复工培训申请(专项培训申请)ID名称") - private java.lang.String applicationIdName; - @TableField(exist = false) - @ApiModelProperty(value = "考试成绩") - private BigDecimal score; + private java.lang.String workAreaName; + @TableField(exist = false) + @ApiModelProperty(value = "岗位(工种)名称") + private java.lang.String postWorkTypeName; + @TableField(exist = false) + @ApiModelProperty(value = "复工培训申请(专项培训申请)ID名称") + private java.lang.String applicationIdName; + @TableField(exist = false) + @ApiModelProperty(value = "考试成绩") + private BigDecimal score; + @TableField(exist = false) + @ApiModelProperty(value = "考试记录id") + private Long recordId; + @TableField(exist = false) + @ApiModelProperty(value = "是否合格:1合格0不合格") + private Integer isPass; } diff --git a/src/main/java/com/zhgd/xmgl/modules/baotou/mapper/ReturnTrainingApplicationMapper.java b/src/main/java/com/zhgd/xmgl/modules/baotou/mapper/ReturnTrainingApplicationMapper.java index b9b11763f..1f7fec70c 100644 --- a/src/main/java/com/zhgd/xmgl/modules/baotou/mapper/ReturnTrainingApplicationMapper.java +++ b/src/main/java/com/zhgd/xmgl/modules/baotou/mapper/ReturnTrainingApplicationMapper.java @@ -60,5 +60,5 @@ public interface ReturnTrainingApplicationMapper extends BaseMapper getQualifierWorker(@Param("list") List collect); + Map getQualifierWorker(@Param("list") List collect); } diff --git a/src/main/java/com/zhgd/xmgl/modules/baotou/mapper/xml/ReturnTrainingApplicationMapper.xml b/src/main/java/com/zhgd/xmgl/modules/baotou/mapper/xml/ReturnTrainingApplicationMapper.xml index e1559a428..89565046e 100644 --- a/src/main/java/com/zhgd/xmgl/modules/baotou/mapper/xml/ReturnTrainingApplicationMapper.xml +++ b/src/main/java/com/zhgd/xmgl/modules/baotou/mapper/xml/ReturnTrainingApplicationMapper.xml @@ -55,7 +55,7 @@ - update exam_train_record set is_new_batch=0 where worker_card=#{idCard} and exam_paper_id = #{paperId} + update exam_train_record set is_new_batch=0 where worker_card=#{idCard} and exam_paper_id = #{paperId} and + is_new_batch = 1 diff --git a/src/main/java/com/zhgd/xmgl/modules/exam/service/impl/ExamTrainRecordServiceImpl.java b/src/main/java/com/zhgd/xmgl/modules/exam/service/impl/ExamTrainRecordServiceImpl.java index 018fb1e90..d10b7d967 100644 --- a/src/main/java/com/zhgd/xmgl/modules/exam/service/impl/ExamTrainRecordServiceImpl.java +++ b/src/main/java/com/zhgd/xmgl/modules/exam/service/impl/ExamTrainRecordServiceImpl.java @@ -1,5 +1,6 @@ package com.zhgd.xmgl.modules.exam.service.impl; +import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.date.DateTime; import cn.hutool.core.date.DateUnit; @@ -129,7 +130,30 @@ public class ExamTrainRecordServiceImpl extends ServiceImpl().eq(ExamTrainRecord::getWorkerCard, card).eq(ExamTrainRecord::getExamPaperId, paperId).eq(ExamTrainRecord::getApplicationId, applicationId)); + List rs = baseMapper.selectList(new LambdaQueryWrapper() + .eq(ExamTrainRecord::getWorkerCard, card) + .eq(ExamTrainRecord::getApplicationId, applicationId)); + ExamTrainRecord notSubmit = rs.stream().filter(o -> Objects.equals(o.getSubmit(), 0)).sorted((o1, o2) -> o2.getCreateTime().compareTo(o1.getCreateTime())).findFirst().map(o -> o).orElse(null); + if (notSubmit == null) { + throw new OpenAlertException("您已提交试卷"); + } + ExamTrainRecord submit = rs.stream().filter(o -> Objects.equals(o.getSubmit(), 1) && Objects.equals(o.getIsNewBatch(), 1)).sorted((o1, o2) -> o2.getCreateTime().compareTo(o1.getCreateTime())).findFirst().map(o -> o).orElse(null); + if (submit == null) { + submit = new ExamTrainRecord(); + BeanUtil.copyProperties(notSubmit, submit); + submit.setSubmit(1); + submit.setIsNewBatch(1); + } else { + //删除未提交的试卷 + examTrainRecordService.remove(new LambdaQueryWrapper() + .eq(ExamTrainRecord::getWorkerCard, card) + .eq(ExamTrainRecord::getApplicationId, applicationId) + .eq(ExamTrainRecord::getSubmit, 0) + ); + } + submit.setStartExamTime(notSubmit.getStartExamTime()); + submit.setExamCount(submit.getExamCount() + 1); + submit.setQuestions(notSubmit.getQuestions()); ExamPaper examPaper = examPaperService.getById(paperId); BigDecimal score = BigDecimal.ZERO; BigDecimal totalScore = BigDecimal.ZERO; @@ -143,26 +167,27 @@ public class ExamTrainRecordServiceImpl extends ServiceImpl examAnswerQuestion.getAnswer() != null ? examAnswerQuestion.getAnswer() : "").collect(Collectors.toList()))); - r.setExamNum(1); - r.setScore(score); - r.setIsPass(NumberUtil.isGreaterOrEqual(score, examPaper.getPassLine()) ? 1 : 0); - long duration = DateUtil.between(r.getStartExamTime(), new Date(), DateUnit.SECOND) * 1000; - r.setDuration(DateUtil.formatBetween(duration)); - r.setTotalScore(totalScore); - this.updateById(r); + submit.setSelectOptions(StrUtil.join(",", examAnswerQuestionList.stream().map(examAnswerQuestion -> examAnswerQuestion.getAnswer() != null ? examAnswerQuestion.getAnswer() : "").collect(Collectors.toList()))); + submit.setExamNum(1); + submit.setScore(score); + submit.setIsPass(NumberUtil.isGreaterOrEqual(score, examPaper.getPassLine()) ? 1 : 0); + long duration = DateUtil.between(submit.getStartExamTime(), new Date(), DateUnit.SECOND) * 1000; + submit.setDuration(DateUtil.formatBetween(duration)); + submit.setTotalScore(totalScore); + baseMapper.updateOldBatch(submit.getWorkerCard(), examPaper.getId() + ""); + this.updateById(submit); ExamSubject subject = examSubjectService.getById(examPaper.getSubjectId()); - if (Objects.equals(r.getIsPass(), 1)) { + if (Objects.equals(submit.getIsPass(), 1)) { //违章再教育合格:下发门禁 //复工培训合格:下发门禁,自动修改成入场 - if (Objects.equals(subject.getType(), 2) || Objects.equals(subject.getType(), 1) && Objects.equals(r.getIsReEducation(), 1)) { + if (Objects.equals(subject.getType(), 2) || Objects.equals(subject.getType(), 1) && Objects.equals(submit.getIsReEducation(), 1)) { // HashMap map = new HashMap<>(16); // map.put("id", examTrainRecord.getWorkerId()); // map.put("deductScore", 100); // workerInfoService.updateScoreSendAuth(map); List infos = workerInfoService.selectWorkerInfoList(new MapBuilder() - .put("id", r.getWorkerId()) - .put("projectSn", r.getProjectSn()) + .put("id", submit.getWorkerId()) + .put("projectSn", submit.getProjectSn()) .build()).getRecords(); if (CollUtil.isNotEmpty(infos)) { WorkerInfo workerInfo = infos.get(0); @@ -177,8 +202,8 @@ public class ExamTrainRecordServiceImpl extends ServiceImpl examPaper.getRetakeNum()) { - String workerCard = r.getWorkerCard(); + if (Objects.equals(subject.getType(), 1) && submit.getExamCount() > examPaper.getRetakeNum()) { + String workerCard = submit.getWorkerCard(); List admissionIds = workerAdmissionDetailService.list(new LambdaQueryWrapper() .eq(WorkerAdmissionDetail::getIdCard, workerCard) ).stream().map(WorkerAdmissionDetail::getWorkerAdmissionId).distinct().collect(Collectors.toList()); @@ -187,11 +212,11 @@ public class ExamTrainRecordServiceImpl extends ServiceImpl() .eq(ExamTrainRecord::getWorkerCard, idCard) .eq(ExamTrainRecord::getExamPaperId, examPaperId) - .eq(ExamTrainRecord::getApplicationId, examPaperId) + .eq(ExamTrainRecord::getApplicationId, applicationId) + .eq(ExamTrainRecord::getSubmit, 1) ); } - if (trainRecord != null) { if (trainRecord.getExamCount() > paper.getRetakeNum()) { throw new OpenAlertException("您已没有考试的次数!"); } - this.setQuestionsIf(paper, trainRecord); - trainRecord.setStartExamTime(new Date()); - trainRecord.setExamCount(trainRecord.getExamCount() + 1); - trainRecord.setFromType(fromType); - baseMapper.updateById(trainRecord); - baseMapper.update(trainRecord, new LambdaUpdateWrapper().set(ExamTrainRecord::getIsPass, null).eq(ExamTrainRecord::getId, trainRecord.getId())); - typeName = trainRecord.getWorkerType(); - } else { - Long id; - String wn; - String teamName; - DateTime entryTime = null; - Long enterpriseId; - if (info != null) { - id = info.getId(); - wn = info.getWorkerName(); - teamName = info.getTeamName(); - typeName = info.getPostWorkTypeName(); - if (StrUtil.isNotBlank(info.getEnterDate())) { - entryTime = DateUtil.parseDate(info.getEnterDate()); - } - enterpriseId = info.getEnterpriseId(); - } else { - id = admissionDetail.getId(); - wn = admissionDetail.getWorkerName(); - teamName = admissionDetail.getTeam(); - typeName = admissionDetail.getPostWorkTypeName(); - entryTime = DateUtil.parseDate(admissionDetail.getEntryDeadline()); - enterpriseId = admissionDetail.getEnterpriseId(); - } - trainRecord = new ExamTrainRecordVo(); - this.setQuestionsIf(paper, trainRecord); - trainRecord.setWorkerId(id); - trainRecord.setWorkerName(wn); - trainRecord.setWorkerTeam(teamName); - trainRecord.setWorkerType(typeName); - trainRecord.setWorkerCard(idCard); - trainRecord.setEntryTime(entryTime); - trainRecord.setExamCount(1); - trainRecord.setIsPass(null); - trainRecord.setProjectSn(projectSn); - trainRecord.setCreateTime(new Date()); - trainRecord.setStartExamTime(new Date()); - trainRecord.setDuration(String.valueOf(paper.getDuration())); - trainRecord.setEnterpriseId(enterpriseId); - trainRecord.setIsReEducation(isReEducation); - trainRecord.setExamPaperId(paper.getId()); - trainRecord.setFromType(fromType); - trainRecord.setApplicationId(Long.valueOf(applicationId)); - trainRecord.setApplicationType(applicationType); - trainRecord.setIsNewBatch(1); - baseMapper.updateOldBatch(idCard, examPaperId); - baseMapper.insert(trainRecord); } +// if (trainRecord != null) { +// if (trainRecord.getExamCount() > paper.getRetakeNum()) { +// throw new OpenAlertException("您已没有考试的次数!"); +// } +// this.setQuestionsIf(paper, trainRecord); +// trainRecord.setStartExamTime(new Date()); +// trainRecord.setExamCount(trainRecord.getExamCount() + 1); +// trainRecord.setFromType(fromType); +// baseMapper.updateById(trainRecord); +// baseMapper.update(trainRecord, new LambdaUpdateWrapper().set(ExamTrainRecord::getIsPass, null).eq(ExamTrainRecord::getId, trainRecord.getId())); +// typeName = trainRecord.getWorkerType(); +// } else { + Long id; + String wn; + String teamName; + DateTime entryTime = null; + Long enterpriseId; + if (info != null) { + id = info.getId(); + wn = info.getWorkerName(); + teamName = info.getTeamName(); + typeName = info.getPostWorkTypeName(); + if (StrUtil.isNotBlank(info.getEnterDate())) { + entryTime = DateUtil.parseDate(info.getEnterDate()); + } + enterpriseId = info.getEnterpriseId(); + } else { + id = admissionDetail.getId(); + wn = admissionDetail.getWorkerName(); + teamName = admissionDetail.getTeam(); + typeName = admissionDetail.getPostWorkTypeName(); + entryTime = DateUtil.parseDate(admissionDetail.getEntryDeadline()); + enterpriseId = admissionDetail.getEnterpriseId(); + } + trainRecord = new ExamTrainRecordVo(); + this.setQuestionsIf(paper, trainRecord); + trainRecord.setWorkerId(id); + trainRecord.setWorkerName(wn); + trainRecord.setWorkerTeam(teamName); + trainRecord.setWorkerType(typeName); + trainRecord.setWorkerCard(idCard); + trainRecord.setEntryTime(entryTime); + trainRecord.setExamCount(1); + trainRecord.setIsPass(null); + trainRecord.setProjectSn(projectSn); + trainRecord.setCreateTime(new Date()); + trainRecord.setStartExamTime(new Date()); + trainRecord.setDuration(String.valueOf(paper.getDuration())); + trainRecord.setEnterpriseId(enterpriseId); + trainRecord.setIsReEducation(isReEducation); + trainRecord.setExamPaperId(paper.getId()); + trainRecord.setFromType(fromType); + trainRecord.setApplicationId(Long.valueOf(applicationId)); + trainRecord.setApplicationType(applicationType); + trainRecord.setIsNewBatch(0); + trainRecord.setSubmit(0); +// baseMapper.updateOldBatch(idCard, examPaperId); + baseMapper.insert(trainRecord); +// } ExamScanCode scanCode = new ExamScanCode(); scanCode.setExamPaperId(paper.getId());