Browse Source

3.4.2 update

xiaofei 7 tháng trước cách đây
mục cha
commit
b3e16bcc97

+ 2 - 2
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/ExamTaskServiceImpl.java

@@ -864,7 +864,6 @@ public class ExamTaskServiceImpl extends ServiceImpl<ExamTaskMapper, ExamTask> i
         }
 
         Map<String, Object> map = new HashMap<>();
-//        if (ExamStatusEnum.SUBMIT.name().equals(examTaskDetail.getOperateType()) && examTask.getReview()) {
         // 审核一级
         Task task = taskService.createTaskQuery().processInstanceId(String.valueOf(examTask.getFlowId())).singleResult();
         if (Objects.nonNull(task)) {
@@ -875,7 +874,6 @@ public class ExamTaskServiceImpl extends ServiceImpl<ExamTaskMapper, ExamTask> i
             map = activitiService.taskApprove(map);
             map.put(SystemConstant.SEND_FLOW_MQ, true);
         }
-//        }
 
         examTask.setStatus(ExamStatusEnum.SUBMIT);
         examTask.setOpenAb(examTaskApplyPram.getOpenAb());
@@ -1764,6 +1762,8 @@ public class ExamTaskServiceImpl extends ServiceImpl<ExamTaskMapper, ExamTask> i
             }
             result.addAll(examTaskStudentObjectResultMap.values());
         }
+        // 按教学班排序
+        result.sort(Comparator.comparing(ExamTaskStudentObjectResult::getTeachClassName));
         return result;
     }
 

+ 2 - 2
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/OpenApiServiceImpl.java

@@ -237,9 +237,9 @@ public class OpenApiServiceImpl implements OpenApiService {
             examStudentScore.setTeacherName(gradeBatchStudentClazz.getTeacherName());
             examStudentScore.setTeacherCode(gradeBatchStudentClazz.getTeacherNumber());
             int status = 1;
-            if (e.getAbsent() || e.getManualAbsent() || e.getOmrAbsent()) {
+            if (e.getAbsent() || (e.getManualAbsent() != null && e.getManualAbsent()) || e.getOmrAbsent()) {
                 status = 2;
-            } else if (e.getBreach() || e.getManualBreach() || e.getOmrBreach()) {
+            } else if (e.getBreach() || (e.getManualBreach() != null && e.getManualBreach()) || e.getOmrBreach()) {
                 status = 3;
             }
             examStudentScore.setStatus(status);

+ 7 - 1
distributed-print/install/mysql/upgrade/3.4.2.sql

@@ -178,4 +178,10 @@ ALTER TABLE t_c_paper_struct ADD CONSTRAINT t_c_paper_struct_unique UNIQUE KEY (
 ALTER TABLE t_c_final_score DROP KEY t_c_final_score_unique;
 ALTER TABLE t_c_final_score ADD CONSTRAINT t_c_final_score_unique UNIQUE KEY (culture_program_id,exam_id,course_id,paper_number,student_code);
 ALTER TABLE t_c_usual_score DROP KEY t_c_usual_score_unique;
-ALTER TABLE t_c_usual_score ADD CONSTRAINT t_c_usual_score_unique UNIQUE KEY (culture_program_id,exam_id,course_id,paper_number,student_code);
+ALTER TABLE t_c_usual_score ADD CONSTRAINT t_c_usual_score_unique UNIQUE KEY (culture_program_id,exam_id,course_id,paper_number,student_code);
+
+update mark_student set is_manual_absent = 1, scan_status = 'UNEXIST' where scan_status = 'MANUAL_ABSENT';
+
+ALTER TABLE `mark_student`
+    CHANGE COLUMN `is_manual_absent` `is_manual_absent` TINYINT(4) NULL DEFAULT NULL COMMENT '是否人工指定缺考' ,
+    CHANGE COLUMN `is_manual_breach` `is_manual_breach` TINYINT(1) NULL DEFAULT NULL COMMENT '人工指定缺考' ;

+ 1 - 1
teachcloud-common/src/main/java/com/qmth/teachcloud/common/enums/UploadFileEnum.java

@@ -39,7 +39,7 @@ public enum UploadFileEnum {
     /**
      * 阅卷考生题卡原图(path:{uploadType}/{examId}/{coursePaperId}/{studentCode}/时间戳-{pageIndex}.jpg)
      */
-    SHEET("sheet", "private", "%s/%d/%s/%s/%d-%d.%s"),
+    SHEET("sheet", "private", "%s/%d/%s/%d/%s/%d-%d.%s"),
     /**
      * 卡格式文件(path:{uploadType}/{examId}/{coursePaperId}/{number}.json)
      */

+ 1 - 1
teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/service/MarkFileService.java

@@ -15,7 +15,7 @@ public interface MarkFileService {
 	 String uploadSheet(InputStream ins, String md5, Long examId, Long batchId, String coursePaperId,String studentCode, Integer paperNumber,
 	            Integer pageIndex);
 
-	String getSheetUri(Long examId, String coursePaperId, String studentCode, Integer paperNumber, Integer pageIndex);
+	String getSheetUri(Long examId, String coursePaperId, Long batchId, String studentCode, Integer paperNumber, Integer pageIndex);
 
 	String getPackageUri(Long examId, String coursePaperId, String packageCode, Integer packageNo);
 

+ 0 - 2
teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/service/MarkStudentService.java

@@ -213,8 +213,6 @@ public interface MarkStudentService extends IService<MarkStudent> {
 
     MarkStudent assembleByBasicExamStudent(BasicExamStudent basicExamStudent, MarkPaper markPaper, Set<String> secretNumberSet);
 
-    void deleteByExamIdAndPaperNumberAndStudentCode(Long examId, String paperNumber, String studentCode);
-
     void deleteByBasicStudentId(List<Long> basicExamStudentIds);
 
     Integer maxCardNumber(Long examId, String paperNumber);

+ 3 - 3
teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/service/impl/MarkFileServiceImpl.java

@@ -68,7 +68,7 @@ public class MarkFileServiceImpl implements MarkFileService {
     @Override
     public String uploadSheet(InputStream in, String md5, Long examId, Long batchId, String coursePaperId,
                               String studentCode, Integer paperNumber, Integer pageIndex) {
-        String path = getSheetUri(examId, coursePaperId, studentCode, paperNumber, pageIndex);
+        String path = getSheetUri(examId, coursePaperId, batchId, studentCode, paperNumber, pageIndex);
         try {
             return fileStoreUtils.uploadFile(in, md5, UploadFileEnum.SHEET, path);
         } catch (RuntimeException e) {
@@ -86,8 +86,8 @@ public class MarkFileServiceImpl implements MarkFileService {
     }
 
     @Override
-    public String getSheetUri(Long examId, String coursePaperId, String studentCode, Integer paperNumber, Integer pageIndex) {
-        return UploadFileEnum.SHEET.getPath(UploadFileEnum.SHEET.getTitle(), examId, coursePaperId, studentCode, paperNumber, pageIndex, FormatType.JPG.name().toLowerCase());
+    public String getSheetUri(Long examId, String coursePaperId, Long batchId, String studentCode, Integer paperNumber, Integer pageIndex) {
+        return UploadFileEnum.SHEET.getPath(UploadFileEnum.SHEET.getTitle(), examId, coursePaperId, batchId, studentCode, paperNumber, pageIndex, FormatType.JPG.name().toLowerCase());
     }
 
     @Override

+ 1 - 1
teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/service/impl/MarkServiceImpl.java

@@ -1171,7 +1171,7 @@ public class MarkServiceImpl implements MarkService {
 
     private void calculate(MarkStudent student) {
         // 未上传、缺考的考生不统分
-        if (!student.getUpload() || student.getAbsent() || student.getOmrAbsent() || student.getManualAbsent()) {
+        if (!student.getUpload() || student.getAbsent() || student.getOmrAbsent() || (student.getManualAbsent() != null && student.getManualAbsent())) {
             return;
         }
         try {

+ 6 - 14
teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/service/impl/MarkStudentServiceImpl.java

@@ -502,6 +502,7 @@ public class MarkStudentServiceImpl extends ServiceImpl<MarkStudentMapper, MarkS
         markStudent.setExamId(examId);
         markStudent.setCourseId(courseId);
         markStudent.setCoursePaperId(coursePaperId);
+        markStudent.setScanStatus(ScanStatus.SCANNED);
         markStudent.setPaperTypeCheckStatus(status);
         return baseMapper.selectCountByQuery(markStudent, dpr);
     }
@@ -586,8 +587,8 @@ public class MarkStudentServiceImpl extends ServiceImpl<MarkStudentMapper, MarkS
                     student.setManualAbsent(page.getAbsent() != null && page.getAbsent().getResult());
                     student.setManualBreach(page.getBreach() != null && page.getBreach().getResult());
                 }
-                student.setAbsent(student.getOmrAbsent() || student.getManualAbsent());
-                student.setBreach(student.getOmrBreach() || student.getManualBreach());
+                student.setAbsent(student.getOmrAbsent() || (student.getManualAbsent() != null && student.getManualAbsent()));
+                student.setBreach(student.getOmrBreach() || (student.getManualBreach() != null && student.getManualBreach()));
 
                 // 根据卷型识别结果更新考生卷型,如果卷型识别结果异常则添加到卷型检查中
                 StringResult paperTypeResult = page.getPaperType();
@@ -739,7 +740,7 @@ public class MarkStudentServiceImpl extends ServiceImpl<MarkStudentMapper, MarkS
             studentObjectiveDetailDto.setSubjectiveScore(
                     markStudent.getSubjectiveScore() != null ? markStudent.getSubjectiveScore() : 0);
             studentObjectiveDetailDto.setUpload(markStudent.getUpload());
-            studentObjectiveDetailDto.setAbsent(markStudent.getAbsent() || markStudent.getManualAbsent() || markStudent.getOmrAbsent());
+            studentObjectiveDetailDto.setAbsent(markStudent.getAbsent() || (markStudent.getManualAbsent() != null && markStudent.getManualAbsent()) || markStudent.getOmrAbsent());
             studentObjectiveDetailDto.setSheetUrls(this.buildSheetUrls(studentId));
 
             List<MarkQuestionAnswerVo> questions = markQuestionService.listQuestionAnswerByExamIdAndPaperNumberAndPaperType(
@@ -845,7 +846,7 @@ public class MarkStudentServiceImpl extends ServiceImpl<MarkStudentMapper, MarkS
     @Override
     public void calculateObjectiveScore(MarkStudent student) {
         // 缺考状态不统分(人工指定缺考、识别缺考)
-        if (!student.getManualAbsent() && !student.getAbsent() && !student.getOmrAbsent()) {
+        if ((student.getManualAbsent() != null && !student.getManualAbsent()) && !student.getAbsent() && !student.getOmrAbsent()) {
             ScoreCalculateUtil util = ScoreCalculateUtil.instance(student);
             ScoreInfo info = util.calculate(markQuestionService.listQuestionAnswerByExamIdAndPaperNumberAndPaperType(
                     student.getExamId(), student.getPaperNumber(), student.getPaperType(), true), null);
@@ -1412,7 +1413,7 @@ public class MarkStudentServiceImpl extends ServiceImpl<MarkStudentMapper, MarkS
             lambdaQueryWrapper.eq(MarkStudent::getSubjectiveStatus, status);
         }
         lambdaQueryWrapper.eq(MarkStudent::getUpload, true).eq(MarkStudent::getAbsent, false)
-                .eq(MarkStudent::getManualAbsent, false).eq(MarkStudent::getOmrAbsent, false);
+                .and(m->m.eq(MarkStudent::getManualAbsent, false).or().isNull(MarkStudent::getManualAbsent)).eq(MarkStudent::getOmrAbsent, false);
         return this.count(queryWrapper);
     }
 
@@ -2032,15 +2033,6 @@ public class MarkStudentServiceImpl extends ServiceImpl<MarkStudentMapper, MarkS
         return markStudent;
     }
 
-    @Override
-    public void deleteByExamIdAndPaperNumberAndStudentCode(Long examId, String paperNumber, String studentCode) {
-        UpdateWrapper<MarkStudent> updateWrapper = new UpdateWrapper<>();
-        updateWrapper.lambda().eq(MarkStudent::getExamId, examId)
-                .eq(MarkStudent::getPaperNumber, paperNumber)
-                .eq(MarkStudent::getStudentCode, studentCode);
-        this.remove(updateWrapper);
-    }
-
     @Override
     public void deleteByBasicStudentId(List<Long> basicExamStudentIds) {
         List<MarkStudent> markStudentList = this.listByBasicStudentIds(basicExamStudentIds);

+ 1 - 1
teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/service/impl/ScanOmrTaskServiceImpl.java

@@ -96,7 +96,7 @@ public class ScanOmrTaskServiceImpl extends ServiceImpl<ScanOmrTaskMapper, ScanO
         // 所有客观题空白
         boolean allObjectiveBlank = isAllBlank(paperIds);
         // 非缺考,空白卷需要进客观题检查(2024-11-11 add)
-        if ((student.getAbsent() || student.getManualAbsent() || student.getOmrAbsent()) && allObjectiveBlank) {
+        if ((student.getAbsent() || (student.getManualAbsent()!= null && student.getManualAbsent()) || student.getOmrAbsent()) && allObjectiveBlank) {
             return null;
         }
         List<OmrTaskDto> retList = new ArrayList<>();