Browse Source

美术阅卷11月新增需求-BUG修复

wangliang 5 years ago
parent
commit
94f2a84473

+ 29 - 27
sql/stmms-ms-表创建语句.sql

@@ -1,6 +1,6 @@
 -- MySQL dump 10.13  Distrib 5.7.26, for macos10.14 (x86_64)
 -- MySQL dump 10.13  Distrib 5.7.26, for macos10.14 (x86_64)
 --
 --
--- Host: localhost    Database: stmms-ms-3
+-- Host: localhost    Database: stmms-ms-momo1
 -- ------------------------------------------------------
 -- ------------------------------------------------------
 -- Server version	5.7.17
 -- Server version	5.7.17
 
 
@@ -19,7 +19,6 @@
 -- Table structure for table `exam_question`
 -- Table structure for table `exam_question`
 --
 --
 SET NAMES 'utf8';
 SET NAMES 'utf8';
-
 DROP TABLE IF EXISTS `exam_question`;
 DROP TABLE IF EXISTS `exam_question`;
 /*!40101 SET @saved_cs_client     = @@character_set_client */;
 /*!40101 SET @saved_cs_client     = @@character_set_client */;
 /*!40101 SET character_set_client = utf8 */;
 /*!40101 SET character_set_client = utf8 */;
@@ -32,7 +31,7 @@ CREATE TABLE `exam_question` (
   `work_id` bigint(20) NOT NULL,
   `work_id` bigint(20) NOT NULL,
   `is_test` tinyint(4) NOT NULL DEFAULT '0' COMMENT '是否试评,0:不是,1:数据已导入,2:试评中',
   `is_test` tinyint(4) NOT NULL DEFAULT '0' COMMENT '是否试评,0:不是,1:数据已导入,2:试评中',
   PRIMARY KEY (`id`)
   PRIMARY KEY (`id`)
-) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
+) ENGINE=InnoDB AUTO_INCREMENT=13 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
 /*!40101 SET character_set_client = @saved_cs_client */;
 /*!40101 SET character_set_client = @saved_cs_client */;
 
 
 --
 --
@@ -105,7 +104,7 @@ DROP TABLE IF EXISTS `level`;
 /*!40101 SET character_set_client = utf8 */;
 /*!40101 SET character_set_client = utf8 */;
 CREATE TABLE `level` (
 CREATE TABLE `level` (
   `id` bigint(20) NOT NULL AUTO_INCREMENT,
   `id` bigint(20) NOT NULL AUTO_INCREMENT,
-  `code` varchar(255) CHARACTER SET utf8mb4 NOT NULL,
+  `code` varchar(50) CHARACTER SET utf8mb4 NOT NULL,
   `interval_score` int(11) NOT NULL,
   `interval_score` int(11) NOT NULL,
   `level_type` int(11) DEFAULT NULL,
   `level_type` int(11) DEFAULT NULL,
   `level_value` int(11) NOT NULL,
   `level_value` int(11) NOT NULL,
@@ -119,7 +118,7 @@ CREATE TABLE `level` (
   PRIMARY KEY (`id`),
   PRIMARY KEY (`id`),
   UNIQUE KEY `idx_level_workId_code` (`work_id`,`code`),
   UNIQUE KEY `idx_level_workId_code` (`work_id`,`code`),
   CONSTRAINT `FK3km0g7jbkt78oj20csqeh26f2` FOREIGN KEY (`work_id`) REFERENCES `work` (`id`)
   CONSTRAINT `FK3km0g7jbkt78oj20csqeh26f2` FOREIGN KEY (`work_id`) REFERENCES `work` (`id`)
-) ENGINE=InnoDB AUTO_INCREMENT=17 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
+) ENGINE=InnoDB AUTO_INCREMENT=23 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
 /*!40101 SET character_set_client = @saved_cs_client */;
 /*!40101 SET character_set_client = @saved_cs_client */;
 
 
 --
 --
@@ -139,17 +138,18 @@ CREATE TABLE `mark_log` (
   `student_name` varchar(100) DEFAULT NULL COMMENT '学生姓名',
   `student_name` varchar(100) DEFAULT NULL COMMENT '学生姓名',
   `login_time` datetime DEFAULT NULL COMMENT '登录时间(采集专用)',
   `login_time` datetime DEFAULT NULL COMMENT '登录时间(采集专用)',
   `logout_time` datetime DEFAULT NULL COMMENT '登出时间(采集专用)',
   `logout_time` datetime DEFAULT NULL COMMENT '登出时间(采集专用)',
-  `oper_type` int(11) DEFAULT NULL COMMENT '操作类型,1:分档,2:打分,3:回评档位,4:回评分数,5:档位打回,6:档位打回回评,7:一键定档,8:标准卷设置,9:采集,10:系统自动打回,11:重评,12:手动打回,13:档位落差',
+  `oper_type` int(11) DEFAULT NULL COMMENT '操作类型,1:分档,2:打分,3:回评档位,4:回评分数,5:档位打回,6:档位打回回评,7:一键定档,8:标准卷设置',
   `oper_data_before` varchar(255) DEFAULT NULL COMMENT '操作前数据',
   `oper_data_before` varchar(255) DEFAULT NULL COMMENT '操作前数据',
   `oper_data_after` varchar(255) DEFAULT NULL COMMENT '操作后数据',
   `oper_data_after` varchar(255) DEFAULT NULL COMMENT '操作后数据',
   `create_time` datetime DEFAULT NULL COMMENT '操作时间',
   `create_time` datetime DEFAULT NULL COMMENT '操作时间',
   `work_id` bigint(20) DEFAULT NULL COMMENT '考区id',
   `work_id` bigint(20) DEFAULT NULL COMMENT '考区id',
-  `work_name` varchar(255) DEFAULT NULL COMMENT '工作名称',
   `paper_id` bigint(20) DEFAULT NULL COMMENT '试卷id',
   `paper_id` bigint(20) DEFAULT NULL COMMENT '试卷id',
   `remark` varchar(500) DEFAULT NULL COMMENT '备注',
   `remark` varchar(500) DEFAULT NULL COMMENT '备注',
   `stage` bigint(20) DEFAULT NULL COMMENT '试卷阶段,0:初始,1:分档,2:打分',
   `stage` bigint(20) DEFAULT NULL COMMENT '试卷阶段,0:初始,1:分档,2:打分',
-  PRIMARY KEY (`id`)
-) ENGINE=InnoDB AUTO_INCREMENT=61 DEFAULT CHARSET=utf8 COMMENT='操作日志';
+  `work_name` varchar(255) DEFAULT NULL,
+  PRIMARY KEY (`id`),
+  KEY `union_001_index` (`create_user_id`,`oper_type`,`subject`,`exam_number`)
+) ENGINE=InnoDB AUTO_INCREMENT=76 DEFAULT CHARSET=utf8 COMMENT='操作日志';
 /*!40101 SET character_set_client = @saved_cs_client */;
 /*!40101 SET character_set_client = @saved_cs_client */;
 
 
 --
 --
@@ -160,7 +160,7 @@ DROP TABLE IF EXISTS `mark_subject`;
 /*!40101 SET @saved_cs_client     = @@character_set_client */;
 /*!40101 SET @saved_cs_client     = @@character_set_client */;
 /*!40101 SET character_set_client = utf8 */;
 /*!40101 SET character_set_client = utf8 */;
 CREATE TABLE `mark_subject` (
 CREATE TABLE `mark_subject` (
-  `id` varchar(255) CHARACTER SET utf8mb4 NOT NULL,
+  `id` varchar(50) CHARACTER SET utf8mb4 NOT NULL,
   `collect_config` varchar(255) CHARACTER SET utf8mb4 DEFAULT NULL,
   `collect_config` varchar(255) CHARACTER SET utf8mb4 DEFAULT NULL,
   `name` varchar(255) CHARACTER SET utf8mb4 DEFAULT NULL,
   `name` varchar(255) CHARACTER SET utf8mb4 DEFAULT NULL,
   `stage` int(11) DEFAULT NULL,
   `stage` int(11) DEFAULT NULL,
@@ -206,8 +206,9 @@ CREATE TABLE `mark_task` (
   `batch_no` bigint(45) DEFAULT NULL COMMENT '批次号',
   `batch_no` bigint(45) DEFAULT NULL COMMENT '批次号',
   PRIMARY KEY (`id`),
   PRIMARY KEY (`id`),
   KEY `idx_mark_task_paper_id` (`paper_id`),
   KEY `idx_mark_task_paper_id` (`paper_id`),
+  KEY `question_id` (`question_id`,`marker_id`,`stage`,`result`),
   CONSTRAINT `FKa6xqlu9ml2e47x1o2u2yec7vm` FOREIGN KEY (`paper_id`) REFERENCES `paper` (`id`)
   CONSTRAINT `FKa6xqlu9ml2e47x1o2u2yec7vm` FOREIGN KEY (`paper_id`) REFERENCES `paper` (`id`)
-) ENGINE=InnoDB AUTO_INCREMENT=323 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
+) ENGINE=InnoDB AUTO_INCREMENT=494621 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
 /*!40101 SET character_set_client = @saved_cs_client */;
 /*!40101 SET character_set_client = @saved_cs_client */;
 
 
 --
 --
@@ -221,7 +222,7 @@ CREATE TABLE `mark_user` (
   `id` bigint(20) NOT NULL AUTO_INCREMENT,
   `id` bigint(20) NOT NULL AUTO_INCREMENT,
   `enabled` bit(1) NOT NULL,
   `enabled` bit(1) NOT NULL,
   `last_login_time` datetime DEFAULT NULL,
   `last_login_time` datetime DEFAULT NULL,
-  `login_name` varchar(255) CHARACTER SET utf8mb4 NOT NULL,
+  `login_name` varchar(50) CHARACTER SET utf8mb4 NOT NULL,
   `name` varchar(255) CHARACTER SET utf8mb4 DEFAULT NULL,
   `name` varchar(255) CHARACTER SET utf8mb4 DEFAULT NULL,
   `password` varchar(255) CHARACTER SET utf8mb4 DEFAULT NULL,
   `password` varchar(255) CHARACTER SET utf8mb4 DEFAULT NULL,
   `pw_changed_count` int(11) NOT NULL,
   `pw_changed_count` int(11) NOT NULL,
@@ -237,12 +238,12 @@ CREATE TABLE `mark_user` (
   `weight` double DEFAULT NULL,
   `weight` double DEFAULT NULL,
   `one_click_level` bit(1) DEFAULT b'0' COMMENT '科组长是否开启一键定档',
   `one_click_level` bit(1) DEFAULT b'0' COMMENT '科组长是否开启一键定档',
   `standard_volume` bit(1) NOT NULL,
   `standard_volume` bit(1) NOT NULL,
-  `level_callback` bit(1) NOT NULL DEFAULT b'0' COMMENT '档位打回',
+  `level_callback` bit(1) NOT NULL,
   PRIMARY KEY (`id`),
   PRIMARY KEY (`id`),
   UNIQUE KEY `UK_cyf7k1neuij8lma85x19omo07` (`login_name`),
   UNIQUE KEY `UK_cyf7k1neuij8lma85x19omo07` (`login_name`),
   KEY `FKinr4i9gbxj9njwo82s7cc89q5` (`group_id`),
   KEY `FKinr4i9gbxj9njwo82s7cc89q5` (`group_id`),
   CONSTRAINT `FKinr4i9gbxj9njwo82s7cc89q5` FOREIGN KEY (`group_id`) REFERENCES `marker_group` (`id`)
   CONSTRAINT `FKinr4i9gbxj9njwo82s7cc89q5` FOREIGN KEY (`group_id`) REFERENCES `marker_group` (`id`)
-) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
+) ENGINE=InnoDB AUTO_INCREMENT=36 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
 /*!40101 SET character_set_client = @saved_cs_client */;
 /*!40101 SET character_set_client = @saved_cs_client */;
 
 
 --
 --
@@ -258,7 +259,7 @@ CREATE TABLE `marker_group` (
   `subject` varchar(255) CHARACTER SET utf8mb4 NOT NULL,
   `subject` varchar(255) CHARACTER SET utf8mb4 NOT NULL,
   `work_id` bigint(20) NOT NULL,
   `work_id` bigint(20) NOT NULL,
   PRIMARY KEY (`id`)
   PRIMARY KEY (`id`)
-) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
 /*!40101 SET character_set_client = @saved_cs_client */;
 /*!40101 SET character_set_client = @saved_cs_client */;
 
 
 --
 --
@@ -270,8 +271,8 @@ DROP TABLE IF EXISTS `paper`;
 /*!40101 SET character_set_client = utf8 */;
 /*!40101 SET character_set_client = utf8 */;
 CREATE TABLE `paper` (
 CREATE TABLE `paper` (
   `id` bigint(20) NOT NULL AUTO_INCREMENT,
   `id` bigint(20) NOT NULL AUTO_INCREMENT,
-  `area_code` varchar(255) CHARACTER SET utf8mb4 NOT NULL,
-  `exam_number` varchar(255) CHARACTER SET utf8mb4 NOT NULL,
+  `area_code` varchar(50) CHARACTER SET utf8mb4 NOT NULL,
+  `exam_number` varchar(50) CHARACTER SET utf8mb4 NOT NULL,
   `idx` bigint(20) DEFAULT NULL,
   `idx` bigint(20) DEFAULT NULL,
   `is_arbitrated` bit(1) NOT NULL,
   `is_arbitrated` bit(1) NOT NULL,
   `is_manual` bit(1) NOT NULL,
   `is_manual` bit(1) NOT NULL,
@@ -285,7 +286,7 @@ CREATE TABLE `paper` (
   `redo_level` varchar(255) CHARACTER SET utf8mb4 DEFAULT NULL,
   `redo_level` varchar(255) CHARACTER SET utf8mb4 DEFAULT NULL,
   `score` double DEFAULT NULL,
   `score` double DEFAULT NULL,
   `secret_number` varchar(255) CHARACTER SET utf8mb4 DEFAULT NULL,
   `secret_number` varchar(255) CHARACTER SET utf8mb4 DEFAULT NULL,
-  `student_name` varchar(255) CHARACTER SET utf8mb4 NOT NULL,
+  `student_name` varchar(50) CHARACTER SET utf8mb4 NOT NULL,
   `subject` varchar(255) CHARACTER SET utf8mb4 NOT NULL,
   `subject` varchar(255) CHARACTER SET utf8mb4 NOT NULL,
   `updated_on` datetime DEFAULT NULL,
   `updated_on` datetime DEFAULT NULL,
   `uploaded_count` int(11) NOT NULL,
   `uploaded_count` int(11) NOT NULL,
@@ -309,8 +310,9 @@ CREATE TABLE `paper` (
   KEY `idx_paper_index` (`idx`),
   KEY `idx_paper_index` (`idx`),
   KEY `idx_paper_exam_number` (`exam_number`),
   KEY `idx_paper_exam_number` (`exam_number`),
   KEY `idx_paper_area_code` (`area_code`),
   KEY `idx_paper_area_code` (`area_code`),
-  KEY `idx_paper_student_name` (`student_name`)
-) ENGINE=InnoDB AUTO_INCREMENT=427 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
+  KEY `idx_paper_student_name` (`student_name`),
+  KEY `is_missing` (`is_missing`,`is_test`,`batch_no`)
+) ENGINE=InnoDB AUTO_INCREMENT=75544 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
 /*!40101 SET character_set_client = @saved_cs_client */;
 /*!40101 SET character_set_client = @saved_cs_client */;
 
 
 --
 --
@@ -342,18 +344,18 @@ CREATE TABLE `student` (
   `id` bigint(20) NOT NULL AUTO_INCREMENT,
   `id` bigint(20) NOT NULL AUTO_INCREMENT,
   `area_code` varchar(255) CHARACTER SET utf8mb4 DEFAULT NULL,
   `area_code` varchar(255) CHARACTER SET utf8mb4 DEFAULT NULL,
   `area_name` varchar(255) CHARACTER SET utf8mb4 DEFAULT NULL,
   `area_name` varchar(255) CHARACTER SET utf8mb4 DEFAULT NULL,
-  `exam_number` varchar(255) CHARACTER SET utf8mb4 DEFAULT NULL,
+  `exam_number` varchar(50) CHARACTER SET utf8mb4 DEFAULT NULL,
   `exam_room` varchar(255) CHARACTER SET utf8mb4 DEFAULT NULL,
   `exam_room` varchar(255) CHARACTER SET utf8mb4 DEFAULT NULL,
   `is_absent` bit(1) NOT NULL,
   `is_absent` bit(1) NOT NULL,
-  `name` varchar(255) CHARACTER SET utf8mb4 DEFAULT NULL,
+  `name` varchar(50) CHARACTER SET utf8mb4 DEFAULT NULL,
   `upload_status` varchar(255) CHARACTER SET utf8mb4 DEFAULT NULL,
   `upload_status` varchar(255) CHARACTER SET utf8mb4 DEFAULT NULL,
   `work_id` bigint(20) DEFAULT NULL,
   `work_id` bigint(20) DEFAULT NULL,
   `source_name` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
   `source_name` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
-  `is_test` varchar(50) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '0' COMMENT '是否试评,0:不是,1:{科目}',
+  `is_test` varchar(50) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '0' COMMENT '是否试评,0:不是,1:数据已导入,2:试评中',
   PRIMARY KEY (`id`),
   PRIMARY KEY (`id`),
   UNIQUE KEY `exam_number` (`exam_number`,`work_id`,`is_test`),
   UNIQUE KEY `exam_number` (`exam_number`,`work_id`,`is_test`),
   KEY `idx_student_name` (`name`)
   KEY `idx_student_name` (`name`)
-) ENGINE=InnoDB AUTO_INCREMENT=13 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
+) ENGINE=InnoDB AUTO_INCREMENT=46173 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
 /*!40101 SET character_set_client = @saved_cs_client */;
 /*!40101 SET character_set_client = @saved_cs_client */;
 
 
 --
 --
@@ -369,11 +371,11 @@ CREATE TABLE `work` (
   `created_on` date DEFAULT NULL,
   `created_on` date DEFAULT NULL,
   `name` varchar(255) CHARACTER SET utf8mb4 DEFAULT NULL,
   `name` varchar(255) CHARACTER SET utf8mb4 DEFAULT NULL,
   PRIMARY KEY (`id`)
   PRIMARY KEY (`id`)
-) ENGINE=InnoDB AUTO_INCREMENT=30 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
+) ENGINE=InnoDB AUTO_INCREMENT=17 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
 /*!40101 SET character_set_client = @saved_cs_client */;
 /*!40101 SET character_set_client = @saved_cs_client */;
 
 
 --
 --
--- Dumping routines for database 'stmms-ms-3'
+-- Dumping routines for database 'stmms-ms-momo1'
 --
 --
 /*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;
 /*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;
 
 
@@ -385,4 +387,4 @@ CREATE TABLE `work` (
 /*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
 /*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
 /*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
 /*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
 
 
--- Dump completed on 2019-11-21 13:38:45
+-- Dump completed on 2019-12-02 14:21:53

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

@@ -5,7 +5,6 @@ import cn.com.qmth.stmms.ms.commons.utils.RandomUtil;
 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.MarkUserRepo;
 import cn.com.qmth.stmms.ms.core.repository.MarkUserRepo;
-import cn.com.qmth.stmms.ms.core.repository.WorkRepo;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.util.StringUtils;
 import org.springframework.util.StringUtils;
 import org.springframework.web.bind.annotation.*;
 import org.springframework.web.bind.annotation.*;
@@ -26,9 +25,6 @@ public class AuthApi {
     @Autowired
     @Autowired
     private MarkUserRepo markUserRepo;
     private MarkUserRepo markUserRepo;
 
 
-    @Autowired
-    private WorkRepo workRepo;
-
     @RequestMapping(value = "login", method = RequestMethod.POST)
     @RequestMapping(value = "login", method = RequestMethod.POST)
     public MarkUser login(@RequestBody MarkUser user, HttpServletRequest request) {
     public MarkUser login(@RequestBody MarkUser user, HttpServletRequest request) {
         MarkUser domain = null;
         MarkUser domain = null;
@@ -69,13 +65,6 @@ public class AuthApi {
             if (!domain.isEnabled()) {
             if (!domain.isEnabled()) {
                 throw new RuntimeException("用户被禁用");
                 throw new RuntimeException("用户被禁用");
             }
             }
-
-            //科组长生成随机数
-            if (Objects.equals(Role.MARK_LEADER, domain.getRole())) {
-                if (RandomUtil.randomMap.size() == 0) {
-                    RandomUtil.getRandom(domain.getWorkId(), true);
-                }
-            }
             domain.setSessionId(request.getSession().getId());
             domain.setSessionId(request.getSession().getId());
             markUserRepo.save(domain);
             markUserRepo.save(domain);
         }
         }

+ 4 - 1
stmms-ms-admin/src/main/java/cn/com/qmth/stmms/ms/admin/api/WorkApi.java

@@ -42,6 +42,9 @@ public class WorkApi {
     @Autowired
     @Autowired
     private WorkOverviewAssembler workOverviewAssembler;
     private WorkOverviewAssembler workOverviewAssembler;
 
 
+    @Autowired
+    RandomUtil randomUtil;
+
     /**
     /**
      * 列表
      * 列表
      *
      *
@@ -62,7 +65,7 @@ public class WorkApi {
     @RequestMapping(value = "{work}", method = RequestMethod.GET)
     @RequestMapping(value = "{work}", method = RequestMethod.GET)
     public Work getOne(@PathVariable Work work) {
     public Work getOne(@PathVariable Work work) {
         if (work.isActive()) {
         if (work.isActive()) {
-            RandomUtil.getRandom(work.getId(), false);
+            randomUtil.getRandom(work.getId(), false);
         }
         }
         return work;
         return work;
     }
     }

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

@@ -67,7 +67,7 @@ public class ScoreExporter {
             SM_NAME = "素描",
             SM_NAME = "素描",
             SX_NAME = "速写",
             SX_NAME = "速写",
             LEVEL_FILE_NAME = "档位成绩表",
             LEVEL_FILE_NAME = "档位成绩表",
-            SCORE_FILE_NAME = "分数成表";
+            SCORE_FILE_NAME = "分数成表";
 
 
     //@RequestMapping(method = RequestMethod.GET)
     //@RequestMapping(method = RequestMethod.GET)
     public void export(@RequestParam Long workId, HttpServletResponse response) {
     public void export(@RequestParam Long workId, HttpServletResponse response) {
@@ -269,9 +269,9 @@ public class ScoreExporter {
     @RequestMapping(value = "exportLevelResult", method = RequestMethod.GET)
     @RequestMapping(value = "exportLevelResult", method = RequestMethod.GET)
     public void exportLevelResult(@RequestParam Long workId, HttpServletResponse response) {
     public void exportLevelResult(@RequestParam Long workId, HttpServletResponse response) {
         //测试-导出档位成绩表
         //测试-导出档位成绩表
-        String scSql = "select temp.*, mt.`result`, p.source_name as sourceName, p.exam_number as examNumber, p.student_name as studentName, t.area_name as areaName, p.mark_by_leader as markByLeader, p.`level` from mark_task as mt , (select mu.id, mu.name as teacherName, mu.`role`, mu.subject, mu.work_id as workId from mark_user as mu where mu.work_id = ? and mu.`role` = 'MARKER'and (mu.mark_right = 0 or mu.mark_right = 2) and mu.subject = 'SC' and mu.enabled = 1) temp, paper p, student t where mt.marker_id = temp.id and mt.paper_id = p.id and t.exam_number = p.exam_number and mt.work_id = ? and mt.stage = 1 and p.is_missing = false UNION ALL select temp.*, null as result, p.source_name as sourceName, p.exam_number as examNumber, p.student_name as studentName, t.area_name as areaName, p.mark_by_leader as markByLeader, p.`level` from paper p, (select mu.id, mu.name as teacherName, mu.`role`, mu.subject, mu.work_id as workId from mark_user as mu where mu.work_id = ? and mu.`role` = 'MARKER' and (mu.mark_right = 0 or mu.mark_right = 2) and mu.subject = 'SC' and mu.enabled = 1) temp, student t where (p.is_missing = true or p.is_test = 3) and p.work_id = ? and p.subject = 'SC' and t.exam_number = p.exam_number ";
-        String smSql = "select temp.*, mt.`result`, p.source_name as sourceName, p.exam_number as examNumber, p.student_name as studentName, t.area_name as areaName, p.mark_by_leader as markByLeader, p.`level` from mark_task as mt , (select mu.id, mu.name as teacherName, mu.`role`, mu.subject, mu.work_id as workId from mark_user as mu where mu.work_id = ? and mu.`role` = 'MARKER'and (mu.mark_right = 0 or mu.mark_right = 2) and mu.subject = 'SM' and mu.enabled = 1) temp, paper p, student t where mt.marker_id = temp.id and mt.paper_id = p.id and t.exam_number = p.exam_number and mt.work_id = ? and mt.stage = 1 and p.is_missing = false UNION ALL select temp.*, null as result, p.source_name as sourceName, p.exam_number as examNumber, p.student_name as studentName, t.area_name as areaName, p.mark_by_leader as markByLeader, p.`level` from paper p, (select mu.id, mu.name as teacherName, mu.`role`, mu.subject, mu.work_id as workId from mark_user as mu where mu.work_id = ? and mu.`role` = 'MARKER' and (mu.mark_right = 0 or mu.mark_right = 2) and mu.subject = 'SM' and mu.enabled = 1) temp, student t where (p.is_missing = true or p.is_test = 3) and p.work_id = ? and p.subject = 'SM' and t.exam_number = p.exam_number ";
-        String sxSql = "select temp.*, mt.`result`, p.source_name as sourceName, p.exam_number as examNumber, p.student_name as studentName, t.area_name as areaName, p.mark_by_leader as markByLeader, p.`level` from mark_task as mt , (select mu.id, mu.name as teacherName, mu.`role`, mu.subject, mu.work_id as workId from mark_user as mu where mu.work_id = ? and mu.`role` = 'MARKER'and (mu.mark_right = 0 or mu.mark_right = 2) and mu.subject = 'SX' and mu.enabled = 1) temp, paper p, student t where mt.marker_id = temp.id and mt.paper_id = p.id and t.exam_number = p.exam_number and mt.work_id = ? and mt.stage = 1 and p.is_missing = false UNION ALL select temp.*, null as result, p.source_name as sourceName, p.exam_number as examNumber, p.student_name as studentName, t.area_name as areaName, p.mark_by_leader as markByLeader, p.`level` from paper p, (select mu.id, mu.name as teacherName, mu.`role`, mu.subject, mu.work_id as workId from mark_user as mu where mu.work_id = ? and mu.`role` = 'MARKER' and (mu.mark_right = 0 or mu.mark_right = 2) and mu.subject = 'SX' and mu.enabled = 1) temp, student t where (p.is_missing = true or p.is_test = 3) and p.work_id = ? and p.subject = 'SX' and t.exam_number = p.exam_number ";
+        String scSql = "select temp.*, mt.`result`, p.source_name as sourceName, p.exam_number as examNumber, p.student_name as studentName, t.area_name as areaName, p.mark_by_leader as markByLeader, p.`level` from mark_task as mt , (select mu.id, mu.name as teacherName, mu.`role`, mu.subject, mu.work_id as workId from mark_user as mu where mu.work_id = ? and mu.`role` = 'MARKER'and (mu.mark_right = 0 or mu.mark_right = 2) and mu.subject = 'SC' and mu.enabled = 1) temp, paper p, student t where mt.marker_id = temp.id and mt.paper_id = p.id and t.exam_number = p.exam_number and mt.work_id = ? and mt.stage = 1 and p.is_missing = false UNION ALL select temp.*, null as result, p.source_name as sourceName, p.exam_number as examNumber, p.student_name as studentName, t.area_name as areaName, p.mark_by_leader as markByLeader, p.`level` from paper p, (select mu.id, mu.name as teacherName, mu.`role`, mu.subject, mu.work_id as workId from mark_user as mu where mu.work_id = ? and mu.`role` = 'MARKER' and (mu.mark_right = 0 or mu.mark_right = 2) and mu.subject = 'SC' and mu.enabled = 1) temp, student t where p.is_missing = true and p.work_id = ? and p.subject = 'SC' and t.exam_number = p.exam_number ";
+        String smSql = "select temp.*, mt.`result`, p.source_name as sourceName, p.exam_number as examNumber, p.student_name as studentName, t.area_name as areaName, p.mark_by_leader as markByLeader, p.`level` from mark_task as mt , (select mu.id, mu.name as teacherName, mu.`role`, mu.subject, mu.work_id as workId from mark_user as mu where mu.work_id = ? and mu.`role` = 'MARKER'and (mu.mark_right = 0 or mu.mark_right = 2) and mu.subject = 'SM' and mu.enabled = 1) temp, paper p, student t where mt.marker_id = temp.id and mt.paper_id = p.id and t.exam_number = p.exam_number and mt.work_id = ? and mt.stage = 1 and p.is_missing = false UNION ALL select temp.*, null as result, p.source_name as sourceName, p.exam_number as examNumber, p.student_name as studentName, t.area_name as areaName, p.mark_by_leader as markByLeader, p.`level` from paper p, (select mu.id, mu.name as teacherName, mu.`role`, mu.subject, mu.work_id as workId from mark_user as mu where mu.work_id = ? and mu.`role` = 'MARKER' and (mu.mark_right = 0 or mu.mark_right = 2) and mu.subject = 'SM' and mu.enabled = 1) temp, student t where p.is_missing = true and p.work_id = ? and p.subject = 'SM' and t.exam_number = p.exam_number ";
+        String sxSql = "select temp.*, mt.`result`, p.source_name as sourceName, p.exam_number as examNumber, p.student_name as studentName, t.area_name as areaName, p.mark_by_leader as markByLeader, p.`level` from mark_task as mt , (select mu.id, mu.name as teacherName, mu.`role`, mu.subject, mu.work_id as workId from mark_user as mu where mu.work_id = ? and mu.`role` = 'MARKER'and (mu.mark_right = 0 or mu.mark_right = 2) and mu.subject = 'SX' and mu.enabled = 1) temp, paper p, student t where mt.marker_id = temp.id and mt.paper_id = p.id and t.exam_number = p.exam_number and mt.work_id = ? and mt.stage = 1 and p.is_missing = false UNION ALL select temp.*, null as result, p.source_name as sourceName, p.exam_number as examNumber, p.student_name as studentName, t.area_name as areaName, p.mark_by_leader as markByLeader, p.`level` from paper p, (select mu.id, mu.name as teacherName, mu.`role`, mu.subject, mu.work_id as workId from mark_user as mu where mu.work_id = ? and mu.`role` = 'MARKER' and (mu.mark_right = 0 or mu.mark_right = 2) and mu.subject = 'SX' and mu.enabled = 1) temp, student t where p.is_missing = true and p.work_id = ? and p.subject = 'SX' and t.exam_number = p.exam_number ";
         //拼装问号
         //拼装问号
         scSql = sqlUtil.sqlPrint(scSql, workId, workId, workId, workId);
         scSql = sqlUtil.sqlPrint(scSql, workId, workId, workId, workId);
         smSql = sqlUtil.sqlPrint(smSql, workId, workId, workId, workId);
         smSql = sqlUtil.sqlPrint(smSql, workId, workId, workId, workId);
@@ -383,9 +383,9 @@ public class ScoreExporter {
     @RequestMapping(value = "exportScoreResult", method = RequestMethod.GET)
     @RequestMapping(value = "exportScoreResult", method = RequestMethod.GET)
     public void exportScoreResult(@RequestParam Long workId, HttpServletResponse response) {
     public void exportScoreResult(@RequestParam Long workId, HttpServletResponse response) {
         //测试-导出分数成绩表
         //测试-导出分数成绩表
-        String scSql = "select temp.*, IFNULL(mt.`result`,0) as result, p.source_name as sourceName, p.exam_number as examNumber, p.student_name as studentName, t.area_name as areaName, IFNULL(p.score,0) as level,p.mark_by_leader as markByLeader from mark_task as mt , (select mu.id, mu.name as teacherName, mu.`role`, mu.subject, mu.work_id as workId from mark_user as mu where mu.work_id = ? and mu.`role` = 'MARKER'and (mu.mark_right = 1 or mu.mark_right = 2) and mu.subject = 'SC'and mu.enabled = 1) temp, paper p, student t where mt.marker_id = temp.id and mt.paper_id = p.id and t.exam_number = p.exam_number and mt.work_id = ? and mt.stage = 2 and p.is_missing = false UNION ALL select temp.*, 0 as result, p.source_name as sourceName, p.exam_number as examNumber, p.student_name as studentName, t.area_name as areaName, IFNULL(p.score,0) as level, p.mark_by_leader as markByLeader from paper p, (select mu.id, mu.name as teacherName, mu.`role`, mu.subject, mu.work_id as workId from mark_user as mu where mu.work_id = ? and mu.`role` = 'MARKER' and (mu.mark_right = 1 or mu.mark_right = 2) and mu.subject = 'SC' and mu.enabled = 1) temp, student t where (p.is_missing = true or p.is_test = 3) and p.work_id = ? and p.subject = 'SC' and t.exam_number = p.exam_number ";
-        String smSql = "select temp.*, IFNULL(mt.`result`,0) as result, p.source_name as sourceName, p.exam_number as examNumber, p.student_name as studentName, t.area_name as areaName, IFNULL(p.score,0) as level,p.mark_by_leader as markByLeader from mark_task as mt , (select mu.id, mu.name as teacherName, mu.`role`, mu.subject, mu.work_id as workId from mark_user as mu where mu.work_id = ? and mu.`role` = 'MARKER'and (mu.mark_right = 1 or mu.mark_right = 2) and mu.subject = 'SM'and mu.enabled = 1) temp, paper p, student t where mt.marker_id = temp.id and mt.paper_id = p.id and t.exam_number = p.exam_number and mt.work_id = ? and mt.stage = 2 and p.is_missing = false UNION ALL select temp.*, 0 as result, p.source_name as sourceName, p.exam_number as examNumber, p.student_name as studentName, t.area_name as areaName, IFNULL(p.score,0) as level, p.mark_by_leader as markByLeader from paper p, (select mu.id, mu.name as teacherName, mu.`role`, mu.subject, mu.work_id as workId from mark_user as mu where mu.work_id = ? and mu.`role` = 'MARKER' and (mu.mark_right = 1 or mu.mark_right = 2) and mu.subject = 'SM' and mu.enabled = 1) temp, student t where (p.is_missing = true or p.is_test = 3) and p.work_id = ? and p.subject = 'SM' and t.exam_number = p.exam_number ";
-        String sxSql = "select temp.*, IFNULL(mt.`result`,0) as result, p.source_name as sourceName, p.exam_number as examNumber, p.student_name as studentName, t.area_name as areaName, IFNULL(p.score,0) as level,p.mark_by_leader as markByLeader from mark_task as mt , (select mu.id, mu.name as teacherName, mu.`role`, mu.subject, mu.work_id as workId from mark_user as mu where mu.work_id = ? and mu.`role` = 'MARKER'and (mu.mark_right = 1 or mu.mark_right = 2) and mu.subject = 'SX'and mu.enabled = 1) temp, paper p, student t where mt.marker_id = temp.id and mt.paper_id = p.id and t.exam_number = p.exam_number and mt.work_id = ? and mt.stage = 2 and p.is_missing = false UNION ALL select temp.*, 0 as result, p.source_name as sourceName, p.exam_number as examNumber, p.student_name as studentName, t.area_name as areaName, IFNULL(p.score,0) as level, p.mark_by_leader as markByLeader from paper p, (select mu.id, mu.name as teacherName, mu.`role`, mu.subject, mu.work_id as workId from mark_user as mu where mu.work_id = ? and mu.`role` = 'MARKER' and (mu.mark_right = 1 or mu.mark_right = 2) and mu.subject = 'SX' and mu.enabled = 1) temp, student t where (p.is_missing = true or p.is_test = 3) and p.work_id = ? and p.subject = 'SX' and t.exam_number = p.exam_number ";
+        String scSql = "select temp.*, IFNULL(mt.`result`,0) as result, p.source_name as sourceName, p.exam_number as examNumber, p.student_name as studentName, t.area_name as areaName, IFNULL(p.score,0) as level,p.mark_by_leader as markByLeader from mark_task as mt , (select mu.id, mu.name as teacherName, mu.`role`, mu.subject, mu.work_id as workId from mark_user as mu where mu.work_id = ? and mu.`role` = 'MARKER'and (mu.mark_right = 1 or mu.mark_right = 2) and mu.subject = 'SC'and mu.enabled = 1) temp, paper p, student t where mt.marker_id = temp.id and mt.paper_id = p.id and t.exam_number = p.exam_number and mt.work_id = ? and mt.stage = 2 and p.is_missing = false UNION ALL select temp.*, 0 as result, p.source_name as sourceName, p.exam_number as examNumber, p.student_name as studentName, t.area_name as areaName, IFNULL(p.score,0) as level, p.mark_by_leader as markByLeader from paper p, (select mu.id, mu.name as teacherName, mu.`role`, mu.subject, mu.work_id as workId from mark_user as mu where mu.work_id = ? and mu.`role` = 'MARKER' and (mu.mark_right = 1 or mu.mark_right = 2) and mu.subject = 'SC' and mu.enabled = 1) temp, student t where p.is_missing = true and p.work_id = ? and p.subject = 'SC' and t.exam_number = p.exam_number ";
+        String smSql = "select temp.*, IFNULL(mt.`result`,0) as result, p.source_name as sourceName, p.exam_number as examNumber, p.student_name as studentName, t.area_name as areaName, IFNULL(p.score,0) as level,p.mark_by_leader as markByLeader from mark_task as mt , (select mu.id, mu.name as teacherName, mu.`role`, mu.subject, mu.work_id as workId from mark_user as mu where mu.work_id = ? and mu.`role` = 'MARKER'and (mu.mark_right = 1 or mu.mark_right = 2) and mu.subject = 'SM'and mu.enabled = 1) temp, paper p, student t where mt.marker_id = temp.id and mt.paper_id = p.id and t.exam_number = p.exam_number and mt.work_id = ? and mt.stage = 2 and p.is_missing = false UNION ALL select temp.*, 0 as result, p.source_name as sourceName, p.exam_number as examNumber, p.student_name as studentName, t.area_name as areaName, IFNULL(p.score,0) as level, p.mark_by_leader as markByLeader from paper p, (select mu.id, mu.name as teacherName, mu.`role`, mu.subject, mu.work_id as workId from mark_user as mu where mu.work_id = ? and mu.`role` = 'MARKER' and (mu.mark_right = 1 or mu.mark_right = 2) and mu.subject = 'SM' and mu.enabled = 1) temp, student t where p.is_missing = true and p.work_id = ? and p.subject = 'SM' and t.exam_number = p.exam_number ";
+        String sxSql = "select temp.*, IFNULL(mt.`result`,0) as result, p.source_name as sourceName, p.exam_number as examNumber, p.student_name as studentName, t.area_name as areaName, IFNULL(p.score,0) as level,p.mark_by_leader as markByLeader from mark_task as mt , (select mu.id, mu.name as teacherName, mu.`role`, mu.subject, mu.work_id as workId from mark_user as mu where mu.work_id = ? and mu.`role` = 'MARKER'and (mu.mark_right = 1 or mu.mark_right = 2) and mu.subject = 'SX'and mu.enabled = 1) temp, paper p, student t where mt.marker_id = temp.id and mt.paper_id = p.id and t.exam_number = p.exam_number and mt.work_id = ? and mt.stage = 2 and p.is_missing = false UNION ALL select temp.*, 0 as result, p.source_name as sourceName, p.exam_number as examNumber, p.student_name as studentName, t.area_name as areaName, IFNULL(p.score,0) as level, p.mark_by_leader as markByLeader from paper p, (select mu.id, mu.name as teacherName, mu.`role`, mu.subject, mu.work_id as workId from mark_user as mu where mu.work_id = ? and mu.`role` = 'MARKER' and (mu.mark_right = 1 or mu.mark_right = 2) and mu.subject = 'SX' and mu.enabled = 1) temp, student t where p.is_missing = true and p.work_id = ? and p.subject = 'SX' and t.exam_number = p.exam_number ";
         //拼装问号
         //拼装问号
         scSql = sqlUtil.sqlPrint(scSql, workId, workId, workId, workId);
         scSql = sqlUtil.sqlPrint(scSql, workId, workId, workId, workId);
         smSql = sqlUtil.sqlPrint(smSql, workId, workId, workId, workId);
         smSql = sqlUtil.sqlPrint(smSql, workId, workId, workId, workId);

+ 7 - 3
stmms-ms-admin/src/main/java/cn/com/qmth/stmms/ms/admin/service/DataUploadService.java

@@ -68,6 +68,9 @@ public class DataUploadService {
     @Autowired
     @Autowired
     WorkRepo workRepo;
     WorkRepo workRepo;
 
 
+    @Autowired
+    RandomUtil randomUtil;
+
     /**
     /**
      * 上传考生试卷数据
      * 上传考生试卷数据
      *
      *
@@ -495,7 +498,7 @@ public class DataUploadService {
         int count = 0, result = 0;
         int count = 0, result = 0;
         Long random = 0L;
         Long random = 0L;
         while (true) {
         while (true) {
-            random = RandomUtil.randomMap.get(workId).get(new Random().nextInt(RandomUtil.randomMap.get(workId).size()));
+            random = randomUtil.getRandomMap().get(workId).get(new Random().nextInt(randomUtil.getRandomMap().get(workId).size()));
 //            random = RandomUtil.randomList.get(new Random().nextInt(RandomUtil.randomList.size()));
 //            random = RandomUtil.randomList.get(new Random().nextInt(RandomUtil.randomList.size()));
             result = paperRepo.countByWorkIdAndExamNumberAndRandomSeq(workId, examNumber, random);
             result = paperRepo.countByWorkIdAndExamNumberAndRandomSeq(workId, examNumber, random);
             if (result == 0 && random != Long.parseLong(examNumber.substring(3, examNumber.length()))) {
             if (result == 0 && random != Long.parseLong(examNumber.substring(3, examNumber.length()))) {
@@ -503,9 +506,10 @@ public class DataUploadService {
             } else {
             } else {
                 count++;
                 count++;
             }
             }
-            if (count > 100) {
+            if (count > 1000) {
 //                throw new Exception("重复几率较高,建议重新生成随机号");
 //                throw new Exception("重复几率较高,建议重新生成随机号");
-                RandomUtil.getRandom(workId, true);
+                randomUtil.getRandom(workId, true);
+                getRandom(workId, examNumber);
             }
             }
         }
         }
         return random;
         return random;

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

@@ -49,8 +49,8 @@ public class TrialService {
     @Autowired
     @Autowired
     ExamQuestionRepo examQuestionRepo;
     ExamQuestionRepo examQuestionRepo;
 
 
-    @Autowired
-    MarkLogRepo markLogRepo;
+//    @Autowired
+//    MarkLogRepo markLogRepo;
 
 
     @Autowired
     @Autowired
     MarkerGroupRepo markerGroupRepo;
     MarkerGroupRepo markerGroupRepo;
@@ -144,7 +144,7 @@ public class TrialService {
         examQuestionRepo.deleteByWorkIdAndSubjectAndTest(workId, subject, TrialEnum.INIT.getId());
         examQuestionRepo.deleteByWorkIdAndSubjectAndTest(workId, subject, TrialEnum.INIT.getId());
         //5.更新该科目下的试卷信息(正式卷子,并删除试评卷子)
         //5.更新该科目下的试卷信息(正式卷子,并删除试评卷子)
         List<Paper> paperList = paperRepo.findByWorkIdAndSubjectAndTest(workId, subject, TrialEnum.START_TRIAL.getId());
         List<Paper> paperList = paperRepo.findByWorkIdAndSubjectAndTest(workId, subject, TrialEnum.START_TRIAL.getId());
-        List<Long> paperIds = new ArrayList<>();
+//        List<Long> paperIds = new ArrayList<>();
         if (Objects.nonNull(paperList) && paperList.size() > 0) {
         if (Objects.nonNull(paperList) && paperList.size() > 0) {
             List<Paper> paperAllList = paperRepo.findByWorkIdAndSubject(workId, subject);
             List<Paper> paperAllList = paperRepo.findByWorkIdAndSubject(workId, subject);
             Map<String, Paper> paperAllMap = paperAllList.stream().filter(o -> (o.getTest() == 0 || o.getTest() == 3))
             Map<String, Paper> paperAllMap = paperAllList.stream().filter(o -> (o.getTest() == 0 || o.getTest() == 3))
@@ -160,7 +160,7 @@ public class TrialService {
                         levelMap.put(p.getExamNumber(), p.getLevel());
                         levelMap.put(p.getExamNumber(), p.getLevel());
                     }
                     }
                 }
                 }
-                paperIds.add(p.getId());
+//                paperIds.add(p.getId());
             });
             });
 
 
             if (finalPaperList.size() > 0) {
             if (finalPaperList.size() > 0) {
@@ -172,7 +172,7 @@ public class TrialService {
                 paperRepo.save(finalPaperList);
                 paperRepo.save(finalPaperList);
             }
             }
             //6.删除log日志
             //6.删除log日志
-            markLogRepo.deleteByPaperIdIn(paperIds);
+//            markLogRepo.deleteByPaperIdIn(paperIds);
         } else {
         } else {
             paperList = paperRepo.findByWorkIdAndSubjectAndTest(workId, subject, TrialEnum.INIT.getId());
             paperList = paperRepo.findByWorkIdAndSubjectAndTest(workId, subject, TrialEnum.INIT.getId());
         }
         }

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

@@ -10,7 +10,6 @@ import cn.com.qmth.stmms.ms.commons.config.ImageConfig;
 import cn.com.qmth.stmms.ms.commons.config.SystemConfig;
 import cn.com.qmth.stmms.ms.commons.config.SystemConfig;
 import cn.com.qmth.stmms.ms.commons.constant.SystemConstant;
 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.commons.utils.RandomUtil;
 import cn.com.qmth.stmms.ms.commons.utils.image.ImageCompression;
 import cn.com.qmth.stmms.ms.commons.utils.image.ImageCompression;
 import cn.com.qmth.stmms.ms.core.domain.MarkSubject;
 import cn.com.qmth.stmms.ms.core.domain.MarkSubject;
 import cn.com.qmth.stmms.ms.core.domain.Student;
 import cn.com.qmth.stmms.ms.core.domain.Student;
@@ -114,10 +113,6 @@ public class CollectApi {
         });
         });
         loginDTO.setSubjects(collectSubjectDTOs);
         loginDTO.setSubjects(collectSubjectDTOs);
 //        }
 //        }
-        //采集用户登录,生成随机数
-        if (Objects.equals(Role.COLLECTOR, markUser.getRole())) {
-            RandomUtil.getRandom(activeWork.getId(), false);
-        }
         return loginDTO;
         return loginDTO;
     }
     }
 
 

+ 35 - 16
stmms-ms-commons/src/main/java/cn/com/qmth/stmms/ms/commons/utils/RandomUtil.java

@@ -1,6 +1,9 @@
 package cn.com.qmth.stmms.ms.commons.utils;
 package cn.com.qmth.stmms.ms.commons.utils;
 
 
+import cn.com.qmth.stmms.ms.commons.threadPool.MyThreadPool;
 import org.slf4j.LoggerFactory;
 import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
 
 
 import java.util.*;
 import java.util.*;
 
 
@@ -11,21 +14,25 @@ import java.util.*;
  * @Author: wangliang
  * @Author: wangliang
  * @Date: 2019/10/24
  * @Date: 2019/10/24
  */
  */
+@Component
 public class RandomUtil {
 public class RandomUtil {
     private static final org.slf4j.Logger LOGGER = LoggerFactory.getLogger(RandomUtil.class);
     private static final org.slf4j.Logger LOGGER = LoggerFactory.getLogger(RandomUtil.class);
-    public static final int minSize = 1000000;
-    public static final int maxSize = 1000001;
-    public static final int randomSize = 2000000;
-    public static Map<Long, List<Long>> randomMap = new HashMap<>();
+    private final int minSize = 1000000;
+    private final int maxSize = 1000001;
+    private final int randomSize = 2000000;
+    private Map<Long, List<Long>> randomMap = new HashMap<>();
 //    public static List<Long> randomList = new ArrayList<>();
 //    public static List<Long> randomList = new ArrayList<>();
 
 
+    @Autowired
+    MyThreadPool myThreadPool;
+
     /**
     /**
      * 根据workId随机生成百万随机数
      * 根据workId随机生成百万随机数
      *
      *
      * @param workId
      * @param workId
      * @param againRandom
      * @param againRandom
      */
      */
-    public static void getRandom(Long workId, boolean againRandom) {
+    public void getRandom(Long workId, boolean againRandom) {
         List list = randomMap.get(workId);
         List list = randomMap.get(workId);
         if (Objects.isNull(list)) {
         if (Objects.isNull(list)) {
             randomMap.clear();
             randomMap.clear();
@@ -38,18 +45,30 @@ public class RandomUtil {
             LOGGER.info("workId:{},开始生成随机数:{}", workId, start);
             LOGGER.info("workId:{},开始生成随机数:{}", workId, start);
             Long finalRandomReq = randomReq;
             Long finalRandomReq = randomReq;
             List finalList = list;
             List finalList = list;
-            new Thread(() -> {
-                Set<Long> set = new HashSet<>();
-                for (int i = 0; i < randomSize; i++) {
-                    long id = (long) (Math.random() * minSize + maxSize * finalRandomReq);
-                    set.add(id);
+
+            myThreadPool.arbitratePoolTaskExecutor.execute(new Runnable() {
+                @Override
+                public void run() {
+                    Set<Long> set = new HashSet<>();
+                    for (int i = 0; i < randomSize; i++) {
+                        long id = (long) (Math.random() * minSize + maxSize * finalRandomReq);
+                        set.add(id);
+                    }
+                    finalList.addAll(set);
+                    set.clear();
+                    randomMap.put(workId, finalList);
+                    long end = System.currentTimeMillis();
+                    LOGGER.info("workId:{},生成随机数耗时:{},数据长度为:{}", workId, (end - start) / 1000 + "s", finalList.size());
                 }
                 }
-                finalList.addAll(set);
-                set.clear();
-                randomMap.put(workId, finalList);
-                long end = System.currentTimeMillis();
-                LOGGER.info("workId:{},生成随机数耗时:{},数据长度为:{}", workId, (end - start) / 1000 + "s", finalList.size());
-            }).start();
+            });
         }
         }
     }
     }
+
+    public Map<Long, List<Long>> getRandomMap() {
+        return randomMap;
+    }
+
+    public void setRandomMap(Map<Long, List<Long>> randomMap) {
+        this.randomMap = randomMap;
+    }
 }
 }

+ 5 - 2
stmms-ms-main/src/main/java/cn/com/qmth/stmms/ms/StartRunning.java

@@ -24,7 +24,10 @@ public class StartRunning implements CommandLineRunner {
     private static Logger LOGGER = LoggerFactory.getLogger(StartRunning.class);
     private static Logger LOGGER = LoggerFactory.getLogger(StartRunning.class);
 
 
     @Autowired
     @Autowired
-    private WorkRepo workRepo;
+    WorkRepo workRepo;
+
+    @Autowired
+    RandomUtil randomUtil;
 
 
     @Override
     @Override
     public void run(String... args) throws Exception {
     public void run(String... args) throws Exception {
@@ -35,7 +38,7 @@ public class StartRunning implements CommandLineRunner {
         } else {
         } else {
             for (Work work : workList) {
             for (Work work : workList) {
                 if (work.isActive()) {
                 if (work.isActive()) {
-                    RandomUtil.getRandom(work.getId(), false);
+                    randomUtil.getRandom(work.getId(), false);
                     break;
                     break;
                 }
                 }
             }
             }

+ 6 - 5
stmms-ms-marking/src/main/java/cn/com/qmth/stmms/ms/marking/service/AssignTaskService.java

@@ -42,6 +42,8 @@ public class AssignTaskService {
     @Value("${sys.config.random-bundle-size}")
     @Value("${sys.config.random-bundle-size}")
     private int randomBundleSize;
     private int randomBundleSize;
 
 
+    @Autowired
+    RandomUtil randomUtil;
 
 
     /**
     /**
      * 单评任务模式,每个科目评卷员都需要对该科目每份试卷进行评卷
      * 单评任务模式,每个科目评卷员都需要对该科目每份试卷进行评卷
@@ -182,20 +184,19 @@ public class AssignTaskService {
         int count = 0;
         int count = 0;
         Long random = 0L;
         Long random = 0L;
         while (true) {
         while (true) {
-            random = RandomUtil.randomMap.get(workId).get(new Random().nextInt(RandomUtil.randomMap.get(workId).size()));
+            random = randomUtil.getRandomMap().get(workId).get(new Random().nextInt(randomUtil.getRandomMap().get(workId).size()));
             if (Objects.isNull(randomMap) || randomMap.size() == 0) {
             if (Objects.isNull(randomMap) || randomMap.size() == 0) {
                 break;
                 break;
             }
             }
-//            random = RandomUtil.randomList.get(new Random().nextInt(RandomUtil.randomList.size()));
-//            result = markTaskRepo.countByMarkerIdAndPaperIdAndWorkIdAndRandomSeqNew(markerId, paperId, workId, random);
             if (Objects.isNull(randomMap.get(random))) {
             if (Objects.isNull(randomMap.get(random))) {
                 break;
                 break;
             } else {
             } else {
                 count++;
                 count++;
             }
             }
-            if (count > 10000) {
+            if (count > 1000) {
 //                throw new Exception("重复几率较高,建议重新生成随机号");
 //                throw new Exception("重复几率较高,建议重新生成随机号");
-                RandomUtil.getRandom(workId, true);
+                randomUtil.getRandom(workId, true);
+                getRandom(markerId, paperId, workId, examNumber, randomMap);
             }
             }
         }
         }
         return random;
         return random;