Browse Source

测试bug修复-0817

xiaof 4 years ago
parent
commit
1268a6eafa

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

@@ -22,8 +22,8 @@ public interface TaskPublishSettingRepo extends JpaRepository<TaskPublishSetting
     @Query("select max(t.publishCount) from TaskPublishSetting t where t.workId = ?1 and t.subject = ?2")
     Integer maxPublishCount(Long workId, String subject);
 
-    @Query(value = "SELECT work_id workId, question_id questionId, subject, code, sum(total_count) totalCount, sum(success_count) successCount, sum(wait_count) waitCount FROM task_publish_setting where work_id = ?1 and subject = ?2 and publish_count = ?3 group by work_id, question_id, subject, code", nativeQuery = true)
-    List<Map> findAllByWorkIdAndSubjectAndPublishCount(Long workId, String subject, int maxCount);
+    @Query(value = "SELECT work_id workId, subject, code, sum(total_count) totalCount, sum(success_count) successCount, sum(wait_count) waitCount FROM task_publish_setting where work_id = ?1 and subject = ?2 and publish_count = ?3 group by work_id, subject, code", nativeQuery = true)
+    List<Object[]> findAllByWorkIdAndSubjectAndPublishCount(Long workId, String subject, int maxCount);
 
     List<TaskPublishSetting> findByWorkIdAndQuestionIdAndSubjectAndPublishCount(Long workId, Long questionId, String name, int maxCount);
 

+ 21 - 1
stmms-ms-marking/src/main/java/cn/com/qmth/stmms/ms/marking/api/MarkSubjectApi.java

@@ -56,6 +56,9 @@ public class MarkSubjectApi {
     @Autowired
     private StageControlService stageControlService;
 
+    @Autowired
+    private TaskPublishSettingRepo taskPublishSettingRepo;
+
     /**
      * 查询所有科目状态
      *
@@ -306,6 +309,23 @@ public class MarkSubjectApi {
         return count > 0 ? false : true;
     }
 
+    /**
+     * 是否可以进行打分任务全部考区发布
+     *
+     * @param markSubject
+     * @return
+     * @throws Exception
+     */
+    @RequestMapping(value = "{markSubject}/canScoreAll", method = RequestMethod.GET)
+    public Boolean canScoreAll(@PathVariable MarkSubject markSubject) {
+        //查询pulish_count为1的,如果总数不等于成功数,则为单个考区发过任务的
+        List<TaskPublishSetting> taskPublishSettings = taskPublishSettingRepo.findByWorkIdAndSubjectAndPublishCount(markSubject.getWorkId(), markSubject.getSubject().name(), 1);
+        int totalTaskCount = taskPublishSettings.stream().mapToInt(TaskPublishSetting::getTotalCount).sum();
+        int successTaskCount = taskPublishSettings.stream().mapToInt(TaskPublishSetting::getSuccessCount).sum();
+
+        return totalTaskCount - successTaskCount > 0 ? false : true;
+    }
+
     /**
      * 该评卷科目进入下一阶段
      *
@@ -354,7 +374,7 @@ public class MarkSubjectApi {
      * @param markSubject 评卷科目id
      */
     @RequestMapping(value = "{markSubject}/scoreProgress", method = RequestMethod.GET)
-    public List scoreProgress(@PathVariable MarkSubject markSubject,@RequestParam Long questionId) {
+    public List scoreProgress(@PathVariable MarkSubject markSubject,@RequestParam(defaultValue = "") Long questionId) {
         return stageControlService.scoreProgress(markSubject, questionId);
     }
 

+ 22 - 8
stmms-ms-marking/src/main/java/cn/com/qmth/stmms/ms/marking/service/AssignTaskService.java

@@ -118,30 +118,45 @@ public class AssignTaskService {
         markerGroups = markerGroups.stream().filter(m -> m.getMarkers().size() > 0).collect(Collectors.toList());
         int sum = markerGroups.stream().mapToInt(m -> m.getMarkers().size()).sum();
         int groupSize = markerGroups.size();
-        int idx = 0, seq=0;
+        int idx = 0;
         long currentTime = System.currentTimeMillis();
         Iterator<Paper> iterator = papers.iterator();
         List<MarkTask> markTaskList = new ArrayList<>(papers.size() * sum);
         List<Paper> paperList = new ArrayList<>(papers.size());
         List<MarkTask> markTasks = markTaskRepo.findByWorkId(markSubject.getWorkId());
         Map<Long, MarkTask> randomMap = markTasks.stream().collect(Collectors.toMap(MarkTask::getRandomSeqNew, Function.identity(), (dto1, dto2) -> dto1));
+        //定序序号记录
+        Map map = new HashMap();
         while (iterator.hasNext()) {
             if (idx >= groupSize) {
                 idx = 0;
             }
             Paper paper = iterator.next();
+            String serialNumber = null;
+            Integer displayNumber = null;
+            //是否定序
+            int seq=0;
+            long sortRule = taskList.stream().filter(m->Objects.equals(m.getCode(), paper.getLevel())&& m.getSortRule() == 1).count();
+            if(sortRule !=0) {
+                if(map.containsKey(paper.getLevel() + idx)){
+                    seq = (int) map.get(paper.getLevel() + idx);
+                }
+                seq = ++seq;
+                serialNumber = paper.getLevel() + seq;
+                //是否显示序号
+                long display = taskList.stream().filter(m->Objects.equals(m.getCode(), paper.getLevel())&& m.getDisplayNumber() == 1).count();
+                displayNumber = (int) display;
+                //设置新值
+                map.put(paper.getLevel()+ idx, seq);
+            }
             for (MarkUser marker : markerGroups.get(idx).getMarkers()) {
                 Long random = getRandom(marker.getId(), paper.getId(), marker.getWorkId(), paper.getExamNumber(), randomMap);
                 MarkTask markTask = null;
                 if (Objects.equals(MarkStage.SCORE, markSubject.getStage())) {
                     markTask = new MarkTask(marker, paper, markSubject.getStage(), random, markSubject.getTest());
                     markTask.setBatchNo(currentTime);
-                    //是否显示序号
-                    long display = taskList.stream().filter(m->Objects.equals(m.getCode(), paper.getLevel())&& m.getDisplayNumber() == 1).count();
-                    if(display !=0) {
-                        markTask.setSerialNumber(paper.getLevel() + (seq + 1));
-                        markTask.setDisplayNumber((int) display);
-                    }
+                    markTask.setSerialNumber(serialNumber);
+                    markTask.setDisplayNumber(displayNumber);
                 } else {
                     if(paper.isSample() && paper.getLevel() != null){
                         Level level = levelRepo.findByWorkIdAndCode(markSubject.getWorkId(), paper.getLevel());
@@ -171,7 +186,6 @@ public class AssignTaskService {
                 }
             }
             idx++;
-            seq ++;
         }
         markTaskRepo.save(markTaskList);
         paperRepo.save(paperList);

+ 31 - 18
stmms-ms-marking/src/main/java/cn/com/qmth/stmms/ms/marking/service/StageControlService.java

@@ -414,22 +414,23 @@ public class StageControlService {
         List<TaskPublishSetting> taskListAll = taskPublishSettingRepo.findByWorkIdAndSubjectAndPublishCount(workId, subject.name(), max);
         if (Objects.isNull(questionId)) {
             Map<String, TaskPublishSetting> map = taskList.stream().collect(Collectors.toMap(TaskPublishSetting::getCode, p -> p));
-            taskListAll.stream().map(m -> {
-                m.setId(null);
-                m.setWorkId(workId);
-                m.setQuestionId(m.getQuestionId());
-                m.setSubject(subject.name());
-                m.setCode(m.getCode());
-                m.setSuccessCount(m.getTotalCount());
-                m.setWaitCount(0);
-                m.setSortRule(map.get(m.getCode()).getSortRule());
-                m.setDisplayNumber(map.get(m.getCode()).getDisplayNumber());
-                m.setTaskCount(0);
-                m.setBatchNo(scoreBatchNo);
-                m.setPublishCount(max + 1);
-                return m;
+            List<TaskPublishSetting> finalList = taskListAll.stream().map(m -> {
+                TaskPublishSetting taskPublishSetting = new TaskPublishSetting();
+                taskPublishSetting.setWorkId(workId);
+                taskPublishSetting.setQuestionId(m.getQuestionId());
+                taskPublishSetting.setSubject(subject.name());
+                taskPublishSetting.setCode(m.getCode());
+                taskPublishSetting.setTotalCount(m.getTotalCount());
+                taskPublishSetting.setSuccessCount(m.getTotalCount());
+                taskPublishSetting.setWaitCount(0);
+                taskPublishSetting.setSortRule(map.get(m.getCode()).getSortRule());
+                taskPublishSetting.setDisplayNumber(map.get(m.getCode()).getDisplayNumber());
+                taskPublishSetting.setTaskCount(0);
+                taskPublishSetting.setBatchNo(scoreBatchNo);
+                taskPublishSetting.setPublishCount(max + 1);
+                return taskPublishSetting;
             }).collect(Collectors.toList());
-            taskPublishSettingRepo.save(taskListAll);
+            taskPublishSettingRepo.save(finalList);
         } else {
             Long questionId0 = Long.valueOf(questionId.toString());
             List<TaskPublishSetting> finalList = taskListAll.stream().map(m -> {
@@ -563,18 +564,30 @@ public class StageControlService {
             return taskPublishSettingRepo.findByWorkIdAndSubjectAndPublishCount(markSubject.getWorkId(), markSubject.getSubject().name(), maxCount);
         }*/
 
-        Integer maxCount = taskPublishSettingRepo.maxPublishCountByQuestionId(markSubject.getWorkId(), Long.valueOf(questionId.toString()), markSubject.getSubject().name());
+        Integer maxCount = taskPublishSettingRepo.maxPublishCount(markSubject.getWorkId(), markSubject.getSubject().name());
         if (maxCount != null && maxCount.intValue() >= 0) {
             List settingList = null;
             //单个考区
             if (questionId != null) {
                 settingList = taskPublishSettingRepo.findByWorkIdAndQuestionIdAndSubjectAndPublishCount(markSubject.getWorkId(), questionId, markSubject.getSubject().name(), maxCount);
+                return settingList;
             }
             //所有考区
             else {
-                settingList = taskPublishSettingRepo.findAllByWorkIdAndSubjectAndPublishCount(markSubject.getWorkId(), markSubject.getSubject().name(), maxCount);
+                List<Object[]> settingList1 = taskPublishSettingRepo.findAllByWorkIdAndSubjectAndPublishCount(markSubject.getWorkId(), markSubject.getSubject().name(), maxCount);
+                List<TaskPublishSetting> taskPublishSettings = new ArrayList<>();
+                settingList1.forEach(m->{
+                    TaskPublishSetting taskPublishSetting = new TaskPublishSetting();
+                    taskPublishSetting.setWorkId(Long.valueOf(m[0].toString()));
+                    taskPublishSetting.setSubject(String.valueOf(m[1]));
+                    taskPublishSetting.setCode(String.valueOf(m[2]));
+                    taskPublishSetting.setTotalCount(Integer.valueOf(m[3].toString()));
+                    taskPublishSetting.setSuccessCount(Integer.valueOf(m[4].toString()));
+                    taskPublishSetting.setWaitCount(Double.valueOf(m[5].toString()).intValue());
+                    taskPublishSettings.add(taskPublishSetting);
+                });
+                return taskPublishSettings;
             }
-            return settingList;
         }
         return null;
     }