Browse Source

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

xiaof 2 years ago
parent
commit
2fbeff179f
27 changed files with 305 additions and 125 deletions
  1. 40 25
      sql/msyj-local-v3.1.0.sql
  2. 17 1
      stmms-ms-admin/src/main/java/cn/com/qmth/stmms/ms/admin/api/CheckDataApi.java
  3. 7 2
      stmms-ms-admin/src/main/java/cn/com/qmth/stmms/ms/admin/exporter/PaperExporter.java
  4. 3 3
      stmms-ms-admin/src/main/java/cn/com/qmth/stmms/ms/admin/exporter/StudentExporter.java
  5. 1 1
      stmms-ms-admin/src/main/java/cn/com/qmth/stmms/ms/admin/service/ToolService.java
  6. 8 4
      stmms-ms-admin/src/main/java/cn/com/qmth/stmms/ms/admin/service/TrialService.java
  7. 15 2
      stmms-ms-core/src/main/java/cn/com/qmth/stmms/ms/core/domain/MarkLog.java
  8. 73 0
      stmms-ms-core/src/main/java/cn/com/qmth/stmms/ms/core/domain/user/CheckDataError.java
  9. 10 0
      stmms-ms-core/src/main/java/cn/com/qmth/stmms/ms/core/repository/CheckDataErrorRepo.java
  10. 6 1
      stmms-ms-core/src/main/java/cn/com/qmth/stmms/ms/core/repository/MarkLogRepo.java
  11. 5 0
      stmms-ms-core/src/main/java/cn/com/qmth/stmms/ms/core/repository/MarkerGroupStudentRepo.java
  12. 2 0
      stmms-ms-core/src/main/java/cn/com/qmth/stmms/ms/core/repository/PaperRepo.java
  13. 4 5
      stmms-ms-log/src/main/java/cn/com/qmth/stmms/ms/log/aop/MarkLogAop.java
  14. 2 2
      stmms-ms-main/src/main/resources/application-dev.properties
  15. 2 2
      stmms-ms-marking/src/main/java/cn/com/qmth/stmms/ms/marking/api/ChangeLevelApi.java
  16. 2 0
      stmms-ms-marking/src/main/java/cn/com/qmth/stmms/ms/marking/api/MakrerApi.java
  17. 3 2
      stmms-ms-marking/src/main/java/cn/com/qmth/stmms/ms/marking/api/MarkTaskApi.java
  18. 1 0
      stmms-ms-marking/src/main/java/cn/com/qmth/stmms/ms/marking/assembler/MarkTaskRoughLevelAssembler.java
  19. 3 19
      stmms-ms-marking/src/main/java/cn/com/qmth/stmms/ms/marking/assembler/PaperAssembler.java
  20. 9 0
      stmms-ms-marking/src/main/java/cn/com/qmth/stmms/ms/marking/dto/PaperDTO.java
  21. 62 37
      stmms-ms-marking/src/main/java/cn/com/qmth/stmms/ms/marking/service/CheckDataService.java
  22. 13 7
      stmms-ms-marking/src/main/java/cn/com/qmth/stmms/ms/marking/service/MarkLogService.java
  23. 7 7
      stmms-ms-marking/src/main/java/cn/com/qmth/stmms/ms/marking/service/MarkTaskLevelService.java
  24. 1 1
      stmms-ms-marking/src/main/java/cn/com/qmth/stmms/ms/marking/service/MarkTaskScoreService.java
  25. 2 2
      stmms-ms-marking/src/main/java/cn/com/qmth/stmms/ms/marking/service/MarkingLevelService.java
  26. 2 2
      stmms-ms-marking/src/main/java/cn/com/qmth/stmms/ms/marking/service/MarkingRoughLevelService.java
  27. 5 0
      stmms-ms-marking/src/main/java/cn/com/qmth/stmms/ms/marking/service/MarkingService.java

+ 40 - 25
sql/msyj-local-v3.1.0.sql

@@ -51,7 +51,7 @@ CREATE TABLE `change_level`  (
   `stage` int(2) NULL DEFAULT NULL COMMENT '阶段',
   `stage` int(2) NULL DEFAULT NULL COMMENT '阶段',
   `paper_id` bigint(20) NULL DEFAULT NULL,
   `paper_id` bigint(20) NULL DEFAULT NULL,
   `original_level` varchar(45) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '原档位',
   `original_level` varchar(45) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '原档位',
-  `audit_status` tinyint(1) NULL DEFAULT NULL COMMENT '改档审核:0-申请,1-同意,2-不同意',
+  `audit_status` int(1) NULL DEFAULT NULL COMMENT '改档审核:0-申请,1-同意,2-不同意',
   `create_id` bigint(20) NULL DEFAULT NULL COMMENT '申请改档用户id',
   `create_id` bigint(20) NULL DEFAULT NULL COMMENT '申请改档用户id',
   `create_date` datetime(0) NULL DEFAULT NULL COMMENT '申请改档时间',
   `create_date` datetime(0) NULL DEFAULT NULL COMMENT '申请改档时间',
   `audit_id` bigint(20) NULL DEFAULT NULL COMMENT '审核用户id',
   `audit_id` bigint(20) NULL DEFAULT NULL COMMENT '审核用户id',
@@ -73,12 +73,26 @@ CREATE TABLE `check_data`  (
   `status` varchar(45) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
   `status` varchar(45) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
   `result` tinyint(1) NULL DEFAULT NULL COMMENT '是否校验通过(1:是,0:否)',
   `result` tinyint(1) NULL DEFAULT NULL COMMENT '是否校验通过(1:是,0:否)',
   `error_count` int(7) NULL DEFAULT 0 COMMENT '未通过数量(result=0时,数量大于0)',
   `error_count` int(7) NULL DEFAULT 0 COMMENT '未通过数量(result=0时,数量大于0)',
-  `content` mediumtext CHARACTER SET utf8 COLLATE utf8_general_ci NULL COMMENT '校验不通过考生列表',
+  `content` VARCHAR(200) CHARACTER SET utf8 COLLATE utf8_general_ci NULL COMMENT '校验不通过考生列表',
   `start_time` datetime(0) NULL DEFAULT NULL COMMENT '开始时间',
   `start_time` datetime(0) NULL DEFAULT NULL COMMENT '开始时间',
   `end_time` datetime(0) NULL DEFAULT NULL COMMENT '结束时间',
   `end_time` datetime(0) NULL DEFAULT NULL COMMENT '结束时间',
   PRIMARY KEY (`id`) USING BTREE
   PRIMARY KEY (`id`) USING BTREE
 ) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '数据校验日志' ROW_FORMAT = Dynamic;
 ) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '数据校验日志' ROW_FORMAT = Dynamic;
 
 
+-- ----------------------------
+-- Table structure for check_data_error
+-- ----------------------------
+DROP TABLE IF EXISTS `check_data_error`;
+CREATE TABLE `check_data_error`  (
+     `id` bigint(20) NOT NULL AUTO_INCREMENT,
+     `check_data_id` bigint(20) NULL DEFAULT NULL,
+     `exam_number` varchar(45) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '考号',
+     `student_name` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
+     `error_message` varchar(1000) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '错误信息',
+     PRIMARY KEY (`id`) USING BTREE,
+     INDEX `idx_check_data_id`(`check_data_id`) USING BTREE
+) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '数据校验错误数据' ROW_FORMAT = Dynamic;
+
 -- ----------------------------
 -- ----------------------------
 -- Table structure for exam_question
 -- Table structure for exam_question
 -- ----------------------------
 -- ----------------------------
@@ -223,7 +237,7 @@ CREATE TABLE `mark_log`  (
  `work_name` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
  `work_name` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
  `paper_id` bigint(20) NULL DEFAULT NULL COMMENT '试卷id',
  `paper_id` bigint(20) NULL DEFAULT NULL COMMENT '试卷id',
  `subject` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '科目',
  `subject` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '科目',
- `stage` bigint(20) NULL DEFAULT NULL COMMENT '试卷阶段,0:初始,1:分档,2:打分',
+ `stage` int(1) NULL DEFAULT NULL COMMENT '试卷阶段,0:初始,1:分档,2:打分',
  `exam_number` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '准考证号',
  `exam_number` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '准考证号',
  `student_name` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '学生姓名',
  `student_name` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '学生姓名',
  `create_user_id` bigint(20) NULL DEFAULT NULL COMMENT '操作人id',
  `create_user_id` bigint(20) NULL DEFAULT NULL COMMENT '操作人id',
@@ -233,6 +247,7 @@ CREATE TABLE `mark_log`  (
  `oper_data_before` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '操作前数据',
  `oper_data_before` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '操作前数据',
  `oper_data_after` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '操作后数据',
  `oper_data_after` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '操作后数据',
  `remark` varchar(500) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '备注',
  `remark` varchar(500) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '备注',
+ `test` INT (1) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT 0 ,
  `create_time` datetime(0) NULL DEFAULT NULL COMMENT '操作时间',
  `create_time` datetime(0) NULL DEFAULT NULL COMMENT '操作时间',
  `login_time` datetime(0) NULL DEFAULT NULL COMMENT '登录时间(采集专用)',
  `login_time` datetime(0) NULL DEFAULT NULL COMMENT '登录时间(采集专用)',
  `logout_time` datetime(0) NULL DEFAULT NULL COMMENT '登出时间(采集专用)',
  `logout_time` datetime(0) NULL DEFAULT NULL COMMENT '登出时间(采集专用)',
@@ -253,7 +268,7 @@ CREATE TABLE `mark_subject`  (
   `stage` int(11) NULL DEFAULT NULL,
   `stage` int(11) NULL DEFAULT NULL,
   `total_score` int(11) NOT NULL,
   `total_score` int(11) NOT NULL,
   `sample_count` int(11) NOT NULL DEFAULT 100,
   `sample_count` int(11) NOT NULL DEFAULT 100,
-  `is_test` tinyint(4) NOT NULL DEFAULT 0 COMMENT '是否试评,0:不是,1:数据已导入,2:试评中',
+  `is_test` int(1) NOT NULL DEFAULT 0 COMMENT '是否试评,0:不是,1:数据已导入,2:试评中',
   `all_level` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否全部根据档位分配完,0:不是,1:是',
   `all_level` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否全部根据档位分配完,0:不是,1:是',
   `enable` tinyint(1) NULL DEFAULT 1 COMMENT '是否启用 0:禁用 1:启用',
   `enable` tinyint(1) NULL DEFAULT 1 COMMENT '是否启用 0:禁用 1:启用',
   PRIMARY KEY (`id`) USING BTREE,
   PRIMARY KEY (`id`) USING BTREE,
@@ -315,7 +330,7 @@ CREATE TABLE `mark_task_level`  (
   `secret_number` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL,
   `secret_number` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL,
   `random_seq_new` bigint(20) NULL DEFAULT NULL COMMENT '随机号',
   `random_seq_new` bigint(20) NULL DEFAULT NULL COMMENT '随机号',
   `is_active` bit(1) NULL DEFAULT b'0' COMMENT '是否激活',
   `is_active` bit(1) NULL DEFAULT b'0' COMMENT '是否激活',
-  `is_test` tinyint(4) NOT NULL DEFAULT 0 COMMENT '是否试评,0:不是,1:数据已导入,2:试评中',
+  `is_test` int(1) NOT NULL DEFAULT 0 COMMENT '是否试评,0:不是,1:数据已导入,2:试评中',
   `batch_no` bigint(45) NULL DEFAULT NULL COMMENT '批次号',
   `batch_no` bigint(45) NULL DEFAULT NULL COMMENT '批次号',
   `is_change_stage` tinyint(1) NULL DEFAULT NULL COMMENT '是否改档',
   `is_change_stage` tinyint(1) NULL DEFAULT NULL COMMENT '是否改档',
   `serial_number` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '叫号序号',
   `serial_number` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '叫号序号',
@@ -358,7 +373,7 @@ CREATE TABLE `mark_task_rough_level`  (
   `level_value` int(11) NULL DEFAULT NULL,
   `level_value` int(11) NULL DEFAULT NULL,
   `marker_id` bigint(20) NOT NULL,
   `marker_id` bigint(20) NOT NULL,
   `marker_name` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
   `marker_name` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
-  `origin_level` int(11) NULL DEFAULT NULL,
+  `origin_level` VARCHAR(10) NULL DEFAULT NULL,
   `question_id` bigint(20) NULL DEFAULT NULL,
   `question_id` bigint(20) NULL DEFAULT NULL,
   `result` varchar(2) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,
   `result` varchar(2) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,
   `level` varchar(2) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '最终档位(和paper表中level一致)',
   `level` varchar(2) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '最终档位(和paper表中level一致)',
@@ -370,7 +385,7 @@ CREATE TABLE `mark_task_rough_level`  (
   `secret_number` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL,
   `secret_number` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL,
   `random_seq_new` bigint(20) NULL DEFAULT NULL COMMENT '随机号',
   `random_seq_new` bigint(20) NULL DEFAULT NULL COMMENT '随机号',
   `is_active` bit(1) NULL DEFAULT b'0' COMMENT '是否激活',
   `is_active` bit(1) NULL DEFAULT b'0' COMMENT '是否激活',
-  `is_test` tinyint(4) NOT NULL DEFAULT 0 COMMENT '是否试评,0:不是,1:数据已导入,2:试评中',
+  `is_test` int(1) NOT NULL DEFAULT 0 COMMENT '是否试评,0:不是,1:数据已导入,2:试评中',
   `batch_no` bigint(45) NULL DEFAULT NULL COMMENT '批次号',
   `batch_no` bigint(45) NULL DEFAULT NULL COMMENT '批次号',
   `is_change_stage` tinyint(1) NULL DEFAULT NULL COMMENT '是否改档',
   `is_change_stage` tinyint(1) NULL DEFAULT NULL COMMENT '是否改档',
   `serial_number` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '叫号序号',
   `serial_number` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '叫号序号',
@@ -425,7 +440,7 @@ CREATE TABLE `mark_task_score`  (
   `secret_number` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL,
   `secret_number` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL,
   `random_seq_new` bigint(20) NULL DEFAULT NULL COMMENT '随机号',
   `random_seq_new` bigint(20) NULL DEFAULT NULL COMMENT '随机号',
   `is_active` bit(1) NULL DEFAULT b'0' COMMENT '是否激活',
   `is_active` bit(1) NULL DEFAULT b'0' COMMENT '是否激活',
-  `is_test` tinyint(4) NOT NULL DEFAULT 0 COMMENT '是否试评,0:不是,1:数据已导入,2:试评中',
+  `is_test` int(1) NOT NULL DEFAULT 0 COMMENT '是否试评,0:不是,1:数据已导入,2:试评中',
   `batch_no` bigint(45) NULL DEFAULT NULL COMMENT '批次号',
   `batch_no` bigint(45) NULL DEFAULT NULL COMMENT '批次号',
   `is_change_stage` tinyint(1) NULL DEFAULT NULL COMMENT '是否改档',
   `is_change_stage` tinyint(1) NULL DEFAULT NULL COMMENT '是否改档',
   `serial_number` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '叫号序号',
   `serial_number` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '叫号序号',
@@ -572,7 +587,7 @@ CREATE TABLE `message`  (
   `send_user_id` bigint(20) NULL DEFAULT NULL COMMENT '发件人ID',
   `send_user_id` bigint(20) NULL DEFAULT NULL COMMENT '发件人ID',
   `send_user_name` varchar(45) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '发件人名称',
   `send_user_name` varchar(45) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '发件人名称',
   `content` varchar(500) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '消息内容',
   `content` varchar(500) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '消息内容',
-  `receive_user` mediumtext CHARACTER SET utf8 COLLATE utf8_general_ci NULL COMMENT '收件人集合json',
+  `receive_user` VARCHAR(500) CHARACTER SET utf8 COLLATE utf8_general_ci NULL COMMENT '收件人集合json',
   `create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间',
   `create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间',
   PRIMARY KEY (`id`) USING BTREE
   PRIMARY KEY (`id`) USING BTREE
 ) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '消息管理' ROW_FORMAT = Dynamic;
 ) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '消息管理' ROW_FORMAT = Dynamic;
@@ -582,14 +597,14 @@ CREATE TABLE `message`  (
 -- ----------------------------
 -- ----------------------------
 DROP TABLE IF EXISTS `message_receive`;
 DROP TABLE IF EXISTS `message_receive`;
 CREATE TABLE `message_receive`  (
 CREATE TABLE `message_receive`  (
-  `id` bigint(20) NOT NULL AUTO_INCREMENT,
-  `message_id` bigint(20) NULL DEFAULT NULL,
-  `receive_user_id` bigint(20) NULL DEFAULT NULL,
-  `is_read` tinyint(1) NULL DEFAULT NULL,
-  PRIMARY KEY (`id`) USING BTREE,
-  INDEX `FKsg879qydqr4dx6r0khxfkkick`(`message_id`) USING BTREE,
-  CONSTRAINT `FKsg879qydqr4dx6r0khxfkkick` FOREIGN KEY (`message_id`) REFERENCES `message` (`id`) ON DELETE RESTRICT ON UPDATE RESTRICT,
-  CONSTRAINT `message_receive_ibfk_1` FOREIGN KEY (`message_id`) REFERENCES `message` (`id`) ON DELETE RESTRICT ON UPDATE RESTRICT
+    `id` bigint(20) NOT NULL AUTO_INCREMENT,
+    `message_id` bigint(20) NULL DEFAULT NULL,
+    `receive_user_id` bigint(20) NULL DEFAULT NULL,
+    `is_read` tinyint(1) NULL DEFAULT NULL,
+    PRIMARY KEY (`id`) USING BTREE,
+    INDEX `idx_message_id`(`message_id`) USING BTREE,
+    CONSTRAINT `FKsg879qydqr4dx6r0khxfkkick` FOREIGN KEY (`message_id`) REFERENCES `message` (`id`) ON DELETE RESTRICT ON UPDATE RESTRICT,
+    CONSTRAINT `message_receive_ibfk_1` FOREIGN KEY (`message_id`) REFERENCES `message` (`id`) ON DELETE RESTRICT ON UPDATE RESTRICT
 ) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '消息发送的用户' ROW_FORMAT = Dynamic;
 ) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '消息发送的用户' ROW_FORMAT = Dynamic;
 
 
 -- ----------------------------
 -- ----------------------------
@@ -630,7 +645,7 @@ CREATE TABLE `paper`  (
   `random_seq` bigint(20) NULL DEFAULT NULL COMMENT '随机号',
   `random_seq` bigint(20) NULL DEFAULT NULL COMMENT '随机号',
   `is_missing` bit(1) NOT NULL,
   `is_missing` bit(1) NOT NULL,
   `exam_room` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL,
   `exam_room` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL,
-  `is_test` tinyint(4) NOT NULL DEFAULT 0 COMMENT '是否试评,0:不是,1:数据已导入,2:试评中',
+  `is_test` int(1) NOT NULL DEFAULT 0 COMMENT '是否试评,0:不是,1:数据已导入,2:试评中',
   `rough_batch_no` bigint(45) NULL DEFAULT NULL COMMENT '粗分档批次号',
   `rough_batch_no` bigint(45) NULL DEFAULT NULL COMMENT '粗分档批次号',
   `batch_no` bigint(45) NULL DEFAULT NULL COMMENT '批次号',
   `batch_no` bigint(45) NULL DEFAULT NULL COMMENT '批次号',
   `score_batch_no` bigint(45) NULL DEFAULT NULL COMMENT '打分任务发布批次号',
   `score_batch_no` bigint(45) NULL DEFAULT NULL COMMENT '打分任务发布批次号',
@@ -661,10 +676,10 @@ DROP TABLE IF EXISTS `param_setting`;
 CREATE TABLE `param_setting`  (
 CREATE TABLE `param_setting`  (
   `id` bigint(10) NOT NULL AUTO_INCREMENT,
   `id` bigint(10) NOT NULL AUTO_INCREMENT,
   `work_id` bigint(10) NULL DEFAULT NULL COMMENT '工作id',
   `work_id` bigint(10) NULL DEFAULT NULL COMMENT '工作id',
-  `collect_config` mediumtext CHARACTER SET utf8 COLLATE utf8_general_ci NULL COMMENT '采集规则参数',
-  `level_config` mediumtext CHARACTER SET utf8 COLLATE utf8_general_ci NULL COMMENT '细分档规则参数',
-  `rough_level_config` mediumtext CHARACTER SET utf8 COLLATE utf8_general_ci NULL COMMENT '粗分档规则参数',
-  `score_config` mediumtext CHARACTER SET utf8 COLLATE utf8_general_ci NULL COMMENT '打分规则参数',
+  `collect_config` VARCHAR(1000) CHARACTER SET utf8 COLLATE utf8_general_ci NULL COMMENT '采集规则参数',
+  `level_config` VARCHAR(1000) CHARACTER SET utf8 COLLATE utf8_general_ci NULL COMMENT '细分档规则参数',
+  `rough_level_config` VARCHAR(1000) CHARACTER SET utf8 COLLATE utf8_general_ci NULL COMMENT '粗分档规则参数',
+  `score_config` VARCHAR(500) CHARACTER SET utf8 COLLATE utf8_general_ci NULL COMMENT '打分规则参数',
   PRIMARY KEY (`id`) USING BTREE
   PRIMARY KEY (`id`) USING BTREE
 ) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '参数设置' ROW_FORMAT = Dynamic;
 ) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '参数设置' ROW_FORMAT = Dynamic;
 
 
@@ -702,9 +717,9 @@ CREATE TABLE `task_publish_setting`  (
   `code` varchar(45) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '档位',
   `code` varchar(45) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '档位',
   `total_count` int(11) NULL DEFAULT NULL COMMENT '总数量',
   `total_count` int(11) NULL DEFAULT NULL COMMENT '总数量',
   `success_count` int(11) NULL DEFAULT NULL COMMENT '已评数量',
   `success_count` int(11) NULL DEFAULT NULL COMMENT '已评数量',
-  `wait_count` varchar(45) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '待评数量',
-  `sort_rule` tinyint(1) NULL DEFAULT NULL COMMENT '排序规则:0-乱序,1-定序',
-  `display_number` tinyint(1) NULL DEFAULT NULL COMMENT '是否显示序号:0-否,1-是',
+  `wait_count` INT(11) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '待评数量',
+  `sort_rule` int(1) NULL DEFAULT NULL COMMENT '排序规则:0-乱序,1-定序',
+  `display_number` int(1) NULL DEFAULT NULL COMMENT '是否显示序号:0-否,1-是',
   `task_count` int(11) NULL DEFAULT NULL COMMENT '本次任务数',
   `task_count` int(11) NULL DEFAULT NULL COMMENT '本次任务数',
   `batch_no` bigint(45) NULL DEFAULT NULL,
   `batch_no` bigint(45) NULL DEFAULT NULL,
   `publish_count` int(3) NULL DEFAULT NULL,
   `publish_count` int(3) NULL DEFAULT NULL,

+ 17 - 1
stmms-ms-admin/src/main/java/cn/com/qmth/stmms/ms/admin/api/CheckDataApi.java

@@ -1,10 +1,14 @@
 package cn.com.qmth.stmms.ms.admin.api;
 package cn.com.qmth.stmms.ms.admin.api;
 
 
+import cn.com.qmth.stmms.ms.commons.utils.specification.PagingAndSortingDTO;
 import cn.com.qmth.stmms.ms.core.domain.CheckData;
 import cn.com.qmth.stmms.ms.core.domain.CheckData;
 import cn.com.qmth.stmms.ms.core.domain.enums.CheckDataStatusEnum;
 import cn.com.qmth.stmms.ms.core.domain.enums.CheckDataStatusEnum;
 import cn.com.qmth.stmms.ms.core.domain.enums.CheckItemEnum;
 import cn.com.qmth.stmms.ms.core.domain.enums.CheckItemEnum;
+import cn.com.qmth.stmms.ms.core.domain.user.CheckDataError;
 import cn.com.qmth.stmms.ms.core.repository.CheckDataRepo;
 import cn.com.qmth.stmms.ms.core.repository.CheckDataRepo;
 import cn.com.qmth.stmms.ms.marking.service.CheckDataService;
 import cn.com.qmth.stmms.ms.marking.service.CheckDataService;
+import org.springframework.data.domain.Page;
+import org.springframework.data.domain.Pageable;
 import org.springframework.web.bind.annotation.*;
 import org.springframework.web.bind.annotation.*;
 
 
 import javax.annotation.Resource;
 import javax.annotation.Resource;
@@ -40,7 +44,7 @@ public class CheckDataApi {
      * @param checkItem  数据类型
      * @param checkItem  数据类型
      * @param paramValue 变量参数
      * @param paramValue 变量参数
      */
      */
-    @RequestMapping(value = "/check", method = RequestMethod.POST)
+    @PostMapping("/check")
     public Object check(@RequestParam Long workId,
     public Object check(@RequestParam Long workId,
                         @RequestParam CheckItemEnum checkItem,
                         @RequestParam CheckItemEnum checkItem,
                         @RequestParam(required = false) Integer paramValue) {
                         @RequestParam(required = false) Integer paramValue) {
@@ -60,4 +64,16 @@ public class CheckDataApi {
 
 
         return true;
         return true;
     }
     }
+
+    /**
+     * 错误列表
+     *
+     * @param checkDataId 数据校验项ID
+     */
+    @GetMapping("/page_error")
+    public PagingAndSortingDTO page(Long checkDataId, Pageable pageable) {
+        Page<CheckDataError> result = checkDataService.pageError(checkDataId, pageable);
+        return new PagingAndSortingDTO(result.getNumber(), result.getSize(), result.getTotalPages(),
+                result.getTotalElements(), result.getContent());
+    }
 }
 }

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

@@ -101,10 +101,15 @@ public class PaperExporter {
         //科目名称
         //科目名称
         String subjectName = Objects.isNull(markSubject) ? subject.name() : markSubject.getName();
         String subjectName = Objects.isNull(markSubject) ? subject.name() : markSubject.getName();
         List<OneClickExpDTO> oneClickExpDTOS = new ArrayList<>();
         List<OneClickExpDTO> oneClickExpDTOS = new ArrayList<>();
-        List<Paper> papers = paperRepo.findByWorkIdAndSubjectAndIsOneClickTrue(workId, subject);
+        List<Paper> papers = null;
+        if(MarkStage.ROUGH_LEVEL.equals(markSubject.getStage())){
+            papers = paperRepo.findByWorkIdAndSubjectAndIsRoughOneClickTrue(workId, subject);
+        } else if(MarkStage.LEVEL.equals(markSubject.getStage())){
+            papers = paperRepo.findByWorkIdAndSubjectAndIsOneClickTrue(workId, subject);
+        }
         if (papers != null && papers.size() > 0) {
         if (papers != null && papers.size() > 0) {
             List<Long> paperIds = papers.stream().map(Paper::getId).collect(Collectors.toList());
             List<Long> paperIds = papers.stream().map(Paper::getId).collect(Collectors.toList());
-            List<MarkLog> markLogs = markLogRepo.findByWorkIdAndSubjectAndOperTypeAndPaperIdIn(workId, subject.name(), MarkLogOperType.ONE_CLICK_LEVEl.getId(), paperIds);
+            List<MarkLog> markLogs = markLogRepo.findByWorkIdAndSubjectAndStageAndTestAndOperTypeAndPaperIdIn(workId, subject.name(), markSubject.getStage(), markSubject.getTest(), MarkLogOperType.ONE_CLICK_LEVEl.getId(), paperIds);
             for (int i = 0; i < markLogs.size(); i++) {
             for (int i = 0; i < markLogs.size(); i++) {
                 MarkLog markLog = markLogs.get(i);
                 MarkLog markLog = markLogs.get(i);
                 OneClickExpDTO oneClickExpDTO = new OneClickExpDTO();
                 OneClickExpDTO oneClickExpDTO = new OneClickExpDTO();

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

@@ -46,17 +46,17 @@ public class StudentExporter {
                     //色彩
                     //色彩
                     if (str.contains("SC")) {
                     if (str.contains("SC")) {
                         String[] strings = str.split(":");
                         String[] strings = str.split(":");
-                        studentExpDTO.setSc("0".equals(strings[1]) ? "缺考" : "");
+                        studentExpDTO.setSc("0".equals(strings[1]) ? "缺考" : "已上传");
                     }
                     }
                     //素描
                     //素描
                     if (str.contains("SM")) {
                     if (str.contains("SM")) {
                         String[] strings = str.split(":");
                         String[] strings = str.split(":");
-                        studentExpDTO.setSm("0".equals(strings[1]) ? "缺考" : "");
+                        studentExpDTO.setSm("0".equals(strings[1]) ? "缺考" : "已上传");
                     }
                     }
                     //速写
                     //速写
                     if (str.contains("SX")) {
                     if (str.contains("SX")) {
                         String[] strings = str.split(":");
                         String[] strings = str.split(":");
-                        studentExpDTO.setSx("0".equals(strings[1]) ? "缺考" : "");
+                        studentExpDTO.setSx("0".equals(strings[1]) ? "缺考" : "已上传");
                     }
                     }
                 }
                 }
                 list.add(studentExpDTO);
                 list.add(studentExpDTO);

+ 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.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(), paper.getLevel(), level, "系统批量调档", new Date());
                 markLogs.add(markLog);
                 markLogs.add(markLog);
 
 
                 // 有档位变动的试卷
                 // 有档位变动的试卷

+ 8 - 4
stmms-ms-admin/src/main/java/cn/com/qmth/stmms/ms/admin/service/TrialService.java

@@ -2,15 +2,13 @@ package cn.com.qmth.stmms.ms.admin.service;
 
 
 import cn.com.qmth.stmms.ms.commons.utils.DbBackupUtils;
 import cn.com.qmth.stmms.ms.commons.utils.DbBackupUtils;
 import cn.com.qmth.stmms.ms.core.cache.CacheService;
 import cn.com.qmth.stmms.ms.core.cache.CacheService;
-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.Work;
+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.user.MarkUser;
 import cn.com.qmth.stmms.ms.core.domain.user.MarkUser;
 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.*;
 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.MarkLogService;
 import cn.com.qmth.stmms.ms.marking.service.StageControlService;
 import cn.com.qmth.stmms.ms.marking.service.StageControlService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.stereotype.Service;
@@ -73,6 +71,9 @@ public class TrialService {
     @Resource
     @Resource
     MarkerGroupStudentRepo markerGroupStudentRepo;
     MarkerGroupStudentRepo markerGroupStudentRepo;
 
 
+    @Resource
+    MarkLogService markLogService;
+
     /**
     /**
      * 检查任务状态
      * 检查任务状态
      *
      *
@@ -194,6 +195,9 @@ public class TrialService {
         markerGroupRepo.deleteByWorkIdAndSubjectAndStage(workId, subject, markSubject.getStage());
         markerGroupRepo.deleteByWorkIdAndSubjectAndStage(workId, subject, markSubject.getStage());
         markerGroupLeaderRepo.deleteByWorkIdAndSubjectAndStage(workId, subject, markSubject.getStage());
         markerGroupLeaderRepo.deleteByWorkIdAndSubjectAndStage(workId, subject, markSubject.getStage());
 
 
+        // 删除一键定档日志
+//        markLogService.deleteByWorkIdAndSubjectAndStageAndTestAndOperType(workId, subject.name(), markSubject.getStage(), markSubject.getTest(), MarkLogOperType.ONE_CLICK_LEVEl.getId());
+
         // 所有用户强制退出
         // 所有用户强制退出
         List<MarkUser> userList = markUserRepo.findByWorkIdAndSubject(workId, subject);
         List<MarkUser> userList = markUserRepo.findByWorkIdAndSubject(workId, subject);
         userList = userList.stream().filter(m -> Role.MARKER.equals(m.getRole()) || Role.MARK_LEADER.equals(m.getRole())).collect(Collectors.toList());
         userList = userList.stream().filter(m -> Role.MARKER.equals(m.getRole()) || Role.MARK_LEADER.equals(m.getRole())).collect(Collectors.toList());

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

@@ -64,11 +64,15 @@ public class MarkLog implements Serializable {
     private Long paperId;
     private Long paperId;
     //    @ApiModelProperty(value = "备注")
     //    @ApiModelProperty(value = "备注")
     private String remark;
     private String remark;
+
     @NotNull
     @NotNull
     @Enumerated(value = EnumType.ORDINAL)
     @Enumerated(value = EnumType.ORDINAL)
-//    @ApiModelProperty(value = "阶段", example = "3")
     private MarkStage stage;
     private MarkStage stage;
 
 
+    @Basic
+    @Column(name = "is_test")
+    private int test;
+
     @Transient
     @Transient
     private String stageName;
     private String stageName;
 
 
@@ -82,7 +86,7 @@ public class MarkLog implements Serializable {
 
 
     }
     }
 
 
-    public MarkLog(Long workId, String workName, Long paperId, Subject subject, MarkStage stage,
+    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 operDataBefore, String operDataAfter, String remark, Date date) {
         this.workId = workId;
         this.workId = workId;
@@ -90,6 +94,7 @@ public class MarkLog implements Serializable {
         this.paperId = paperId;
         this.paperId = paperId;
         this.subject = subject.toString();
         this.subject = subject.toString();
         this.stage = stage;
         this.stage = stage;
+        this.test = test;
         this.examNumber = examNumber;
         this.examNumber = examNumber;
         this.studentName = studentName;
         this.studentName = studentName;
         this.createUserId = createUserId;
         this.createUserId = createUserId;
@@ -288,4 +293,12 @@ public class MarkLog implements Serializable {
     public void setStageName(String stageName) {
     public void setStageName(String stageName) {
         this.stageName = stageName;
         this.stageName = stageName;
     }
     }
+
+    public int getTest() {
+        return test;
+    }
+
+    public void setTest(int test) {
+        this.test = test;
+    }
 }
 }

+ 73 - 0
stmms-ms-core/src/main/java/cn/com/qmth/stmms/ms/core/domain/user/CheckDataError.java

@@ -0,0 +1,73 @@
+package cn.com.qmth.stmms.ms.core.domain.user;
+
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.Id;
+import javax.persistence.Table;
+
+@Entity
+@Table(name = "check_data_error")
+public class CheckDataError {
+
+    @Id
+    @GeneratedValue
+    private Long id;
+
+    private Long checkDataId;
+
+    private String examNumber;
+
+    private String studentName;
+
+    private String errorMessage;
+
+    public CheckDataError() {
+    }
+
+    public CheckDataError(Long checkDataId, String examNumber, String studentName, String errorMessage) {
+        this.checkDataId = checkDataId;
+        this.examNumber = examNumber;
+        this.studentName = studentName;
+        this.errorMessage = errorMessage;
+    }
+
+    public Long getId() {
+        return id;
+    }
+
+    public void setId(Long id) {
+        this.id = id;
+    }
+
+    public Long getCheckDataId() {
+        return checkDataId;
+    }
+
+    public void setCheckDataId(Long checkDataId) {
+        this.checkDataId = checkDataId;
+    }
+
+    public String getExamNumber() {
+        return examNumber;
+    }
+
+    public void setExamNumber(String examNumber) {
+        this.examNumber = examNumber;
+    }
+
+    public String getStudentName() {
+        return studentName;
+    }
+
+    public void setStudentName(String studentName) {
+        this.studentName = studentName;
+    }
+
+    public String getErrorMessage() {
+        return errorMessage;
+    }
+
+    public void setErrorMessage(String errorMessage) {
+        this.errorMessage = errorMessage;
+    }
+}

+ 10 - 0
stmms-ms-core/src/main/java/cn/com/qmth/stmms/ms/core/repository/CheckDataErrorRepo.java

@@ -0,0 +1,10 @@
+package cn.com.qmth.stmms.ms.core.repository;
+
+import cn.com.qmth.stmms.ms.core.domain.user.CheckDataError;
+import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
+
+public interface CheckDataErrorRepo extends JpaRepository<CheckDataError, Long>, JpaSpecificationExecutor {
+
+    void deleteByCheckDataId(Long checkDataId);
+}

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

@@ -9,6 +9,7 @@ import org.springframework.data.domain.Page;
 import org.springframework.data.domain.Pageable;
 import org.springframework.data.domain.Pageable;
 import org.springframework.data.jpa.repository.JpaRepository;
 import org.springframework.data.jpa.repository.JpaRepository;
 import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
 import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
+import org.springframework.data.jpa.repository.Modifying;
 import org.springframework.data.jpa.repository.Query;
 import org.springframework.data.jpa.repository.Query;
 import org.springframework.data.repository.query.Param;
 import org.springframework.data.repository.query.Param;
 import org.springframework.stereotype.Repository;
 import org.springframework.stereotype.Repository;
@@ -41,7 +42,7 @@ public interface MarkLogRepo extends JpaRepository<MarkLog, Long>, JpaSpecificat
     @Query("select s.createUserName as createUserName, max(s.id) as id from MarkLog s where s.createRole = '采集员' and s.workId = ?1 group by s.createUserName")
     @Query("select s.createUserName as createUserName, max(s.id) as id from MarkLog s where s.createRole = '采集员' and s.workId = ?1 group by s.createUserName")
     List<Map> findByWorkId(@Param("workId") Long workId);
     List<Map> findByWorkId(@Param("workId") Long workId);
 
 
-    List<MarkLog> findByWorkIdAndSubjectAndOperTypeAndPaperIdIn(Long workId, String subject, Integer operType, List<Long> paperIds);
+    List<MarkLog> findByWorkIdAndSubjectAndStageAndTestAndOperTypeAndPaperIdIn(Long workId, String subject, MarkStage stage, int test, Integer operType, List<Long> paperIds);
 
 
     Page<Map> findByIdIn(List<Long> longs, Pageable pageable);
     Page<Map> findByIdIn(List<Long> longs, Pageable pageable);
 
 
@@ -51,4 +52,8 @@ public interface MarkLogRepo extends JpaRepository<MarkLog, Long>, JpaSpecificat
     MarkLog findTopByStageAndCreateUserIdAndOperTypeAndSubjectAndExamNumberOrderByCreateTimeDesc(MarkStage stage, Long markerId, int id, String toString, String examNumber);
     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);
 }
 }

+ 5 - 0
stmms-ms-core/src/main/java/cn/com/qmth/stmms/ms/core/repository/MarkerGroupStudentRepo.java

@@ -30,4 +30,9 @@ public interface MarkerGroupStudentRepo extends JpaRepository<MarkerGroupStudent
     @Modifying
     @Modifying
     @Query("delete from MarkerGroupStudent s where s.workId = ?1 and s.subject = ?2 and s.stage = ?3 and s.used = ?4")
     @Query("delete from MarkerGroupStudent s where s.workId = ?1 and s.subject = ?2 and s.stage = ?3 and s.used = ?4")
     void deleteByWorkIdAndSubjectAndStageAndUsed(Long workId, Subject subject, MarkStage stage, boolean used);
     void deleteByWorkIdAndSubjectAndStageAndUsed(Long workId, Subject subject, MarkStage stage, boolean used);
+
+    @Transactional
+    @Modifying
+    @Query("delete from MarkerGroupStudent s where s.workId = ?1 and s.subject = ?2 and s.stage = ?3")
+    void deleteByWorkIdAndSubjectAndStage(Long workId, Subject subject, MarkStage stage);
 }
 }

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

@@ -239,6 +239,8 @@ public interface PaperRepo extends JpaRepository<Paper, Long>, JpaSpecificationE
     @Query("select max(p.scoreBatchNo) from Paper p where p.questionId = ?1")
     @Query("select max(p.scoreBatchNo) from Paper p where p.questionId = ?1")
     Long findScoreBatchNoByQuestionId(Long questionId);
     Long findScoreBatchNoByQuestionId(Long questionId);
 
 
+    List<Paper> findByWorkIdAndSubjectAndIsRoughOneClickTrue(Long workId, Subject subject);
+
     List<Paper> findByWorkIdAndSubjectAndIsOneClickTrue(Long workId, Subject subject);
     List<Paper> findByWorkIdAndSubjectAndIsOneClickTrue(Long workId, Subject subject);
 
 
     @Query(value = "SELECT p.`score`,SUM(IF(p.`is_shift` = 0, 1, 0))," +
     @Query(value = "SELECT p.`score`,SUM(IF(p.`is_shift` = 0, 1, 0))," +

+ 4 - 5
stmms-ms-log/src/main/java/cn/com/qmth/stmms/ms/log/aop/MarkLogAop.java

@@ -21,7 +21,6 @@ import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
 import com.alibaba.fastjson.JSONObject;
 import org.apache.commons.lang.StringUtils;
 import org.apache.commons.lang.StringUtils;
 import org.aspectj.lang.JoinPoint;
 import org.aspectj.lang.JoinPoint;
-import org.aspectj.lang.annotation.AfterReturning;
 import org.aspectj.lang.annotation.Aspect;
 import org.aspectj.lang.annotation.Aspect;
 import org.aspectj.lang.annotation.Pointcut;
 import org.aspectj.lang.annotation.Pointcut;
 import org.slf4j.Logger;
 import org.slf4j.Logger;
@@ -177,7 +176,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.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, 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);
@@ -287,7 +286,7 @@ public class MarkLogAop {
             }
             }
         }
         }
         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.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, 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);
@@ -359,7 +358,7 @@ public class MarkLogAop {
                                     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.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(), operResult, String.valueOf(d.getC()), MarkLogOperType.SYSTEM_CALLBACK_LEVEl.getName(), date);
                                 markLogList.add(markLog);
                                 markLogList.add(markLog);
                             }
                             }
                         }
                         }
@@ -423,7 +422,7 @@ public class MarkLogAop {
                                     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.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(), operResult, String.valueOf(d.getC()), MarkLogOperType.SYSTEM_CALLBACK_LEVEl.getName(), date);
                                 markLogList.add(markLog);
                                 markLogList.add(markLog);
                             }
                             }
                         }
                         }

+ 2 - 2
stmms-ms-main/src/main/resources/application-dev.properties

@@ -27,7 +27,7 @@ logging.level.org.springframework=info
 logging.level.org.hibernate=info
 logging.level.org.hibernate=info
 
 
 spring.jpa.show-sql=true
 spring.jpa.show-sql=true
-spring.jpa.hibernate.ddl-auto=update
+spring.jpa.hibernate.ddl-auto=validate
 
 
 spring.jackson.date-format=yyyy-MM-dd HH:mm:ss
 spring.jackson.date-format=yyyy-MM-dd HH:mm:ss
 spring.jackson.time-zone=GMT+8
 spring.jackson.time-zone=GMT+8
@@ -60,7 +60,7 @@ sys.open.customSubject=false
 
 
 sys.config.compression.percent=60
 sys.config.compression.percent=60
 sys.config.imageServer.port=9000
 sys.config.imageServer.port=9000
-sys.config.imageServer.ip=192.168.10.140
+sys.config.imageServer.ip=localhost
 sys.config.imageServer.aliyunOss=false
 sys.config.imageServer.aliyunOss=false
 sys.config.imageServer.dir=ms-test
 sys.config.imageServer.dir=ms-test
 
 

+ 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.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(), changeLevel.getOriginalLevel(), changeLevel.getSuggestLevel(), MarkLogOperType.CHANGE_LEVEL_APPLY.getName(), 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.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(), changeLevel.getOriginalLevel(), changeLevel.getSuggestLevel(), MarkLogOperType.CHANGE_LEVEL_AGREE.getName(), new Date());
             markLogRepo.save(markLog);
             markLogRepo.save(markLog);
 
 
             if (MarkStage.LEVEL.equals(changeLevel.getStage())) {
             if (MarkStage.LEVEL.equals(changeLevel.getStage())) {

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

@@ -516,6 +516,8 @@ public class MakrerApi {
             //求任务数为null的条数
             //求任务数为null的条数
 //            int totalCount = markTaskLevelRepo.countScoreByQuestionIdAndMarkerIdAndStageAndResultIsNull(questionId, marker.getId(), MarkStage.LEVEL.ordinal(), batchNo);
 //            int totalCount = markTaskLevelRepo.countScoreByQuestionIdAndMarkerIdAndStageAndResultIsNull(questionId, marker.getId(), MarkStage.LEVEL.ordinal(), batchNo);
 //            levelStatDTO.setCount(totalCount);
 //            levelStatDTO.setCount(totalCount);
+            levelStatDTO.setCount(0);
+            levelStatDTO.setRejected(0);
             //查询改档
             //查询改档
             int shiftCount = markTaskRoughLevelRepo.countShiftByQuestionIdAndMarkerIdAndStageAndResultIsNullAndIsMissing(questionId, marker.getId(), MarkStage.ROUGH_LEVEL.ordinal(), false);
             int shiftCount = markTaskRoughLevelRepo.countShiftByQuestionIdAndMarkerIdAndStageAndResultIsNullAndIsMissing(questionId, marker.getId(), MarkStage.ROUGH_LEVEL.ordinal(), false);
             levelStatDTO.setShift(shiftCount);
             levelStatDTO.setShift(shiftCount);

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

@@ -115,7 +115,6 @@ public class MarkTaskApi {
                             @RequestParam(required = false) Boolean isShiftScore,
                             @RequestParam(required = false) Boolean isShiftScore,
                             @RequestParam Long questionId,
                             @RequestParam Long questionId,
                             Pageable pageable) {
                             Pageable pageable) {
-
         if (MarkStage.LEVEL.equals(stage)) {
         if (MarkStage.LEVEL.equals(stage)) {
             return markTaskLevelService.shiftLevel(markerId, workId, isShift, isShiftScore, questionId, pageable);
             return markTaskLevelService.shiftLevel(markerId, workId, isShift, isShiftScore, questionId, pageable);
         } else if (MarkStage.SCORE.equals(stage)) {
         } else if (MarkStage.SCORE.equals(stage)) {
@@ -269,10 +268,12 @@ public class MarkTaskApi {
             List<Predicate> list = new ArrayList<>();
             List<Predicate> list = new ArrayList<>();
             if (MarkStage.ROUGH_LEVEL.equals(markSubject.getStage())) {
             if (MarkStage.ROUGH_LEVEL.equals(markSubject.getStage())) {
                 list.add(builder.equal(root.get("isRoughSample"), true));
                 list.add(builder.equal(root.get("isRoughSample"), true));
+                list.add(builder.equal(root.get("isRoughOneClick"), true));
             } else if (MarkStage.LEVEL.equals(markSubject.getStage())) {
             } else if (MarkStage.LEVEL.equals(markSubject.getStage())) {
                 list.add(builder.equal(root.get("isSample"), true));
                 list.add(builder.equal(root.get("isSample"), true));
+                list.add(builder.equal(root.get("isOneClick"), true));
             }
             }
-            list.add(builder.equal(root.get("isOneClick"), true));
+
             list.add(builder.equal(root.get("isRejectedByLeader"), true));
             list.add(builder.equal(root.get("isRejectedByLeader"), true));
             Predicate Pre_And = builder.and(predicates.toArray(new Predicate[predicates.size()]));
             Predicate Pre_And = builder.and(predicates.toArray(new Predicate[predicates.size()]));
             Predicate Pre_Or = builder.or(list.toArray(new Predicate[list.size()]));
             Predicate Pre_Or = builder.or(list.toArray(new Predicate[list.size()]));

+ 1 - 0
stmms-ms-marking/src/main/java/cn/com/qmth/stmms/ms/marking/assembler/MarkTaskRoughLevelAssembler.java

@@ -203,6 +203,7 @@ public class MarkTaskRoughLevelAssembler {
             }
             }
             markTaskDTO.setShift(paper.isShift());
             markTaskDTO.setShift(paper.isShift());
             markTaskDTO.setShiftScore(paper.isShiftScore());
             markTaskDTO.setShiftScore(paper.isShiftScore());
+            markTaskDTO.setMark(markTask.isMark());
         }
         }
         return markTaskDTO;
         return markTaskDTO;
     }
     }

+ 3 - 19
stmms-ms-marking/src/main/java/cn/com/qmth/stmms/ms/marking/assembler/PaperAssembler.java

@@ -6,17 +6,13 @@ import cn.com.qmth.stmms.ms.commons.constant.SystemConstant;
 import cn.com.qmth.stmms.ms.commons.utils.MD5Util;
 import cn.com.qmth.stmms.ms.commons.utils.MD5Util;
 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.*;
 import cn.com.qmth.stmms.ms.core.domain.*;
-import cn.com.qmth.stmms.ms.core.domain.task.MarkTaskLevel;
 import cn.com.qmth.stmms.ms.core.repository.*;
 import cn.com.qmth.stmms.ms.core.repository.*;
 import cn.com.qmth.stmms.ms.marking.dto.PaperDTO;
 import cn.com.qmth.stmms.ms.marking.dto.PaperDTO;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 import org.springframework.stereotype.Component;
 
 
 import javax.annotation.Resource;
 import javax.annotation.Resource;
-import java.util.List;
-import java.util.Map;
 import java.util.Objects;
 import java.util.Objects;
-import java.util.stream.Collectors;
 
 
 /**
 /**
  * Created by zhengmin on 2016/10/10.
  * Created by zhengmin on 2016/10/10.
@@ -40,7 +36,7 @@ public class PaperAssembler {
     private MarkSubjectRepo markSubjectRepo;
     private MarkSubjectRepo markSubjectRepo;
 
 
     @Autowired
     @Autowired
-    private LevelRepo levelRepo;
+    private ChangeLevelRepo changeLevelRepo;
 
 
     @Autowired
     @Autowired
     private MarkLogRepo markLogRepo;
     private MarkLogRepo markLogRepo;
@@ -115,20 +111,8 @@ public class PaperAssembler {
             int rejectedCount = markLogRepo.countByWorkIdAndPaperIdAndOperType(paper.getWorkId(), paper.getId(), MarkLogOperType.CALLBACK_LEVEl.getId());
             int rejectedCount = markLogRepo.countByWorkIdAndPaperIdAndOperType(paper.getWorkId(), paper.getId(), MarkLogOperType.CALLBACK_LEVEl.getId());
             paperDTO.setRejectedCount(rejectedCount);
             paperDTO.setRejectedCount(rejectedCount);
             paperDTO.setSortSum(paper.getSortNum());
             paperDTO.setSortSum(paper.getSortNum());
-            //计算levelValue和(试评阶段不用)
-//            if (markSubject.getTest() == 0 && Objects.nonNull(paper.getLevel())) {
-//                if (paper.isSample()) {
-//                    paperDTO.setSortSum(0);
-//                } else {
-//                    List<Level> levels = levelRepo.findByWorkId(paper.getWorkId());
-//                    if (!levels.isEmpty()) {
-//                        Map<String, Integer> map = levels.stream().collect(Collectors.toMap(Level::getCode, Level::getWeight));
-//                        List<MarkTaskLevel> markTaskList = markTaskLevelRepo.findByPaperIdAndStage(paper.getId(), MarkStage.LEVEL);
-//                        int sum = markTaskList.stream().mapToInt(m -> map.get(m.getResult()) == null ? 0 : map.get(m.getResult())).sum();
-//                        paperDTO.setSortSum(sum);
-//                    }
-//                }
-//            }
+            ChangeLevel changeLevel = changeLevelRepo.findByWorkIdAndSubjectAndPaperIdAndAuditStatusAndIsCurr(paper.getWorkId(), paper.getSubject().name(), paper.getId());
+            paperDTO.setOriginLevel(changeLevel != null ? changeLevel.getOriginalLevel() : "");
         }
         }
         return paperDTO;
         return paperDTO;
     }
     }

+ 9 - 0
stmms-ms-marking/src/main/java/cn/com/qmth/stmms/ms/marking/dto/PaperDTO.java

@@ -19,6 +19,7 @@ public class PaperDTO implements Serializable{
     private String examNumber;
     private String examNumber;
     private String level;
     private String level;
     private String roughLevel;
     private String roughLevel;
+    private String originLevel;
     private Integer score;
     private Integer score;
     private boolean isArbitrated;
     private boolean isArbitrated;
     private boolean isRejected;
     private boolean isRejected;
@@ -402,4 +403,12 @@ public class PaperDTO implements Serializable{
     public void setRoughLevel(String roughLevel) {
     public void setRoughLevel(String roughLevel) {
         this.roughLevel = roughLevel;
         this.roughLevel = roughLevel;
     }
     }
+
+    public String getOriginLevel() {
+        return originLevel;
+    }
+
+    public void setOriginLevel(String originLevel) {
+        this.originLevel = originLevel;
+    }
 }
 }

+ 62 - 37
stmms-ms-marking/src/main/java/cn/com/qmth/stmms/ms/marking/service/CheckDataService.java

@@ -7,16 +7,19 @@ 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.Paper;
 import cn.com.qmth.stmms.ms.core.domain.enums.CheckDataStatusEnum;
 import cn.com.qmth.stmms.ms.core.domain.enums.CheckDataStatusEnum;
 import cn.com.qmth.stmms.ms.core.domain.enums.CheckItemEnum;
 import cn.com.qmth.stmms.ms.core.domain.enums.CheckItemEnum;
-import cn.com.qmth.stmms.ms.core.repository.CheckDataRepo;
-import cn.com.qmth.stmms.ms.core.repository.LevelRepo;
-import cn.com.qmth.stmms.ms.core.repository.MarkSubjectRepo;
-import cn.com.qmth.stmms.ms.core.repository.PaperRepo;
-import com.alibaba.fastjson.JSON;
-import com.alibaba.fastjson.JSONObject;
+import cn.com.qmth.stmms.ms.core.domain.user.CheckDataError;
+import cn.com.qmth.stmms.ms.core.repository.*;
+import org.springframework.data.domain.Page;
+import org.springframework.data.domain.PageRequest;
+import org.springframework.data.domain.Pageable;
+import org.springframework.data.domain.Sort;
+import org.springframework.data.jpa.domain.Specification;
 import org.springframework.scheduling.annotation.Async;
 import org.springframework.scheduling.annotation.Async;
 import org.springframework.stereotype.Service;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
 
 
 import javax.annotation.Resource;
 import javax.annotation.Resource;
+import javax.persistence.criteria.Predicate;
 import java.io.File;
 import java.io.File;
 import java.util.*;
 import java.util.*;
 import java.util.function.Function;
 import java.util.function.Function;
@@ -42,6 +45,9 @@ public class CheckDataService {
     @Resource
     @Resource
     LevelRepo levelRepo;
     LevelRepo levelRepo;
 
 
+    @Resource
+    CheckDataErrorRepo checkDataErrorRepo;
+
     /**
     /**
      * 异步任务做检查
      * 异步任务做检查
      *
      *
@@ -54,9 +60,10 @@ public class CheckDataService {
         checkDataRepo.saveAndFlush(checkData);
         checkDataRepo.saveAndFlush(checkData);
 
 
         int errorCount = 0;
         int errorCount = 0;
-        List<JSONObject> list = null;
+        List<CheckDataError> list = null;
         String content = null;
         String content = null;
         try {
         try {
+            Long checkDataId = checkData.getId();
             Long workId = checkData.getWorkId();
             Long workId = checkData.getWorkId();
             if (CheckItemEnum.PAPER_SIZE.equals(checkData.getCheckItem())) {
             if (CheckItemEnum.PAPER_SIZE.equals(checkData.getCheckItem())) {
                 errorCount = checkPaperSize(workId);
                 errorCount = checkPaperSize(workId);
@@ -76,17 +83,14 @@ public class CheckDataService {
                     content = stringJoiner.toString();
                     content = stringJoiner.toString();
                 }
                 }
             } else if (CheckItemEnum.LEVEL_SCORE_MATCH.equals(checkData.getCheckItem())) {
             } else if (CheckItemEnum.LEVEL_SCORE_MATCH.equals(checkData.getCheckItem())) {
-                list = checkLevelScoreMatch(workId);
+                list = checkLevelScoreMatch(checkDataId, workId);
                 errorCount = list.size();
                 errorCount = list.size();
-                content = JSON.toJSONString(list);
             } else if (CheckItemEnum.LEVEL_DIFF.equals(checkData.getCheckItem())) {
             } else if (CheckItemEnum.LEVEL_DIFF.equals(checkData.getCheckItem())) {
-                list = checkDiff(workId, checkData.getParamValue(), true);
+                list = checkDiff(checkDataId, workId, checkData.getParamValue(), true);
                 errorCount = list.size();
                 errorCount = list.size();
-                content = JSON.toJSONString(list);
             } else if (CheckItemEnum.SCORE_DIFF.equals(checkData.getCheckItem())) {
             } else if (CheckItemEnum.SCORE_DIFF.equals(checkData.getCheckItem())) {
-                list = checkDiff(workId, checkData.getParamValue(), false);
+                list = checkDiff(checkDataId, workId, checkData.getParamValue(), false);
                 errorCount = list.size();
                 errorCount = list.size();
-                content = JSON.toJSONString(list);
             } else {
             } else {
                 throw new RuntimeException("没有此类型任务");
                 throw new RuntimeException("没有此类型任务");
             }
             }
@@ -98,7 +102,31 @@ public class CheckDataService {
             checkData.setErrorCount(errorCount);
             checkData.setErrorCount(errorCount);
             checkData.setContent(content);
             checkData.setContent(content);
             checkData.setEndTime(new Date());
             checkData.setEndTime(new Date());
-            checkDataRepo.saveAndFlush(checkData);
+            saveData(checkData, list);
+        }
+    }
+
+    @Transactional
+    public void saveData(CheckData checkData, List<CheckDataError> list) {
+        checkDataRepo.saveAndFlush(checkData);
+
+        // 清除
+        checkDataErrorRepo.deleteByCheckDataId(checkData.getId());
+        // 插入新数据
+        if (list != null && !list.isEmpty()) {
+            List<CheckDataError> data = new ArrayList<>();
+            //2000条提交一次
+            for (CheckDataError checkDataError : list) {
+                if (data.size() == 2000) {
+                    checkDataErrorRepo.save(data);
+                    data.clear();
+                }
+                data.add(checkDataError);
+            }
+            //将剩下的数据也导入
+            if (!data.isEmpty()) {
+                checkDataErrorRepo.save(data);
+            }
         }
         }
     }
     }
 
 
@@ -150,10 +178,10 @@ public class CheckDataService {
      *
      *
      * @param workId 工作ID
      * @param workId 工作ID
      */
      */
-    private List<JSONObject> checkLevelScoreMatch(Long workId) {
+    private List<CheckDataError> checkLevelScoreMatch(Long checkDataId, Long workId) {
         List<MarkSubject> markSubjects = markSubjectRepo.findAllByWorkIdAndEnableTrue(workId);
         List<MarkSubject> markSubjects = markSubjectRepo.findAllByWorkIdAndEnableTrue(workId);
         List<Paper> paperList = paperRepo.findByWorkIdAndIsMissing(workId, false);
         List<Paper> paperList = paperRepo.findByWorkIdAndIsMissing(workId, false);
-        List<JSONObject> list = new ArrayList<>();
+        List<CheckDataError> list = new ArrayList<>();
         if (paperList != null && !paperList.isEmpty()) {
         if (paperList != null && !paperList.isEmpty()) {
             // 多科目,先按准考证号+考生姓名分组
             // 多科目,先按准考证号+考生姓名分组
             Map<String, List<Paper>> collect = paperList.stream().collect(Collectors.groupingBy(m -> m.getExamNumber() + SEPARATE + m.getStudentName()));
             Map<String, List<Paper>> collect = paperList.stream().collect(Collectors.groupingBy(m -> m.getExamNumber() + SEPARATE + m.getStudentName()));
@@ -198,7 +226,7 @@ public class CheckDataService {
                 }
                 }
 
 
                 if (stringJoiner.toString().length() > 1) {
                 if (stringJoiner.toString().length() > 1) {
-                    list.add(assembleErrorData(strings[0], strings[1], stringJoiner.toString()));
+                    list.add(new CheckDataError(checkDataId, strings[0], strings[1], stringJoiner.toString()));
                 }
                 }
             }
             }
         }
         }
@@ -212,7 +240,7 @@ public class CheckDataService {
      * @param paramValue 变量参数值
      * @param paramValue 变量参数值
      * @param isLevel    是否校验档位
      * @param isLevel    是否校验档位
      */
      */
-    private List<JSONObject> checkDiff(Long workId, int paramValue, boolean isLevel) {
+    private List<CheckDataError> checkDiff(Long checkDataId, Long workId, int paramValue, boolean isLevel) {
         List<MarkSubject> markSubjects = markSubjectRepo.findAllByWorkIdAndEnableTrue(workId);
         List<MarkSubject> markSubjects = markSubjectRepo.findAllByWorkIdAndEnableTrue(workId);
         Map<String, Level> levelMap = new HashMap<>();
         Map<String, Level> levelMap = new HashMap<>();
         if (isLevel) {
         if (isLevel) {
@@ -222,18 +250,18 @@ public class CheckDataService {
 
 
         List<Paper> paperList = paperRepo.findByWorkIdAndIsMissing(workId, false);
         List<Paper> paperList = paperRepo.findByWorkIdAndIsMissing(workId, false);
         Map<String, List<Paper>> collect = paperList.stream().collect(Collectors.groupingBy(m -> m.getExamNumber() + SEPARATE + m.getStudentName()));
         Map<String, List<Paper>> collect = paperList.stream().collect(Collectors.groupingBy(m -> m.getExamNumber() + SEPARATE + m.getStudentName()));
-        List<JSONObject> list = new ArrayList<>();
+        List<CheckDataError> list = new ArrayList<>();
         for (Map.Entry<String, List<Paper>> entry : collect.entrySet()) {
         for (Map.Entry<String, List<Paper>> entry : collect.entrySet()) {
             String key = entry.getKey();
             String key = entry.getKey();
             String[] strings = key.split(SEPARATE);
             String[] strings = key.split(SEPARATE);
             List<Paper> papers = entry.getValue();
             List<Paper> papers = entry.getValue();
             // 只考部分科目,校验不通过
             // 只考部分科目,校验不通过
             if (papers.size() != markSubjects.size()) {
             if (papers.size() != markSubjects.size()) {
-                list.add(assembleErrorData(strings[0], strings[1], "只考" + papers.size() + "科,无法校验"));
+                list.add(new CheckDataError(checkDataId, strings[0], strings[1], "只考" + papers.size() + "科,无法校验"));
             } else {
             } else {
                 long noLevel = papers.stream().filter(m -> isLevel ? m.getLevel() == null : m.getScore() == null).count();
                 long noLevel = papers.stream().filter(m -> isLevel ? m.getLevel() == null : m.getScore() == null).count();
                 if (noLevel > 0) {
                 if (noLevel > 0) {
-                    list.add(assembleErrorData(strings[0], strings[1], "有" + noLevel + "科未" + (isLevel ? "分档" : "打分") + ",无法校验"));
+                    list.add(new CheckDataError(checkDataId, strings[0], strings[1], "有" + noLevel + "科未" + (isLevel ? "分档" : "打分") + ",无法校验"));
                 } else {
                 } else {
                     Map<String, Level> finalLevelMap = levelMap;
                     Map<String, Level> finalLevelMap = levelMap;
                     Map<String, Integer> integersMap = papers.stream().collect(Collectors.toMap(m -> m.getSubject().name(), m -> isLevel ? finalLevelMap.get(m.getLevel()).getLevelValue() : m.getScore().intValue()));
                     Map<String, Integer> integersMap = papers.stream().collect(Collectors.toMap(m -> m.getSubject().name(), m -> isLevel ? finalLevelMap.get(m.getLevel()).getLevelValue() : m.getScore().intValue()));
@@ -244,7 +272,7 @@ public class CheckDataService {
                         for (Map.Entry<String[], Integer> integerEntry : map.entrySet()) {
                         for (Map.Entry<String[], Integer> integerEntry : map.entrySet()) {
                             stringJoiner.add(String.format("%s相差%d", Arrays.toString(integerEntry.getKey()), integerEntry.getValue()));
                             stringJoiner.add(String.format("%s相差%d", Arrays.toString(integerEntry.getKey()), integerEntry.getValue()));
                         }
                         }
-                        list.add(assembleErrorData(strings[0], strings[1], stringJoiner.toString()));
+                        list.add(new CheckDataError(checkDataId, strings[0], strings[1], stringJoiner.toString()));
                     }
                     }
                 }
                 }
             }
             }
@@ -276,21 +304,6 @@ public class CheckDataService {
         return map;
         return map;
     }
     }
 
 
-    /**
-     * 组装错误信息
-     *
-     * @param examNumber   准考证号
-     * @param studentName  考生姓名
-     * @param errorMessage 错误信息
-     */
-    private JSONObject assembleErrorData(String examNumber, String studentName, String errorMessage) {
-        JSONObject object = new JSONObject();
-        object.put("examNumber", examNumber);
-        object.put("studentName", studentName);
-        object.put("errorMessage", errorMessage);
-        return object;
-    }
-
     /**
     /**
      * 获取指定文件夹下所有文件,不含文件夹
      * 获取指定文件夹下所有文件,不含文件夹
      *
      *
@@ -322,4 +335,16 @@ public class CheckDataService {
         }
         }
         return files;
         return files;
     }
     }
+
+    public Page<CheckDataError> pageError(Long checkDataId, Pageable pageable) {
+        Specification<CheckDataError> specification = (root, query, builder) -> {
+            List<Predicate> predicates = new ArrayList<>();
+            predicates.add(builder.equal(root.get("checkDataId"), checkDataId));
+            return builder.and(predicates.toArray(new Predicate[predicates.size()]));
+        };
+        Sort sort = new Sort("examNumber");
+        Pageable pageable1 = new PageRequest(pageable.getPageNumber(), pageable.getPageSize(), sort);
+        return checkDataErrorRepo.findAll(specification, pageable1);
+
+    }
 }
 }

+ 13 - 7
stmms-ms-marking/src/main/java/cn/com/qmth/stmms/ms/marking/service/MarkLogService.java

@@ -1,13 +1,13 @@
 package cn.com.qmth.stmms.ms.marking.service;
 package cn.com.qmth.stmms.ms.marking.service;
 
 
 import cn.com.qmth.stmms.ms.commons.utils.ServletUtil;
 import cn.com.qmth.stmms.ms.commons.utils.ServletUtil;
-import cn.com.qmth.stmms.ms.core.cache.ParamCache;
 import cn.com.qmth.stmms.ms.core.domain.*;
 import cn.com.qmth.stmms.ms.core.domain.*;
 import cn.com.qmth.stmms.ms.core.domain.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.MarkUser;
 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.MarkLogRepo;
 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.repository.WorkRepo;
 import cn.com.qmth.stmms.ms.core.repository.WorkRepo;
 import org.springframework.stereotype.Service;
 import org.springframework.stereotype.Service;
@@ -28,6 +28,9 @@ public class MarkLogService {
     @Resource
     @Resource
     private WorkRepo workRepo;
     private WorkRepo workRepo;
 
 
+    @Resource
+    private MarkLogRepo markLogRepo;
+
     /**
     /**
      * 粗分档正评、回评、档位打回回评日志
      * 粗分档正评、回评、档位打回回评日志
      *
      *
@@ -67,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, 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(), Optional.ofNullable(operDateBefore).orElse("-"), Optional.ofNullable(operDateAfter).orElse("-"), markLogOperType.getName(), new Date());
     }
     }
 
 
     /**
     /**
@@ -87,7 +90,7 @@ public class MarkLogService {
             // 打回重评
             // 打回重评
             if (markTask.isRejected()) {
             if (markTask.isRejected()) {
                 // 打分阶段的改档打档操作
                 // 打分阶段的改档打档操作
-                if(paper.isShift()) {
+                if (paper.isShift()) {
                     stage = MarkStage.SCORE;
                     stage = MarkStage.SCORE;
                     markLogOperType = MarkLogOperType.CHANGE_LEVEL;
                     markLogOperType = MarkLogOperType.CHANGE_LEVEL;
                 } else {
                 } else {
@@ -108,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, 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(), Optional.ofNullable(operDateBefore).orElse("-"), Optional.ofNullable(operDateAfter).orElse("-"), markLogOperType.getName(), new Date());
     }
     }
 
 
     /**
     /**
@@ -140,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, 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(), Optional.ofNullable(operDateBefore).orElse("-"), Optional.ofNullable(operDateAfter).orElse("-"), markLogOperType.getName(), new Date());
     }
     }
 
 
     /**
     /**
@@ -175,7 +178,7 @@ public class MarkLogService {
         } else {
         } else {
             throw new RuntimeException("当前阶段不支持科组长操作");
             throw new RuntimeException("当前阶段不支持科组长操作");
         }
         }
-        return new MarkLog(paper.getWorkId(), work.getName(), paper.getId(), paper.getSubject(), stage, 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(), Optional.ofNullable(operDateBefore).orElse("-"), Optional.ofNullable(operDateAfter).orElse("-"), markLogOperType.getName(), new Date());
     }
     }
 
 
     /**
     /**
@@ -194,7 +197,10 @@ public class MarkLogService {
         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.getExamNumber(), paper.getStudentName(), userId, userName, role, markLogOperType.getId(), Optional.ofNullable(originLevel).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(), userId, userName, role, markLogOperType.getId(), Optional.ofNullable(originLevel).orElse("-"), Optional.ofNullable(operDateAfter).orElse("-"), markLogOperType.getName(), new Date());
     }
     }
 
 
+    public void deleteByWorkIdAndSubjectAndStageAndTestAndOperType(Long workId, String subject, MarkStage stage, int test, int operType) {
+        markLogRepo.deleteByWorkIdAndSubjectAndStageAndTestAndOperType(workId, subject, stage, test, operType);
+    }
 }
 }

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

@@ -31,8 +31,6 @@ import org.springframework.http.ResponseEntity;
 import org.springframework.stereotype.Service;
 import org.springframework.stereotype.Service;
 
 
 import javax.annotation.Resource;
 import javax.annotation.Resource;
-import javax.persistence.criteria.Join;
-import javax.persistence.criteria.JoinType;
 import javax.persistence.criteria.Predicate;
 import javax.persistence.criteria.Predicate;
 import java.util.*;
 import java.util.*;
 
 
@@ -99,6 +97,8 @@ public class MarkTaskLevelService {
             predicates.add(builder.equal(root.get("markerId"), markerId));
             predicates.add(builder.equal(root.get("markerId"), markerId));
             if (level == null) {
             if (level == null) {
                 predicates.add(builder.isNull(root.get("result")));
                 predicates.add(builder.isNull(root.get("result")));
+                predicates.add(builder.equal(root.get("paper").get("isShift"), false));
+                predicates.add(builder.equal(root.get("paper").get("isShiftScore"), false));
             } else {
             } else {
                 //查询
                 //查询
                 predicates.add(builder.equal(root.get("result"), level));
                 predicates.add(builder.equal(root.get("result"), level));
@@ -133,7 +133,7 @@ public class MarkTaskLevelService {
 //            join.on(onPredicates.toArray(new Predicate[onPredicates.size()]));
 //            join.on(onPredicates.toArray(new Predicate[onPredicates.size()]));
             return builder.and(predicates.toArray(new Predicate[predicates.size()]));
             return builder.and(predicates.toArray(new Predicate[predicates.size()]));
         };
         };
-        Sort sort = new Sort("paper.roughLevel","randomSeq", "randomSeqNew");
+        Sort sort = new Sort("randomSeq","paper.roughLevel", "randomSeqNew");
         Pageable pageable1 = new PageRequest(pageable.getPageNumber(), pageable.getPageSize(), sort);
         Pageable pageable1 = new PageRequest(pageable.getPageNumber(), pageable.getPageSize(), sort);
         Page<MarkTaskLevel> markTasks = markTaskLevelRepo.findAll(specification, pageable1);
         Page<MarkTaskLevel> markTasks = markTaskLevelRepo.findAll(specification, pageable1);
 
 
@@ -340,10 +340,10 @@ public class MarkTaskLevelService {
         Specification<MarkTaskLevel> specification = (root, query, builder) -> {
         Specification<MarkTaskLevel> specification = (root, query, builder) -> {
             List<Predicate> predicates = new ArrayList<>();
             List<Predicate> predicates = new ArrayList<>();
 
 
-            if (ParamCache.roughLevelConfigMap.get(String.valueOf(workId)).getLevelShowAllPaper() == 0) {
-                Long batchNo = paperRepo.findMaxBatchNoByWorkIdAndSubject(workId, subject);
-                predicates.add(builder.equal(root.get("paper").get("batchNo"), batchNo));
-            }
+//            if (ParamCache.roughLevelConfigMap.get(String.valueOf(workId)).getLevelShowAllPaper() == 0) {
+//                Long batchNo = paperRepo.findMaxBatchNoByWorkIdAndSubject(workId, subject);
+//                predicates.add(builder.equal(root.get("paper").get("batchNo"), batchNo));
+//            }
 
 
             predicates.add(builder.equal(root.get("workId"), workId));
             predicates.add(builder.equal(root.get("workId"), workId));
             predicates.add(builder.equal(root.get("questionId"), questionId));
             predicates.add(builder.equal(root.get("questionId"), questionId));

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

@@ -315,7 +315,7 @@ public class MarkTaskScoreService {
 
 
             if (ParamCache.roughLevelConfigMap.get(String.valueOf(workId)).getLevelShowAllPaper() == 0) {
             if (ParamCache.roughLevelConfigMap.get(String.valueOf(workId)).getLevelShowAllPaper() == 0) {
                 Long batchNo = paperRepo.findMaxScoreBatchNoByWorkIdAndSubject(workId, subject);
                 Long batchNo = paperRepo.findMaxScoreBatchNoByWorkIdAndSubject(workId, subject);
-                predicates.add(builder.equal(root.get("paper").get("batchNo"), batchNo));
+                predicates.add(builder.equal(root.get("paper").get("scoreBatchNo"), batchNo));
             }
             }
 
 
             predicates.add(builder.equal(root.get("workId"), workId));
             predicates.add(builder.equal(root.get("workId"), workId));

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

@@ -225,7 +225,7 @@ public class MarkingLevelService {
                             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.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(), 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);
                                 markLogRepo.save(markLog);
                                 markLogRepo.save(markLog);
                             } else {//更新日志
                             } else {//更新日志
                                 operResult = Optional.ofNullable(markLogPrev.getOperDataAfter()).orElse("-");
                                 operResult = Optional.ofNullable(markLogPrev.getOperDataAfter()).orElse("-");
@@ -239,7 +239,7 @@ public class MarkingLevelService {
                             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.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(), 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);
                                 markLogRepo.save(markLog);
                                 markLogRepo.save(markLog);
                             } else {//更新日志
                             } else {//更新日志
                                 operResult = Optional.ofNullable(markLogDevi.getOperDataAfter()).orElse("-");
                                 operResult = Optional.ofNullable(markLogDevi.getOperDataAfter()).orElse("-");

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

@@ -190,7 +190,7 @@ public class MarkingRoughLevelService {
                             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.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(), 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);
                                 markLogRepo.save(markLog);
                                 markLogRepo.save(markLog);
                             } else {//更新日志
                             } else {//更新日志
                                 operResult = Optional.ofNullable(markLogPrev.getOperDataAfter()).orElse("-");
                                 operResult = Optional.ofNullable(markLogPrev.getOperDataAfter()).orElse("-");
@@ -204,7 +204,7 @@ public class MarkingRoughLevelService {
                             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.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(), 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);
                                 markLogRepo.save(markLog);
                                 markLogRepo.save(markLog);
                             } else {//更新日志
                             } else {//更新日志
                                 operResult = Optional.ofNullable(markLogDevi.getOperDataAfter()).orElse("-");
                                 operResult = Optional.ofNullable(markLogDevi.getOperDataAfter()).orElse("-");

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

@@ -72,6 +72,9 @@ public class MarkingService {
     @Resource
     @Resource
     private MarkTaskScoreRepo markTaskScoreRepo;
     private MarkTaskScoreRepo markTaskScoreRepo;
 
 
+    @Resource
+    MarkerGroupStudentRepo markerGroupStudentRepo;
+
     @Transactional
     @Transactional
     public void subjectReset(Long workId, Subject subject, MarkStage stage) {
     public void subjectReset(Long workId, Subject subject, MarkStage stage) {
         // 清除mark_user分组
         // 清除mark_user分组
@@ -114,6 +117,8 @@ public class MarkingService {
         }
         }
         // 删除日志表
         // 删除日志表
         markLogRepo.deleteByWorkIdAndSubjectAndStage(workId, subject.name(), stage);
         markLogRepo.deleteByWorkIdAndSubjectAndStage(workId, subject.name(), stage);
+        //清除分组导入的考生名单数据
+        markerGroupStudentRepo.deleteByWorkIdAndSubjectAndStage(workId, subject, stage);
 
 
         // 所有用户强制退出
         // 所有用户强制退出
         List<MarkUser> userList = markUserRepo.findByWorkIdAndSubject(workId, subject);
         List<MarkUser> userList = markUserRepo.findByWorkIdAndSubject(workId, subject);