Parcourir la source

联考版-v3.1.0-测试bug修改

xiaof il y a 2 ans
Parent
commit
3226aeba39
17 fichiers modifiés avec 300 ajouts et 131 suppressions
  1. 231 105
      stmms-ms-admin/src/main/java/cn/com/qmth/stmms/ms/admin/api/QualityAnalyseController.java
  2. 9 4
      stmms-ms-admin/src/main/java/cn/com/qmth/stmms/ms/admin/exporter/ScoreExporter.java
  3. 11 0
      stmms-ms-core/src/main/java/cn/com/qmth/stmms/ms/core/domain/Paper.java
  4. 2 0
      stmms-ms-core/src/main/java/cn/com/qmth/stmms/ms/core/repository/MarkLogRepo.java
  5. 1 1
      stmms-ms-core/src/main/java/cn/com/qmth/stmms/ms/core/repository/MarkTaskLevelRepo.java
  6. 1 1
      stmms-ms-core/src/main/java/cn/com/qmth/stmms/ms/core/repository/MarkTaskRoughLevelRepo.java
  7. 1 0
      stmms-ms-core/src/main/java/cn/com/qmth/stmms/ms/core/repository/MarkTaskScoreRepo.java
  8. 1 1
      stmms-ms-main/src/test/java/BatchLevelTest.java
  9. 1 1
      stmms-ms-main/src/test/java/BatchScoreTest.java
  10. 17 1
      stmms-ms-marking/src/main/java/cn/com/qmth/stmms/ms/marking/api/MakrerApi.java
  11. 3 0
      stmms-ms-marking/src/main/java/cn/com/qmth/stmms/ms/marking/api/MarkSubjectApi.java
  12. 10 7
      stmms-ms-marking/src/main/java/cn/com/qmth/stmms/ms/marking/api/MarkTaskApi.java
  13. 3 3
      stmms-ms-marking/src/main/java/cn/com/qmth/stmms/ms/marking/service/MarkTaskLevelService.java
  14. 3 3
      stmms-ms-marking/src/main/java/cn/com/qmth/stmms/ms/marking/service/MarkTaskRoughLevelService.java
  15. 3 3
      stmms-ms-marking/src/main/java/cn/com/qmth/stmms/ms/marking/service/MarkTaskScoreService.java
  16. 1 1
      stmms-ms-marking/src/main/java/cn/com/qmth/stmms/ms/marking/service/MarkingRoughLevelService.java
  17. 2 0
      stmms-ms-marking/src/main/java/cn/com/qmth/stmms/ms/marking/service/MarkingService.java

+ 231 - 105
stmms-ms-admin/src/main/java/cn/com/qmth/stmms/ms/admin/api/QualityAnalyseController.java

@@ -5,9 +5,10 @@ import cn.com.qmth.stmms.ms.core.domain.Level;
 import cn.com.qmth.stmms.ms.core.domain.MarkLogOperType;
 import cn.com.qmth.stmms.ms.core.domain.MarkStage;
 import cn.com.qmth.stmms.ms.core.domain.task.MarkTaskLevel;
-import cn.com.qmth.stmms.ms.core.domain.user.MarkUser;
+import cn.com.qmth.stmms.ms.core.domain.task.MarkTaskRoughLevel;
 import cn.com.qmth.stmms.ms.core.repository.LevelRepo;
 import cn.com.qmth.stmms.ms.core.repository.MarkTaskLevelRepo;
+import cn.com.qmth.stmms.ms.core.repository.MarkTaskRoughLevelRepo;
 import cn.com.qmth.stmms.ms.core.repository.MarkUserRepo;
 import cn.com.qmth.stmms.ms.core.vo.Subject;
 import cn.com.qmth.stmms.ms.marking.service.MarkerGroupLeaderService;
@@ -24,7 +25,6 @@ import javax.persistence.criteria.CriteriaBuilder;
 import javax.persistence.criteria.Predicate;
 import java.math.BigDecimal;
 import java.util.*;
-import java.util.function.Function;
 import java.util.stream.Collectors;
 
 /**
@@ -44,6 +44,9 @@ public class QualityAnalyseController {
     @Autowired
     private SqlUtil sqlUtil;
 
+    @Autowired
+    MarkTaskRoughLevelRepo markTaskRoughLevelRepo;
+
     @Autowired
     MarkTaskLevelRepo markTaskLevelRepo;
 
@@ -65,19 +68,22 @@ public class QualityAnalyseController {
     @RequestMapping(value = "levelsPropReport", method = RequestMethod.GET)
     public Object levelsPropReport(
             @RequestParam Long workId,
+            @RequestParam(required = false) MarkStage stage,
             @RequestParam(required = false) Subject subject,
             @RequestParam(required = false) String areaCode,
             @RequestParam(required = false) Long groupId,
             @RequestParam(required = false) String startTime,
             @RequestParam(required = false) String endTime) {
+        stage = Objects.isNull(stage) ? MarkStage.LEVEL : stage;
         List fList = new ArrayList();
         List<Level> levels = levelRepo.findByWorkId(workId);
-        List<Long> markerIds = markerGroupLeaderService.listByWorkIdAndSubjectAndStageAndGroupId(workId, subject, MarkStage.LEVEL, groupId);
+        List<Long> markerIds = markerGroupLeaderService.listByWorkIdAndSubjectAndStageAndGroupId(workId, subject, stage, groupId);
         String markerId = null;
         if (!CollectionUtils.isEmpty(markerIds)) {
             markerId = markerIds.stream().map(String::valueOf).collect(Collectors.joining(","));
         }
         String finalMarkerId = markerId;
+        MarkStage finalStage = stage;
         levels.forEach(l -> {
             StringBuffer sql = new StringBuffer();
             sql.append("  SELECT                                                        ");
@@ -91,10 +97,14 @@ public class QualityAnalyseController {
             sql.append("      (SELECT                                                   ");
             sql.append("          m.*                                                     ");
             sql.append("      FROM                                                      ");
-            sql.append("          mark_task m                                           ");
-            sql.append("          left join paper p on m.paper_id = p.id                ");
+            if (MarkStage.ROUGH_LEVEL.equals(finalStage)) {
+                sql.append("mark_task_rough_level");
+            } else if (MarkStage.LEVEL.equals(finalStage)) {
+                sql.append("mark_task_level");
+            }
+            sql.append("        m  left join paper p on m.paper_id = p.id                ");
             sql.append("      WHERE                                                     ");
-            sql.append("          stage = " + MarkStage.LEVEL.ordinal() + "             ");
+            sql.append("          m.stage = " + finalStage.ordinal() + "             ");
             if (!Objects.isNull(areaCode)) {
                 sql.append(" and p.area_code = " + areaCode);
             }
@@ -113,7 +123,7 @@ public class QualityAnalyseController {
             sql.append("  WHERE                                                         ");
             sql.append("      mu.work_id = " + workId);
             if (Objects.nonNull(subject)) {
-                sql.append(" AND mu.subject = '" + subject.toString() + "' ");
+                sql.append(" AND mu.subject = '" + subject + "' ");
             }
             sql.append("          AND mu.role = 'MARKER'                                ");
             sql.append("  GROUP BY mu.id , mu.name                                      ");
@@ -158,46 +168,87 @@ public class QualityAnalyseController {
     @RequestMapping(value = "callbackReport", method = RequestMethod.GET)
     public List callbackReport(
             @RequestParam Long workId,
+            @RequestParam(required = false) MarkStage stage,
             @RequestParam(required = false) Subject subject,
             @RequestParam(required = false) String areaCode,
             @RequestParam(required = false) Long groupId,
             @RequestParam(required = false) String startTime,
             @RequestParam(required = false) String endTime) {
+        stage = Objects.isNull(stage) ? MarkStage.LEVEL : stage;
         List list = new ArrayList();
-        List<Long> markerIds = markerGroupLeaderService.listByWorkIdAndSubjectAndStageAndGroupId(workId, subject, MarkStage.LEVEL, groupId);
-        Specification<MarkTaskLevel> specification = (root, query, builder) -> {
-            List<Predicate> predicates = new ArrayList<>();
-            predicates.add(builder.equal(root.get("workId"), workId));
-            if (Objects.nonNull(subject)) {
-                predicates.add(builder.equal(root.get("subject"), subject));
-            }
-            if (Objects.nonNull(areaCode)) {
-                predicates.add(builder.equal(root.get("paper").get("areaCode"), areaCode));
-            }
-            if (!CollectionUtils.isEmpty(markerIds)) {
-                CriteriaBuilder.In<Object> in = builder.in(root.get("markerId"));
-                for (Long id : markerIds) {
-                    in.value(id);
+        List<Long> markerIds = markerGroupLeaderService.listByWorkIdAndSubjectAndStageAndGroupId(workId, subject, stage, groupId);
+        if (MarkStage.ROUGH_LEVEL.equals(stage)) {
+            Specification<MarkTaskRoughLevel> specification = (root, query, builder) -> {
+                List<Predicate> predicates = new ArrayList<>();
+                predicates.add(builder.equal(root.get("workId"), workId));
+                if (Objects.nonNull(subject)) {
+                    predicates.add(builder.equal(root.get("subject"), subject));
                 }
-                predicates.add(builder.and(builder.and(in)));
-            }
-            return builder.and(predicates.toArray(new Predicate[predicates.size()]));
-        };
-        List<MarkTaskLevel> markTasks = markTaskLevelRepo.findAll(specification);
-        if (Objects.nonNull(markTasks) && markTasks.size() > 0) {
-            Map<Long, MarkTaskLevel> markerMap = markTasks.stream().collect(Collectors.toMap(MarkTaskLevel::getMarkerId, Function.identity(), (dto1, dto2) -> dto1));
-            List<Long> markerIdList = markerMap.values().stream().map(MarkTaskLevel::getMarkerId).collect(Collectors.toList());
-            Object o = StringUtils.join(markerIdList.toArray(), ",");
-            String sql = new StringBuffer("select mu.login_name as userName, count(t.create_user_id) as sumCount,t.create_user_id as userId from mark_log t left join mark_user mu on t.create_user_id = mu.id where t.oper_type BETWEEN ").append(MarkLogOperType.SYSTEM_CALLBACK_LEVEl.getId()).append(" and ").append(MarkLogOperType.HANDLE_LEVEl.getId()).append(" and t.create_user_id in (").append(o).append(")").toString();
-            if (Objects.nonNull(startTime)) {
-                sql = sqlUtil.sqlConditionAnd(sql, new String[]{"t.create_time"}, new String[]{startTime}, new String[]{">="});
+                if (Objects.nonNull(areaCode)) {
+                    predicates.add(builder.equal(root.get("paper").get("areaCode"), areaCode));
+                }
+                if (!CollectionUtils.isEmpty(markerIds)) {
+                    CriteriaBuilder.In<Object> in = builder.in(root.get("markerId"));
+                    for (Long id : markerIds) {
+                        in.value(id);
+                    }
+                    predicates.add(builder.and(builder.and(in)));
+                }
+                return builder.and(predicates.toArray(new Predicate[predicates.size()]));
+            };
+            List<MarkTaskRoughLevel> markTasks = markTaskRoughLevelRepo.findAll(specification);
+
+            if (Objects.nonNull(markTasks) && markTasks.size() > 0) {
+                Map<Long, String> markerMap = markTasks.stream().collect(Collectors.toMap(MarkTaskRoughLevel::getMarkerId, MarkTaskRoughLevel::getMarkerName, (dto1, dto2) -> dto1));
+                List<Long> markerIdList = markerMap.entrySet().stream().map(Map.Entry::getKey).collect(Collectors.toList());
+                Object o = StringUtils.join(markerIdList.toArray(), ",");
+                String sql = new StringBuffer("select mu.login_name as userName, count(t.create_user_id) as sumCount,t.create_user_id as userId from mark_log t left join mark_user mu on t.create_user_id = mu.id where t.stage = ").append(stage.ordinal()).append(" and t.oper_type BETWEEN ").append(MarkLogOperType.SYSTEM_CALLBACK_LEVEl.getId()).append(" and ").append(MarkLogOperType.HANDLE_LEVEl.getId()).append(" and t.create_user_id in (").append(o).append(")").toString();
+                if (Objects.nonNull(startTime)) {
+                    sql = sqlUtil.sqlConditionAnd(sql, new String[]{"t.create_time"}, new String[]{startTime}, new String[]{">="});
+                }
+                if (Objects.nonNull(endTime)) {
+                    sql = sqlUtil.sqlConditionAnd(sql, new String[]{"t.create_time"}, new String[]{endTime}, new String[]{"<="});
+                }
+                sql = sqlUtil.sqlGroupBy(sql, "t.create_user_id");
+                list = sqlUtil.execSqlForMap(sql);
+                list = distinctCommon(list, markerIdList, markerMap);
             }
-            if (Objects.nonNull(endTime)) {
-                sql = sqlUtil.sqlConditionAnd(sql, new String[]{"t.create_time"}, new String[]{endTime}, new String[]{"<="});
+        } else if (MarkStage.LEVEL.equals(stage)) {
+            Specification<MarkTaskLevel> specification = (root, query, builder) -> {
+                List<Predicate> predicates = new ArrayList<>();
+                predicates.add(builder.equal(root.get("workId"), workId));
+                if (Objects.nonNull(subject)) {
+                    predicates.add(builder.equal(root.get("subject"), subject));
+                }
+                if (Objects.nonNull(areaCode)) {
+                    predicates.add(builder.equal(root.get("paper").get("areaCode"), areaCode));
+                }
+                if (!CollectionUtils.isEmpty(markerIds)) {
+                    CriteriaBuilder.In<Object> in = builder.in(root.get("markerId"));
+                    for (Long id : markerIds) {
+                        in.value(id);
+                    }
+                    predicates.add(builder.and(builder.and(in)));
+                }
+                return builder.and(predicates.toArray(new Predicate[predicates.size()]));
+            };
+            List<MarkTaskLevel> markTasks = markTaskLevelRepo.findAll(specification);
+
+            if (Objects.nonNull(markTasks) && markTasks.size() > 0) {
+                Map<Long, String> markerMap = markTasks.stream().collect(Collectors.toMap(MarkTaskLevel::getMarkerId, MarkTaskLevel::getMarkerName, (dto1, dto2) -> dto1));
+                List<Long> markerIdList = markerMap.entrySet().stream().map(Map.Entry::getKey).collect(Collectors.toList());
+                Object o = StringUtils.join(markerIdList.toArray(), ",");
+                String sql = new StringBuffer("select mu.login_name as userName, count(t.create_user_id) as sumCount,t.create_user_id as userId from mark_log t left join mark_user mu on t.create_user_id = mu.id where t.stage = ").append(stage.ordinal()).append(" and  t.oper_type BETWEEN ").append(MarkLogOperType.SYSTEM_CALLBACK_LEVEl.getId()).append(" and ").append(MarkLogOperType.HANDLE_LEVEl.getId()).append(" and t.create_user_id in (").append(o).append(")").toString();
+                if (Objects.nonNull(startTime)) {
+                    sql = sqlUtil.sqlConditionAnd(sql, new String[]{"t.create_time"}, new String[]{startTime}, new String[]{">="});
+                }
+                if (Objects.nonNull(endTime)) {
+                    sql = sqlUtil.sqlConditionAnd(sql, new String[]{"t.create_time"}, new String[]{endTime}, new String[]{"<="});
+                }
+                sql = sqlUtil.sqlGroupBy(sql, "t.create_user_id");
+                list = sqlUtil.execSqlForMap(sql);
+                list = distinctCommon(list, markerIdList, markerMap);
             }
-            sql = sqlUtil.sqlGroupBy(sql, "t.create_user_id");
-            list = sqlUtil.execSqlForMap(sql);
-            list = distinctCommon(list, markerIdList, markerMap);
         }
         return list;
     }
@@ -214,47 +265,85 @@ public class QualityAnalyseController {
     @RequestMapping(value = "distanceReport", method = RequestMethod.GET)
     public List distanceReport(
             @RequestParam Long workId,
+            @RequestParam(required = false) MarkStage stage,
             @RequestParam(required = false) Subject subject,
             @RequestParam(required = false) String areaCode,
             @RequestParam(required = false) Long groupId,
             @RequestParam(required = false) String startTime,
             @RequestParam(required = false) String endTime) {
+        stage = Objects.isNull(stage) ? MarkStage.LEVEL : stage;
         List list = new ArrayList();
-        List<Long> markerIds = markerGroupLeaderService.listByWorkIdAndSubjectAndStageAndGroupId(workId, subject, MarkStage.LEVEL, groupId);
-        ;
-        Specification<MarkTaskLevel> specification = (root, query, builder) -> {
-            List<Predicate> predicates = new ArrayList<>();
-            predicates.add(builder.equal(root.get("workId"), workId));
-            if (Objects.nonNull(subject)) {
-                predicates.add(builder.equal(root.get("subject"), subject));
-            }
-            if (Objects.nonNull(areaCode)) {
-                predicates.add(builder.equal(root.get("paper").get("areaCode"), areaCode));
-            }
-            if (!CollectionUtils.isEmpty(markerIds)) {
-                CriteriaBuilder.In<Object> in = builder.in(root.get("markerId"));
-                for (Long id : markerIds) {
-                    in.value(id);
+        List<Long> markerIds = markerGroupLeaderService.listByWorkIdAndSubjectAndStageAndGroupId(workId, subject, stage, groupId);
+        if (MarkStage.ROUGH_LEVEL.equals(stage)) {
+            Specification<MarkTaskRoughLevel> specification = (root, query, builder) -> {
+                List<Predicate> predicates = new ArrayList<>();
+                predicates.add(builder.equal(root.get("workId"), workId));
+                if (Objects.nonNull(subject)) {
+                    predicates.add(builder.equal(root.get("subject"), subject));
                 }
-                predicates.add(builder.and(builder.and(in)));
-            }
-            return builder.and(predicates.toArray(new Predicate[predicates.size()]));
-        };
-        List<MarkTaskLevel> markTasks = markTaskLevelRepo.findAll(specification);
-        if (Objects.nonNull(markTasks) && !markTasks.isEmpty()) {
-            Map<Long, MarkTaskLevel> markerMap = markTasks.stream().collect(Collectors.toMap(MarkTaskLevel::getMarkerId, Function.identity(), (dto1, dto2) -> dto1));
-            List<Long> markerIdList = markerMap.values().stream().map(MarkTaskLevel::getMarkerId).collect(Collectors.toList());
-            Object o = StringUtils.join(markerIdList.toArray(), ",");
-            String sql = new StringBuffer("select mu.login_name as userName, sum(t.oper_data_after) as sumCount,t.create_user_id as userId from mark_log t left join mark_user mu on t.create_user_id = mu.id where t.oper_type = ").append(MarkLogOperType.LEVEl_DIFFERENCE.getId()).append(" and t.create_user_id in (").append(o).append(")").toString();
-            if (Objects.nonNull(startTime)) {
-                sql = sqlUtil.sqlConditionAnd(sql, new String[]{"t.create_time"}, new String[]{startTime}, new String[]{">="});
+                if (Objects.nonNull(areaCode)) {
+                    predicates.add(builder.equal(root.get("paper").get("areaCode"), areaCode));
+                }
+                if (!CollectionUtils.isEmpty(markerIds)) {
+                    CriteriaBuilder.In<Object> in = builder.in(root.get("markerId"));
+                    for (Long id : markerIds) {
+                        in.value(id);
+                    }
+                    predicates.add(builder.and(builder.and(in)));
+                }
+                return builder.and(predicates.toArray(new Predicate[predicates.size()]));
+            };
+            List<MarkTaskRoughLevel> markTasks = markTaskRoughLevelRepo.findAll(specification);
+            if (Objects.nonNull(markTasks) && !markTasks.isEmpty()) {
+                Map<Long, String> markerMap = markTasks.stream().collect(Collectors.toMap(MarkTaskRoughLevel::getMarkerId, MarkTaskRoughLevel::getMarkerName, (dto1, dto2) -> dto1));
+                List<Long> markerIdList = markerMap.entrySet().stream().map(Map.Entry::getKey).collect(Collectors.toList());
+                Object o = StringUtils.join(markerIdList.toArray(), ",");
+                String sql = new StringBuffer("select mu.login_name as userName, sum(t.oper_data_after) as sumCount,t.create_user_id as userId from mark_log t left join mark_user mu on t.create_user_id = mu.id where t.stage = ").append(stage.ordinal()).append(" and  t.oper_type = ").append(MarkLogOperType.LEVEl_DIFFERENCE.getId()).append(" and t.create_user_id in (").append(o).append(")").toString();
+                if (Objects.nonNull(startTime)) {
+                    sql = sqlUtil.sqlConditionAnd(sql, new String[]{"t.create_time"}, new String[]{startTime}, new String[]{">="});
+                }
+                if (Objects.nonNull(endTime)) {
+                    sql = sqlUtil.sqlConditionAnd(sql, new String[]{"t.create_time"}, new String[]{endTime}, new String[]{"<="});
+                }
+                sql = sqlUtil.sqlGroupBy(sql, "t.create_user_id");
+                list = sqlUtil.execSqlForMap(sql);
+                list = distinctCommon(list, markerIdList, markerMap);
             }
-            if (Objects.nonNull(endTime)) {
-                sql = sqlUtil.sqlConditionAnd(sql, new String[]{"t.create_time"}, new String[]{endTime}, new String[]{"<="});
+        } else if (MarkStage.LEVEL.equals(stage)) {
+            Specification<MarkTaskLevel> specification = (root, query, builder) -> {
+                List<Predicate> predicates = new ArrayList<>();
+                predicates.add(builder.equal(root.get("workId"), workId));
+                if (Objects.nonNull(subject)) {
+                    predicates.add(builder.equal(root.get("subject"), subject));
+                }
+                if (Objects.nonNull(areaCode)) {
+                    predicates.add(builder.equal(root.get("paper").get("areaCode"), areaCode));
+                }
+                if (!CollectionUtils.isEmpty(markerIds)) {
+                    CriteriaBuilder.In<Object> in = builder.in(root.get("markerId"));
+                    for (Long id : markerIds) {
+                        in.value(id);
+                    }
+                    predicates.add(builder.and(builder.and(in)));
+                }
+                return builder.and(predicates.toArray(new Predicate[predicates.size()]));
+            };
+            List<MarkTaskLevel> markTasks = markTaskLevelRepo.findAll(specification);
+            if (Objects.nonNull(markTasks) && !markTasks.isEmpty()) {
+                Map<Long, String> markerMap = markTasks.stream().collect(Collectors.toMap(MarkTaskLevel::getMarkerId, MarkTaskLevel::getMarkerName, (dto1, dto2) -> dto1));
+                List<Long> markerIdList = markerMap.entrySet().stream().map(Map.Entry::getKey).collect(Collectors.toList());
+                Object o = StringUtils.join(markerIdList.toArray(), ",");
+                String sql = new StringBuffer("select mu.login_name as userName, sum(t.oper_data_after) as sumCount,t.create_user_id as userId from mark_log t left join mark_user mu on t.create_user_id = mu.id where t.stage = ").append(stage.ordinal()).append(" and  t.oper_type = ").append(MarkLogOperType.LEVEl_DIFFERENCE.getId()).append(" and t.create_user_id in (").append(o).append(")").toString();
+                if (Objects.nonNull(startTime)) {
+                    sql = sqlUtil.sqlConditionAnd(sql, new String[]{"t.create_time"}, new String[]{startTime}, new String[]{">="});
+                }
+                if (Objects.nonNull(endTime)) {
+                    sql = sqlUtil.sqlConditionAnd(sql, new String[]{"t.create_time"}, new String[]{endTime}, new String[]{"<="});
+                }
+                sql = sqlUtil.sqlGroupBy(sql, "t.create_user_id");
+                list = sqlUtil.execSqlForMap(sql);
+                list = distinctCommon(list, markerIdList, markerMap);
             }
-            sql = sqlUtil.sqlGroupBy(sql, "t.create_user_id");
-            list = sqlUtil.execSqlForMap(sql);
-            list = distinctCommon(list, markerIdList, markerMap);
         }
         return list;
     }
@@ -271,47 +360,85 @@ public class QualityAnalyseController {
     @RequestMapping(value = "deviationReport", method = RequestMethod.GET)
     public List cumulativeReport(
             @RequestParam Long workId,
+            @RequestParam(required = false) MarkStage stage,
             @RequestParam(required = false) Subject subject,
             @RequestParam(required = false) String areaCode,
             @RequestParam(required = false) Long groupId,
             @RequestParam(required = false) String startTime,
             @RequestParam(required = false) String endTime) {
+        stage = Objects.isNull(stage) ? MarkStage.LEVEL : stage;
         List list = new ArrayList();
-        List<Long> markerIds = markerGroupLeaderService.listByWorkIdAndSubjectAndStageAndGroupId(workId, subject, MarkStage.LEVEL, groupId);
-        ;
-        Specification<MarkTaskLevel> specification = (root, query, builder) -> {
-            List<Predicate> predicates = new ArrayList<>();
-            predicates.add(builder.equal(root.get("workId"), workId));
-            if (Objects.nonNull(subject)) {
-                predicates.add(builder.equal(root.get("subject"), subject));
-            }
-            if (Objects.nonNull(areaCode)) {
-                predicates.add(builder.equal(root.get("paper").get("areaCode"), areaCode));
-            }
-            if (!CollectionUtils.isEmpty(markerIds)) {
-                CriteriaBuilder.In<Object> in = builder.in(root.get("markerId"));
-                for (Long id : markerIds) {
-                    in.value(id);
+        List<Long> markerIds = markerGroupLeaderService.listByWorkIdAndSubjectAndStageAndGroupId(workId, subject, stage, groupId);
+        if (MarkStage.ROUGH_LEVEL.equals(stage)) {
+            Specification<MarkTaskRoughLevel> specification = (root, query, builder) -> {
+                List<Predicate> predicates = new ArrayList<>();
+                predicates.add(builder.equal(root.get("workId"), workId));
+                if (Objects.nonNull(subject)) {
+                    predicates.add(builder.equal(root.get("subject"), subject));
                 }
-                predicates.add(builder.and(builder.and(in)));
-            }
-            return builder.and(predicates.toArray(new Predicate[predicates.size()]));
-        };
-        List<MarkTaskLevel> markTasks = markTaskLevelRepo.findAll(specification);
-        if (Objects.nonNull(markTasks) && markTasks.size() > 0) {
-            Map<Long, MarkTaskLevel> markerMap = markTasks.stream().collect(Collectors.toMap(MarkTaskLevel::getMarkerId, Function.identity(), (dto1, dto2) -> dto1));
-            List<Long> markerIdList = markerMap.values().stream().map(MarkTaskLevel::getMarkerId).collect(Collectors.toList());
-            Object o = StringUtils.join(markerIdList.toArray(), ",");
-            String sql = new StringBuffer("select mu.login_name as userName, sum(t.oper_data_after) as sumCount,t.create_user_id as userId from mark_log t left join mark_user mu on t.create_user_id = mu.id where t.oper_type = ").append(MarkLogOperType.LEVEl_DEVIATION.getId()).append(" and t.create_user_id in (").append(o).append(")").toString();
-            if (Objects.nonNull(startTime)) {
-                sql = sqlUtil.sqlConditionAnd(sql, new String[]{"t.create_time"}, new String[]{startTime}, new String[]{">="});
+                if (Objects.nonNull(areaCode)) {
+                    predicates.add(builder.equal(root.get("paper").get("areaCode"), areaCode));
+                }
+                if (!CollectionUtils.isEmpty(markerIds)) {
+                    CriteriaBuilder.In<Object> in = builder.in(root.get("markerId"));
+                    for (Long id : markerIds) {
+                        in.value(id);
+                    }
+                    predicates.add(builder.and(builder.and(in)));
+                }
+                return builder.and(predicates.toArray(new Predicate[predicates.size()]));
+            };
+            List<MarkTaskRoughLevel> markTasks = markTaskRoughLevelRepo.findAll(specification);
+            if (Objects.nonNull(markTasks) && markTasks.size() > 0) {
+                Map<Long, String> markerMap = markTasks.stream().collect(Collectors.toMap(MarkTaskRoughLevel::getMarkerId, MarkTaskRoughLevel::getMarkerName, (dto1, dto2) -> dto1));
+                List<Long> markerIdList = markerMap.entrySet().stream().map(Map.Entry::getKey).collect(Collectors.toList());
+                Object o = StringUtils.join(markerIdList.toArray(), ",");
+                String sql = new StringBuffer("select mu.login_name as userName, sum(t.oper_data_after) as sumCount,t.create_user_id as userId from mark_log t left join mark_user mu on t.create_user_id = mu.id where t.stage = ").append(stage.ordinal()).append(" and  t.oper_type = ").append(MarkLogOperType.LEVEl_DEVIATION.getId()).append(" and t.create_user_id in (").append(o).append(")").toString();
+                if (Objects.nonNull(startTime)) {
+                    sql = sqlUtil.sqlConditionAnd(sql, new String[]{"t.create_time"}, new String[]{startTime}, new String[]{">="});
+                }
+                if (Objects.nonNull(endTime)) {
+                    sql = sqlUtil.sqlConditionAnd(sql, new String[]{"t.create_time"}, new String[]{endTime}, new String[]{"<="});
+                }
+                sql = sqlUtil.sqlGroupBy(sql, "t.create_user_id");
+                list = sqlUtil.execSqlForMap(sql);
+                list = distinctCommon(list, markerIdList, markerMap);
             }
-            if (Objects.nonNull(endTime)) {
-                sql = sqlUtil.sqlConditionAnd(sql, new String[]{"t.create_time"}, new String[]{endTime}, new String[]{"<="});
+        } else if (MarkStage.LEVEL.equals(stage)) {
+            Specification<MarkTaskLevel> specification = (root, query, builder) -> {
+                List<Predicate> predicates = new ArrayList<>();
+                predicates.add(builder.equal(root.get("workId"), workId));
+                if (Objects.nonNull(subject)) {
+                    predicates.add(builder.equal(root.get("subject"), subject));
+                }
+                if (Objects.nonNull(areaCode)) {
+                    predicates.add(builder.equal(root.get("paper").get("areaCode"), areaCode));
+                }
+                if (!CollectionUtils.isEmpty(markerIds)) {
+                    CriteriaBuilder.In<Object> in = builder.in(root.get("markerId"));
+                    for (Long id : markerIds) {
+                        in.value(id);
+                    }
+                    predicates.add(builder.and(builder.and(in)));
+                }
+                return builder.and(predicates.toArray(new Predicate[predicates.size()]));
+            };
+            List<MarkTaskLevel> markTasks = markTaskLevelRepo.findAll(specification);
+            if (Objects.nonNull(markTasks) && markTasks.size() > 0) {
+                Map<Long, String> markerMap = markTasks.stream().collect(Collectors.toMap(MarkTaskLevel::getMarkerId, MarkTaskLevel::getMarkerName, (dto1, dto2) -> dto1));
+                List<Long> markerIdList = markerMap.entrySet().stream().map(Map.Entry::getKey).collect(Collectors.toList());
+                Object o = StringUtils.join(markerIdList.toArray(), ",");
+                String sql = new StringBuffer("select mu.login_name as userName, sum(t.oper_data_after) as sumCount,t.create_user_id as userId from mark_log t left join mark_user mu on t.create_user_id = mu.id where t.stage = ").append(stage.ordinal()).append(" and  t.oper_type = ").append(MarkLogOperType.LEVEl_DEVIATION.getId()).append(" and t.create_user_id in (").append(o).append(")").toString();
+                if (Objects.nonNull(startTime)) {
+                    sql = sqlUtil.sqlConditionAnd(sql, new String[]{"t.create_time"}, new String[]{startTime}, new String[]{">="});
+                }
+                if (Objects.nonNull(endTime)) {
+                    sql = sqlUtil.sqlConditionAnd(sql, new String[]{"t.create_time"}, new String[]{endTime}, new String[]{"<="});
+                }
+                sql = sqlUtil.sqlGroupBy(sql, "t.create_user_id");
+                list = sqlUtil.execSqlForMap(sql);
+                list = distinctCommon(list, markerIdList, markerMap);
             }
-            sql = sqlUtil.sqlGroupBy(sql, "t.create_user_id");
-            list = sqlUtil.execSqlForMap(sql);
-            list = distinctCommon(list, markerIdList, markerMap);
         }
         return list;
     }
@@ -324,7 +451,7 @@ public class QualityAnalyseController {
      * @param markerMap
      * @return
      */
-    public List distinctCommon(List list, List<Long> markerIdList, Map<Long, MarkTaskLevel> markerMap) {
+    public List distinctCommon(List list, List<Long> markerIdList, Map<Long, String> markerMap) {
         if (Objects.nonNull(list) && list.size() > 0) {
             List<Long> dataIdList = new ArrayList<>();
             for (int i = 0; i < list.size(); i++) {
@@ -336,8 +463,7 @@ public class QualityAnalyseController {
             if (distinctIdList.size() > 0) {
                 for (Long l : distinctIdList) {
                     Map map = new HashMap();
-                    MarkUser markUser = markUserRepo.findOne(markerMap.get(l).getMarkerId());
-                    map.put("userName", markUser.getLoginName());
+                    map.put("userName", markerMap.get(l));
                     map.put("sumCount", 0);
                     map.put("userId", l);
                     list.add(map);

+ 9 - 4
stmms-ms-admin/src/main/java/cn/com/qmth/stmms/ms/admin/exporter/ScoreExporter.java

@@ -6,8 +6,14 @@ import cn.com.qmth.stmms.ms.admin.dto.ScoreDTO;
 import cn.com.qmth.stmms.ms.commons.config.ImageConfig;
 import cn.com.qmth.stmms.ms.commons.utils.SqlUtil;
 import cn.com.qmth.stmms.ms.commons.utils.excel.ExportUtils;
-import cn.com.qmth.stmms.ms.core.domain.*;
-import cn.com.qmth.stmms.ms.core.repository.*;
+import cn.com.qmth.stmms.ms.core.domain.MarkStage;
+import cn.com.qmth.stmms.ms.core.domain.MarkSubject;
+import cn.com.qmth.stmms.ms.core.domain.Paper;
+import cn.com.qmth.stmms.ms.core.domain.Student;
+import cn.com.qmth.stmms.ms.core.repository.ExamQuestionRepo;
+import cn.com.qmth.stmms.ms.core.repository.MarkSubjectRepo;
+import cn.com.qmth.stmms.ms.core.repository.PaperRepo;
+import cn.com.qmth.stmms.ms.core.repository.StudentRepo;
 import cn.com.qmth.stmms.ms.core.vo.Subject;
 import com.google.gson.Gson;
 import org.apache.commons.lang.math.NumberUtils;
@@ -24,7 +30,6 @@ import org.springframework.web.bind.annotation.*;
 
 import javax.annotation.Resource;
 import javax.servlet.http.HttpServletResponse;
-import java.awt.image.Kernel;
 import java.util.*;
 import java.util.concurrent.atomic.AtomicInteger;
 import java.util.stream.Collectors;
@@ -532,7 +537,7 @@ public class ScoreExporter {
                         map.forEach((k, v) -> {
                             if (k.contains(Subject.SC.toString())) {
                                 ExportLevelResultDTO exportLevelResultDTO = scMap.get(v.getTeacherName());
-                                drawExcelFixedHead(finalSheet, style, hssfRow, new HeaderNode(roughLevels[Integer.parseInt(v.getResult())], firstRow, firstRow, exportLevelResultDTO.getFirstCol(), exportLevelResultDTO.getFirstCol()));
+                                drawExcelFixedHead(finalSheet, style, hssfRow, new HeaderNode(Objects.nonNull(v.getResult()) ? roughLevels[Integer.parseInt(v.getResult())] : "", firstRow, firstRow, exportLevelResultDTO.getFirstCol(), exportLevelResultDTO.getFirstCol()));
                                 if (Objects.nonNull(v.getLevel())) {
                                     drawExcelFixedHead(finalSheet, style, hssfRow, new HeaderNode(roughLevels[Integer.parseInt(v.getLevel())], firstRow, firstRow, level + (scMap == null ? 0 : scMap.size()), level + (scMap == null ? 0 : scMap.size())));
                                 }

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

@@ -403,6 +403,17 @@ public class Paper implements Serializable {
         this.setSortNum(0);
     }
 
+    /**
+     * 仲裁
+     */
+    public void roughArbitrate() {
+        this.setRejected(false);
+        this.setArbitrated(true);
+        this.setRoughLevel(null);
+        this.setUpdatedOn(new Date());
+        this.setSortNum(null);
+    }
+
     /**
      * 仲裁
      */

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

@@ -49,4 +49,6 @@ public interface MarkLogRepo extends JpaRepository<MarkLog, Long>, JpaSpecificat
     int countByWorkIdAndPaperIdAndOperType(Long workId, Long id, int id1);
 
     MarkLog findTopByStageAndCreateUserIdAndOperTypeAndSubjectAndExamNumberOrderByCreateTimeDesc(MarkStage stage, Long markerId, int id, String toString, String examNumber);
+
+    void deleteByWorkIdAndSubjectAndStage(Long workId, String name, MarkStage stage);
 }

+ 1 - 1
stmms-ms-core/src/main/java/cn/com/qmth/stmms/ms/core/repository/MarkTaskLevelRepo.java

@@ -176,7 +176,7 @@ public interface MarkTaskLevelRepo extends JpaRepository<MarkTaskLevel, Long>, J
 
     List<MarkTaskLevel> findByPaperId(Long paperId);
 
-    @Query(value = "select max(s.randomSeq) from MarkTaskLevel s where s.workId = ?1 and s.subject = ?2 and s.markerId = ?3 and s.questionId = ?4", nativeQuery = true)
+    @Query(value = "select max(s.randomSeq) from MarkTaskLevel s where s.workId = ?1 and s.subject = ?2 and s.markerId = ?3 and s.questionId = ?4")
     Integer findRandomSeqByWorkIdAndSubjectAndMarkerIdAndQuestionId(Long workId, Subject subject, Long markerId, Long questionId);
 
     @Query("select m.paper.id from MarkTaskLevel m where m.workId = ?1 and m.questionId = ?2 and m.markerId = ?3 and m.stage = ?4 and m.isMark = ?5")

+ 1 - 1
stmms-ms-core/src/main/java/cn/com/qmth/stmms/ms/core/repository/MarkTaskRoughLevelRepo.java

@@ -143,7 +143,7 @@ public interface MarkTaskRoughLevelRepo extends JpaRepository<MarkTaskRoughLevel
 
     List<MarkTaskRoughLevel> findByPaperId(Long paperId);
 
-    @Query(value = "select max(s.randomSeq) from MarkTaskRoughLevel s where s.workId = ?1 and s.subject = ?2 and s.markerId = ?3 and s.questionId = ?4", nativeQuery = true)
+    @Query(value = "select max(s.randomSeq) from MarkTaskRoughLevel s where s.workId = ?1 and s.subject = ?2 and s.markerId = ?3 and s.questionId = ?4")
     Integer findRandomSeqByWorkIdAndSubjectAndMarkerIdAndQuestionId(Long workId, Subject subject, Long markerId, Long questionId);
 
     @Query("select m.paper.id from MarkTaskRoughLevel m where m.workId = ?1 and m.questionId = ?2 and m.markerId = ?3 and m.stage = ?4 and m.isMark = ?5")

+ 1 - 0
stmms-ms-core/src/main/java/cn/com/qmth/stmms/ms/core/repository/MarkTaskScoreRepo.java

@@ -136,6 +136,7 @@ public interface MarkTaskScoreRepo extends JpaRepository<MarkTaskScore, Long>, J
 
     List<MarkTaskScore> findByPaperId(Long paperId);
 
+    @Query(value = "select max(s.randomSeq) from MarkTaskScore s where s.workId = ?1 and s.subject = ?2 and s.markerId = ?3 and s.questionId = ?4")
     Integer findRandomSeqByWorkIdAndSubjectAndMarkerIdAndQuestionId(Long workId, Subject subject, Long markerId, Long questionId);
 
     @Query("select m.paper.id from MarkTaskScore m where m.workId = ?1 and m.questionId = ?2 and m.markerId = ?3 and m.stage = ?4 and m.isMark = ?5")

+ 1 - 1
stmms-ms-main/src/test/java/BatchLevelTest.java

@@ -57,7 +57,7 @@ public class BatchLevelTest {
      *
      * @throws Exception
      */
-    @Test
+//    @Test
     public void level() {
         List<Level> levels = levelRepo.findByWorkIdOrderByCode(WORK_ID);
         doLevel(levels);

+ 1 - 1
stmms-ms-main/src/test/java/BatchScoreTest.java

@@ -54,7 +54,7 @@ public class BatchScoreTest {
      *
      * @throws Exception
      */
-    @Test
+//    @Test
     public void level() {
         List<Level> levels = levelRepo.findByWorkIdOrderByCode(WORK_ID);
         doScore(levels);

+ 17 - 1
stmms-ms-marking/src/main/java/cn/com/qmth/stmms/ms/marking/api/MakrerApi.java

@@ -669,7 +669,7 @@ public class MakrerApi {
             }
         });
 
-// 标记试卷(评卷员标记的和科组长标记的都统计)
+        // 标记试卷(评卷员标记的和科组长标记的都统计)
         LevelStatDTO markPaperDTO = new LevelStatDTO();
         markPaperDTO.setId("markPaper");
         int markPaperCount;
@@ -768,6 +768,22 @@ public class MakrerApi {
                 o.setCount(count);
             }
         });
+
+        // 标记试卷(评卷员标记的和科组长标记的都统计)
+        LevelStatDTO markPaperDTO = new LevelStatDTO();
+        markPaperDTO.setId("markPaper");
+        int markPaperCount;
+        if (ParamCache.scoreConfigMap.get(String.valueOf(marker.getWorkId())).getScoreShowAllPaper() == 1) {
+            // 评卷员和科组长标记的试卷
+            List<Long> markTaskPaperId = markTaskScoreRepo.findByWorkIdAndQuestionIdAndMarkerIdAndStageAndIsMark(markSubject.getWorkId(), questionId,marker.getId(), markSubject.getStage(), true);
+            markPaperCount = Math.toIntExact(markTaskPaperId.stream().distinct().count());
+        } else {
+            // 评卷员标记的试卷
+            List<Long> markTaskPaperIdAll = markTaskScoreRepo.findByWorkIdAndQuestionIdAndMarkerIdAndStageAndBatchNoAndPaperIsMark(markSubject.getWorkId(), questionId, marker.getId(), markSubject.getStage(), batchNo);
+            markPaperCount = Math.toIntExact(markTaskPaperIdAll.stream().distinct().count());
+        }
+        markPaperDTO.setCount(markPaperCount);
+        levelStatDTOs.add(markPaperDTO);
         return levelStatDTOs;
     }
 

+ 3 - 0
stmms-ms-marking/src/main/java/cn/com/qmth/stmms/ms/marking/api/MarkSubjectApi.java

@@ -374,6 +374,9 @@ public class MarkSubjectApi {
                     BigDecimal gbd = new BigDecimal(gp).setScale(3, RoundingMode.HALF_EVEN);
                     o.setGpercent(gbd.doubleValue());
                     o.setPt(0);
+                } else {
+                    int count = o.getCount() - o.getArbitrated() - o.getRejected();
+                    o.setCount(count);
                 }
             });
         }

+ 10 - 7
stmms-ms-marking/src/main/java/cn/com/qmth/stmms/ms/marking/api/MarkTaskApi.java

@@ -134,14 +134,15 @@ public class MarkTaskApi {
     @PatchMapping("{markTask}")
     public ResponseEntity marking(@PathVariable Long markTask, @RequestBody HashMap<String, String> body) {
         MarkStage stage = MarkStage.valueOf(body.get("stage"));
+        MarkTaskDTO markTaskDTO = null;
         if (stage.equals(MarkStage.ROUGH_LEVEL)) {
-            return markTaskRoughLevelService.markingLevel(markTask, body);
+            markTaskDTO = markTaskRoughLevelService.markingLevel(markTask, body);
         } else if (stage.equals(MarkStage.LEVEL)) {
-            return markTaskLevelService.markingLevel(markTask, body);
+            markTaskDTO = markTaskLevelService.markingLevel(markTask, body);
         } else if (stage.equals(MarkStage.SCORE)) {
-            return markTaskScoreService.markingScore(markTask, body);
+            markTaskDTO = markTaskScoreService.markingScore(markTask, body);
         }
-        return null;
+        return new ResponseEntity(markTaskDTO, HttpStatus.OK);
     }
 
     /**
@@ -159,13 +160,15 @@ public class MarkTaskApi {
         String[] ids = markIds.split(",");
         List<MarkTaskDTO> list = new ArrayList<>();
         for (String id : ids) {
+            MarkTaskDTO markTaskDTO = null;
             if (stage.equals(MarkStage.ROUGH_LEVEL)) {
-                return markTaskRoughLevelService.markingLevel(Long.valueOf(id), body);
+                markTaskDTO = markTaskRoughLevelService.markingLevel(Long.valueOf(id), body);
             } else if (stage.equals(MarkStage.LEVEL)) {
-                return markTaskLevelService.markingLevel(Long.valueOf(id), body);
+                markTaskDTO = markTaskLevelService.markingLevel(Long.valueOf(id), body);
             } else if (stage.equals(MarkStage.SCORE)) {
-                return markTaskScoreService.markingScore(Long.valueOf(id), body);
+                markTaskDTO = markTaskScoreService.markingScore(Long.valueOf(id), body);
             }
+            list.add(markTaskDTO);
         }
 
         return new ResponseEntity(list, HttpStatus.OK);

+ 3 - 3
stmms-ms-marking/src/main/java/cn/com/qmth/stmms/ms/marking/service/MarkTaskLevelService.java

@@ -175,14 +175,14 @@ public class MarkTaskLevelService {
         }
     }
 
-    public ResponseEntity markingLevel(Long markTaskId, HashMap<String, String> body) {
+    public MarkTaskDTO markingLevel(Long markTaskId, HashMap<String, String> body) {
         MarkTaskLevel markTask = markTaskLevelRepo.findOne(markTaskId);
         String result = body.get("result");
         boolean oldRejected = markTask.isRejected();
         boolean oldShift = markTask.getPaper().isShift();
         boolean oldShiftScore = markTask.getPaper().isShiftScore();
         if (result == null) {
-            return new ResponseEntity(HttpStatus.BAD_REQUEST);
+            return null;
         }
         try {
             lockService.waitlock(LockType.LEVEL, markTask.getPaper().getId());
@@ -192,7 +192,7 @@ public class MarkTaskLevelService {
         } finally {
             lockService.unlock(LockType.LEVEL, markTask.getPaper().getId());
         }
-        return new ResponseEntity(markTaskLevelAssembler.toDTO(markTask, oldRejected, oldShift, oldShiftScore), HttpStatus.OK);
+        return markTaskLevelAssembler.toDTO(markTask, oldRejected, oldShift, oldShiftScore);
     }
 
     public ResponseEntity skipLevel(Long markTaskId) {

+ 3 - 3
stmms-ms-marking/src/main/java/cn/com/qmth/stmms/ms/marking/service/MarkTaskRoughLevelService.java

@@ -159,14 +159,14 @@ public class MarkTaskRoughLevelService {
         }
     }
 
-    public ResponseEntity markingLevel(Long markTaskId, HashMap<String, String> body) {
+    public MarkTaskDTO markingLevel(Long markTaskId, HashMap<String, String> body) {
         MarkTaskRoughLevel markTask = markTaskRoughLevelRepo.findOne(markTaskId);
         String result = body.get("result");
         boolean oldRejected = markTask.isRejected();
         boolean oldShift = markTask.getPaper().isShift();
         boolean oldShiftScore = markTask.getPaper().isShiftScore();
         if (result == null) {
-            return new ResponseEntity(HttpStatus.BAD_REQUEST);
+            return null;
         }
         try {
             lockService.waitlock(LockType.ROUGH_LEVEL, markTask.getPaper().getId());
@@ -176,7 +176,7 @@ public class MarkTaskRoughLevelService {
         } finally {
             lockService.unlock(LockType.ROUGH_LEVEL, markTask.getPaper().getId());
         }
-        return new ResponseEntity(markTaskRoughLevelAssembler.toDTO(markTask, oldRejected, oldShift, oldShiftScore), HttpStatus.OK);
+        return markTaskRoughLevelAssembler.toDTO(markTask, oldRejected, oldShift, oldShiftScore);
     }
 
     public ResponseEntity skipLevel(Long markTaskId) {

+ 3 - 3
stmms-ms-marking/src/main/java/cn/com/qmth/stmms/ms/marking/service/MarkTaskScoreService.java

@@ -150,14 +150,14 @@ public class MarkTaskScoreService {
         return new PageableDTO(markTaskDTOs, markTasks.getTotalElements(), markTasks.getTotalPages(), pageable.getPageNumber());
     }
 
-    public ResponseEntity markingScore(Long markTaskId, HashMap<String, String> body) {
+    public MarkTaskDTO markingScore(Long markTaskId, HashMap<String, String> body) {
         MarkTaskScore markTask = markTaskScoreRepo.getOne(markTaskId);
         String result = body.get("result");
         boolean oldRejected = markTask.isRejected();
         boolean oldShift = markTask.getPaper().isShift();
         boolean oldShiftScore = markTask.getPaper().isShiftScore();
         if (result == null) {
-            return new ResponseEntity(HttpStatus.BAD_REQUEST);
+            return null;
         }
         int score = Integer.parseInt(result);
         try {
@@ -168,7 +168,7 @@ public class MarkTaskScoreService {
         } finally {
             lockService.unlock(LockType.SCORE, markTask.getPaper().getId());
         }
-        return new ResponseEntity(markTaskScoreAssembler.toDTO(markTask, oldRejected, oldShift, oldShiftScore), HttpStatus.OK);
+        return markTaskScoreAssembler.toDTO(markTask, oldRejected, oldShift, oldShiftScore);
     }
 
     public ResponseEntity skipScore(Long markTaskId) {

+ 1 - 1
stmms-ms-marking/src/main/java/cn/com/qmth/stmms/ms/marking/service/MarkingRoughLevelService.java

@@ -121,7 +121,7 @@ public class MarkingRoughLevelService {
             }
             //仲裁
             else if (determine.getDeterType() == DetermineRoughLevelService.DeterType.ARBITRATE) {
-                paper.arbitrate();
+                paper.roughArbitrate();
             }
             // 打回
             else if (determine.getDeterType() == DetermineRoughLevelService.DeterType.REJECT) {

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

@@ -112,6 +112,8 @@ public class MarkingService {
         } else {
             throw new RuntimeException("当前阶段无法重置数据");
         }
+        // 删除日志表
+        markLogRepo.deleteByWorkIdAndSubjectAndStage(workId, subject.name(), stage);
 
         // 所有用户强制退出
         List<MarkUser> userList = markUserRepo.findByWorkIdAndSubject(workId, subject);