src/main/java/org/springblade/modules/exam/controller/ExamScoreController.java
@@ -106,12 +106,21 @@ */ @PostMapping("/saveExamScore") public R saveExamScore(@RequestBody ExamScoreVO examScore) { return R.status(examScoreService.saveExamScore(examScore)); } /** * 点击了开始考试后超过60分钟后再考试的,计算之前的考试成绩 * @param examScore 考试成绩信息对象 */ @GetMapping("/getExamScore") public R getExamScore(ExamScoreVO examScore) { return R.status(examScoreService.getExamScore(examScore)); } /** * 修改 * * @param examScore 考试成绩信息对象 src/main/java/org/springblade/modules/exam/mapper/ExamPaperMapper.xml
@@ -170,33 +170,59 @@ </delete> <!--查询考试人员考试信息--> <!-- <select id="getExamDetail" resultType="org.springblade.modules.exam.vo.ExamPaperVO">--> <!-- (select--> <!-- ke.id,ke.exam_name examName,ke.start_time startTime,ke.end_time endTime,ke.exam_type examType,--> <!-- sa.candidate_no candidateNo,sa.id applyId,--> <!-- bu.real_name realName,bu.sex,bu.cardid idCardNo--> <!-- from--> <!-- ksxt_exam ke--> <!-- left join--> <!-- sys_apply sa--> <!-- on--> <!-- sa.exam_id = ke.id--> <!-- left join--> <!-- blade_user bu--> <!-- on--> <!-- bu.id = sa.user_id--> <!-- where sa.user_id = #{userId}--> <!-- and is_apply = 1--> <!-- and is_exam = 1--> <!-- and sa.apply_status = 2--> <!-- )--> <!-- union all--> <!-- (select--> <!-- ke.id,ke.exam_name examName,ke.start_time startTime,ke.end_time endTime,ke.exam_type examType,--> <!-- str.candidate_no candidateNo,str.id applyId,--> <!-- bu.real_name realName,bu.sex,bu.cardid idCardNo--> <!-- from--> <!-- ksxt_exam ke--> <!-- left join--> <!-- sys_training_registration str--> <!-- on--> <!-- str.train_exam_id = ke.id--> <!-- left join--> <!-- blade_user bu--> <!-- on--> <!-- bu.id = str.user_id--> <!-- where str.user_id = #{userId}--> <!-- and bu.is_train = 1--> <!-- and (str.is_exam = 1 or str.is_exam = 3)--> <!-- and ke.audit_status = 1--> <!-- and str.cancel = 1--> <!-- and str.audit_status = 1--> <!-- )--> <!-- </select> 、--> <!--查询考试人员考试信息--> <select id="getExamDetail" resultType="org.springblade.modules.exam.vo.ExamPaperVO"> (select select ke.id,ke.exam_name examName,ke.start_time startTime,ke.end_time endTime,ke.exam_type examType, sa.candidate_no candidateNo,sa.id applyId, bu.real_name realName,bu.sex,bu.cardid idCardNo from ksxt_exam ke left join sys_apply sa on sa.exam_id = ke.id left join blade_user bu on bu.id = sa.user_id where sa.user_id = #{userId} and is_apply = 1 and is_exam = 1 and sa.apply_status = 2 ) union all (select ke.id,ke.exam_name examName,ke.start_time startTime,ke.end_time endTime,ke.exam_type examType, str.candidate_no candidateNo,str.id applyId, bu.real_name realName,bu.sex,bu.cardid idCardNo str.candidate_no candidateNo,str.id applyId,str.is_exam isExam, bu.real_name realName,bu.sex,bu.cardid idCardNo, es.exam_time examStartTime,es.id scoreId from ksxt_exam ke left join @@ -207,13 +233,18 @@ blade_user bu on bu.id = str.user_id left join exam_score es on es.apply_id = str.id where str.user_id = #{userId} and bu.is_train = 1 and is_exam = 1 and (str.is_exam = 1 or str.is_exam = 3) and ke.audit_status = 1 and str.cancel = 1 and str.audit_status = 1 ) and ke.start_time <= now() and ke.end_time > now() order by str.id desc </select> <!--查询是当前前缀已生成准考证号码最大的一位--> src/main/java/org/springblade/modules/exam/service/ExamScoreService.java
@@ -92,5 +92,10 @@ Boolean refreshTrainExamScore(); /** * 点击了开始考试后超过60分钟后再考试的,计算之前的考试成绩 * @param examScore * @return */ boolean getExamScore(ExamScoreVO examScore); } src/main/java/org/springblade/modules/exam/service/impl/ExamScoreServiceImpl.java
@@ -192,7 +192,7 @@ //数据同步 String s = "update sys_training_registration set is_exam = " + trainingRegistration1.getIsExam() + " " +"where id = " + "'" + trainingRegistration1.getId() + "';" + "update blade_user set is_apply = " + user.getIsApply() + " " +"where id = " + "'" + user.getId() + "'"; "update blade_user set is_train = " + user.getIsTrain() + " " +"where id = " + "'" + user.getId() + "'"; FtpUtil.sqlFileUpload(s); } @@ -716,4 +716,85 @@ }); return false; } /** * 点击了开始考试后超过60分钟后再考试的,计算之前的考试成绩 * @param examScore * @return */ @Override public boolean getExamScore(ExamScoreVO examScore) { //查询考试成绩 ExamScore score = this.getById(examScore.getId()); //查询考试记录 ExamAnswerRecord examAnswerRecord = new ExamAnswerRecord(); examAnswerRecord.setScoreId(examScore.getId()); List<ExamAnswerRecord> list = examAnswerRecordService.list(Condition.getQueryWrapper(examAnswerRecord)); //设置默认理论成绩为0 int count = 0; //计算成绩 if (list.size()>0){ //成绩相加 count = list.stream().mapToInt(ExamAnswerRecord::getAnswerScore).sum(); }else { //没有考试记录,本次考试理论成绩为 0 count = 0; } int age = 0; UserVO user = new UserVO(); //查询培训报名数据 TrainingRegistration trainingRegistration = new TrainingRegistration(); trainingRegistration.setCandidateNo(score.getCandidateNo()); trainingRegistration.setCancel(1); TrainingRegistration trainingRegistration1 = trainingRegistrationService.getOne(Condition.getQueryWrapper(trainingRegistration)); //查询用户年龄,根据年龄计算总分 user = userService.getUserAgeById(Long.parseLong(trainingRegistration1.getUserId())); //修改用户的培训状态,理论考试结束 user.setIsTrain(3); age = user.getAge(); userService.updateById(user); //修改为已考试 trainingRegistration1.setIsExam(2); trainingRegistrationService.updateById(trainingRegistration1); //数据同步 String s = "update sys_training_registration set is_exam = " + trainingRegistration1.getIsExam() + " " +"where id = " + "'" + trainingRegistration1.getId() + "';" + "update blade_user set is_train = " + user.getIsTrain() + " " +"where id = " + "'" + user.getId() + "'"; FtpUtil.sqlFileUpload(s); //设置理论得分 score.setTheoryGrade(count); //计算总成绩,此时没有实操成绩,总成绩为实操成绩和理论成绩和的一半 if (age<=50) { score.setAllGrade(Math.round(count / 2)); } if (age>50) { score.setAllGrade(Integer.parseInt(String.valueOf(Math.round(count*0.5)))); } //设置状态 if (count>=60){ score.setQualified(2); }else { score.setQualified(1); } //修改成绩数据 int i = baseMapper.updateById(score); String s1 = "update exam_score set exam_id = " + score.getExamId() + ",theory_grade = " + "'" + score.getTheoryGrade() + "'" + ",all_grade = " + "'" + score.getAllGrade() + "'" + ",exam_end_time = " + "'" + new SimpleDateFormat("yyyy-MM-dd HH:mm:dd").format(new Date()) + "'" + ",qualified = " + "'" + score.getQualified() + "'" + " " +"where id = " + "'" + score.getId() + "'"; FtpUtil.sqlFileUpload(s1); if (i>0){ //返回结果 return true; } return false; } } src/main/java/org/springblade/modules/exam/vo/ExamPaperVO.java
@@ -4,6 +4,8 @@ import lombok.EqualsAndHashCode; import org.springblade.modules.exam.entity.ExamPaper; import java.util.Date; /** * 考试类 * @@ -53,7 +55,7 @@ private String deptId; /** * 得分 * 得分id */ private Long scoreId; @@ -71,4 +73,14 @@ * 计算截止时间 */ private String deadline; /** * 考试状态 */ private Integer isExam; /** * 考试开始时间 */ private Date examStartTime; }