Browse Source

测试bug修复-0829

xiaof 4 years ago
parent
commit
fc0b87ce6b

+ 4 - 0
sql/美术阅卷表结构修改-202006.sql

@@ -66,3 +66,7 @@ ALTER TABLE `paper` ADD COLUMN `is_one_click` BIT(1) NULL DEFAULT b'0' COMMENT '
 
 
 
 
 INSERT INTO `mark_user` (`id`,`enabled`,`last_login_time`,`login_name`,`name`,`password`,`pw_changed_count`,`session_id`,`group_id`,`mark_right`,`role`,`subject`,`work_id`,`inspect_sc`,`inspect_sm`,`inspect_sx`,`weight`,`one_click_level`,`standard_volume`,`level_callback`,`display_count`,`default_account`) VALUES (50,B'1',NULL,'scan01','scan01','111111',0,NULL,NULL,NULL,'COLLECTOR','SC',0,NULL,NULL,NULL,NULL,B'0',B'0',B'0',NULL,NULL);
 INSERT INTO `mark_user` (`id`,`enabled`,`last_login_time`,`login_name`,`name`,`password`,`pw_changed_count`,`session_id`,`group_id`,`mark_right`,`role`,`subject`,`work_id`,`inspect_sc`,`inspect_sm`,`inspect_sx`,`weight`,`one_click_level`,`standard_volume`,`level_callback`,`display_count`,`default_account`) VALUES (50,B'1',NULL,'scan01','scan01','111111',0,NULL,NULL,NULL,'COLLECTOR','SC',0,NULL,NULL,NULL,NULL,B'0',B'0',B'0',NULL,NULL);
+
+
+ALTER TABLE `paper`
+ADD COLUMN `is_rejected_by_leader` BIT(1) NULL DEFAULT b'0' COMMENT '是否科组长打回' AFTER `is_one_click`;

+ 2 - 2
stmms-ms-accesscontrol/src/main/java/cn/com/qmth/stmms/ms/accesscontrol/api/AuthApi.java

@@ -77,8 +77,8 @@ public class AuthApi {
         if (!StringUtils.isEmpty(token)) {
         if (!StringUtils.isEmpty(token)) {
             session.setAttribute("token", null);
             session.setAttribute("token", null);
         }
         }
-        //session过期时间设为12小时
-        session.setMaxInactiveInterval(12*60*60);
+        //session过期时间
+        session.setMaxInactiveInterval(-1);
         session.setAttribute("token", System.currentTimeMillis() + "#" + domain.getLoginName() + "#" + domain.getId());
         session.setAttribute("token", System.currentTimeMillis() + "#" + domain.getLoginName() + "#" + domain.getId());
         return domain;
         return domain;
     }
     }

+ 10 - 0
stmms-ms-admin/src/main/java/cn/com/qmth/stmms/ms/admin/api/WorkApi.java

@@ -5,6 +5,7 @@ import cn.com.qmth.stmms.ms.admin.dto.WorkOverview;
 import cn.com.qmth.stmms.ms.admin.service.WorkService;
 import cn.com.qmth.stmms.ms.admin.service.WorkService;
 import cn.com.qmth.stmms.ms.commons.utils.RandomUtil;
 import cn.com.qmth.stmms.ms.commons.utils.RandomUtil;
 import cn.com.qmth.stmms.ms.core.domain.Level;
 import cn.com.qmth.stmms.ms.core.domain.Level;
+import cn.com.qmth.stmms.ms.core.domain.MarkSubject;
 import cn.com.qmth.stmms.ms.core.domain.Work;
 import cn.com.qmth.stmms.ms.core.domain.Work;
 import cn.com.qmth.stmms.ms.core.repository.*;
 import cn.com.qmth.stmms.ms.core.repository.*;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -43,6 +44,9 @@ public class WorkApi {
     @Autowired
     @Autowired
     private WorkOverviewAssembler workOverviewAssembler;
     private WorkOverviewAssembler workOverviewAssembler;
 
 
+    @Autowired
+    private MarkSubjectRepo markSubjectRepo;
+
     @Autowired
     @Autowired
     RandomUtil randomUtil;
     RandomUtil randomUtil;
 
 
@@ -90,6 +94,12 @@ public class WorkApi {
      */
      */
     @RequestMapping(value = "{workId}", method = RequestMethod.PUT)
     @RequestMapping(value = "{workId}", method = RequestMethod.PUT)
     public Work update(@PathVariable Long workId, @RequestBody Work work) {
     public Work update(@PathVariable Long workId, @RequestBody Work work) {
+        List<MarkSubject> subjects = markSubjectRepo.findAllByWorkId(workId);
+        long count = subjects.stream().filter(m->m.getStage().ordinal() != 0).count();
+        if(count > 0){
+            throw new RuntimeException("档位参数只能采集阶段修改");
+        }
+
         work.setCreatedOn(new Date());
         work.setCreatedOn(new Date());
         return workRepo.save(work);
         return workRepo.save(work);
     }
     }

+ 3 - 3
stmms-ms-admin/src/main/java/cn/com/qmth/stmms/ms/admin/exporter/PaperExporter.java

@@ -99,12 +99,12 @@ public class PaperExporter {
             List<Long> paperIds = papers.stream().map(Paper::getId).collect(Collectors.toList());
             List<Long> paperIds = papers.stream().map(Paper::getId).collect(Collectors.toList());
             List<MarkLog> marklogs = markLogRepo.findByWorkIdAndSubjectAndOperTypeAndPaperIdIn(workId, subject.name(), MarkLogOperType.ONE_CLICK_LEVEl.getId(), paperIds);
             List<MarkLog> marklogs = markLogRepo.findByWorkIdAndSubjectAndOperTypeAndPaperIdIn(workId, subject.name(), MarkLogOperType.ONE_CLICK_LEVEl.getId(), paperIds);
             for (int i = 0; i < marklogs.size(); i++) {
             for (int i = 0; i < marklogs.size(); i++) {
-                MarkLog markLog = marklogs.get(i+1);
+                MarkLog markLog = marklogs.get(i);
                 OneClickExpDTO oneClickExpDTO = new OneClickExpDTO();
                 OneClickExpDTO oneClickExpDTO = new OneClickExpDTO();
                 oneClickExpDTO.setSubject(subjectName);
                 oneClickExpDTO.setSubject(subjectName);
-                oneClickExpDTO.setSeqNo(i);
+                oneClickExpDTO.setSeqNo(i+1);
                 oneClickExpDTO.setExamNumber(markLog.getExamNumber());
                 oneClickExpDTO.setExamNumber(markLog.getExamNumber());
-                oneClickExpDTO.setOriginLevel(markLog.getOperDataBefore());
+                oneClickExpDTO.setOriginLevel(markLog.getOperDataBefore() == null ? "":markLog.getOperDataBefore());
                 oneClickExpDTO.setLevel(markLog.getOperDataAfter());
                 oneClickExpDTO.setLevel(markLog.getOperDataAfter());
                 oneClickExpDTOS.add(oneClickExpDTO);
                 oneClickExpDTOS.add(oneClickExpDTO);
             }
             }

+ 49 - 62
stmms-ms-admin/src/main/java/cn/com/qmth/stmms/ms/admin/exporter/ScoreExporter.java

@@ -152,11 +152,13 @@ public class ScoreExporter {
      * @return
      * @return
      */
      */
     public void drawExcelTeacher(int type, Map<String, ExportLevelResultDTO> map, Sheet sheet, CellStyle style, Row row, AtomicInteger index) {
     public void drawExcelTeacher(int type, Map<String, ExportLevelResultDTO> map, Sheet sheet, CellStyle style, Row row, AtomicInteger index) {
-        map.forEach((k, v) -> {
-            drawExcelFixedHead(sheet, style, row, new HeaderNode(String.valueOf(v.getTeacherName()) + TEACHER, 1, 1, index.get(), index.get()));
-            v.setFirstCol(index.get());
-            index.getAndIncrement();
-        });
+        if (Objects.nonNull(map) && map.size() > 0) {
+            map.forEach((k, v) -> {
+                drawExcelFixedHead(sheet, style, row, new HeaderNode(v.getTeacherName() + TEACHER, 1, 1, index.get(), index.get()));
+                v.setFirstCol(index.get());
+                index.getAndIncrement();
+            });
+        }
         if (type == 2) {//type为2:分档报表
         if (type == 2) {//type为2:分档报表
             //最终档位
             //最终档位
             drawExcelFixedHead(sheet, style, row, new HeaderNode(FINAL, 1, 1, index.get(), index.get()));
             drawExcelFixedHead(sheet, style, row, new HeaderNode(FINAL, 1, 1, index.get(), index.get()));
@@ -230,31 +232,26 @@ public class ScoreExporter {
         sheet.addMergedRegion(region3);
         sheet.addMergedRegion(region3);
         sheet.setColumnWidth(2, 30 * 256);
         sheet.setColumnWidth(2, 30 * 256);
         //生源地
         //生源地
-        Cell cell5 = row.createCell(3);
-        cell5.setCellValue(SOURCE_NAME);
-        cell5.setCellStyle(style);
-        CellRangeAddress region6 = new CellRangeAddress(0, 1, (short) 3, (short) 3);
-        sheet.addMergedRegion(region6);
+        Cell cell3 = row.createCell(3);
+        cell3.setCellValue(SOURCE_NAME);
+        cell3.setCellStyle(style);
+        CellRangeAddress region4 = new CellRangeAddress(0, 1, (short) 3, (short) 3);
+        sheet.addMergedRegion(region4);
         if (!imageConfig.isCustomSubject()) {
         if (!imageConfig.isCustomSubject()) {
             //色彩
             //色彩
             int size = 0;
             int size = 0;
             if (Objects.nonNull(subjectMap.get(Subject.SC.toString()))) {
             if (Objects.nonNull(subjectMap.get(Subject.SC.toString()))) {
                 size = subjectMap.get(Subject.SC.toString()).size();
                 size = subjectMap.get(Subject.SC.toString()).size();
             }
             }
-            int scSumCount = 0;
-            if (type == 2) {
-                scSumCount = score + size + 5;
-            } else {
-                scSumCount = score + size;
-            }
-            Cell cell6 = row.createCell(score);
-            cell6.setCellValue(SC_NAME);
-            cell6.setCellStyle(style);
-            if (score != scSumCount) {
-                CellRangeAddress region7 = new CellRangeAddress(0, 0, (short) score, scSumCount);
-                sheet.addMergedRegion(region7);
+            int scSumCount  = level + size + 5;
+            Cell cell4 = row.createCell(level);
+            cell4.setCellValue(SC_NAME);
+            cell4.setCellStyle(style);
+            if (level != scSumCount) {
+                CellRangeAddress region5 = new CellRangeAddress(0, 0, (short) level, scSumCount);
+                sheet.addMergedRegion(region5);
             }
             }
-            LOGGER.info("level:{},scSumCount:{}", score, scSumCount);
+            LOGGER.info("level:{},scSumCount:{}", level, scSumCount);
 
 
             //素描
             //素描
             scSumCount = scSumCount + 1;//起始列+1
             scSumCount = scSumCount + 1;//起始列+1
@@ -262,18 +259,13 @@ public class ScoreExporter {
             if (Objects.nonNull(subjectMap.get(Subject.SM.toString()))) {
             if (Objects.nonNull(subjectMap.get(Subject.SM.toString()))) {
                 size = subjectMap.get(Subject.SM.toString()).size();
                 size = subjectMap.get(Subject.SM.toString()).size();
             }
             }
-            int smSumCount = 0;
-            if (type == 2) {
-                smSumCount = scSumCount + size + 5;//最终列+1,因为从0开始
-            } else {
-                smSumCount = scSumCount + size;
-            }
+            int smSumCount = scSumCount + size + 5;//最终列+1,因为从0开始
             Cell cell7 = row.createCell(scSumCount);
             Cell cell7 = row.createCell(scSumCount);
             cell7.setCellValue(SM_NAME);
             cell7.setCellValue(SM_NAME);
             cell7.setCellStyle(style);
             cell7.setCellStyle(style);
             if (scSumCount != smSumCount) {
             if (scSumCount != smSumCount) {
-                CellRangeAddress region8 = new CellRangeAddress(0, 0, (short) scSumCount, smSumCount);
-                sheet.addMergedRegion(region8);
+                CellRangeAddress region6 = new CellRangeAddress(0, 0, (short) scSumCount, smSumCount);
+                sheet.addMergedRegion(region6);
             }
             }
             LOGGER.info("scSumCount:{},smSumCount:{}", scSumCount, smSumCount);
             LOGGER.info("scSumCount:{},smSumCount:{}", scSumCount, smSumCount);
             //速写
             //速写
@@ -282,12 +274,7 @@ public class ScoreExporter {
             if (Objects.nonNull(subjectMap.get(Subject.SX.toString()))) {
             if (Objects.nonNull(subjectMap.get(Subject.SX.toString()))) {
                 size = subjectMap.get(Subject.SX.toString()).size();
                 size = subjectMap.get(Subject.SX.toString()).size();
             }
             }
-            int sxSumCount = 0;
-            if (type == 2) {
-                sxSumCount = smSumCount + size + 5;//最终列+1,因为从0开始
-            } else {
-                sxSumCount = smSumCount + size;
-            }
+            int sxSumCount = smSumCount + size + 5;//最终列+1,因为从0开始
             Cell cell8 = row.createCell(smSumCount);
             Cell cell8 = row.createCell(smSumCount);
             cell8.setCellValue(SX_NAME);
             cell8.setCellValue(SX_NAME);
             cell8.setCellStyle(style);
             cell8.setCellStyle(style);
@@ -469,9 +456,9 @@ public class ScoreExporter {
         //测试-导出档位成绩表
         //测试-导出档位成绩表
         StringBuilder sbAll = null;
         StringBuilder sbAll = null;
         if (!imageConfig.isCustomSubject()) {
         if (!imageConfig.isCustomSubject()) {
-            String scSql = "select temp.*, mt.`result`, p.source_name as sourceName, p.exam_number as examNumber, p.student_name as studentName, t.area_name as areaName, p.mark_by_leader as markByLeader, p.`level`, p.id upload, p.is_missing missing, p.is_sample isSample,p.is_one_click isOneClick, cl.id isShift from student t left join paper p on t.work_id = p.work_id and t.exam_number = p.exam_number left join mark_task AS mt on p.work_id = mt.work_id and p.id = mt.paper_id left join (SELECT mu.id, mu.name AS teacherName, mu.`role`, mu.subject, mu.work_id AS workId FROM mark_user AS mu WHERE mu.work_id = ? AND mu.`role` = 'MARKER' AND (mu.mark_right = 0 OR mu.mark_right = 2) AND mu.subject = 'SC' AND mu.enabled = 1) temp on mt.work_id = temp.workId and mt.marker_id = temp.id left join  (SELECT id, work_id, paper_id FROM change_level WHERE work_id = ? AND subject = 'SC') cl ON p.work_id = cl.work_id and p.id = cl.paper_id WHERE mt.work_id = ? AND mt.stage = 1 AND p.is_missing = FALSE UNION ALL select temp.*, null as result, p.source_name as sourceName, p.exam_number as examNumber, p.student_name as studentName, t.area_name as areaName, p.mark_by_leader as markByLeader, p.`level`, p.id upload, p.is_missing missing, p.is_sample isSample,p.is_one_click isOneClick, cl.id isShift from student t LEFT JOIN paper p ON t.work_id = p.work_id AND t.exam_number = p.exam_number LEFT JOIN (SELECT  id, work_id, paper_id FROM change_level WHERE work_id = ? AND subject = 'SC') cl ON p.work_id = cl.work_id AND p.id = cl.paper_id LEFT JOIN (SELECT mu.id,mu.name AS teacherName,mu.`role`,mu.subject, mu.work_id AS workId FROM  mark_user AS mu WHERE mu.work_id = ? AND mu.`role` = 'MARKER' AND (mu.mark_right = 0 OR mu.mark_right = 2) AND mu.subject = 'SC' AND mu.enabled = 1) temp ON 1 = 1 WHERE (p.is_missing = TRUE OR p.is_test = 3) AND p.work_id = ? AND p.subject = 'SC' ";
-            String smSql = "select temp.*, mt.`result`, p.source_name as sourceName, p.exam_number as examNumber, p.student_name as studentName, t.area_name as areaName, p.mark_by_leader as markByLeader, p.`level`, p.id upload, p.is_missing missing, p.is_sample isSample,p.is_one_click isOneClick, cl.id isShift from student t left join paper p on t.work_id = p.work_id and t.exam_number = p.exam_number left join mark_task AS mt on p.work_id = mt.work_id and p.id = mt.paper_id left join (SELECT mu.id, mu.name AS teacherName, mu.`role`, mu.subject, mu.work_id AS workId FROM mark_user AS mu WHERE mu.work_id = ? AND mu.`role` = 'MARKER' AND (mu.mark_right = 0 OR mu.mark_right = 2) AND mu.subject = 'SM' AND mu.enabled = 1) temp on mt.work_id = temp.workId and mt.marker_id = temp.id left join  (SELECT id, work_id, paper_id FROM change_level WHERE work_id = ? AND subject = 'SM') cl ON p.work_id = cl.work_id and p.id = cl.paper_id WHERE mt.work_id = ? AND mt.stage = 1 AND p.is_missing = FALSE UNION ALL select temp.*, null as result, p.source_name as sourceName, p.exam_number as examNumber, p.student_name as studentName, t.area_name as areaName, p.mark_by_leader as markByLeader, p.`level`, p.id upload, p.is_missing missing, p.is_sample isSample,p.is_one_click isOneClick, cl.id isShift from student t LEFT JOIN paper p ON t.work_id = p.work_id AND t.exam_number = p.exam_number LEFT JOIN (SELECT  id, work_id, paper_id FROM change_level WHERE work_id = ? AND subject = 'SC') cl ON p.work_id = cl.work_id AND p.id = cl.paper_id LEFT JOIN (SELECT mu.id,mu.name AS teacherName,mu.`role`,mu.subject, mu.work_id AS workId FROM  mark_user AS mu WHERE mu.work_id = ? AND mu.`role` = 'MARKER' AND (mu.mark_right = 0 OR mu.mark_right = 2) AND mu.subject = 'SM' AND mu.enabled = 1) temp ON 1 = 1 WHERE (p.is_missing = TRUE OR p.is_test = 3) AND p.work_id = ? AND p.subject = 'SM' ";
-            String sxSql = "select temp.*, mt.`result`, p.source_name as sourceName, p.exam_number as examNumber, p.student_name as studentName, t.area_name as areaName, p.mark_by_leader as markByLeader, p.`level`, p.id upload, p.is_missing missing, p.is_sample isSample,p.is_one_click isOneClick, cl.id isShift from student t left join paper p on t.work_id = p.work_id and t.exam_number = p.exam_number left join mark_task AS mt on p.work_id = mt.work_id and p.id = mt.paper_id left join (SELECT mu.id, mu.name AS teacherName, mu.`role`, mu.subject, mu.work_id AS workId FROM mark_user AS mu WHERE mu.work_id = ? AND mu.`role` = 'MARKER' AND (mu.mark_right = 0 OR mu.mark_right = 2) AND mu.subject = 'SX' AND mu.enabled = 1) temp on mt.work_id = temp.workId and mt.marker_id = temp.id left join  (SELECT id, work_id, paper_id FROM change_level WHERE work_id = ? AND subject = 'SX') cl ON p.work_id = cl.work_id and p.id = cl.paper_id WHERE mt.work_id = ? AND mt.stage = 1 AND p.is_missing = FALSE UNION ALL select temp.*, null as result, p.source_name as sourceName, p.exam_number as examNumber, p.student_name as studentName, t.area_name as areaName, p.mark_by_leader as markByLeader, p.`level`, p.id upload, p.is_missing missing, p.is_sample isSample,p.is_one_click isOneClick, cl.id isShift from student t LEFT JOIN paper p ON t.work_id = p.work_id AND t.exam_number = p.exam_number LEFT JOIN (SELECT  id, work_id, paper_id FROM change_level WHERE work_id = ? AND subject = 'SC') cl ON p.work_id = cl.work_id AND p.id = cl.paper_id LEFT JOIN (SELECT mu.id,mu.name AS teacherName,mu.`role`,mu.subject, mu.work_id AS workId FROM  mark_user AS mu WHERE mu.work_id = ? AND mu.`role` = 'MARKER' AND (mu.mark_right = 0 OR mu.mark_right = 2) AND mu.subject = 'SX' AND mu.enabled = 1) temp ON 1 = 1 WHERE (p.is_missing = TRUE OR p.is_test = 3) AND p.work_id = ? AND p.subject = 'SX' ";
+            String scSql = "select temp.*, mt.`result`, p.source_name as sourceName, p.exam_number as examNumber, p.student_name as studentName, t.area_name as areaName, p.mark_by_leader as markByLeader, p.`level`, p.id upload, p.is_missing isMissing, p.is_sample isSample,p.is_one_click isOneClick, cl.id isShift from student t left join paper p on t.work_id = p.work_id and t.exam_number = p.exam_number left join mark_task AS mt on p.work_id = mt.work_id and p.id = mt.paper_id left join (SELECT mu.id, mu.name AS teacherName, mu.`role`, mu.subject, mu.work_id AS workId FROM mark_user AS mu WHERE mu.work_id = ? AND mu.`role` = 'MARKER' AND (mu.mark_right = 0 OR mu.mark_right = 2) AND mu.subject = 'SC' AND mu.enabled = 1) temp on mt.work_id = temp.workId and mt.marker_id = temp.id left join  (SELECT id, work_id, paper_id FROM change_level WHERE work_id = ? AND subject = 'SC') cl ON p.work_id = cl.work_id and p.id = cl.paper_id WHERE mt.work_id = ? AND mt.stage = 1 AND p.is_missing = FALSE UNION ALL select temp.*, null as result, p.source_name as sourceName, p.exam_number as examNumber, p.student_name as studentName, t.area_name as areaName, p.mark_by_leader as markByLeader, p.`level`, p.id upload, p.is_missing missing, p.is_sample isSample,p.is_one_click isOneClick, cl.id isShift from student t LEFT JOIN paper p ON t.work_id = p.work_id AND t.exam_number = p.exam_number LEFT JOIN (SELECT  id, work_id, paper_id FROM change_level WHERE work_id = ? AND subject = 'SC') cl ON p.work_id = cl.work_id AND p.id = cl.paper_id LEFT JOIN (SELECT mu.id,mu.name AS teacherName,mu.`role`,mu.subject, mu.work_id AS workId FROM  mark_user AS mu WHERE mu.work_id = ? AND mu.`role` = 'MARKER' AND (mu.mark_right = 0 OR mu.mark_right = 2) AND mu.subject = 'SC' AND mu.enabled = 1) temp ON 1 = 1 WHERE (p.is_missing = TRUE OR p.is_test = 3) AND p.work_id = ? AND p.subject = 'SC' ";
+            String smSql = "select temp.*, mt.`result`, p.source_name as sourceName, p.exam_number as examNumber, p.student_name as studentName, t.area_name as areaName, p.mark_by_leader as markByLeader, p.`level`, p.id upload, p.is_missing isMissing, p.is_sample isSample,p.is_one_click isOneClick, cl.id isShift from student t left join paper p on t.work_id = p.work_id and t.exam_number = p.exam_number left join mark_task AS mt on p.work_id = mt.work_id and p.id = mt.paper_id left join (SELECT mu.id, mu.name AS teacherName, mu.`role`, mu.subject, mu.work_id AS workId FROM mark_user AS mu WHERE mu.work_id = ? AND mu.`role` = 'MARKER' AND (mu.mark_right = 0 OR mu.mark_right = 2) AND mu.subject = 'SM' AND mu.enabled = 1) temp on mt.work_id = temp.workId and mt.marker_id = temp.id left join  (SELECT id, work_id, paper_id FROM change_level WHERE work_id = ? AND subject = 'SM') cl ON p.work_id = cl.work_id and p.id = cl.paper_id WHERE mt.work_id = ? AND mt.stage = 1 AND p.is_missing = FALSE UNION ALL select temp.*, null as result, p.source_name as sourceName, p.exam_number as examNumber, p.student_name as studentName, t.area_name as areaName, p.mark_by_leader as markByLeader, p.`level`, p.id upload, p.is_missing missing, p.is_sample isSample,p.is_one_click isOneClick, cl.id isShift from student t LEFT JOIN paper p ON t.work_id = p.work_id AND t.exam_number = p.exam_number LEFT JOIN (SELECT  id, work_id, paper_id FROM change_level WHERE work_id = ? AND subject = 'SC') cl ON p.work_id = cl.work_id AND p.id = cl.paper_id LEFT JOIN (SELECT mu.id,mu.name AS teacherName,mu.`role`,mu.subject, mu.work_id AS workId FROM  mark_user AS mu WHERE mu.work_id = ? AND mu.`role` = 'MARKER' AND (mu.mark_right = 0 OR mu.mark_right = 2) AND mu.subject = 'SM' AND mu.enabled = 1) temp ON 1 = 1 WHERE (p.is_missing = TRUE OR p.is_test = 3) AND p.work_id = ? AND p.subject = 'SM' ";
+            String sxSql = "select temp.*, mt.`result`, p.source_name as sourceName, p.exam_number as examNumber, p.student_name as studentName, t.area_name as areaName, p.mark_by_leader as markByLeader, p.`level`, p.id upload, p.is_missing isMissing, p.is_sample isSample,p.is_one_click isOneClick, cl.id isShift from student t left join paper p on t.work_id = p.work_id and t.exam_number = p.exam_number left join mark_task AS mt on p.work_id = mt.work_id and p.id = mt.paper_id left join (SELECT mu.id, mu.name AS teacherName, mu.`role`, mu.subject, mu.work_id AS workId FROM mark_user AS mu WHERE mu.work_id = ? AND mu.`role` = 'MARKER' AND (mu.mark_right = 0 OR mu.mark_right = 2) AND mu.subject = 'SX' AND mu.enabled = 1) temp on mt.work_id = temp.workId and mt.marker_id = temp.id left join  (SELECT id, work_id, paper_id FROM change_level WHERE work_id = ? AND subject = 'SX') cl ON p.work_id = cl.work_id and p.id = cl.paper_id WHERE mt.work_id = ? AND mt.stage = 1 AND p.is_missing = FALSE UNION ALL select temp.*, null as result, p.source_name as sourceName, p.exam_number as examNumber, p.student_name as studentName, t.area_name as areaName, p.mark_by_leader as markByLeader, p.`level`, p.id upload, p.is_missing missing, p.is_sample isSample,p.is_one_click isOneClick, cl.id isShift from student t LEFT JOIN paper p ON t.work_id = p.work_id AND t.exam_number = p.exam_number LEFT JOIN (SELECT  id, work_id, paper_id FROM change_level WHERE work_id = ? AND subject = 'SC') cl ON p.work_id = cl.work_id AND p.id = cl.paper_id LEFT JOIN (SELECT mu.id,mu.name AS teacherName,mu.`role`,mu.subject, mu.work_id AS workId FROM  mark_user AS mu WHERE mu.work_id = ? AND mu.`role` = 'MARKER' AND (mu.mark_right = 0 OR mu.mark_right = 2) AND mu.subject = 'SX' AND mu.enabled = 1) temp ON 1 = 1 WHERE (p.is_missing = TRUE OR p.is_test = 3) AND p.work_id = ? AND p.subject = 'SX' ";
             //拼装问号
             //拼装问号
             scSql = sqlUtil.sqlPrint(scSql, workId, workId, workId, workId, workId, workId);
             scSql = sqlUtil.sqlPrint(scSql, workId, workId, workId, workId, workId, workId);
             smSql = sqlUtil.sqlPrint(smSql, workId, workId, workId, workId, workId, workId);
             smSql = sqlUtil.sqlPrint(smSql, workId, workId, workId, workId, workId, workId);
@@ -511,21 +498,21 @@ public class ScoreExporter {
                 //SC表头
                 //SC表头
                 Map<String, ExportLevelResultDTO> scMap = subjectMap.get(Subject.SC.toString());
                 Map<String, ExportLevelResultDTO> scMap = subjectMap.get(Subject.SC.toString());
                 int size = 0;
                 int size = 0;
-                if (Objects.nonNull(scMap) && scMap.size() > 0) {
+//                if (Objects.nonNull(scMap) && scMap.size() > 0) {
                     drawExcelTeacher(levelInterval, scMap, sheet, style, dynamicHeadRow, new AtomicInteger(level));
                     drawExcelTeacher(levelInterval, scMap, sheet, style, dynamicHeadRow, new AtomicInteger(level));
-                    size = scMap.size();
-                }
+                    size = Objects.nonNull(scMap) && scMap.size() > 0 ? scMap.size() : 0;
+//                }
                 //SM表头
                 //SM表头
                 Map<String, ExportLevelResultDTO> smMap = subjectMap.get(Subject.SM.toString());
                 Map<String, ExportLevelResultDTO> smMap = subjectMap.get(Subject.SM.toString());
-                if (Objects.nonNull(smMap) && smMap.size() > 0) {
-                    drawExcelTeacher(levelInterval, smMap, sheet, style, dynamicHeadRow, new AtomicInteger(level + size + levelInterval));
-                    size = size + smMap.size();
-                }
+//                if (Objects.nonNull(smMap) && smMap.size() > 0) {
+                    drawExcelTeacher(levelInterval, smMap, sheet, style, dynamicHeadRow, new AtomicInteger(level + size + 6));
+                    size = size + (Objects.nonNull(smMap) && smMap.size() > 0 ? smMap.size() : 0);
+//                }
                 //SX表头
                 //SX表头
                 Map<String, ExportLevelResultDTO> sxMap = subjectMap.get(Subject.SX.toString());
                 Map<String, ExportLevelResultDTO> sxMap = subjectMap.get(Subject.SX.toString());
-                if (Objects.nonNull(sxMap) && sxMap.size() > 0) {
-                    drawExcelTeacher(levelInterval, sxMap, sheet, style, dynamicHeadRow, new AtomicInteger(level + size + levelInterval * 2));
-                }
+//                if (Objects.nonNull(sxMap) && sxMap.size() > 0) {
+                    drawExcelTeacher(levelInterval, sxMap, sheet, style, dynamicHeadRow, new AtomicInteger(level + size + 6*2));
+//                }
                 //加载excel数据
                 //加载excel数据
                 AtomicInteger cellIndex = new AtomicInteger(0);
                 AtomicInteger cellIndex = new AtomicInteger(0);
                 Sheet finalSheet = sheet;
                 Sheet finalSheet = sheet;
@@ -566,24 +553,24 @@ public class ScoreExporter {
                                 ExportLevelResultDTO exportLevelResultDTO = smMap.get(v.getTeacherName());
                                 ExportLevelResultDTO exportLevelResultDTO = smMap.get(v.getTeacherName());
                                 drawExcelFixedHead(finalSheet, style, hssfRow, new HeaderNode(v.getResult(), firstRow, firstRow, exportLevelResultDTO.getFirstCol(), exportLevelResultDTO.getFirstCol()));
                                 drawExcelFixedHead(finalSheet, style, hssfRow, new HeaderNode(v.getResult(), firstRow, firstRow, exportLevelResultDTO.getFirstCol(), exportLevelResultDTO.getFirstCol()));
                                 if (Objects.nonNull(v.getLevel())) {
                                 if (Objects.nonNull(v.getLevel())) {
-                                    drawExcelFixedHead(finalSheet, style, hssfRow, new HeaderNode(v.getLevel(), firstRow, firstRow, level + (scMap == null ? 0 : scMap.size()) + (smMap == null ? 0 : smMap.size()) + levelInterval, level + (scMap == null ? 0 : scMap.size()) + (smMap == null ? 0 : smMap.size()) + levelInterval));
+                                    drawExcelFixedHead(finalSheet, style, hssfRow, new HeaderNode(v.getLevel(), firstRow, firstRow, level + (scMap == null ? 0 : scMap.size()) + (smMap == null ? 0 : smMap.size()) + 5 + 1, level + (scMap == null ? 0 : scMap.size()) + (smMap == null ? 0 : smMap.size()) + 5 + 1));
                                 }
                                 }
-                                drawExcelFixedHead(finalSheet, style, hssfRow, new HeaderNode(Objects.nonNull(v.getUpload()) ? "是" : "否", firstRow, firstRow, level + (scMap == null ? 0 : scMap.size()) + (smMap == null ? 0 : smMap.size()) + levelInterval + 1, level + (scMap == null ? 0 : scMap.size()) + (smMap == null ? 0 : smMap.size()) + levelInterval + 1));
-                                drawExcelFixedHead(finalSheet, style, hssfRow, new HeaderNode(Objects.nonNull(v.getMissing()) && v.getMissing() ? "是" : "否", firstRow, firstRow, level + (scMap == null ? 0 : scMap.size()) + (smMap == null ? 0 : smMap.size()) + levelInterval + 2, level + (scMap == null ? 0 : scMap.size()) + (smMap == null ? 0 : smMap.size()) + levelInterval + 2));
-                                drawExcelFixedHead(finalSheet, style, hssfRow, new HeaderNode(Objects.nonNull(v.getSample()) && v.getSample() ? "是" : "否", firstRow, firstRow, level + (scMap == null ? 0 : scMap.size()) + (smMap == null ? 0 : smMap.size()) + levelInterval + 3, level + (scMap == null ? 0 : scMap.size()) + (smMap == null ? 0 : smMap.size()) + levelInterval + 3));
-                                drawExcelFixedHead(finalSheet, style, hssfRow, new HeaderNode(Objects.nonNull(v.getOneClick()) && v.getOneClick() ? "是" : "否", firstRow, firstRow, level + (scMap == null ? 0 : scMap.size()) + (smMap == null ? 0 : smMap.size()) + levelInterval + 4, level + (scMap == null ? 0 : scMap.size()) + (smMap == null ? 0 : smMap.size()) + levelInterval + 4));
-                                drawExcelFixedHead(finalSheet, style, hssfRow, new HeaderNode(Objects.nonNull(v.getIsShift()) ? "是" : "否", firstRow, firstRow, level + (scMap == null ? 0 : scMap.size()) + (smMap == null ? 0 : smMap.size()) + levelInterval + 5, level + (scMap == null ? 0 : scMap.size()) + (smMap == null ? 0 : smMap.size()) + levelInterval + 5));
+                                drawExcelFixedHead(finalSheet, style, hssfRow, new HeaderNode(Objects.nonNull(v.getUpload()) ? "是" : "否", firstRow, firstRow, level + (scMap == null ? 0 : scMap.size())  + (smMap == null ? 0 : smMap.size()) + 5 + 2, level + (scMap == null ? 0 : scMap.size()) + (smMap == null ? 0 : smMap.size()) + 5 + 2));
+                                drawExcelFixedHead(finalSheet, style, hssfRow, new HeaderNode(Objects.nonNull(v.getMissing()) && v.getMissing() ? "是" : "否", firstRow, firstRow, level + (scMap == null ? 0 : scMap.size()) + (smMap == null ? 0 : smMap.size()) + 5 + 3, level + (scMap == null ? 0 : scMap.size()) + (smMap == null ? 0 : smMap.size()) + 5 + 3));
+                                drawExcelFixedHead(finalSheet, style, hssfRow, new HeaderNode(Objects.nonNull(v.getSample()) && v.getSample() ? "是" : "否", firstRow, firstRow, level + (scMap == null ? 0 : scMap.size()) + (smMap == null ? 0 : smMap.size()) + 5 + 4, level + (scMap == null ? 0 : scMap.size()) + (smMap == null ? 0 : smMap.size()) + 5 + 4));
+                                drawExcelFixedHead(finalSheet, style, hssfRow, new HeaderNode(Objects.nonNull(v.getOneClick()) && v.getOneClick() ? "是" : "否", firstRow, firstRow, level + (scMap == null ? 0 : scMap.size()) + (smMap == null ? 0 : smMap.size()) + 5 + 5, level + (scMap == null ? 0 : scMap.size()) + (smMap == null ? 0 : smMap.size()) + 5 + 5));
+                                drawExcelFixedHead(finalSheet, style, hssfRow, new HeaderNode(Objects.nonNull(v.getIsShift()) ? "是" : "否", firstRow, firstRow, level + (scMap == null ? 0 : scMap.size()) + (smMap == null ? 0 : smMap.size()) + 5 + 6, level + (scMap == null ? 0 : scMap.size()) + (smMap == null ? 0 : smMap.size()) + 5 + 6));
                             } else if (k.contains(Subject.SX.toString())) {
                             } else if (k.contains(Subject.SX.toString())) {
                                 ExportLevelResultDTO exportLevelResultDTO = sxMap.get(v.getTeacherName());
                                 ExportLevelResultDTO exportLevelResultDTO = sxMap.get(v.getTeacherName());
                                 drawExcelFixedHead(finalSheet, style, hssfRow, new HeaderNode(v.getResult(), firstRow, firstRow, exportLevelResultDTO.getFirstCol(), exportLevelResultDTO.getFirstCol()));
                                 drawExcelFixedHead(finalSheet, style, hssfRow, new HeaderNode(v.getResult(), firstRow, firstRow, exportLevelResultDTO.getFirstCol(), exportLevelResultDTO.getFirstCol()));
                                 if (Objects.nonNull(v.getLevel())) {
                                 if (Objects.nonNull(v.getLevel())) {
-                                    drawExcelFixedHead(finalSheet, style, hssfRow, new HeaderNode(v.getLevel(), firstRow, firstRow, level + (scMap == null ? 0 : scMap.size()) + (smMap == null ? 0 : smMap.size()) + (sxMap == null ? 0 : sxMap.size()) + levelInterval * 2, level + (scMap == null ? 0 : scMap.size()) + (smMap == null ? 0 : smMap.size()) + (sxMap == null ? 0 : sxMap.size()) + levelInterval * 2));
+                                    drawExcelFixedHead(finalSheet, style, hssfRow, new HeaderNode(v.getLevel(), firstRow, firstRow, level + (scMap == null ? 0 : scMap.size()) + (smMap == null ? 0 : smMap.size()) + (sxMap == null ? 0 : sxMap.size()) + 6 * 2, level + (scMap == null ? 0 : scMap.size()) + (smMap == null ? 0 : smMap.size()) + (sxMap == null ? 0 : sxMap.size()) + 6 * 2));
                                 }
                                 }
-                                drawExcelFixedHead(finalSheet, style, hssfRow, new HeaderNode(Objects.nonNull(v.getUpload()) ? "是" : "否", firstRow, firstRow, level + (scMap == null ? 0 : scMap.size()) + (smMap == null ? 0 : smMap.size()) + (sxMap == null ? 0 : sxMap.size()) + levelInterval * 2 + 1, level + (scMap == null ? 0 : scMap.size()) + (smMap == null ? 0 : smMap.size()) + (sxMap == null ? 0 : sxMap.size()) + levelInterval * 2 + 1));
-                                drawExcelFixedHead(finalSheet, style, hssfRow, new HeaderNode(Objects.nonNull(v.getMissing()) && v.getMissing() ? "是" : "否", firstRow, firstRow, level + (scMap == null ? 0 : scMap.size()) + (smMap == null ? 0 : smMap.size()) + (sxMap == null ? 0 : sxMap.size()) + levelInterval * 2 + 2, level + (scMap == null ? 0 : scMap.size()) + (smMap == null ? 0 : smMap.size()) + (sxMap == null ? 0 : sxMap.size()) + levelInterval * 2 + 2));
-                                drawExcelFixedHead(finalSheet, style, hssfRow, new HeaderNode(Objects.nonNull(v.getSample()) && v.getSample() ? "是" : "否", firstRow, firstRow, level + (scMap == null ? 0 : scMap.size()) + (smMap == null ? 0 : smMap.size()) + (sxMap == null ? 0 : sxMap.size()) + levelInterval * 2 + 3, level + (scMap == null ? 0 : scMap.size()) + (smMap == null ? 0 : smMap.size()) + (sxMap == null ? 0 : sxMap.size()) + levelInterval * 2 + 3));
-                                drawExcelFixedHead(finalSheet, style, hssfRow, new HeaderNode(Objects.nonNull(v.getOneClick()) && v.getOneClick() ? "是" : "否", firstRow, firstRow, level + (scMap == null ? 0 : scMap.size()) + (smMap == null ? 0 : smMap.size()) + (sxMap == null ? 0 : sxMap.size()) + levelInterval * 2 + 4, level + (scMap == null ? 0 : scMap.size()) + (smMap == null ? 0 : smMap.size()) + (sxMap == null ? 0 : sxMap.size()) + levelInterval * 2 + 4));
-                                drawExcelFixedHead(finalSheet, style, hssfRow, new HeaderNode(Objects.nonNull(v.getIsShift()) ? "是" : "否", firstRow, firstRow, level + (scMap == null ? 0 : scMap.size()) + (smMap == null ? 0 : smMap.size()) + (sxMap == null ? 0 : sxMap.size()) + levelInterval * 2 + 5, level + (scMap == null ? 0 : scMap.size()) + (smMap == null ? 0 : smMap.size()) + (sxMap == null ? 0 : sxMap.size()) + levelInterval * 2 + 5));
+                                drawExcelFixedHead(finalSheet, style, hssfRow, new HeaderNode(Objects.nonNull(v.getUpload()) ? "是" : "否", firstRow, firstRow, level + (scMap == null ? 0 : scMap.size()) + (smMap == null ? 0 : smMap.size()) + (sxMap == null ? 0 : sxMap.size()) + 6 * 2 + 1, level + (scMap == null ? 0 : scMap.size()) + (smMap == null ? 0 : smMap.size()) + (sxMap == null ? 0 : sxMap.size()) + 6 * 2 + 1));
+                                drawExcelFixedHead(finalSheet, style, hssfRow, new HeaderNode(Objects.nonNull(v.getMissing()) && v.getMissing() ? "是" : "否", firstRow, firstRow, level + (scMap == null ? 0 : scMap.size()) + (smMap == null ? 0 : smMap.size()) + (sxMap == null ? 0 : sxMap.size()) + 6 * 2 + 2, level + (scMap == null ? 0 : scMap.size()) + (smMap == null ? 0 : smMap.size()) + (sxMap == null ? 0 : sxMap.size()) + 6 * 2 + 2));
+                                drawExcelFixedHead(finalSheet, style, hssfRow, new HeaderNode(Objects.nonNull(v.getSample()) && v.getSample() ? "是" : "否", firstRow, firstRow, level + (scMap == null ? 0 : scMap.size()) + (smMap == null ? 0 : smMap.size()) + (sxMap == null ? 0 : sxMap.size()) + 6 * 2 + 3, level + (scMap == null ? 0 : scMap.size()) + (smMap == null ? 0 : smMap.size()) + (sxMap == null ? 0 : sxMap.size()) + 6 * 2 + 3));
+                                drawExcelFixedHead(finalSheet, style, hssfRow, new HeaderNode(Objects.nonNull(v.getOneClick()) && v.getOneClick() ? "是" : "否", firstRow, firstRow, level + (scMap == null ? 0 : scMap.size()) + (smMap == null ? 0 : smMap.size()) + (sxMap == null ? 0 : sxMap.size()) + 6 * 2 + 4, level + (scMap == null ? 0 : scMap.size()) + (smMap == null ? 0 : smMap.size()) + (sxMap == null ? 0 : sxMap.size()) + 6 * 2 + 4));
+                                drawExcelFixedHead(finalSheet, style, hssfRow, new HeaderNode(Objects.nonNull(v.getIsShift()) ? "是" : "否", firstRow, firstRow, level + (scMap == null ? 0 : scMap.size()) + (smMap == null ? 0 : smMap.size()) + (sxMap == null ? 0 : sxMap.size()) + 6 * 2 + 5, level + (scMap == null ? 0 : scMap.size()) + (smMap == null ? 0 : smMap.size()) + (sxMap == null ? 0 : sxMap.size()) + 6 * 2 + 5));
                             }
                             }
                         });
                         });
                     }
                     }

+ 1 - 1
stmms-ms-collect/src/main/java/cn/com/qmth/stmms/ms/collect/api/CollectApi.java

@@ -749,7 +749,7 @@ public class CollectApi {
                                       @RequestParam Long workId,
                                       @RequestParam Long workId,
                                       @RequestParam String imageType,
                                       @RequestParam String imageType,
                                       @RequestParam(required = false) Long areaId,
                                       @RequestParam(required = false) Long areaId,
-                                      @RequestParam String school,
+                                      @RequestParam(required = false) String school,
                                       @RequestParam(required = false) String examRoom,
                                       @RequestParam(required = false) String examRoom,
                                       @RequestParam String subject,
                                       @RequestParam String subject,
                                       @RequestParam String nameRule,
                                       @RequestParam String nameRule,

+ 1 - 1
stmms-ms-core/src/main/java/cn/com/qmth/stmms/ms/core/domain/MarkLog.java

@@ -61,7 +61,7 @@ public class MarkLog implements Serializable {
     private Long workId;
     private Long workId;
 
 
     private String workName;
     private String workName;
-    @NotNull
+//    @NotNull
     private Long paperId;
     private Long paperId;
 //    @ApiModelProperty(value = "备注")
 //    @ApiModelProperty(value = "备注")
     private String remark;
     private String remark;

+ 10 - 0
stmms-ms-core/src/main/java/cn/com/qmth/stmms/ms/core/domain/Paper.java

@@ -143,6 +143,8 @@ public class Paper implements Serializable {
      */
      */
     private boolean isOneClick;
     private boolean isOneClick;
 
 
+    private Boolean isRejectedByLeader;
+
     public int getTest() {
     public int getTest() {
         return test;
         return test;
     }
     }
@@ -529,4 +531,12 @@ public class Paper implements Serializable {
     public void setOneClick(boolean oneClick) {
     public void setOneClick(boolean oneClick) {
         isOneClick = oneClick;
         isOneClick = oneClick;
     }
     }
+
+    public Boolean isRejectedByLeader() {
+        return isRejectedByLeader;
+    }
+
+    public void setRejectedByLeader(Boolean rejectedByLeader) {
+        isRejectedByLeader = rejectedByLeader;
+    }
 }
 }

+ 3 - 0
stmms-ms-core/src/main/java/cn/com/qmth/stmms/ms/core/repository/MarkLogRepo.java

@@ -43,4 +43,7 @@ public interface MarkLogRepo extends JpaRepository<MarkLog, Long>, JpaSpecificat
     List<MarkLog> findByWorkIdAndSubjectAndOperTypeAndPaperIdIn(Long workId, String subject, Integer operType, List<Long> paperIds);
     List<MarkLog> findByWorkIdAndSubjectAndOperTypeAndPaperIdIn(Long workId, String subject, Integer operType, List<Long> paperIds);
 
 
     Page<Map> findByIdIn(List<Long> longs, Pageable pageable);
     Page<Map> findByIdIn(List<Long> longs, Pageable pageable);
+
+    @Query("select count(s) from MarkLog s where s.workId = ?1 and s.paperId = ?2 and (s.operType = ?3 or s.operType = ?4)")
+    int countByWorkIdAndPaperIdAndOperType(Long workId, Long id, int id1, int id2);
 }
 }

+ 4 - 2
stmms-ms-marking/src/main/java/cn/com/qmth/stmms/ms/marking/api/MakrerApi.java

@@ -136,7 +136,8 @@ public class MakrerApi {
         MarkSubject markSubject = markSubjectRepo.findOne(marker.getWorkId() + "-" + marker.getSubject().toString());
         MarkSubject markSubject = markSubjectRepo.findOne(marker.getWorkId() + "-" + marker.getSubject().toString());
         List<Level> levels = levelRepo.findByWorkId(markSubject.getWorkId());
         List<Level> levels = levelRepo.findByWorkId(markSubject.getWorkId());
         Map<String, Level> levelMap = levels.stream().collect(Collectors.toMap(Level::getCode, l -> l));
         Map<String, Level> levelMap = levels.stream().collect(Collectors.toMap(Level::getCode, l -> l));
-        Long batchNo = paperRepo.findByQuestionId(questionId);
+//        Long batchNo = paperRepo.findByQuestionId(questionId);
+        Long batchNo = paperRepo.findMaxBatchNoByWorkId(marker.getWorkId());
         Future future = myThreadPool.arbitratePoolTaskExecutor.submit(new Callable<Map<String, Long>>() {
         Future future = myThreadPool.arbitratePoolTaskExecutor.submit(new Callable<Map<String, Long>>() {
 
 
             @Override
             @Override
@@ -268,7 +269,8 @@ public class MakrerApi {
         MarkSubject markSubject = markSubjectRepo.findOne(marker.getWorkId() + "-" + marker.getSubject().toString());
         MarkSubject markSubject = markSubjectRepo.findOne(marker.getWorkId() + "-" + marker.getSubject().toString());
         List<Level> levels = levelRepo.findByWorkId(markSubject.getWorkId());
         List<Level> levels = levelRepo.findByWorkId(markSubject.getWorkId());
         Map<String, Level> levelMap = levels.stream().collect(Collectors.toMap(Level::getCode, l -> l));
         Map<String, Level> levelMap = levels.stream().collect(Collectors.toMap(Level::getCode, l -> l));
-        Long batchNo = paperRepo.findScoreBatchNoByQuestionId(questionId);
+//        Long batchNo = paperRepo.findScoreBatchNoByQuestionId(questionId);
+        Long batchNo = paperRepo.findMaxScoreBatchNoByWorkId(marker.getWorkId());
         Future future = myThreadPool.arbitratePoolTaskExecutor.submit(new Callable<Map<String, Long>>() {
         Future future = myThreadPool.arbitratePoolTaskExecutor.submit(new Callable<Map<String, Long>>() {
 
 
             @Override
             @Override

+ 4 - 2
stmms-ms-marking/src/main/java/cn/com/qmth/stmms/ms/marking/api/MarkTaskApi.java

@@ -112,13 +112,15 @@ public class MarkTaskApi {
                 //查询
                 //查询
                 predicates.add(builder.equal(root.get("result"), level));
                 predicates.add(builder.equal(root.get("result"), level));
                 if(ParamCache.paramMap.get(workId).getLevelShowAllPaper() == 0) {
                 if(ParamCache.paramMap.get(workId).getLevelShowAllPaper() == 0) {
-                    Long batchNo = paperRepo.findByQuestionId(questionId);
+//                    Long batchNo = paperRepo.findByQuestionId(questionId);
+                    Long batchNo = paperRepo.findMaxBatchNoByWorkId(workId);
                     if (!Objects.isNull(batchNo)) {
                     if (!Objects.isNull(batchNo)) {
                         predicates.add(builder.equal(root.get("paper").get("batchNo"), batchNo));
                         predicates.add(builder.equal(root.get("paper").get("batchNo"), batchNo));
                     }
                     }
                 }
                 }
             } else if (stage == MarkStage.SCORE) {
             } else if (stage == MarkStage.SCORE) {
-                Long batchNo = paperRepo.findScoreBatchNoByQuestionId(questionId);
+//                Long batchNo = paperRepo.findScoreBatchNoByQuestionId(questionId);
+                Long batchNo = paperRepo.findMaxScoreBatchNoByWorkId(workId);
                 predicates.add(builder.equal(root.get("paper").get("level"), level));
                 predicates.add(builder.equal(root.get("paper").get("level"), level));
                 predicates.add(builder.isNotNull(root.get("result")));
                 predicates.add(builder.isNotNull(root.get("result")));
                 predicates.add(builder.equal(root.get("paper").get("isShift"), false));
                 predicates.add(builder.equal(root.get("paper").get("isShift"), false));

+ 8 - 4
stmms-ms-marking/src/main/java/cn/com/qmth/stmms/ms/marking/assembler/PaperAssembler.java

@@ -8,10 +8,7 @@ import cn.com.qmth.stmms.ms.core.cache.ParamCache;
 import cn.com.qmth.stmms.ms.core.domain.*;
 import cn.com.qmth.stmms.ms.core.domain.*;
 import cn.com.qmth.stmms.ms.core.domain.enums.TrialEnum;
 import cn.com.qmth.stmms.ms.core.domain.enums.TrialEnum;
 import cn.com.qmth.stmms.ms.core.domain.task.MarkTask;
 import cn.com.qmth.stmms.ms.core.domain.task.MarkTask;
-import cn.com.qmth.stmms.ms.core.repository.LevelRepo;
-import cn.com.qmth.stmms.ms.core.repository.MarkSubjectRepo;
-import cn.com.qmth.stmms.ms.core.repository.MarkTaskRepo;
-import cn.com.qmth.stmms.ms.core.repository.StudentRepo;
+import cn.com.qmth.stmms.ms.core.repository.*;
 import cn.com.qmth.stmms.ms.core.vo.Subject;
 import cn.com.qmth.stmms.ms.core.vo.Subject;
 import cn.com.qmth.stmms.ms.marking.api.MakrerApi;
 import cn.com.qmth.stmms.ms.marking.api.MakrerApi;
 import cn.com.qmth.stmms.ms.marking.dto.PaperDTO;
 import cn.com.qmth.stmms.ms.marking.dto.PaperDTO;
@@ -52,6 +49,9 @@ public class PaperAssembler {
     @Autowired
     @Autowired
     private LevelRepo levelRepo;
     private LevelRepo levelRepo;
 
 
+    @Autowired
+    private MarkLogRepo markLogRepo;
+
     public PaperDTO toDTO(Paper paper) {
     public PaperDTO toDTO(Paper paper) {
         String imgSrc = null;
         String imgSrc = null;
         String thumbSrc = null;
         String thumbSrc = null;
@@ -113,6 +113,10 @@ public class PaperAssembler {
             paperDTO.setPaperTest(paper.getTest());
             paperDTO.setPaperTest(paper.getTest());
             paperDTO.setShift(paper.isShift());
             paperDTO.setShift(paper.isShift());
             paperDTO.setShiftScore(paper.isShiftScore());
             paperDTO.setShiftScore(paper.isShiftScore());
+            paperDTO.setRejectedByLeader(paper.isRejectedByLeader() == null ? false : paper.isRejectedByLeader());
+            //打回总次数
+            int rejectedCount = markLogRepo.countByWorkIdAndPaperIdAndOperType(paper.getWorkId(), paper.getId(), MarkLogOperType.SYSTEM_CALLBACK_LEVEl.getId(), MarkLogOperType.CALLBACK_LEVEl.getId());
+            paperDTO.setRejectedCount(rejectedCount);
             //计算levelValue和(试评阶段不用)
             //计算levelValue和(试评阶段不用)
             if(markSubject.getTest() == 0 && Objects.nonNull(paper.getLevel())) {
             if(markSubject.getTest() == 0 && Objects.nonNull(paper.getLevel())) {
                 List<Level> levels = levelRepo.findByWorkId(paper.getWorkId());
                 List<Level> levels = levelRepo.findByWorkId(paper.getWorkId());

+ 22 - 1
stmms-ms-marking/src/main/java/cn/com/qmth/stmms/ms/marking/dto/PaperDTO.java

@@ -43,7 +43,12 @@ public class PaperDTO implements Serializable{
     private int paperTest;
     private int paperTest;
     private boolean shift;
     private boolean shift;
     private boolean shiftScore;
     private boolean shiftScore;
-    //排序用
+
+    //是否科组长打回
+    private Boolean isRejectedByLeader;
+    //打回总次数
+    private Integer rejectedCount;
+   //排序用
     private int sortSum;
     private int sortSum;
     private List<MarkTaskDTO> markResults = new ArrayList<>();
     private List<MarkTaskDTO> markResults = new ArrayList<>();
 
 
@@ -290,4 +295,20 @@ public class PaperDTO implements Serializable{
     public void setSortSum(int sortSum) {
     public void setSortSum(int sortSum) {
         this.sortSum = sortSum;
         this.sortSum = sortSum;
     }
     }
+
+    public Boolean isRejectedByLeader() {
+        return isRejectedByLeader;
+    }
+
+    public void setRejectedByLeader(Boolean rejectedByLeader) {
+        isRejectedByLeader = rejectedByLeader;
+    }
+
+    public Integer isRejectedCount() {
+        return rejectedCount;
+    }
+
+    public void setRejectedCount(Integer rejectedCount) {
+        this.rejectedCount = rejectedCount;
+    }
 }
 }

+ 4 - 0
stmms-ms-marking/src/main/java/cn/com/qmth/stmms/ms/marking/service/MarkingService.java

@@ -160,6 +160,8 @@ public class MarkingService {
             }
             }
             //改档后重新分档,状态改为false
             //改档后重新分档,状态改为false
             paper.setShift(false);
             paper.setShift(false);
+            //重新分档,打回科组长打回状态改为false
+            paper.setRejectedByLeader(false);
             paperRepo.save(paper);
             paperRepo.save(paper);
         }
         }
         long end = System.currentTimeMillis();
         long end = System.currentTimeMillis();
@@ -292,6 +294,8 @@ public class MarkingService {
     @Transactional
     @Transactional
     public Paper reject(Paper paper, String redoLevel, String ranges) {
     public Paper reject(Paper paper, String redoLevel, String ranges) {
         paper.reject(redoLevel);
         paper.reject(redoLevel);
+        //科组长打回标记
+        paper.setRejectedByLeader(true);
         //打回后撤销标准卷
         //打回后撤销标准卷
         paper.setSample(false);
         paper.setSample(false);
         List<MarkTask> markTasks = markTaskRepo.findByPaperIdAndStage(paper.getId(), MarkStage.LEVEL);
         List<MarkTask> markTasks = markTaskRepo.findByPaperIdAndStage(paper.getId(), MarkStage.LEVEL);