xiaof 4 жил өмнө
parent
commit
8de1587982

+ 7 - 3
stmms-ms-admin/src/main/java/cn/com/qmth/stmms/ms/admin/api/WorkApi.java

@@ -93,8 +93,6 @@ public class WorkApi {
         String organizationId = request.getHeader("organizationId");
         work.setOrganizationId(Long.valueOf(organizationId));
         workService.save(work);
-        //生成随机数
-        randomUtil.getRandom(work.getId(), false);
     }
 
     /**
@@ -123,7 +121,9 @@ public class WorkApi {
      */
     @RequestMapping(value = "{workId}", method = RequestMethod.PATCH)
     public void active(@PathVariable Long workId) {
-        List<Work> works = workRepo.findAll();
+        Work work = workRepo.findOne(workId);
+//        List<Work> works = workRepo.findAll();
+        List<Work> works = workRepo.findByOrganizationId(work.getOrganizationId());
         for (Work w : works) {
             w.setActive(false);
             if (w.getId().equals(workId)) {
@@ -176,6 +176,10 @@ public class WorkApi {
      */
     @RequestMapping(value = "{work}/overview", method = RequestMethod.GET)
     public WorkOverview overview(@PathVariable Work work) {
+        //生成随机数,已生成的工作,直接跳过
+        if(randomUtil.getRandomMap().get(work.getId()) == null) {
+            randomUtil.getRandom(work.getId(), false);
+        }
         return workOverviewAssembler.toDTO(work);
     }
 

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

@@ -191,9 +191,11 @@ public class CollectApi {
 
 
     @RequestMapping(value = "exam/listStudents/{examNumber}", method = RequestMethod.GET)
-    public List<CollectStuDTO> listStudents(@PathVariable String examNumber) {
+    public List<CollectStuDTO> listStudents(HttpServletRequest request, @PathVariable String examNumber) {
+        Long organizationId = Long.valueOf(request.getHeader("organizationId"));
         List<CollectStuDTO> list = new ArrayList<>();
-        Work activeWork = workRepo.findByActiveTrue();
+//        Work activeWork = workRepo.findByActiveTrue();
+        Work activeWork = workRepo.findByActiveTrueAndOrganizationId(organizationId);
         Consumer<Student> consumer = (s) -> {
             CollectStuDTO collectStuDTO = new CollectStuDTO();
             collectStuDTO.setExamId(activeWork.getId());
@@ -209,8 +211,10 @@ public class CollectApi {
     }
 
     @RequestMapping(value = "exam/getStudent/{examNumber}", method = RequestMethod.GET)
-    public CollectStuDTO getStudent(@PathVariable String examNumber) {
-        Work activeWork = workRepo.findByActiveTrue();
+    public CollectStuDTO getStudent(HttpServletRequest request, @PathVariable String examNumber) {
+        Long organizationId = Long.valueOf(request.getHeader("organizationId"));
+//        Work activeWork = workRepo.findByActiveTrue();
+        Work activeWork = workRepo.findByActiveTrueAndOrganizationId(organizationId);
         Student student = studentRepo.findByWorkIdAndRelateExamNumberAndTest(activeWork.getId(), examNumber, String.valueOf(TrialEnum.DEFAULT.ordinal()));
         if (student == null) {
             throw new RuntimeException("无该考生,请处理");
@@ -239,9 +243,11 @@ public class CollectApi {
 //    }
 
     @RequestMapping(value = "exam/students", method = RequestMethod.GET)
-    public List<CollectStuDTO> getStudents() {
+    public List<CollectStuDTO> getStudents(HttpServletRequest request) {
         List<CollectStuDTO> list = new ArrayList<>();
-        Work activeWork = workRepo.findByActiveTrue();
+        Long organizationId = Long.valueOf(request.getHeader("organizationId"));
+//        Work activeWork = workRepo.findByActiveTrue();
+        Work activeWork = workRepo.findByActiveTrueAndOrganizationId(organizationId);
         Consumer<Student> consumer = (s) -> {
             CollectStuDTO collectStuDTO = new CollectStuDTO();
             collectStuDTO.setExamId(activeWork.getId());
@@ -260,7 +266,9 @@ public class CollectApi {
     public CollectStuDTO saveStudent(HttpServletRequest request, @PathVariable Integer subjectId,
                                      CollectStuDTO dto) throws Exception {
         Subject subject = Subject.values()[subjectId - 1];
-        Work activeWork = workRepo.findByActiveTrue();
+        Long organizationId = Long.valueOf(request.getHeader("organizationId"));
+//        Work activeWork = workRepo.findByActiveTrue();
+        Work activeWork = workRepo.findByActiveTrueAndOrganizationId(organizationId);
         List<CollectStuDTO> list = new ArrayList<>();
         SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH-mm-ss");
 //        for (CollectStuDTO dto : uploadStudentArray) {
@@ -739,9 +747,11 @@ public class CollectApi {
     }
 
     @RequestMapping(value = "subject/collect-config", method = RequestMethod.POST)
-    public boolean updateConfig(@RequestBody CollectSubjectDTO collectSubjectDTO) {
+    public boolean updateConfig(HttpServletRequest request, @RequestBody CollectSubjectDTO collectSubjectDTO) {
         Subject subject = Subject.values()[collectSubjectDTO.getSubjectId() - 1];
-        Work activeWork = workRepo.findByActiveTrue();
+        Long organizationId = Long.valueOf(request.getHeader("organizationId"));
+//        Work activeWork = workRepo.findByActiveTrue();
+        Work activeWork = workRepo.findByActiveTrueAndOrganizationId(organizationId);
         MarkSubject markSubject = markSubjectRepo.findOne(activeWork.getId() + "-" + subject.toString());
         String config = Optional.ofNullable(collectSubjectDTO.getCollectConfig())
                 .map(Object::toString)

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

@@ -36,13 +36,13 @@ public class RandomUtil {
     public void getRandom(Long workId, boolean againRandom) {
         List list = randomMap.get(workId);
         if (Objects.isNull(list)) {
-            randomMap.clear();
+//            randomMap.clear();
             list = new ArrayList(randomSize);
         }
         if (list.size() == 0 || againRandom) {
             long start = System.currentTimeMillis();
             if (againRandom) {
-                randomMap.clear();
+//                randomMap.clear();
                 list = new ArrayList(randomSize);
                 randomNum++;
             }

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

@@ -106,9 +106,9 @@ public interface MarkTaskRepo extends JpaRepository<MarkTask, Long>, JpaSpecific
      * @param batchNo
      * @return
      */
-    @Query(value = "SELECT q.`id`,t.`marker_id` markerId,t.`marker_name` markerName,q.`name`,SUM(IF(t.`result` IS NULL,1,0)) leftCount,COUNT(t.question_id) totalCount, SUM(t.is_rejected) rejectedCount, q.area_code areaCode " +
-            "FROM mark_task t LEFT OUTER JOIN exam_question q ON t.`question_id` = q.`id` LEFT  JOIN paper p ON t.paper_id = p.id WHERE " +
-            "t.work_id = ? and t.subject = ? and t.stage = ? and p.is_missing = false and p.is_test = ? and p.batch_no = ? GROUP BY t.marker_id, t.`marker_name` ORDER BY q.`id`,t.marker_id", nativeQuery = true)
+    @Query(value = "SELECT q.`id`,t.`marker_id` markerId,mu.login_name loginName, t.`marker_name` markerName,q.`name`,SUM(IF(t.`result` IS NULL,1,0)) leftCount,COUNT(t.question_id) totalCount, SUM(t.is_rejected) rejectedCount, q.area_code areaCode " +
+            "FROM mark_task t LEFT JOIN mark_user mu on t.marker_id = mu.id LEFT OUTER JOIN exam_question q ON t.`question_id` = q.`id` LEFT  JOIN paper p ON t.paper_id = p.id WHERE " +
+            "t.work_id = ? and t.subject = ? and t.stage = ? and p.is_missing = false and p.is_test = ? and p.batch_no = ? GROUP BY t.marker_id,mu.login_name, t.`marker_name` ORDER BY q.`id`,t.marker_id", nativeQuery = true)
     List<Object[]> listGroupByQuestionAndMarkerAndBatchNo(Long workId, String name, Integer stageId, int test, Long batchNo);
 
     /**
@@ -151,9 +151,9 @@ public interface MarkTaskRepo extends JpaRepository<MarkTask, Long>, JpaSpecific
      *
      * @return
      */
-    @Query(value = "SELECT q.`id`,t.`marker_id` markerId,t.`marker_name` markerName,q.`name`,SUM(IF(t.`result` IS NULL,1,0)) leftCount,COUNT(t.question_id) totalCount,SUM(t.is_rejected) rejectedCount, q.area_code areaCode " +
-            "FROM mark_task t LEFT OUTER JOIN exam_question q ON t.`question_id` = q.`id` LEFT  JOIN paper p ON t.paper_id = p.id WHERE " +
-            "t.work_id = ? and t.subject = ? and t.stage = ? and p.score_batch_no = ? and p.is_missing = false GROUP BY t.marker_id, t.`marker_name` ORDER BY q.`id`, t.`marker_id`", nativeQuery = true)
+    @Query(value = "SELECT q.`id`,t.`marker_id` markerId,mu.login_name loginName,t.`marker_name` markerName,q.`name`,SUM(IF(t.`result` IS NULL,1,0)) leftCount,COUNT(t.question_id) totalCount,SUM(t.is_rejected) rejectedCount, q.area_code areaCode " +
+            "FROM mark_task t LEFT JOIN mark_user mu on t.marker_id = mu.id LEFT OUTER JOIN exam_question q ON t.`question_id` = q.`id` LEFT  JOIN paper p ON t.paper_id = p.id WHERE " +
+            "t.work_id = ? and t.subject = ? and t.stage = ? and p.score_batch_no = ? and p.is_missing = false GROUP BY t.marker_id,mu.login_name, t.`marker_name` ORDER BY q.`id`, t.`marker_id`", nativeQuery = true)
     List<Object[]> listGroupByQuestionAndMarkerAndScoreBatchNo(Long workId, String name, Integer stageId, Long batchNo);
 
     /**

+ 4 - 0
stmms-ms-core/src/main/java/cn/com/qmth/stmms/ms/core/repository/WorkRepo.java

@@ -17,4 +17,8 @@ public interface WorkRepo extends JpaRepository<Work,Long>{
     Work findByActiveTrueAndOrganizationId(Long organizationId);
 
     List<Work> findByOrganizationIdOrderByIdDesc(Long valueOf);
+
+    List<Work> findByOrganizationId(Long organizationId);
+
+    List<Work> findAllByActiveTrue();
 }

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

@@ -38,8 +38,8 @@ public class StartRunning implements CommandLineRunner {
         } else {
             randomUtil.getRandom(work.getId(), false);
         }*/
-        //对所有工作都生成随机数
-        List<Work> works = workRepo.findAll();
+        //对所有当前工作都生成随机数
+        List<Work> works = workRepo.findAllByActiveTrue();
         for (Work work : works) {
             randomUtil.getRandom(work.getId(), false);
         }

+ 22 - 17
stmms-ms-main/src/main/java/cn/com/qmth/stmms/ms/quartz/ScheduledTask.java

@@ -70,17 +70,19 @@ public class ScheduledTask implements InitializingBean {
     @Scheduled(cron = "0/30 * * * * ?")
     public void repairRepeatSecretNumberTask() {
         if (Objects.nonNull(randomUtil.getRandomMap()) && randomUtil.getRandomMap().size() > 0) {
-            Work work = workRepo.findByActiveTrue();
-            if (Objects.nonNull(work)) {
-                if (!this.repairPaper) {
-                    LOGGER.info("repairRepeatSecretNumberTask 修复试卷密号进来了");
-                    repairRepeatPaper(work.getId());
-                    LOGGER.info("repairRepeatSecretNumberTask 修复试卷密号结束了");
-                }
-                if (!this.repairTask) {
-                    LOGGER.info("repairRepeatSecretNumberTask 修复任务密号进来了");
-                    repairRepeatTask(work.getId());
-                    LOGGER.info("repairRepeatSecretNumberTask 修复任务密号结束了");
+            List<Work> works = workRepo.findAllByActiveTrue();
+            for (Work work : works) {
+                if (Objects.nonNull(work)) {
+                    if (!this.repairPaper) {
+                        LOGGER.info("repairRepeatSecretNumberTask 修复试卷密号进来了");
+                        repairRepeatPaper(work.getId());
+                        LOGGER.info("repairRepeatSecretNumberTask 修复试卷密号结束了");
+                    }
+                    if (!this.repairTask) {
+                        LOGGER.info("repairRepeatSecretNumberTask 修复任务密号进来了");
+                        repairRepeatTask(work.getId());
+                        LOGGER.info("repairRepeatSecretNumberTask 修复任务密号结束了");
+                    }
                 }
             }
         }
@@ -91,12 +93,15 @@ public class ScheduledTask implements InitializingBean {
      */
     @Scheduled(cron = "0 0/1 * * * ?")
     public void markTaskJob() {
-        Work work = workRepo.findByActiveTrue();
-        if (Objects.nonNull(work)) {
-            if (!markTaskJob) {
-                LOGGER.info("markTaskJob 进来了");
-                repairMarkTaskJob(work);
-                LOGGER.info("markTaskJob 结束了");
+//        Work work = workRepo.findByActiveTrue();
+        List<Work> works = workRepo.findAllByActiveTrue();
+        for (Work work : works) {
+            if (Objects.nonNull(work)) {
+                if (!markTaskJob) {
+                    LOGGER.info("markTaskJob 进来了");
+                    repairMarkTaskJob(work);
+                    LOGGER.info("markTaskJob 结束了");
+                }
             }
         }
     }

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

@@ -459,6 +459,7 @@ public class MakrerApi {
         int arbitrate = paperRepo.countByWorkIdAndSubjectAndIsArbitratedTrue(workId, subject);
         if (markUser != null && markUser.size() > 0) {
             Map map = new HashMap();
+            map.put("loginName", markUser.get(0).getLoginName());
             map.put("name", markUser.get(0).getName());
             map.put("arbitrated", arbitrate);
             objectMap.put("kzz", map);

+ 6 - 5
stmms-ms-marking/src/main/java/cn/com/qmth/stmms/ms/marking/assembler/QuestionStatAssembler.java

@@ -85,14 +85,15 @@ public class QuestionStatAssembler {
         if (qStats != null) {
             qpDTO = new MarkQuestionStatDTO();
             qpDTO.setId(qStats[0]);
-            qpDTO.setMarkerName(qStats[2]);
-            qpDTO.setName(qStats[3]);
-            qpDTO.setLeftCount(qStats[4]);
-            qpDTO.setTotalCount(qStats[5]);
+            qpDTO.setLoginName(qStats[2]);
+            qpDTO.setMarkerName(qStats[3]);
+            qpDTO.setName(qStats[4]);
+            qpDTO.setLeftCount(qStats[5]);
+            qpDTO.setTotalCount(qStats[6]);
             qpDTO.setRejectedCount(rejectCount);
             qpDTO.setShiftCount(shift);
             qpDTO.setShiftScoreCount(shiftScore);
-            qpDTO.setAreaCode(qStats[7]);
+            qpDTO.setAreaCode(qStats[8]);
         }
         return qpDTO;
     }

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

@@ -8,6 +8,7 @@ public class MarkQuestionStatDTO implements Serializable {
     private static final long serialVersionUID = 1607982936551079429L;
 
     private Object id;
+    private Object loginName;
     private Object markerName;
     private Object name;
     private Object leftCount;
@@ -25,6 +26,14 @@ public class MarkQuestionStatDTO implements Serializable {
         this.id = id;
     }
 
+    public Object getLoginName() {
+        return loginName;
+    }
+
+    public void setLoginName(Object loginName) {
+        this.loginName = loginName;
+    }
+
     public Object getMarkerName() {
         return markerName;
     }