浏览代码

联考版-v3.1.0-日志记录bug修复。

xiaof 2 年之前
父节点
当前提交
1c95a5b7c1

+ 15 - 6
stmms-ms-admin/src/main/java/cn/com/qmth/stmms/ms/admin/api/QualityAnalyseController.java

@@ -1,9 +1,11 @@
 package cn.com.qmth.stmms.ms.admin.api;
 package cn.com.qmth.stmms.ms.admin.api;
 
 
+import cn.com.qmth.stmms.ms.commons.utils.DigitalToChineseUtil;
 import cn.com.qmth.stmms.ms.commons.utils.SqlUtil;
 import cn.com.qmth.stmms.ms.commons.utils.SqlUtil;
 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.MarkLogOperType;
 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.MarkStage;
+import cn.com.qmth.stmms.ms.core.domain.RoughLevel;
 import cn.com.qmth.stmms.ms.core.domain.task.MarkTaskLevel;
 import cn.com.qmth.stmms.ms.core.domain.task.MarkTaskLevel;
 import cn.com.qmth.stmms.ms.core.domain.task.MarkTaskRoughLevel;
 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.LevelRepo;
@@ -11,6 +13,7 @@ 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.MarkTaskRoughLevelRepo;
 import cn.com.qmth.stmms.ms.core.repository.MarkUserRepo;
 import cn.com.qmth.stmms.ms.core.repository.MarkUserRepo;
 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.service.DetermineRoughLevelService;
 import cn.com.qmth.stmms.ms.marking.service.MarkerGroupLeaderService;
 import cn.com.qmth.stmms.ms.marking.service.MarkerGroupLeaderService;
 import org.apache.commons.lang.StringUtils;
 import org.apache.commons.lang.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -77,6 +80,12 @@ public class QualityAnalyseController {
         stage = Objects.isNull(stage) ? MarkStage.LEVEL : stage;
         stage = Objects.isNull(stage) ? MarkStage.LEVEL : stage;
         List fList = new ArrayList();
         List fList = new ArrayList();
         List<Level> levels = levelRepo.findByWorkId(workId);
         List<Level> levels = levelRepo.findByWorkId(workId);
+        Map<String, String> codesMap = levels.stream().collect(Collectors.toMap(Level::getCode, Level::getCode));
+        if (MarkStage.ROUGH_LEVEL.equals(stage)) {
+            List<RoughLevel> roughLevels = DetermineRoughLevelService.parseRoughLevels(levels);
+            codesMap = roughLevels.stream().collect(Collectors.toMap(RoughLevel::getRoughCode, m-> DigitalToChineseUtil.int2chineseNum(Integer.parseInt(m.getRoughCode()))));
+        }
+
         List<Long> markerIds = markerGroupLeaderService.listByWorkIdAndSubjectAndStageAndGroupId(workId, subject, stage, groupId);
         List<Long> markerIds = markerGroupLeaderService.listByWorkIdAndSubjectAndStageAndGroupId(workId, subject, stage, groupId);
         String markerId = null;
         String markerId = null;
         if (!CollectionUtils.isEmpty(markerIds)) {
         if (!CollectionUtils.isEmpty(markerIds)) {
@@ -84,12 +93,12 @@ public class QualityAnalyseController {
         }
         }
         String finalMarkerId = markerId;
         String finalMarkerId = markerId;
         MarkStage finalStage = stage;
         MarkStage finalStage = stage;
-        levels.forEach(l -> {
+        for (Map.Entry<String, String> entry : codesMap.entrySet()) {
             StringBuffer sql = new StringBuffer();
             StringBuffer sql = new StringBuffer();
             sql.append("  SELECT                                                        ");
             sql.append("  SELECT                                                        ");
             sql.append("      mu.id markerId,                                           ");
             sql.append("      mu.id markerId,                                           ");
             sql.append("      mu.login_name markerName,                                       ");
             sql.append("      mu.login_name markerName,                                       ");
-            sql.append("      SUM(IF(mt.result = '" + l.getCode() + "', 1, 0)) levelCount,  ");
+            sql.append("      SUM(IF(mt.result = '" + entry.getKey() + "', 1, 0)) levelCount,  ");
             sql.append("      COUNT(1) total                                            ");
             sql.append("      COUNT(1) total                                            ");
             sql.append("  FROM                                                          ");
             sql.append("  FROM                                                          ");
             sql.append("      mark_user mu                                              ");
             sql.append("      mark_user mu                                              ");
@@ -132,7 +141,7 @@ public class QualityAnalyseController {
             List list = sqlUtil.execSqlForMap(sql.toString());
             List list = sqlUtil.execSqlForMap(sql.toString());
             Map map = new HashMap();
             Map map = new HashMap();
             List<Map> data = new ArrayList();
             List<Map> data = new ArrayList();
-            map.put("name", l.getCode());
+            map.put("name", entry.getValue());
             for (Object o : list) {
             for (Object o : list) {
                 Map m = (Map) o;
                 Map m = (Map) o;
                 //该档任务数
                 //该档任务数
@@ -152,7 +161,7 @@ public class QualityAnalyseController {
             Collections.sort(data, Comparator.comparing(o -> o.get("markerId").toString()));
             Collections.sort(data, Comparator.comparing(o -> o.get("markerId").toString()));
             map.put("data", data);
             map.put("data", data);
             fList.add(map);
             fList.add(map);
-        });
+        }
         return fList;
         return fList;
     }
     }
 
 
@@ -202,7 +211,7 @@ public class QualityAnalyseController {
                 Map<Long, String> markerMap = markTasks.stream().collect(Collectors.toMap(MarkTaskRoughLevel::getMarkerId, MarkTaskRoughLevel::getMarkerName, (dto1, dto2) -> dto1));
                 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());
                 List<Long> markerIdList = markerMap.entrySet().stream().map(Map.Entry::getKey).collect(Collectors.toList());
                 Object o = StringUtils.join(markerIdList.toArray(), ",");
                 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();
+                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 in (").append(MarkLogOperType.CALLBACK_LEVEl.getId()).append(",").append(MarkLogOperType.SYSTEM_CALLBACK_LEVEl.getId()).append(") and t.create_user_id in (").append(o).append(")").toString();
                 if (Objects.nonNull(startTime)) {
                 if (Objects.nonNull(startTime)) {
                     sql = sqlUtil.sqlConditionAnd(sql, new String[]{"t.create_time"}, new String[]{startTime}, new String[]{">="});
                     sql = sqlUtil.sqlConditionAnd(sql, new String[]{"t.create_time"}, new String[]{startTime}, new String[]{">="});
                 }
                 }
@@ -238,7 +247,7 @@ public class QualityAnalyseController {
                 Map<Long, String> markerMap = markTasks.stream().collect(Collectors.toMap(MarkTaskLevel::getMarkerId, MarkTaskLevel::getMarkerName, (dto1, dto2) -> dto1));
                 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());
                 List<Long> markerIdList = markerMap.entrySet().stream().map(Map.Entry::getKey).collect(Collectors.toList());
                 Object o = StringUtils.join(markerIdList.toArray(), ",");
                 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();
+                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 in (").append(MarkLogOperType.CALLBACK_LEVEl.getId()).append(",").append(MarkLogOperType.SYSTEM_CALLBACK_LEVEl.getId()).append(") and t.create_user_id in (").append(o).append(")").toString();
                 if (Objects.nonNull(startTime)) {
                 if (Objects.nonNull(startTime)) {
                     sql = sqlUtil.sqlConditionAnd(sql, new String[]{"t.create_time"}, new String[]{startTime}, new String[]{">="});
                     sql = sqlUtil.sqlConditionAnd(sql, new String[]{"t.create_time"}, new String[]{startTime}, new String[]{">="});
                 }
                 }

+ 1 - 1
stmms-ms-admin/src/main/java/cn/com/qmth/stmms/ms/admin/service/ToolService.java

@@ -123,7 +123,7 @@ public class ToolService {
                 }
                 }
 
 
                 // 记录日志
                 // 记录日志
-                MarkLog markLog = new MarkLog(workId, work.getName(), paper.getId(), subject, MarkStage.LEVEL, paper.getTest(), paper.getExamNumber(), paper.getStudentName(), 0L, "admin", Role.ADMIN, MarkLogOperType.SYSTEM_ADJUST_LEVEL.getId(), paper.getLevel(), level, "系统批量调档", new Date());
+                MarkLog markLog = new MarkLog(workId, work.getName(), paper.getId(), subject, MarkStage.LEVEL, paper.getTest(), paper.getExamNumber(), paper.getStudentName(), 0L, "admin", Role.ADMIN, MarkLogOperType.SYSTEM_ADJUST_LEVEL.getId(),MarkLogOperType.SYSTEM_ADJUST_LEVEL.getName(), paper.getLevel(), level, "系统批量调档", new Date());
                 markLogs.add(markLog);
                 markLogs.add(markLog);
 
 
                 // 有档位变动的试卷
                 // 有档位变动的试卷

+ 94 - 0
stmms-ms-commons/src/main/java/cn/com/qmth/stmms/ms/commons/utils/DigitalToChineseUtil.java

@@ -0,0 +1,94 @@
+package cn.com.qmth.stmms.ms.commons.utils;
+
+import java.math.BigDecimal;
+
+public class DigitalToChineseUtil {
+
+    private DigitalToChineseUtil() {
+    }
+
+    /**
+     * 中文数字
+     */
+    private static final String[] CN_NUM = {"零", "一", "二", "三", "四", "五", "六", "七", "八", "九"};
+
+    /**
+     * 中文数字单位
+     */
+    private static final String[] CN_UNIT = {"", "十", "百", "千", "万", "十", "百", "千", "亿", "十", "百", "千"};
+
+    /**
+     * 特殊字符:负
+     */
+    private static final String CN_NEGATIVE = "负";
+
+    /**
+     * 特殊字符:点
+     */
+    private static final String CN_POINT = "点";
+
+    /**
+     * int 转 中文数字
+     * 支持到int最大值
+     *
+     * @param intNum 要转换的整型数
+     * @return 中文数字
+     */
+    public static String int2chineseNum(int intNum) {
+        StringBuffer sb = new StringBuffer();
+        boolean isNegative = false;
+        if (intNum < 0) {
+            isNegative = true;
+            intNum *= -1;
+        }
+        int count = 0;
+        while (intNum > 0) {
+            sb.insert(0, CN_NUM[intNum % 10] + CN_UNIT[count]);
+            intNum = intNum / 10;
+            count++;
+        }
+        if (isNegative) {
+            sb.insert(0, CN_NEGATIVE);
+        }
+        return sb.toString().replaceAll("零[千百十]", "零").replaceAll("零+万", "万")
+                .replaceAll("零+亿", "亿").replaceAll("亿万", "亿零")
+                .replaceAll("零+", "零").replaceAll("零$", "");
+    }
+
+    /**
+     * bigDecimal 转 中文数字
+     * 整数部分只支持到int的最大值
+     *
+     * @param bigDecimalNum 要转换的BigDecimal数
+     * @return 中文数字
+     */
+    public static String bigDecimal2chineseNum(BigDecimal bigDecimalNum) {
+        if (bigDecimalNum == null) {
+            return CN_NUM[0];
+        }
+        StringBuffer sb = new StringBuffer();
+
+        //将小数点后面的零给去除
+        String numStr = bigDecimalNum.abs().stripTrailingZeros().toPlainString();
+        String[] split = numStr.split("\\.");
+        String integerStr = int2chineseNum(Integer.parseInt(split[0]));
+        sb.append(integerStr);
+        //如果传入的数有小数,则进行切割,将整数与小数部分分离
+        if (split.length == 2) {
+            //有小数部分
+            sb.append(CN_POINT);
+            String decimalStr = split[1];
+            char[] chars = decimalStr.toCharArray();
+            for (int i = 0; i < chars.length; i++) {
+                int index = Integer.parseInt(String.valueOf(chars[i]));
+                sb.append(CN_NUM[index]);
+            }
+        }
+        //判断传入数字为正数还是负数
+        int signum = bigDecimalNum.signum();
+        if (signum == -1) {
+            sb.insert(0, CN_NEGATIVE);
+        }
+        return sb.toString();
+    }
+}

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

@@ -1,5 +1,6 @@
 package cn.com.qmth.stmms.ms.core.domain;
 package cn.com.qmth.stmms.ms.core.domain;
 
 
+import cn.com.qmth.stmms.ms.core.cache.ParamCache;
 import cn.com.qmth.stmms.ms.core.domain.user.Role;
 import cn.com.qmth.stmms.ms.core.domain.user.Role;
 import cn.com.qmth.stmms.ms.core.vo.Subject;
 import cn.com.qmth.stmms.ms.core.vo.Subject;
 import com.fasterxml.jackson.annotation.JsonFormat;
 import com.fasterxml.jackson.annotation.JsonFormat;
@@ -47,6 +48,8 @@ public class MarkLog implements Serializable {
     @NotNull
     @NotNull
 //    @ApiModelProperty(value = "操作类型,1:分档,2:打分,3:回评档位,4:回评分数,5:档位打回,6:档位打回回评,7:一键定档,8:标准卷设置", example = "2")
 //    @ApiModelProperty(value = "操作类型,1:分档,2:打分,3:回评档位,4:回评分数,5:档位打回,6:档位打回回评,7:一键定档,8:标准卷设置", example = "2")
     private Integer operType;
     private Integer operType;
+
+    private String operName;
     //    @ApiModelProperty(value = "操作前数据")
     //    @ApiModelProperty(value = "操作前数据")
     private String operDataBefore;
     private String operDataBefore;
     //    @ApiModelProperty(value = "操作后数据")
     //    @ApiModelProperty(value = "操作后数据")
@@ -88,7 +91,7 @@ public class MarkLog implements Serializable {
 
 
     public MarkLog(Long workId, String workName, Long paperId, Subject subject, MarkStage stage, int test,
     public MarkLog(Long workId, String workName, Long paperId, Subject subject, MarkStage stage, int test,
                    String examNumber, String studentName, Long createUserId, String createUserName, Role createRole,
                    String examNumber, String studentName, Long createUserId, String createUserName, Role createRole,
-                   Integer operType, String operDataBefore, String operDataAfter, String remark, Date date) {
+                   Integer operType, String operName, String operDataBefore, String operDataAfter, String remark, Date date) {
         this.workId = workId;
         this.workId = workId;
         this.workName = workName;
         this.workName = workName;
         this.paperId = paperId;
         this.paperId = paperId;
@@ -101,10 +104,21 @@ public class MarkLog implements Serializable {
         this.createUserName = createUserName;
         this.createUserName = createUserName;
         this.createRole = createRole.getName();
         this.createRole = createRole.getName();
         this.operType = operType;
         this.operType = operType;
+        this.operName = operName;
         this.operDataAfter = operDataAfter;
         this.operDataAfter = operDataAfter;
         this.operDataBefore = operDataBefore;
         this.operDataBefore = operDataBefore;
         this.remark = remark;
         this.remark = remark;
         this.createTime = date;
         this.createTime = date;
+        boolean roughLevelEnable = ParamCache.levelConfigMap.get(String.valueOf(workId)).getRoughLevelEnable() == 1;
+        if (MarkStage.ROUGH_LEVEL.equals(stage)) {
+            this.stageName = "粗分档阶段";
+        } else if (MarkStage.LEVEL.equals(stage)) {
+            this.stageName = roughLevelEnable ? "细分档阶段" : "分档阶段";
+        } else if (MarkStage.SCORE.equals(stage)) {
+            this.stageName = "打分阶段";
+        } else {
+            this.stageName = "无";
+        }
     }
     }
 
 
     public static long getSerialVersionUID() {
     public static long getSerialVersionUID() {
@@ -200,6 +214,16 @@ public class MarkLog implements Serializable {
         this.operType = operType;
         this.operType = operType;
     }
     }
 
 
+    @Basic
+    @Column(name = "oper_name")
+    public String getOperName() {
+        return operName;
+    }
+
+    public void setOperName(String operName) {
+        this.operName = operName;
+    }
+
     @Basic
     @Basic
     @Column(name = "oper_data_before")
     @Column(name = "oper_data_before")
     public String getOperDataBefore() {
     public String getOperDataBefore() {

+ 10 - 2
stmms-ms-core/src/main/java/cn/com/qmth/stmms/ms/core/domain/MarkLogOperType.java

@@ -104,7 +104,11 @@ public enum MarkLogOperType {
     /**
     /**
      * 改档打档
      * 改档打档
      */
      */
-    SYSTEM_ADJUST_LEVEL(19, "系统调档");
+    SYSTEM_ADJUST_LEVEL(19, "系统调档"),
+    /**
+     * 改档打档
+     */
+    CANCEL_SAMPLE(20, "取消标准卷");
 
 
     private int id;
     private int id;
 
 
@@ -174,6 +178,8 @@ public enum MarkLogOperType {
             return CHANGE_SCORE.getId();
             return CHANGE_SCORE.getId();
         } else if (value.trim().equals(SYSTEM_ADJUST_LEVEL.name)) {
         } else if (value.trim().equals(SYSTEM_ADJUST_LEVEL.name)) {
             return SYSTEM_ADJUST_LEVEL.getId();
             return SYSTEM_ADJUST_LEVEL.getId();
+        } else if (value.trim().equals(CANCEL_SAMPLE.name)) {
+            return CANCEL_SAMPLE.getId();
         } else {
         } else {
             return CRITERION_PAPER_SET.getId();
             return CRITERION_PAPER_SET.getId();
         }
         }
@@ -222,6 +228,8 @@ public enum MarkLogOperType {
             return CHANGE_SCORE.name;
             return CHANGE_SCORE.name;
         } else if (id == SYSTEM_ADJUST_LEVEL.getId()) {
         } else if (id == SYSTEM_ADJUST_LEVEL.getId()) {
             return SYSTEM_ADJUST_LEVEL.name;
             return SYSTEM_ADJUST_LEVEL.name;
+        } else if (id == CANCEL_SAMPLE.getId()) {
+            return CANCEL_SAMPLE.name;
         } else {
         } else {
             return CRITERION_PAPER_SET.name;
             return CRITERION_PAPER_SET.name;
         }
         }
@@ -234,7 +242,7 @@ public enum MarkLogOperType {
      */
      */
     public static List<Map> listTypes() {
     public static List<Map> listTypes() {
         MarkLogOperType[] values = MarkLogOperType.values();
         MarkLogOperType[] values = MarkLogOperType.values();
-        Integer[] ints = {1, 2, 3, 4, 5, 6, 7, 8, 10, 15, 16, 17, 18, 19};
+        Integer[] ints = {1, 2, 3, 4, 5, 6, 7, 8, 10, 15, 16, 17, 18, 19, 20};
         List<Integer> intList = Arrays.asList(ints);
         List<Integer> intList = Arrays.asList(ints);
         List<Map> list = new ArrayList<>();
         List<Map> list = new ArrayList<>();
         for (MarkLogOperType value : values) {
         for (MarkLogOperType value : values) {

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

@@ -33,7 +33,7 @@ public interface MarkLogRepo extends JpaRepository<MarkLog, Long>, JpaSpecificat
      * @param examNumber
      * @param examNumber
      * @return
      * @return
      */
      */
-    public MarkLog findTopByCreateUserIdAndOperTypeAndSubjectAndExamNumberOrderByCreateTimeDesc(Long createUserId, Integer operType, String subject, String examNumber);
+    public MarkLog findTopByCreateUserIdAndStageAndOperTypeAndSubjectAndExamNumberOrderByCreateTimeDesc(Long createUserId, MarkStage stage, Integer operType, String subject, String examNumber);
 
 
     List<MarkLog> findByCreateUserId(Long userId);
     List<MarkLog> findByCreateUserId(Long userId);
 
 
@@ -49,11 +49,6 @@ public interface MarkLogRepo extends JpaRepository<MarkLog, Long>, JpaSpecificat
     @Query("select count(distinct s.createTime) from MarkLog s where s.workId = ?1 and s.paperId = ?2 and s.operType = ?3")
     @Query("select count(distinct s.createTime) from MarkLog s where s.workId = ?1 and s.paperId = ?2 and s.operType = ?3")
     int countByWorkIdAndPaperIdAndOperType(Long workId, Long id, int id1);
     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);
     void deleteByWorkIdAndSubjectAndStage(Long workId, String name, MarkStage stage);
 
 
-    @Modifying
-    @Query("delete from MarkLog m where m.workId = ?1 and m.subject = ?2 and m.stage = ?3 and m.test = ?4 and m.operType = ?5")
-    void deleteByWorkIdAndSubjectAndStageAndTestAndOperType(Long workId, String subject, MarkStage stage, int test, int operType);
 }
 }

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

@@ -19,6 +19,8 @@ public interface MarkTaskLevelRepo extends JpaRepository<MarkTaskLevel, Long>, J
 
 
     int countByMarkerIdAndPaperIdAndWorkIdAndRandomSeqNew(Long markerId, Long paperId, Long randomSeqNew, Long workId);
     int countByMarkerIdAndPaperIdAndWorkIdAndRandomSeqNew(Long markerId, Long paperId, Long randomSeqNew, Long workId);
 
 
+    List<MarkTaskLevel> findByWorkIdAndPaperIdAndStage(Long workId, Long paperId, MarkStage stage);
+
     /**
     /**
      * 查询指定阶段试卷的评卷任务
      * 查询指定阶段试卷的评卷任务
      *
      *

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

@@ -19,6 +19,8 @@ public interface MarkTaskRoughLevelRepo extends JpaRepository<MarkTaskRoughLevel
 
 
     int countByMarkerIdAndPaperIdAndWorkIdAndRandomSeqNew(Long markerId, Long paperId, Long randomSeqNew, Long workId);
     int countByMarkerIdAndPaperIdAndWorkIdAndRandomSeqNew(Long markerId, Long paperId, Long randomSeqNew, Long workId);
 
 
+    List<MarkTaskRoughLevel> findByWorkIdAndPaperIdAndStage(Long workId, Long paperId, MarkStage stage);
+
     @Query(value = "select new MarkTaskRoughLevel(m.id, m.markerId , m.markerName, m.result, m.secretNumber, m.stage) from MarkTaskRoughLevel m where m.paper.id = ?1 and m.stage = ?2")
     @Query(value = "select new MarkTaskRoughLevel(m.id, m.markerId , m.markerName, m.result, m.secretNumber, m.stage) from MarkTaskRoughLevel m where m.paper.id = ?1 and m.stage = ?2")
     List<MarkTaskRoughLevel> findByPaperIdAndStageNative(Long id, MarkStage stage);
     List<MarkTaskRoughLevel> findByPaperIdAndStageNative(Long id, MarkStage stage);
 
 

+ 27 - 12
stmms-ms-log/src/main/java/cn/com/qmth/stmms/ms/log/aop/MarkLogAop.java

@@ -138,6 +138,7 @@ public class MarkLogAop {
 //        Paper paper = JSONObject.parseObject(((JSONObject) jsonArgsArray.get(0)).toJSONString(), Paper.class);
 //        Paper paper = JSONObject.parseObject(((JSONObject) jsonArgsArray.get(0)).toJSONString(), Paper.class);
         JSONObject jsonObjectResult = (JSONObject) jsonArgsArray.get(0);
         JSONObject jsonObjectResult = (JSONObject) jsonArgsArray.get(0);
         String paperIds = (String) jsonObjectResult.get("paperIds");
         String paperIds = (String) jsonObjectResult.get("paperIds");
+        MarkStage stage = MarkStage.valueOf((String) jsonObjectResult.get("stage"));
         if (paperIds.length() > 0) {
         if (paperIds.length() > 0) {
             String[] ids = paperIds.split(",");
             String[] ids = paperIds.split(",");
             Date date = new Date();
             Date date = new Date();
@@ -146,27 +147,31 @@ public class MarkLogAop {
 
 
                 String action = null;
                 String action = null;
                 Integer operType = null;
                 Integer operType = null;
+                String operName = null;
                 String originLevel = null;
                 String originLevel = null;
                 if (Objects.nonNull(jsonObjectResult) && Objects.nonNull(jsonObjectResult.get(ACTION))) {
                 if (Objects.nonNull(jsonObjectResult) && Objects.nonNull(jsonObjectResult.get(ACTION))) {
                     action = (String) jsonObjectResult.get(ACTION);
                     action = (String) jsonObjectResult.get(ACTION);
                     if (Objects.equals(SAMPLING, action)) {
                     if (Objects.equals(SAMPLING, action)) {
                         //标准卷设置
                         //标准卷设置
                         operType = MarkLogOperType.CRITERION_PAPER_SET.getId();
                         operType = MarkLogOperType.CRITERION_PAPER_SET.getId();
+                        operName = MarkLogOperType.CRITERION_PAPER_SET.getName();
                         paper.setOneClick(false);
                         paper.setOneClick(false);
                     } else if (Objects.equals(LEVELING, action)) {
                     } else if (Objects.equals(LEVELING, action)) {
                         //定档设置
                         //定档设置
                         operType = MarkLogOperType.ONE_CLICK_LEVEl.getId();
                         operType = MarkLogOperType.ONE_CLICK_LEVEl.getId();
+                        operName = MarkLogOperType.ONE_CLICK_LEVEl.getName();
                         //原始档位
                         //原始档位
                         originLevel = Objects.nonNull(jsonObjectResult.get("originLevel")) ? (String) jsonObjectResult.get("originLevel") : null;
                         originLevel = Objects.nonNull(jsonObjectResult.get("originLevel")) ? (String) jsonObjectResult.get("originLevel") : null;
                         paper.setOneClick(true);
                         paper.setOneClick(true);
                     } else if (Objects.equals(REJECT, action)) {
                     } else if (Objects.equals(REJECT, action)) {
                         //档位打回设置
                         //档位打回设置
                         operType = MarkLogOperType.CALLBACK_LEVEl.getId();
                         operType = MarkLogOperType.CALLBACK_LEVEl.getId();
+                        operName = MarkLogOperType.CALLBACK_LEVEl.getName();
                         paper.setOneClick(false);
                         paper.setOneClick(false);
                     }
                     }
                 }
                 }
                 //标准卷设置、定档设置、档位打回start
                 //标准卷设置、定档设置、档位打回start
-                MarkLog markLogPrev = markLogRepo.findTopByCreateUserIdAndOperTypeAndSubjectAndExamNumberOrderByCreateTimeDesc(markUser.getId(), operType, markUser.getSubject().toString(), paper.getExamNumber());
+                MarkLog markLogPrev = markLogRepo.findTopByCreateUserIdAndStageAndOperTypeAndSubjectAndExamNumberOrderByCreateTimeDesc(markUser.getId(), stage, operType, markUser.getSubject().toString(), paper.getExamNumber());
                 String operResult = DEFAULT_RESULT;
                 String operResult = DEFAULT_RESULT;
                 if (Objects.nonNull(markLogPrev)) {
                 if (Objects.nonNull(markLogPrev)) {
                     operResult = Optional.ofNullable(markLogPrev.getOperDataAfter()).orElse(DEFAULT_RESULT);
                     operResult = Optional.ofNullable(markLogPrev.getOperDataAfter()).orElse(DEFAULT_RESULT);
@@ -176,7 +181,7 @@ public class MarkLogAop {
                     operResult = originLevel;
                     operResult = originLevel;
                 }
                 }
                 Work work = workRepo.findOne(paper.getWorkId());
                 Work work = workRepo.findOne(paper.getWorkId());
-                MarkLog markLog = new MarkLog(paper.getWorkId(), work.getName(), paper.getId(), markUser.getSubject(), MarkStage.LEVEL, paper.getTest(), paper.getExamNumber(), paper.getStudentName(), markUser.getId(), markUser.getName(), markUser.getRole(), operType, operResult, String.valueOf(jsonObjectResult.get(LEVEL)), null, date);
+                MarkLog markLog = new MarkLog(paper.getWorkId(), work.getName(), paper.getId(), markUser.getSubject(), MarkStage.LEVEL, paper.getTest(), paper.getExamNumber(), paper.getStudentName(), markUser.getId(), markUser.getName(), markUser.getRole(), operType, operName, operResult, String.valueOf(jsonObjectResult.get(LEVEL)), null, date);
                 LOGGER.info("markLog:{}", JSONObject.toJSONString(markLog));
                 LOGGER.info("markLog:{}", JSONObject.toJSONString(markLog));
                 //标准卷设置、定档设置、档位打回end
                 //标准卷设置、定档设置、档位打回end
                 markLogRepo.save(markLog);
                 markLogRepo.save(markLog);
@@ -228,6 +233,7 @@ public class MarkLogAop {
 
 
         LOGGER.info("markTaskId:{},paper:{},jsonObjectResult:{}", markTaskId, paper, jsonObjectResult);
         LOGGER.info("markTaskId:{},paper:{},jsonObjectResult:{}", markTaskId, paper, jsonObjectResult);
         Integer operType = MarkLogOperType.LEVEL.getId();//分档,第一次为分档,之后为回评档位,档位打回后为档位打回回评
         Integer operType = MarkLogOperType.LEVEL.getId();//分档,第一次为分档,之后为回评档位,档位打回后为档位打回回评
+        String operName = MarkLogOperType.LEVEL.getName();
         //分档、打分、回评档位、回评分数、档位打回回评start
         //分档、打分、回评档位、回评分数、档位打回回评start
 
 
         if (markStage.ordinal() == 1 && paper.isMarkByLeader()) {//分档,如果已经有科组长定档,则不允许评卷员再分档
         if (markStage.ordinal() == 1 && paper.isMarkByLeader()) {//分档,如果已经有科组长定档,则不允许评卷员再分档
@@ -235,58 +241,67 @@ public class MarkLogAop {
         } else if ((markStage.ordinal() == 1 || markStage.ordinal() == 2) && oldRejected && !isRejected) {//档位打回回评
         } else if ((markStage.ordinal() == 1 || markStage.ordinal() == 2) && oldRejected && !isRejected) {//档位打回回评
             if (oldShift) {
             if (oldShift) {
                 operType = MarkLogOperType.CHANGE_LEVEL.getId();
                 operType = MarkLogOperType.CHANGE_LEVEL.getId();
+                operName = MarkLogOperType.CHANGE_LEVEL.getName();
             } else {
             } else {
                 operType = MarkLogOperType.CALLBACK_ONCE_LEVEL.getId();
                 operType = MarkLogOperType.CALLBACK_ONCE_LEVEL.getId();
+                operName = MarkLogOperType.CALLBACK_ONCE_LEVEL.getName();
             }
             }
         } else if (markStage.ordinal() == 3) {//打分
         } else if (markStage.ordinal() == 3) {//打分
             if (oldShiftScore) {
             if (oldShiftScore) {
                 operType = MarkLogOperType.CHANGE_SCORE.getId();
                 operType = MarkLogOperType.CHANGE_SCORE.getId();
+                operName = MarkLogOperType.CHANGE_SCORE.getName();
             } else {
             } else {
                 operType = MarkLogOperType.SCORE.getId();
                 operType = MarkLogOperType.SCORE.getId();
+                operName = MarkLogOperType.SCORE.getName();
             }
             }
         }
         }
         //先查是否有档位或分数打回
         //先查是否有档位或分数打回
         String operResult = DEFAULT_RESULT;
         String operResult = DEFAULT_RESULT;
         if (markStage.ordinal() == 1) {//分档
         if (markStage.ordinal() == 1) {//分档
             //先查是否有档位打回回评的数据
             //先查是否有档位打回回评的数据
-            MarkLog markLogPrev = markLogRepo.findTopByCreateUserIdAndOperTypeAndSubjectAndExamNumberOrderByCreateTimeDesc(markUser.getId(), MarkLogOperType.CALLBACK_ONCE_LEVEL.getId(), markUser.getSubject().toString(), paper.getExamNumber());
+            MarkLog markLogPrev = markLogRepo.findTopByCreateUserIdAndStageAndOperTypeAndSubjectAndExamNumberOrderByCreateTimeDesc(markUser.getId(), markStage, MarkLogOperType.CALLBACK_ONCE_LEVEL.getId(), markUser.getSubject().toString(), paper.getExamNumber());
             if (Objects.isNull(markLogPrev)) {//如果为null,则再查分档和回评档位
             if (Objects.isNull(markLogPrev)) {//如果为null,则再查分档和回评档位
                 if (oldRejected && !isRejected) {//档位打回
                 if (oldRejected && !isRejected) {//档位打回
                     if (oldShift) {
                     if (oldShift) {
                         operType = MarkLogOperType.CHANGE_LEVEL.getId();
                         operType = MarkLogOperType.CHANGE_LEVEL.getId();
+                        operName = MarkLogOperType.CHANGE_LEVEL.getName();
                     } else {
                     } else {
                         operType = MarkLogOperType.CALLBACK_ONCE_LEVEL.getId();
                         operType = MarkLogOperType.CALLBACK_ONCE_LEVEL.getId();
+                        operName = MarkLogOperType.CALLBACK_ONCE_LEVEL.getName();
                     }
                     }
                 } else {
                 } else {
                     operType = selectOperType(markUser.getId(), MarkLogOperType.LEVEL.getId(), MarkLogOperType.ONCE_LEVEl.getId(), markUser.getSubject().toString(), paper.getExamNumber());
                     operType = selectOperType(markUser.getId(), MarkLogOperType.LEVEL.getId(), MarkLogOperType.ONCE_LEVEl.getId(), markUser.getSubject().toString(), paper.getExamNumber());
-                    markLogPrev = markLogRepo.findTopByCreateUserIdAndOperTypeAndSubjectAndExamNumberOrderByCreateTimeDesc(markUser.getId(), operType, markUser.getSubject().toString(), paper.getExamNumber());
+                    operName = MarkLogOperType.convertToName(operType);
+                    markLogPrev = markLogRepo.findTopByCreateUserIdAndStageAndOperTypeAndSubjectAndExamNumberOrderByCreateTimeDesc(markUser.getId(), markStage, operType, markUser.getSubject().toString(), paper.getExamNumber());
                     if (Objects.nonNull(markLogPrev)) {
                     if (Objects.nonNull(markLogPrev)) {
                         operResult = Optional.ofNullable(markLogPrev.getOperDataAfter()).orElse(DEFAULT_RESULT);
                         operResult = Optional.ofNullable(markLogPrev.getOperDataAfter()).orElse(DEFAULT_RESULT);
                     } else {
                     } else {
                         if (operType != MarkLogOperType.LEVEL.getId()) {
                         if (operType != MarkLogOperType.LEVEL.getId()) {
-                            markLogPrev = markLogRepo.findTopByCreateUserIdAndOperTypeAndSubjectAndExamNumberOrderByCreateTimeDesc(markUser.getId(), MarkLogOperType.LEVEL.getId(), markUser.getSubject().toString(), paper.getExamNumber());
+                            markLogPrev = markLogRepo.findTopByCreateUserIdAndStageAndOperTypeAndSubjectAndExamNumberOrderByCreateTimeDesc(markUser.getId(), markStage, MarkLogOperType.LEVEL.getId(), markUser.getSubject().toString(), paper.getExamNumber());
                             operResult = Optional.ofNullable(markLogPrev.getOperDataAfter()).orElse(DEFAULT_RESULT);
                             operResult = Optional.ofNullable(markLogPrev.getOperDataAfter()).orElse(DEFAULT_RESULT);
                         }
                         }
                     }
                     }
                 }
                 }
             } else {
             } else {
                 operType = MarkLogOperType.CALLBACK_ONCE_LEVEL.getId();//档位打回
                 operType = MarkLogOperType.CALLBACK_ONCE_LEVEL.getId();//档位打回
+                operName = MarkLogOperType.CALLBACK_ONCE_LEVEL.getName();//档位打回
                 operResult = Optional.ofNullable(markLogPrev.getOperDataAfter()).orElse(DEFAULT_RESULT);
                 operResult = Optional.ofNullable(markLogPrev.getOperDataAfter()).orElse(DEFAULT_RESULT);
             }
             }
         } else if (markStage.ordinal() == 2 && !oldShiftScore) {//打分
         } else if (markStage.ordinal() == 2 && !oldShiftScore) {//打分
             operType = selectOperType(markUser.getId(), MarkLogOperType.SCORE.getId(), MarkLogOperType.ONCE_SCORE.getId(), markUser.getSubject().toString(), paper.getExamNumber());
             operType = selectOperType(markUser.getId(), MarkLogOperType.SCORE.getId(), MarkLogOperType.ONCE_SCORE.getId(), markUser.getSubject().toString(), paper.getExamNumber());
-            MarkLog markLogPrev = markLogRepo.findTopByCreateUserIdAndOperTypeAndSubjectAndExamNumberOrderByCreateTimeDesc(markUser.getId(), operType, markUser.getSubject().toString(), paper.getExamNumber());
+            operName = MarkLogOperType.convertToName(operType);
+            MarkLog markLogPrev = markLogRepo.findTopByCreateUserIdAndStageAndOperTypeAndSubjectAndExamNumberOrderByCreateTimeDesc(markUser.getId(), markStage, operType, markUser.getSubject().toString(), paper.getExamNumber());
             if (Objects.nonNull(markLogPrev)) {
             if (Objects.nonNull(markLogPrev)) {
                 operResult = Optional.ofNullable(markLogPrev.getOperDataAfter()).orElse(DEFAULT_RESULT);
                 operResult = Optional.ofNullable(markLogPrev.getOperDataAfter()).orElse(DEFAULT_RESULT);
             } else {
             } else {
                 if (operType != MarkLogOperType.SCORE.getId()) {
                 if (operType != MarkLogOperType.SCORE.getId()) {
-                    markLogPrev = markLogRepo.findTopByCreateUserIdAndOperTypeAndSubjectAndExamNumberOrderByCreateTimeDesc(markUser.getId(), MarkLogOperType.SCORE.getId(), markUser.getSubject().toString(), paper.getExamNumber());
+                    markLogPrev = markLogRepo.findTopByCreateUserIdAndStageAndOperTypeAndSubjectAndExamNumberOrderByCreateTimeDesc(markUser.getId(), markStage, MarkLogOperType.SCORE.getId(), markUser.getSubject().toString(), paper.getExamNumber());
                     operResult = Optional.ofNullable(markLogPrev.getOperDataAfter()).orElse(DEFAULT_RESULT);
                     operResult = Optional.ofNullable(markLogPrev.getOperDataAfter()).orElse(DEFAULT_RESULT);
                 }
                 }
             }
             }
         }
         }
         Work work = workRepo.findOne(paper.getWorkId());
         Work work = workRepo.findOne(paper.getWorkId());
-        MarkLog markLog = new MarkLog(paper.getWorkId(), work.getName(), paper.getId(), markUser.getSubject(), markStage, paper.getTest(), paper.getExamNumber(), paper.getStudentName(), markUser.getId(), markUser.getName(), markUser.getRole(), operType, operResult, String.valueOf(jsonObjectResult.get(RESULT)), null, new Date());
+        MarkLog markLog = new MarkLog(paper.getWorkId(), work.getName(), paper.getId(), markUser.getSubject(), markStage, paper.getTest(), paper.getExamNumber(), paper.getStudentName(), markUser.getId(), markUser.getName(), markUser.getRole(), operType, operName, operResult, String.valueOf(jsonObjectResult.get(RESULT)), null, new Date());
         LOGGER.info("markLog:{}", JSONObject.toJSONString(markLog));
         LOGGER.info("markLog:{}", JSONObject.toJSONString(markLog));
         //分档、打分、回评档位、回评分数、档位打回、档位打回回评end
         //分档、打分、回评档位、回评分数、档位打回、档位打回回评end
         markLogRepo.save(markLog);
         markLogRepo.save(markLog);
@@ -353,12 +368,12 @@ public class MarkLogAop {
                                 m.setOriginLevel(m.getResult());
                                 m.setOriginLevel(m.getResult());
                                 m.setResult(null);
                                 m.setResult(null);
                                 m.setLevel(null);
                                 m.setLevel(null);
-                                MarkLog markLogPrev = markLogRepo.findTopByCreateUserIdAndOperTypeAndSubjectAndExamNumberOrderByCreateTimeDesc(m.getMarkerId(), MarkLogOperType.SYSTEM_CALLBACK_LEVEl.getId(), m.getSubject().toString(), paper.getExamNumber());
+                                MarkLog markLogPrev = markLogRepo.findTopByCreateUserIdAndStageAndOperTypeAndSubjectAndExamNumberOrderByCreateTimeDesc(m.getMarkerId(), m.getStage(), MarkLogOperType.SYSTEM_CALLBACK_LEVEl.getId(), m.getSubject().toString(), paper.getExamNumber());
                                 if (Objects.nonNull(markLogPrev)) {
                                 if (Objects.nonNull(markLogPrev)) {
                                     operResult = Optional.ofNullable(markLogPrev.getOperDataAfter()).orElse("-");
                                     operResult = Optional.ofNullable(markLogPrev.getOperDataAfter()).orElse("-");
                                 }
                                 }
                                 //加入打回日志
                                 //加入打回日志
-                                MarkLog markLog = new MarkLog(paper.getWorkId(), workName, paper.getId(), m.getSubject(), m.getStage(), m.getTest(), paper.getExamNumber(), paper.getStudentName(), m.getMarkerId(), m.getMarkerName(), Role.MARKER, MarkLogOperType.SYSTEM_CALLBACK_LEVEl.getId(), operResult, String.valueOf(d.getC()), MarkLogOperType.SYSTEM_CALLBACK_LEVEl.getName(), date);
+                                MarkLog markLog = new MarkLog(paper.getWorkId(), workName, paper.getId(), m.getSubject(), m.getStage(), m.getTest(), paper.getExamNumber(), paper.getStudentName(), m.getMarkerId(), m.getMarkerName(), Role.MARKER, MarkLogOperType.SYSTEM_CALLBACK_LEVEl.getId(), MarkLogOperType.SYSTEM_CALLBACK_LEVEl.getName(), operResult, String.valueOf(d.getC()), null, date);
                                 markLogList.add(markLog);
                                 markLogList.add(markLog);
                             }
                             }
                         }
                         }
@@ -417,12 +432,12 @@ public class MarkLogAop {
                                 m.setOriginLevel(m.getResult());
                                 m.setOriginLevel(m.getResult());
                                 m.setResult(null);
                                 m.setResult(null);
                                 m.setLevel(null);
                                 m.setLevel(null);
-                                MarkLog markLogPrev = markLogRepo.findTopByCreateUserIdAndOperTypeAndSubjectAndExamNumberOrderByCreateTimeDesc(m.getMarkerId(), MarkLogOperType.SYSTEM_CALLBACK_LEVEl.getId(), m.getSubject().toString(), paper.getExamNumber());
+                                MarkLog markLogPrev = markLogRepo.findTopByCreateUserIdAndStageAndOperTypeAndSubjectAndExamNumberOrderByCreateTimeDesc(m.getMarkerId(), m.getStage(), MarkLogOperType.SYSTEM_CALLBACK_LEVEl.getId(), m.getSubject().toString(), paper.getExamNumber());
                                 if (Objects.nonNull(markLogPrev)) {
                                 if (Objects.nonNull(markLogPrev)) {
                                     operResult = Optional.ofNullable(markLogPrev.getOperDataAfter()).orElse("-");
                                     operResult = Optional.ofNullable(markLogPrev.getOperDataAfter()).orElse("-");
                                 }
                                 }
                                 //加入打回日志
                                 //加入打回日志
-                                MarkLog markLog = new MarkLog(paper.getWorkId(), workName, paper.getId(), m.getSubject(), m.getStage(), paper.getTest(), paper.getExamNumber(), paper.getStudentName(), m.getMarkerId(), m.getMarkerName(), Role.MARKER, MarkLogOperType.SYSTEM_CALLBACK_LEVEl.getId(), operResult, String.valueOf(d.getC()), MarkLogOperType.SYSTEM_CALLBACK_LEVEl.getName(), date);
+                                MarkLog markLog = new MarkLog(paper.getWorkId(), workName, paper.getId(), m.getSubject(), m.getStage(), paper.getTest(), paper.getExamNumber(), paper.getStudentName(), m.getMarkerId(), m.getMarkerName(), Role.MARKER, MarkLogOperType.SYSTEM_CALLBACK_LEVEl.getId(), MarkLogOperType.SYSTEM_CALLBACK_LEVEl.getName(), operResult, String.valueOf(d.getC()), null, date);
                                 markLogList.add(markLog);
                                 markLogList.add(markLog);
                             }
                             }
                         }
                         }

+ 31 - 11
stmms-ms-main/src/main/java/cn/com/qmth/stmms/ms/quartz/ScheduledTask.java

@@ -3,12 +3,17 @@ package cn.com.qmth.stmms.ms.quartz;
 import cn.com.qmth.stmms.ms.commons.utils.RandomUtil;
 import cn.com.qmth.stmms.ms.commons.utils.RandomUtil;
 import cn.com.qmth.stmms.ms.commons.utils.SqlUtil;
 import cn.com.qmth.stmms.ms.commons.utils.SqlUtil;
 import cn.com.qmth.stmms.ms.core.domain.MarkStage;
 import cn.com.qmth.stmms.ms.core.domain.MarkStage;
+import cn.com.qmth.stmms.ms.core.domain.MarkTaskJob;
 import cn.com.qmth.stmms.ms.core.domain.Paper;
 import cn.com.qmth.stmms.ms.core.domain.Paper;
 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.domain.task.MarkTaskLevel;
 import cn.com.qmth.stmms.ms.core.domain.task.MarkTaskLevel;
 import cn.com.qmth.stmms.ms.core.domain.task.MarkTaskRoughLevel;
 import cn.com.qmth.stmms.ms.core.domain.task.MarkTaskRoughLevel;
 import cn.com.qmth.stmms.ms.core.domain.task.MarkTaskScore;
 import cn.com.qmth.stmms.ms.core.domain.task.MarkTaskScore;
 import cn.com.qmth.stmms.ms.core.repository.*;
 import cn.com.qmth.stmms.ms.core.repository.*;
+import cn.com.qmth.stmms.ms.marking.service.MarkingLevelService;
+import cn.com.qmth.stmms.ms.marking.service.MarkingRoughLevelService;
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
 import org.slf4j.LoggerFactory;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.InitializingBean;
 import org.springframework.beans.factory.InitializingBean;
 import org.springframework.scheduling.annotation.Async;
 import org.springframework.scheduling.annotation.Async;
@@ -52,6 +57,15 @@ public class ScheduledTask implements InitializingBean {
     @Resource
     @Resource
     MarkTaskScoreRepo markTaskScoreRepo;
     MarkTaskScoreRepo markTaskScoreRepo;
 
 
+    @Resource
+    MarkTaskJobRepo markTaskJobRepo;
+
+    @Resource
+    MarkingRoughLevelService markingRoughLevelService;
+
+    @Resource
+    MarkingLevelService markingLevelService;
+
     boolean repairPaper = false, repairTask = false, markTaskJob = false;
     boolean repairPaper = false, repairTask = false, markTaskJob = false;
 
 
     /**
     /**
@@ -105,7 +119,7 @@ public class ScheduledTask implements InitializingBean {
     public void repairMarkTaskJob(Work work) {
     public void repairMarkTaskJob(Work work) {
         try {
         try {
             // todo 需要改 20220802
             // todo 需要改 20220802
-            /*List<MarkTaskJob> markTaskJobList = markTaskJobRepo.findAllByStatusIsFalseAndWorkId(work.getId());
+            List<MarkTaskJob> markTaskJobList = markTaskJobRepo.findAllByStatusIsFalseAndWorkId(work.getId());
 
 
             if (Objects.nonNull(markTaskJobList) && !markTaskJobList.isEmpty()) {
             if (Objects.nonNull(markTaskJobList) && !markTaskJobList.isEmpty()) {
                 long startTime = System.currentTimeMillis();
                 long startTime = System.currentTimeMillis();
@@ -116,21 +130,27 @@ public class ScheduledTask implements InitializingBean {
                         JSONObject jsonObject = JSON.parseObject(m.getDataObject());
                         JSONObject jsonObject = JSON.parseObject(m.getDataObject());
                         String type = String.valueOf(jsonObject.get("type"));
                         String type = String.valueOf(jsonObject.get("type"));
                         Long paperId = Long.parseLong(String.valueOf(jsonObject.get("paperId")));
                         Long paperId = Long.parseLong(String.valueOf(jsonObject.get("paperId")));
+                        MarkStage stage = MarkStage.valueOf(jsonObject.getString("stage"));
                         Paper paper = paperRepo.findOne(paperId);
                         Paper paper = paperRepo.findOne(paperId);
-                        List<MarkTask> markTaskList = markTaskRepo.findByWorkIdAndStageAndPaperId(work.getId(), MarkStage.LEVEL, paperId);
-                        if (Objects.nonNull(markTaskList) && !markTaskList.isEmpty()) {
-                            if (Objects.equals("levelsLog", type)) {
-                                markingService.levelsLog(markTaskList, paper, m);//档位差日志记录
-                            } else if (Objects.equals("autoCallback", type)) {
-                                LevelConfig levelConfig = ParamCache.levelConfigMap.get(String.valueOf(work.getId()));
-                                Integer deviationParam = levelConfig == null ? 3 : levelConfig.getDeviation();
-                                Integer deviation = jsonObject.get("deviation") == null ? deviationParam : Integer.parseInt(String.valueOf(jsonObject.get("deviation")));
-                                markLogAop.autoCallback(markTaskList, deviation, paper, m, work.getName(), null);//自动打回记录
+                        if (MarkStage.ROUGH_LEVEL.equals(stage)) {
+                            List<MarkTaskRoughLevel> markTaskList = markTaskRoughLevelRepo.findByWorkIdAndPaperIdAndStage(work.getId(), paperId, stage);
+                            if (Objects.nonNull(markTaskList) && !markTaskList.isEmpty()) {
+                                if (Objects.equals("levelsLog", type)) {
+                                    markingRoughLevelService.levelsLog(markTaskList, paper, stage, m);//档位差日志记录
+                                }
+                            }
+                        } else if (MarkStage.LEVEL.equals(stage)) {
+                            List<MarkTaskLevel> markTaskList = markTaskLevelRepo.findByWorkIdAndPaperIdAndStage(work.getId(), paperId, stage);
+                            if (Objects.nonNull(markTaskList) && !markTaskList.isEmpty()) {
+                                if (Objects.equals("levelsLog", type)) {
+                                    markingLevelService.levelsLog(markTaskList, paper, stage, m);//档位差日志记录
+                                }
                             }
                             }
                         }
                         }
+
                     }
                     }
                 }
                 }
-            }*/
+            }
         } catch (Exception e) {
         } catch (Exception e) {
             e.printStackTrace();
             e.printStackTrace();
             throw new RuntimeException(e);
             throw new RuntimeException(e);

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

@@ -248,7 +248,7 @@ public class ChangeLevelApi {
 
 
         //记录日志
         //记录日志
         Work work = workRepo.findOne(paper.getWorkId());
         Work work = workRepo.findOne(paper.getWorkId());
-        MarkLog markLog = new MarkLog(paper.getWorkId(), work.getName(), paper.getId(), markUser.getSubject(), changeLevel.getStage(), paper.getTest(), paper.getExamNumber(), paper.getStudentName(), markUser.getId(), markUser.getName(), markUser.getRole(), MarkLogOperType.CHANGE_LEVEL_APPLY.getId(), changeLevel.getOriginalLevel(), changeLevel.getSuggestLevel(), MarkLogOperType.CHANGE_LEVEL_APPLY.getName(), new Date());
+        MarkLog markLog = new MarkLog(paper.getWorkId(), work.getName(), paper.getId(), markUser.getSubject(), changeLevel.getStage(), paper.getTest(), paper.getExamNumber(), paper.getStudentName(), markUser.getId(), markUser.getName(), markUser.getRole(), MarkLogOperType.CHANGE_LEVEL_APPLY.getId(),MarkLogOperType.CHANGE_LEVEL_APPLY.getName(), changeLevel.getOriginalLevel(), changeLevel.getSuggestLevel(), null, new Date());
         markLogRepo.save(markLog);
         markLogRepo.save(markLog);
 
 
         return new ResponseEntity(HttpStatus.OK);
         return new ResponseEntity(HttpStatus.OK);
@@ -275,7 +275,7 @@ public class ChangeLevelApi {
             //记录日志
             //记录日志
             MarkUser markUser = markUserRepo.findOne(userId);
             MarkUser markUser = markUserRepo.findOne(userId);
             Work work = workRepo.findOne(paper.getWorkId());
             Work work = workRepo.findOne(paper.getWorkId());
-            MarkLog markLog = new MarkLog(paper.getWorkId(), work.getName(), paper.getId(), paper.getSubject(), changeLevel.getStage(), paper.getTest(), paper.getExamNumber(), paper.getStudentName(), markUser.getId(), markUser.getName(), markUser.getRole(), MarkLogOperType.CHANGE_LEVEL_AGREE.getId(), changeLevel.getOriginalLevel(), changeLevel.getSuggestLevel(), MarkLogOperType.CHANGE_LEVEL_AGREE.getName(), new Date());
+            MarkLog markLog = new MarkLog(paper.getWorkId(), work.getName(), paper.getId(), paper.getSubject(), changeLevel.getStage(), paper.getTest(), paper.getExamNumber(), paper.getStudentName(), markUser.getId(), markUser.getName(), markUser.getRole(), MarkLogOperType.CHANGE_LEVEL_AGREE.getId(),MarkLogOperType.CHANGE_LEVEL_AGREE.getName(), changeLevel.getOriginalLevel(), changeLevel.getSuggestLevel(), null, new Date());
             markLogRepo.save(markLog);
             markLogRepo.save(markLog);
 
 
             if (MarkStage.LEVEL.equals(changeLevel.getStage())) {
             if (MarkStage.LEVEL.equals(changeLevel.getStage())) {

+ 35 - 9
stmms-ms-marking/src/main/java/cn/com/qmth/stmms/ms/marking/api/PaperApi.java

@@ -4,14 +4,12 @@ import cn.com.qmth.stmms.ms.commons.config.SystemConfig;
 import cn.com.qmth.stmms.ms.commons.utils.ServletUtil;
 import cn.com.qmth.stmms.ms.commons.utils.ServletUtil;
 import cn.com.qmth.stmms.ms.commons.web.PageableDTO;
 import cn.com.qmth.stmms.ms.commons.web.PageableDTO;
 import cn.com.qmth.stmms.ms.core.cache.ParamCache;
 import cn.com.qmth.stmms.ms.core.cache.ParamCache;
-import cn.com.qmth.stmms.ms.core.domain.ExamQuestion;
-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.*;
 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.MarkTaskLevel;
 import cn.com.qmth.stmms.ms.core.domain.task.MarkTaskLevel;
 import cn.com.qmth.stmms.ms.core.domain.task.MarkTaskRoughLevel;
 import cn.com.qmth.stmms.ms.core.domain.task.MarkTaskRoughLevel;
 import cn.com.qmth.stmms.ms.core.domain.task.MarkTaskScore;
 import cn.com.qmth.stmms.ms.core.domain.task.MarkTaskScore;
+import cn.com.qmth.stmms.ms.core.domain.user.MarkUser;
 import cn.com.qmth.stmms.ms.core.domain.user.MarkerGroupLeader;
 import cn.com.qmth.stmms.ms.core.domain.user.MarkerGroupLeader;
 import cn.com.qmth.stmms.ms.core.domain.user.Role;
 import cn.com.qmth.stmms.ms.core.domain.user.Role;
 import cn.com.qmth.stmms.ms.core.repository.*;
 import cn.com.qmth.stmms.ms.core.repository.*;
@@ -59,9 +57,15 @@ public class PaperApi {
     @Autowired
     @Autowired
     private PaperAssembler paperAssembler;
     private PaperAssembler paperAssembler;
 
 
+    @Resource
+    private MarkUserRepo markUserRepo;
+
     @Autowired
     @Autowired
     private PaperRepo paperRepo;
     private PaperRepo paperRepo;
 
 
+    @Resource
+    private WorkRepo workRepo;
+
     @Autowired
     @Autowired
     private MarkSubjectRepo markSubjectRepo;
     private MarkSubjectRepo markSubjectRepo;
 
 
@@ -89,6 +93,9 @@ public class PaperApi {
     @Resource
     @Resource
     private MarkTaskScoreRepo markTaskScoreRepo;
     private MarkTaskScoreRepo markTaskScoreRepo;
 
 
+    @Resource
+    private MarkLogRepo markLogRepo;
+
     @Autowired
     @Autowired
     SystemConfig systemConfig;
     SystemConfig systemConfig;
 
 
@@ -364,9 +371,9 @@ public class PaperApi {
         };
         };
         String[] sortProperties = new String[]{"isSample", "sortNum"};
         String[] sortProperties = new String[]{"isSample", "sortNum"};
         if (MarkStage.ROUGH_LEVEL.equals(markSubject.getStage())) {
         if (MarkStage.ROUGH_LEVEL.equals(markSubject.getStage())) {
-            sortProperties =  new String[]{"isRoughSample", "sortNum"};
+            sortProperties = new String[]{"isRoughSample", "sortNum"};
         } else if (MarkStage.LEVEL.equals(markSubject.getStage())) {
         } else if (MarkStage.LEVEL.equals(markSubject.getStage())) {
-            sortProperties =  new String[]{"isSample", "sortNum"};
+            sortProperties = new String[]{"isSample", "sortNum"};
         }
         }
         Sort sort = new Sort(Sort.Direction.DESC, sortProperties);
         Sort sort = new Sort(Sort.Direction.DESC, sortProperties);
         Pageable pageable1 = new PageRequest(pageable.getPageNumber(), pageable.getPageSize(), sort);
         Pageable pageable1 = new PageRequest(pageable.getPageNumber(), pageable.getPageSize(), sort);
@@ -509,10 +516,12 @@ public class PaperApi {
         String paperIds = body.get("paperIds");
         String paperIds = body.get("paperIds");
         String stage = body.get("stage");
         String stage = body.get("stage");
         if (paperIds.length() > 0) {
         if (paperIds.length() > 0) {
+            List<MarkLog> markLogs = new ArrayList<>();
             String[] ids = paperIds.split(",");
             String[] ids = paperIds.split(",");
-            if(MarkStage.ROUGH_LEVEL.name().equals(stage)){
+            if (MarkStage.ROUGH_LEVEL.name().equals(stage)) {
                 for (String id : ids) {
                 for (String id : ids) {
                     Paper paper = paperRepo.findOne(Long.valueOf(id));
                     Paper paper = paperRepo.findOne(Long.valueOf(id));
+                    Work work = workRepo.findOne(paper.getWorkId());
                     paper.determineRoughLevel(null);
                     paper.determineRoughLevel(null);
                     paper.setMarkByLeader(false);
                     paper.setMarkByLeader(false);
                     paper.setRoughSample(false);
                     paper.setRoughSample(false);
@@ -525,10 +534,17 @@ public class PaperApi {
                         markTask.setSample(false);
                         markTask.setSample(false);
                         markTaskRoughLevelRepo.save(markTask);
                         markTaskRoughLevelRepo.save(markTask);
                     }
                     }
+
+                    // 记录日志
+                    Long userId = ServletUtil.getUserId();
+                    MarkUser markUser = markUserRepo.findOne(userId);
+                    MarkLog markLog = new MarkLog(work.getId(), work.getName(), paper.getId(), paper.getSubject(), MarkStage.ROUGH_LEVEL, paper.getTest(), paper.getExamNumber(), paper.getStudentName(), markUser.getId(), markUser.getName(), markUser.getRole(), MarkLogOperType.CANCEL_SAMPLE.getId(),MarkLogOperType.CANCEL_SAMPLE.getName(), paper.getRoughLevel(), null, null, new Date());
+                    markLogs.add(markLog);
                 }
                 }
-            } else if(MarkStage.LEVEL.name().equals(stage)){
+            } else if (MarkStage.LEVEL.name().equals(stage)) {
                 for (String id : ids) {
                 for (String id : ids) {
                     Paper paper = paperRepo.findOne(Long.valueOf(id));
                     Paper paper = paperRepo.findOne(Long.valueOf(id));
+                    Work work = workRepo.findOne(paper.getWorkId());
                     paper.determineLevel(null);
                     paper.determineLevel(null);
                     paper.setMarkByLeader(false);
                     paper.setMarkByLeader(false);
                     paper.setSample(false);
                     paper.setSample(false);
@@ -541,9 +557,19 @@ public class PaperApi {
                         markTask.setSample(false);
                         markTask.setSample(false);
                         markTaskLevelRepo.save(markTask);
                         markTaskLevelRepo.save(markTask);
                     }
                     }
+
+                    // 记录日志
+                    Long userId = ServletUtil.getUserId();
+                    MarkUser markUser = markUserRepo.findOne(userId);
+                    MarkLog markLog = new MarkLog(work.getId(), work.getName(), paper.getId(), paper.getSubject(), MarkStage.LEVEL, paper.getTest(), paper.getExamNumber(), paper.getStudentName(), markUser.getId(), markUser.getName(), markUser.getRole(), MarkLogOperType.CANCEL_SAMPLE.getId(),MarkLogOperType.CANCEL_SAMPLE.getName(), paper.getLevel(), null, null, new Date());
+                    markLogs.add(markLog);
                 }
                 }
             }
             }
 
 
+            if (!markLogs.isEmpty()) {
+                markLogRepo.save(markLogs);
+            }
+
             return new ResponseEntity(true, HttpStatus.OK);
             return new ResponseEntity(true, HttpStatus.OK);
         }
         }
         return null;
         return null;
@@ -626,7 +652,7 @@ public class PaperApi {
                     predicates.add(builder.equal(root.get("secretNumber"), number));
                     predicates.add(builder.equal(root.get("secretNumber"), number));
                 } else if (Objects.equals(type, "task")) {
                 } else if (Objects.equals(type, "task")) {
                     List<MarkTaskRoughLevel> markRoughTasks = markTaskRoughLevelRepo.findByWorkIdAndSecretNumber(workId, number);
                     List<MarkTaskRoughLevel> markRoughTasks = markTaskRoughLevelRepo.findByWorkIdAndSecretNumber(workId, number);
-                    if(markRoughTasks.isEmpty()){
+                    if (markRoughTasks.isEmpty()) {
                         List<MarkTaskLevel> markTasks = markTaskLevelRepo.findByWorkIdAndSecretNumber(workId, number);
                         List<MarkTaskLevel> markTasks = markTaskLevelRepo.findByWorkIdAndSecretNumber(workId, number);
                         if (markTasks == null || markTasks.isEmpty()) {
                         if (markTasks == null || markTasks.isEmpty()) {
                             List<MarkTaskScore> markScoreTasks = markTaskScoreRepo.findByWorkIdAndSecretNumber(workId, number);
                             List<MarkTaskScore> markScoreTasks = markTaskScoreRepo.findByWorkIdAndSecretNumber(workId, number);

+ 8 - 17
stmms-ms-marking/src/main/java/cn/com/qmth/stmms/ms/marking/service/MarkLogService.java

@@ -70,7 +70,7 @@ public class MarkLogService {
             operDateBefore = markTask.getResult();
             operDateBefore = markTask.getResult();
             operDateAfter = levelCode;
             operDateAfter = levelCode;
         }
         }
-        return new MarkLog(markTask.getWorkId(), work.getName(), paper.getId(), markTask.getSubject(), stage, markTask.getTest(), paper.getExamNumber(), paper.getStudentName(), markTask.getMarkerId(), markTask.getMarkerName(), Role.MARKER, markLogOperType.getId(), Optional.ofNullable(operDateBefore).orElse("-"), Optional.ofNullable(operDateAfter).orElse("-"), markLogOperType.getName(), new Date());
+        return new MarkLog(markTask.getWorkId(), work.getName(), paper.getId(), markTask.getSubject(), stage, markTask.getTest(), paper.getExamNumber(), paper.getStudentName(), markTask.getMarkerId(), markTask.getMarkerName(), Role.MARKER, markLogOperType.getId(),markLogOperType.getName(), Optional.ofNullable(operDateBefore).orElse("-"), Optional.ofNullable(operDateAfter).orElse("-"), null, new Date());
     }
     }
 
 
     /**
     /**
@@ -111,7 +111,7 @@ public class MarkLogService {
         }
         }
         operDateBefore = markTask.getOriginLevel();
         operDateBefore = markTask.getOriginLevel();
         operDateAfter = levelCode;
         operDateAfter = levelCode;
-        return new MarkLog(markTask.getWorkId(), work.getName(), paper.getId(), markTask.getSubject(), stage, markTask.getTest(), paper.getExamNumber(), paper.getStudentName(), markTask.getMarkerId(), markTask.getMarkerName(), Role.MARKER, markLogOperType.getId(), Optional.ofNullable(operDateBefore).orElse("-"), Optional.ofNullable(operDateAfter).orElse("-"), markLogOperType.getName(), new Date());
+        return new MarkLog(markTask.getWorkId(), work.getName(), paper.getId(), markTask.getSubject(), stage, markTask.getTest(), paper.getExamNumber(), paper.getStudentName(), markTask.getMarkerId(), markTask.getMarkerName(), Role.MARKER, markLogOperType.getId(),markLogOperType.getName(), Optional.ofNullable(operDateBefore).orElse("-"), Optional.ofNullable(operDateAfter).orElse("-"), null, new Date());
     }
     }
 
 
     /**
     /**
@@ -143,7 +143,7 @@ public class MarkLogService {
             operDateBefore = markTask.getResult();
             operDateBefore = markTask.getResult();
             operDateAfter = String.valueOf(score);
             operDateAfter = String.valueOf(score);
         }
         }
-        return new MarkLog(markTask.getWorkId(), work.getName(), paper.getId(), markTask.getSubject(), MarkStage.SCORE, markTask.getTest(), paper.getExamNumber(), paper.getStudentName(), markTask.getMarkerId(), markTask.getMarkerName(), Role.MARKER, markLogOperType.getId(), Optional.ofNullable(operDateBefore).orElse("-"), Optional.ofNullable(operDateAfter).orElse("-"), markLogOperType.getName(), new Date());
+        return new MarkLog(markTask.getWorkId(), work.getName(), paper.getId(), markTask.getSubject(), MarkStage.SCORE, markTask.getTest(), paper.getExamNumber(), paper.getStudentName(), markTask.getMarkerId(), markTask.getMarkerName(), Role.MARKER, markLogOperType.getId(),markLogOperType.getName(), Optional.ofNullable(operDateBefore).orElse("-"), Optional.ofNullable(operDateAfter).orElse("-"), null, new Date());
     }
     }
 
 
     /**
     /**
@@ -178,29 +178,20 @@ public class MarkLogService {
         } else {
         } else {
             throw new RuntimeException("当前阶段不支持科组长操作");
             throw new RuntimeException("当前阶段不支持科组长操作");
         }
         }
-        return new MarkLog(paper.getWorkId(), work.getName(), paper.getId(), paper.getSubject(), stage, paper.getTest(), paper.getExamNumber(), paper.getStudentName(), markUser.getId(), markUser.getName(), Role.MARK_LEADER, markLogOperType.getId(), Optional.ofNullable(operDateBefore).orElse("-"), Optional.ofNullable(operDateAfter).orElse("-"), markLogOperType.getName(), new Date());
+        return new MarkLog(paper.getWorkId(), work.getName(), paper.getId(), paper.getSubject(), stage, paper.getTest(), paper.getExamNumber(), paper.getStudentName(), markUser.getId(), markUser.getName(), Role.MARK_LEADER, markLogOperType.getId(),markLogOperType.getName(), Optional.ofNullable(operDateBefore).orElse("-"), Optional.ofNullable(operDateAfter).orElse("-"), null, new Date());
     }
     }
 
 
     /**
     /**
      * 分档打回
      * 分档打回
      *
      *
-     * @param stage       阶段
-     * @param paper       试卷
-     * @param autoReject  是否自动打回
-     * @param markerId    科组长id
-     * @param originLevel 旧档位
+     * @param autoReject 是否自动打回
+     * @param markerId   科组长id
      */
      */
-    public MarkLog markingPaperReject(MarkStage stage, Paper paper, boolean autoReject, Long markerId, String originLevel) {
-        MarkLogOperType markLogOperType = autoReject ? MarkLogOperType.SYSTEM_CALLBACK_LEVEl : MarkLogOperType.CALLBACK_LEVEl;
-        String operDateAfter = paper.getRedoLevel();
-        Work work = workRepo.findOne(paper.getWorkId());
+    public String markingPaperReject(boolean autoReject, Long markerId) {
         Long userId = markerId != null ? markerId : autoReject ? -1 : ServletUtil.getUserId();
         Long userId = markerId != null ? markerId : autoReject ? -1 : ServletUtil.getUserId();
         String userName = autoReject ? "system" : markUserRepo.findOne(userId).getLoginName();
         String userName = autoReject ? "system" : markUserRepo.findOne(userId).getLoginName();
         Role role = autoReject ? Role.SYSTEM : Role.MARK_LEADER;
         Role role = autoReject ? Role.SYSTEM : Role.MARK_LEADER;
-        return new MarkLog(paper.getWorkId(), work.getName(), paper.getId(), paper.getSubject(), stage, paper.getTest(), paper.getExamNumber(), paper.getStudentName(), userId, userName, role, markLogOperType.getId(), Optional.ofNullable(originLevel).orElse("-"), Optional.ofNullable(operDateAfter).orElse("-"), markLogOperType.getName(), new Date());
+        return String.format("操作角色:%s,操作员ID:%s,操作员姓名:%s", role.name(), userId, userName);
     }
     }
 
 
-    public void deleteByWorkIdAndSubjectAndStageAndTestAndOperType(Long workId, String subject, MarkStage stage, int test, int operType) {
-        markLogRepo.deleteByWorkIdAndSubjectAndStageAndTestAndOperType(workId, subject, stage, test, operType);
-    }
 }
 }

+ 14 - 9
stmms-ms-marking/src/main/java/cn/com/qmth/stmms/ms/marking/service/MarkingLevelService.java

@@ -127,7 +127,7 @@ public class MarkingLevelService {
                 paper.determineLevel(determine.getResult());
                 paper.determineLevel(determine.getResult());
                 paper.setMarkedLogic(false);
                 paper.setMarkedLogic(false);
                 //档位落差值日志
                 //档位落差值日志
-//                levelsLog(markTasks, paper);
+                levelsLog(markTasks, paper);
             }
             }
             //仲裁
             //仲裁
             else if (determine.getDeterType() == DetermineLevelService.DeterType.ARBITRATE) {
             else if (determine.getDeterType() == DetermineLevelService.DeterType.ARBITRATE) {
@@ -194,8 +194,9 @@ public class MarkingLevelService {
         JSONObject js = new JSONObject();
         JSONObject js = new JSONObject();
         js.put("paperId", paper.getId());
         js.put("paperId", paper.getId());
         js.put("type", "levelsLog");
         js.put("type", "levelsLog");
+        js.put("stage", MarkStage.LEVEL.name());
         MarkTaskJob markTaskJob = new MarkTaskJob(js.toJSONString(), false, paper.getWorkId());
         MarkTaskJob markTaskJob = new MarkTaskJob(js.toJSONString(), false, paper.getWorkId());
-        levelsLog(markTasks, paper, markTaskJob);
+        levelsLog(markTasks, paper, MarkStage.LEVEL, markTaskJob);
         markTaskJobRepo.save(markTaskJob);
         markTaskJobRepo.save(markTaskJob);
         LOG.info("this:{} levelsLog异步回调结束了", this);
         LOG.info("this:{} levelsLog异步回调结束了", this);
     }
     }
@@ -207,7 +208,7 @@ public class MarkingLevelService {
      * @param paper
      * @param paper
      * @param markTaskJob
      * @param markTaskJob
      */
      */
-    public void levelsLog(List<MarkTaskLevel> markTasks, Paper paper, MarkTaskJob markTaskJob) {
+    public void levelsLog(List<MarkTaskLevel> markTasks, Paper paper, MarkStage stage, MarkTaskJob markTaskJob) {
         Map<Long, String> levelsMap = markTasks.stream().collect(Collectors.toMap(MarkTaskLevel::getMarkerId, o -> o.getResult().toUpperCase()));
         Map<Long, String> levelsMap = markTasks.stream().collect(Collectors.toMap(MarkTaskLevel::getMarkerId, o -> o.getResult().toUpperCase()));
         arbitrateCallback.judge(levelsMap, paper.getLevel(), new ArbitrateResult() {
         arbitrateCallback.judge(levelsMap, paper.getLevel(), new ArbitrateResult() {
             @Override
             @Override
@@ -218,14 +219,14 @@ public class MarkingLevelService {
                 for (ArbitrateCallback.Distance d : list) {
                 for (ArbitrateCallback.Distance d : list) {
                     for (MarkTaskLevel m : markTasks) {
                     for (MarkTaskLevel m : markTasks) {
                         if (Objects.equals(String.valueOf(d.getC()), m.getResult()) && d.getMarkId().longValue() == m.getMarkerId().longValue()) {
                         if (Objects.equals(String.valueOf(d.getC()), m.getResult()) && d.getMarkId().longValue() == m.getMarkerId().longValue()) {
-                            MarkLog markLogPrev = markLogRepo.findTopByCreateUserIdAndOperTypeAndSubjectAndExamNumberOrderByCreateTimeDesc(m.getMarkerId(), MarkLogOperType.LEVEl_DIFFERENCE.getId(), m.getSubject().toString(), paper.getExamNumber());
+                            MarkLog markLogPrev = markLogRepo.findTopByCreateUserIdAndStageAndOperTypeAndSubjectAndExamNumberOrderByCreateTimeDesc(m.getMarkerId(), stage, MarkLogOperType.LEVEl_DIFFERENCE.getId(), m.getSubject().toString(), paper.getExamNumber());
                             JSONObject jsonObject = new JSONObject();
                             JSONObject jsonObject = new JSONObject();
                             jsonObject.put("task", m.getResult());
                             jsonObject.put("task", m.getResult());
                             jsonObject.put("paper", paper.getLevel());
                             jsonObject.put("paper", paper.getLevel());
                             if (Objects.isNull(markLogPrev)) {//新建日志
                             if (Objects.isNull(markLogPrev)) {//新建日志
                                 //加入档位落差值日志
                                 //加入档位落差值日志
                                 Work work = workRepo.findOne(paper.getWorkId());
                                 Work work = workRepo.findOne(paper.getWorkId());
-                                MarkLog markLog = new MarkLog(paper.getWorkId(), work.getName(), paper.getId(), m.getSubject(), MarkStage.LEVEL, paper.getTest(), paper.getExamNumber(), paper.getStudentName(), m.getMarkerId(), m.getMarkerName(), Role.MARKER, MarkLogOperType.LEVEl_DIFFERENCE.getId(), operResult, String.valueOf(d.getDistance()), jsonObject.toJSONString(), date);
+                                MarkLog markLog = new MarkLog(paper.getWorkId(), work.getName(), paper.getId(), m.getSubject(), stage, paper.getTest(), paper.getExamNumber(), paper.getStudentName(), m.getMarkerId(), m.getMarkerName(), Role.MARKER, MarkLogOperType.LEVEl_DIFFERENCE.getId(),MarkLogOperType.LEVEl_DIFFERENCE.getName(), operResult, String.valueOf(d.getDistance()), jsonObject.toJSONString(), date);
                                 markLogRepo.save(markLog);
                                 markLogRepo.save(markLog);
                             } else {//更新日志
                             } else {//更新日志
                                 operResult = Optional.ofNullable(markLogPrev.getOperDataAfter()).orElse("-");
                                 operResult = Optional.ofNullable(markLogPrev.getOperDataAfter()).orElse("-");
@@ -235,11 +236,11 @@ public class MarkingLevelService {
                                 markLogRepo.save(markLogPrev);
                                 markLogRepo.save(markLogPrev);
                             }
                             }
                             //档位偏差
                             //档位偏差
-                            MarkLog markLogDevi = markLogRepo.findTopByCreateUserIdAndOperTypeAndSubjectAndExamNumberOrderByCreateTimeDesc(m.getMarkerId(), MarkLogOperType.LEVEl_DEVIATION.getId(), m.getSubject().toString(), paper.getExamNumber());
+                            MarkLog markLogDevi = markLogRepo.findTopByCreateUserIdAndStageAndOperTypeAndSubjectAndExamNumberOrderByCreateTimeDesc(m.getMarkerId(), stage, MarkLogOperType.LEVEl_DEVIATION.getId(), m.getSubject().toString(), paper.getExamNumber());
                             if (Objects.isNull(markLogDevi)) {//新建日志
                             if (Objects.isNull(markLogDevi)) {//新建日志
                                 //加入档位偏差值日志
                                 //加入档位偏差值日志
                                 Work work = workRepo.findOne(paper.getWorkId());
                                 Work work = workRepo.findOne(paper.getWorkId());
-                                MarkLog markLog = new MarkLog(paper.getWorkId(), work.getName(), paper.getId(), m.getSubject(), MarkStage.LEVEL, paper.getTest(), paper.getExamNumber(), paper.getStudentName(), m.getMarkerId(), m.getMarkerName(), Role.MARKER, MarkLogOperType.LEVEl_DEVIATION.getId(), operResult, String.valueOf(d.getDeviation()), jsonObject.toJSONString(), date);
+                                MarkLog markLog = new MarkLog(paper.getWorkId(), work.getName(), paper.getId(), m.getSubject(), stage, paper.getTest(), paper.getExamNumber(), paper.getStudentName(), m.getMarkerId(), m.getMarkerName(), Role.MARKER, MarkLogOperType.LEVEl_DEVIATION.getId(),MarkLogOperType.LEVEl_DEVIATION.getName(), operResult, String.valueOf(d.getDeviation()), jsonObject.toJSONString(), date);
                                 markLogRepo.save(markLog);
                                 markLogRepo.save(markLog);
                             } else {//更新日志
                             } else {//更新日志
                                 operResult = Optional.ofNullable(markLogDevi.getOperDataAfter()).orElse("-");
                                 operResult = Optional.ofNullable(markLogDevi.getOperDataAfter()).orElse("-");
@@ -284,7 +285,7 @@ public class MarkingLevelService {
 
 
         paper.setSortNum(calcSortNum(paper, markTasks, levels));
         paper.setSortNum(calcSortNum(paper, markTasks, levels));
         paperRepo.save(paper);
         paperRepo.save(paper);
-//        levelsLog(markTasks, paper);
+        levelsLog(markTasks, paper);
         markLogRepo.save(markLog);
         markLogRepo.save(markLog);
         return paper;
         return paper;
     }
     }
@@ -313,6 +314,9 @@ public class MarkingLevelService {
 
 
         List<MarkTaskLevel> markTasks = markTaskLevelRepo.findByPaperId(paper.getId());
         List<MarkTaskLevel> markTasks = markTaskLevelRepo.findByPaperId(paper.getId());
 
 
+        Work work = workRepo.findOne(paper.getWorkId());
+        MarkLogOperType markLogOperType = autoReject ? MarkLogOperType.SYSTEM_CALLBACK_LEVEl : MarkLogOperType.CALLBACK_LEVEl;
+
         List<Level> levels = levelRepo.findByWorkId(paper.getWorkId());
         List<Level> levels = levelRepo.findByWorkId(paper.getWorkId());
         Map<String, Integer> levelMap = levels.stream().collect(Collectors.toMap(Level::getCode, Level::getLevelValue));
         Map<String, Integer> levelMap = levels.stream().collect(Collectors.toMap(Level::getCode, Level::getLevelValue));
 
 
@@ -331,7 +335,8 @@ public class MarkingLevelService {
                         markTask.setResult(null);
                         markTask.setResult(null);
                         markTask.setLevel(null);
                         markTask.setLevel(null);
                         markTask.setDeviationDirection(calcDeviationDirection(levelMap, markTask.getOriginLevel(), redoLevel));
                         markTask.setDeviationDirection(calcDeviationDirection(levelMap, markTask.getOriginLevel(), redoLevel));
-                        MarkLog markLog = markLogService.markingPaperReject(MarkStage.LEVEL, paper, autoReject, rejectKzzId, markTask.getOriginLevel());
+                        String remark = markLogService.markingPaperReject(autoReject, rejectKzzId);
+                        MarkLog markLog = new MarkLog(paper.getWorkId(), work.getName(), paper.getId(), markTask.getSubject(), markTask.getStage(), paper.getTest(), paper.getExamNumber(), paper.getStudentName(), markTask.getMarkerId(), markTask.getMarkerName(), Role.MARKER, markLogOperType.getId(),markLogOperType.getName(), markTask.getOriginLevel(), redoLevel, remark, new Date());
                         markLogList.add(markLog);
                         markLogList.add(markLog);
                     }
                     }
                 }
                 }

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

@@ -159,8 +159,9 @@ public class MarkingRoughLevelService {
         JSONObject js = new JSONObject();
         JSONObject js = new JSONObject();
         js.put("paperId", paper.getId());
         js.put("paperId", paper.getId());
         js.put("type", "levelsLog");
         js.put("type", "levelsLog");
+        js.put("stage", MarkStage.ROUGH_LEVEL.name());
         MarkTaskJob markTaskJob = new MarkTaskJob(js.toJSONString(), false, paper.getWorkId());
         MarkTaskJob markTaskJob = new MarkTaskJob(js.toJSONString(), false, paper.getWorkId());
-        levelsLog(markTasks, paper, markTaskJob);
+        levelsLog(markTasks, paper, MarkStage.ROUGH_LEVEL, markTaskJob);
         markTaskJobRepo.save(markTaskJob);
         markTaskJobRepo.save(markTaskJob);
         LOG.info("this:{} levelsLog异步回调结束了", this);
         LOG.info("this:{} levelsLog异步回调结束了", this);
     }
     }
@@ -172,9 +173,9 @@ public class MarkingRoughLevelService {
      * @param paper
      * @param paper
      * @param markTaskJob
      * @param markTaskJob
      */
      */
-    public void levelsLog(List<MarkTaskRoughLevel> markTasks, Paper paper, MarkTaskJob markTaskJob) {
+    public void levelsLog(List<MarkTaskRoughLevel> markTasks, Paper paper, MarkStage stage, MarkTaskJob markTaskJob) {
         Map<Long, String> levelsMap = markTasks.stream().collect(Collectors.toMap(MarkTaskRoughLevel::getMarkerId, o -> o.getResult().toUpperCase()));
         Map<Long, String> levelsMap = markTasks.stream().collect(Collectors.toMap(MarkTaskRoughLevel::getMarkerId, o -> o.getResult().toUpperCase()));
-        arbitrateCallback.judge(levelsMap, paper.getLevel(), new ArbitrateResult() {
+        arbitrateCallback.judge(levelsMap, paper.getRoughLevel(), new ArbitrateResult() {
             @Override
             @Override
             public void callback(List<ArbitrateCallback.Distance> list) {
             public void callback(List<ArbitrateCallback.Distance> list) {
                 LOG.info("this:{} callback levelsLog异步回调进来了", this);
                 LOG.info("this:{} callback levelsLog异步回调进来了", this);
@@ -183,14 +184,14 @@ public class MarkingRoughLevelService {
                 for (ArbitrateCallback.Distance d : list) {
                 for (ArbitrateCallback.Distance d : list) {
                     for (MarkTaskRoughLevel m : markTasks) {
                     for (MarkTaskRoughLevel m : markTasks) {
                         if (Objects.equals(String.valueOf(d.getC()), m.getResult()) && d.getMarkId().longValue() == m.getMarkerId().longValue()) {
                         if (Objects.equals(String.valueOf(d.getC()), m.getResult()) && d.getMarkId().longValue() == m.getMarkerId().longValue()) {
-                            MarkLog markLogPrev = markLogRepo.findTopByCreateUserIdAndOperTypeAndSubjectAndExamNumberOrderByCreateTimeDesc(m.getMarkerId(), MarkLogOperType.LEVEl_DIFFERENCE.getId(), m.getSubject().toString(), paper.getExamNumber());
+                            MarkLog markLogPrev = markLogRepo.findTopByCreateUserIdAndStageAndOperTypeAndSubjectAndExamNumberOrderByCreateTimeDesc(m.getMarkerId(), stage, MarkLogOperType.LEVEl_DIFFERENCE.getId(), m.getSubject().toString(), paper.getExamNumber());
                             JSONObject jsonObject = new JSONObject();
                             JSONObject jsonObject = new JSONObject();
                             jsonObject.put("task", m.getResult());
                             jsonObject.put("task", m.getResult());
                             jsonObject.put("paper", paper.getLevel());
                             jsonObject.put("paper", paper.getLevel());
                             if (Objects.isNull(markLogPrev)) {//新建日志
                             if (Objects.isNull(markLogPrev)) {//新建日志
                                 //加入档位落差值日志
                                 //加入档位落差值日志
                                 Work work = workRepo.findOne(paper.getWorkId());
                                 Work work = workRepo.findOne(paper.getWorkId());
-                                MarkLog markLog = new MarkLog(paper.getWorkId(), work.getName(), paper.getId(), m.getSubject(), MarkStage.LEVEL, paper.getTest(), paper.getExamNumber(), paper.getStudentName(), m.getMarkerId(), m.getMarkerName(), Role.MARKER, MarkLogOperType.LEVEl_DIFFERENCE.getId(), operResult, String.valueOf(d.getDistance()), jsonObject.toJSONString(), date);
+                                MarkLog markLog = new MarkLog(paper.getWorkId(), work.getName(), paper.getId(), m.getSubject(), stage, paper.getTest(), paper.getExamNumber(), paper.getStudentName(), m.getMarkerId(), m.getMarkerName(), Role.MARKER, MarkLogOperType.LEVEl_DIFFERENCE.getId(), MarkLogOperType.LEVEl_DIFFERENCE.getName(), operResult, String.valueOf(d.getDistance()), jsonObject.toJSONString(), date);
                                 markLogRepo.save(markLog);
                                 markLogRepo.save(markLog);
                             } else {//更新日志
                             } else {//更新日志
                                 operResult = Optional.ofNullable(markLogPrev.getOperDataAfter()).orElse("-");
                                 operResult = Optional.ofNullable(markLogPrev.getOperDataAfter()).orElse("-");
@@ -200,11 +201,11 @@ public class MarkingRoughLevelService {
                                 markLogRepo.save(markLogPrev);
                                 markLogRepo.save(markLogPrev);
                             }
                             }
                             //档位偏差
                             //档位偏差
-                            MarkLog markLogDevi = markLogRepo.findTopByCreateUserIdAndOperTypeAndSubjectAndExamNumberOrderByCreateTimeDesc(m.getMarkerId(), MarkLogOperType.LEVEl_DEVIATION.getId(), m.getSubject().toString(), paper.getExamNumber());
+                            MarkLog markLogDevi = markLogRepo.findTopByCreateUserIdAndStageAndOperTypeAndSubjectAndExamNumberOrderByCreateTimeDesc(m.getMarkerId(), stage, MarkLogOperType.LEVEl_DEVIATION.getId(), m.getSubject().toString(), paper.getExamNumber());
                             if (Objects.isNull(markLogDevi)) {//新建日志
                             if (Objects.isNull(markLogDevi)) {//新建日志
                                 //加入档位偏差值日志
                                 //加入档位偏差值日志
                                 Work work = workRepo.findOne(paper.getWorkId());
                                 Work work = workRepo.findOne(paper.getWorkId());
-                                MarkLog markLog = new MarkLog(paper.getWorkId(), work.getName(), paper.getId(), m.getSubject(), MarkStage.LEVEL, paper.getTest(), paper.getExamNumber(), paper.getStudentName(), m.getMarkerId(), m.getMarkerName(), Role.MARKER, MarkLogOperType.LEVEl_DEVIATION.getId(), operResult, String.valueOf(d.getDeviation()), jsonObject.toJSONString(), date);
+                                MarkLog markLog = new MarkLog(paper.getWorkId(), work.getName(), paper.getId(), m.getSubject(), stage, paper.getTest(), paper.getExamNumber(), paper.getStudentName(), m.getMarkerId(), m.getMarkerName(), Role.MARKER, MarkLogOperType.LEVEl_DEVIATION.getId(), MarkLogOperType.LEVEl_DEVIATION.getName(), operResult, String.valueOf(d.getDeviation()), jsonObject.toJSONString(), date);
                                 markLogRepo.save(markLog);
                                 markLogRepo.save(markLog);
                             } else {//更新日志
                             } else {//更新日志
                                 operResult = Optional.ofNullable(markLogDevi.getOperDataAfter()).orElse("-");
                                 operResult = Optional.ofNullable(markLogDevi.getOperDataAfter()).orElse("-");
@@ -249,7 +250,7 @@ public class MarkingRoughLevelService {
 
 
         paper.setSortNum(calcSortNum(paper, markTasks, levels));
         paper.setSortNum(calcSortNum(paper, markTasks, levels));
         paperRepo.save(paper);
         paperRepo.save(paper);
-//        levelsLog(markTasks, paper);
+        levelsLog(markTasks, paper);
         markLogRepo.save(markLog);
         markLogRepo.save(markLog);
         return paper;
         return paper;
     }
     }
@@ -274,6 +275,8 @@ public class MarkingRoughLevelService {
         paper.setRoughSample(false);
         paper.setRoughSample(false);
         paper.setArbitrated(false);
         paper.setArbitrated(false);
         List<MarkTaskRoughLevel> markTasks = markTaskRoughLevelRepo.findByPaperId(paper.getId());
         List<MarkTaskRoughLevel> markTasks = markTaskRoughLevelRepo.findByPaperId(paper.getId());
+        Work work = workRepo.findOne(paper.getWorkId());
+        MarkLogOperType markLogOperType = autoReject ? MarkLogOperType.SYSTEM_CALLBACK_LEVEl : MarkLogOperType.CALLBACK_LEVEl;
 
 
         List<MarkLog> markLogList = new ArrayList<>();
         List<MarkLog> markLogList = new ArrayList<>();
         for (MarkTaskRoughLevel markTask : markTasks) {
         for (MarkTaskRoughLevel markTask : markTasks) {
@@ -290,7 +293,8 @@ public class MarkingRoughLevelService {
                         markTask.setResult(null);
                         markTask.setResult(null);
                         markTask.setLevel(null);
                         markTask.setLevel(null);
                         markTask.setDeviationDirection(calcDeviationDirection(markTask.getOriginLevel(), redoLevel));
                         markTask.setDeviationDirection(calcDeviationDirection(markTask.getOriginLevel(), redoLevel));
-                        MarkLog markLog = markLogService.markingPaperReject(MarkStage.ROUGH_LEVEL, paper, autoReject, rejectKzzId, markTask.getOriginLevel());
+                        String remark = markLogService.markingPaperReject(autoReject, rejectKzzId);
+                        MarkLog markLog = new MarkLog(paper.getWorkId(), work.getName(), paper.getId(), markTask.getSubject(), markTask.getStage(), paper.getTest(), paper.getExamNumber(), paper.getStudentName(), markTask.getMarkerId(), markTask.getMarkerName(), Role.MARKER, markLogOperType.getId(), markLogOperType.getName(), markTask.getOriginLevel(), redoLevel, remark, new Date());
                         markLogList.add(markLog);
                         markLogList.add(markLog);
                     }
                     }
                 }
                 }