Browse Source

机构版-3.0.0-bug修复

xiaof 2 năm trước cách đây
mục cha
commit
21320286f4

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

@@ -1,7 +1,6 @@
 package cn.com.qmth.stmms.ms.core.repository;
 
 import cn.com.qmth.stmms.ms.core.domain.Paper;
-import cn.com.qmth.stmms.ms.core.domain.task.MarkTask;
 import cn.com.qmth.stmms.ms.core.vo.Subject;
 import org.springframework.data.domain.Page;
 import org.springframework.data.domain.Pageable;
@@ -13,7 +12,6 @@ import org.springframework.data.jpa.repository.Query;
 import org.springframework.data.repository.query.Param;
 
 import java.util.List;
-import java.util.Map;
 
 /**
  * Created by zhengmin on 2016/9/23.
@@ -288,7 +286,7 @@ public interface PaperRepo extends JpaRepository<Paper, Long>, JpaSpecificationE
     long countByWorkIdAndSubjectAndQuestionIdAndLevel(Long workId,
                                                       Subject subject, Long id, String code);
 
-    long countByQuestionIdAndLevelAndSubjectAndWorkId(Long questionId, String code, Subject subject ,Long workId);
+    long countByQuestionIdAndLevelAndSubjectAndWorkId(Long questionId, String code, Subject subject, Long workId);
 
     long countByWorkIdAndSubjectAndQuestionId(Long workId, Subject subject,
                                               Long id);
@@ -373,7 +371,7 @@ public interface PaperRepo extends JpaRepository<Paper, Long>, JpaSpecificationE
 
     @Query(value = "select p.* from paper p left join work w on p.work_id = w.id where w.organization_id = ?1 limit 1", nativeQuery = true)
     Paper findOneByOrganizationId(Long organizationId);
-	
+
     @Query("select max(p.batchNo) from Paper p where p.workId = ?1 and p.subject = ?2")
     Long findMaxBatchNoByWorkIdAndSubject(Long workId, Subject subject);
 
@@ -418,4 +416,8 @@ public interface PaperRepo extends JpaRepository<Paper, Long>, JpaSpecificationE
     @Modifying
     @Query("update Paper s set s.isMark = false")
     void updateIsMarkFalse();
+
+    int countByWorkIdAndSubjectAndLevelNullAndIsMissingFalseAndActiveTrueAndTestAndQuestionId(Long workId, Subject subject, int test, Long questionId);
+
+    int countByWorkIdAndSubjectAndIsMissingFalseAndActiveFalseAndTestAndQuestionId(Long workId, Subject subject, int test, Long questionId);
 }

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

@@ -76,7 +76,7 @@ sys.level.autoCallback=true
 #sys.config.thumbDir=.\\static\\thumbs
 sys.config.compression.percent=60
 #sys.config.imageServer.port=3000
-sys.config.imageServer.port=9000
+sys.config.imageServer.port=9005
 sys.config.imageServer.ip=localhost
 sys.config.imageServer.aliyunOss=false
 sys.config.imageServer.dir=ms-test

+ 15 - 0
stmms-ms-marking/src/main/java/cn/com/qmth/stmms/ms/marking/dto/LevleProgressDTO.java

@@ -8,12 +8,19 @@ import java.io.Serializable;
  */
 public class LevleProgressDTO implements Serializable {
 
+    // 总任务数
     private int totalCount;
 
+    // 已定档任务数
     private int successCount;
 
+    // 待评任务数
     private int waitCount;
 
+    // 待发任务数
+    private int waitPublishCount;
+
+    // 整体进度
     private double progress;
 
     private String areaName;
@@ -44,6 +51,14 @@ public class LevleProgressDTO implements Serializable {
         this.waitCount = waitCount;
     }
 
+    public int getWaitPublishCount() {
+        return waitPublishCount;
+    }
+
+    public void setWaitPublishCount(int waitPublishCount) {
+        this.waitPublishCount = waitPublishCount;
+    }
+
     public double getProgress() {
         return progress;
     }

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

@@ -132,7 +132,9 @@ public class AssignTaskService {
         //定序序号记录
         Map map = new HashMap();
         Map seqNewMap = new HashMap();
-        long currentTime = System.currentTimeMillis();
+        // 是否允许任务累加
+        boolean allowTaskOverlay = ParamCache.paramMap.get(markSubject.getWorkId()).getAllowTaskOverlay() == 1;
+        long currentTime = Objects.equals(MarkStage.LEVEL, markSubject.getStage()) && allowTaskOverlay ? 1L : System.currentTimeMillis();
 
         List<Level> levels = levelRepo.findByWorkId(markSubject.getWorkId());
         Map<String, Level> levelMap = levels.stream().collect(Collectors.toMap(Level::getCode, l -> l));

+ 21 - 13
stmms-ms-marking/src/main/java/cn/com/qmth/stmms/ms/marking/service/StageControlService.java

@@ -20,7 +20,6 @@ import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.util.CollectionUtils;
 
-import javax.naming.event.ObjectChangeListener;
 import java.math.BigDecimal;
 import java.util.*;
 import java.util.stream.Collectors;
@@ -163,7 +162,7 @@ public class StageControlService {
         }
 
         if (markSubject.getTest() != 1) {
-            if(ParamCache.paramMap.get(workId).getAllowTaskOverlay() == 0) {
+            if (ParamCache.paramMap.get(workId).getAllowTaskOverlay() == 0) {
                 //是否有未结束的分档任务
                 int count = paperRepo.countByWorkIdAndSubjectAndLevelIsNullAndIsMissingFalseAndActiveTrueAndBatchNoNotNullAndTest(workId, subject, 0);
                 if (count > 0) {
@@ -375,7 +374,7 @@ public class StageControlService {
         this.isPtFull(workId, markSubject);
         //打分随机发任务校验分组
         List<MarkerGroup> markerGroups = null;
-        if(ParamCache.paramMap.get(workId).getIsLevelToScore() == 0) {
+        if (ParamCache.paramMap.get(workId).getIsLevelToScore() == 0) {
             markerGroups = markerGroupRepo.findByWorkIdAndSubject(workId, subject);
             if (markerGroups.size() == 0) {
                 statusMap.put(markSubject.getId(), false);
@@ -405,8 +404,8 @@ public class StageControlService {
         }
 
         //总的发布任务数
-        int totalTaskCount = taskList.stream().map(m->{
-            if(Objects.isNull(m.getTaskCount())){
+        int totalTaskCount = taskList.stream().map(m -> {
+            if (Objects.isNull(m.getTaskCount())) {
                 m.setTaskCount(0);
             }
             return m;
@@ -418,7 +417,7 @@ public class StageControlService {
         int totalCount = taskList.stream().mapToInt(TaskPublishSetting::getTotalCount).sum();
 
         //谁分档谁打分时,必须一次发布所有任务
-        if(ParamCache.paramMap.get(workId).getIsLevelToScore() == 1){
+        if (ParamCache.paramMap.get(workId).getIsLevelToScore() == 1) {
             if (totalCount - totalTaskCount != 0) {
                 statusMap.put(markSubject.getId(), false);
                 throw new RuntimeException("谁分档谁打分时,要发布所有任务");
@@ -439,10 +438,10 @@ public class StageControlService {
 //            papers = paperRepo.findByWorkIdAndQuestionIdAndSubjectAndIsMissingFalseAndActiveTrueAndScoreBatchNoIsNull(workId, questionId0, subject, sort);
             papers = new ArrayList<>();
             for (TaskPublishSetting taskPublishSetting : taskList) {
-                if(taskPublishSetting.getTaskCount() == 0){
+                if (taskPublishSetting.getTaskCount() == 0) {
                     continue;
                 }
-                List<Paper> paperList = paperRepo.findByWorkIdAndQuestionIdAndSubjectAndLevelAndIsMissingFalseAndActiveTrueAndScoreBatchNoIsNull(workId, questionId0, subject, taskPublishSetting.getCode(),  sort);
+                List<Paper> paperList = paperRepo.findByWorkIdAndQuestionIdAndSubjectAndLevelAndIsMissingFalseAndActiveTrueAndScoreBatchNoIsNull(workId, questionId0, subject, taskPublishSetting.getCode(), sort);
                 List<Paper> subPaperList = paperList.subList(0, taskPublishSetting.getTaskCount());
                 papers.addAll(subPaperList);
             }
@@ -619,7 +618,7 @@ public class StageControlService {
             else {
                 List<Object[]> settingList1 = taskPublishSettingRepo.findAllByWorkIdAndSubjectAndPublishCount(markSubject.getWorkId(), markSubject.getSubject().name(), maxCount);
                 List<TaskPublishSetting> taskPublishSettings = new ArrayList<>();
-                settingList1.forEach(m->{
+                settingList1.forEach(m -> {
                     TaskPublishSetting taskPublishSetting = new TaskPublishSetting();
                     taskPublishSetting.setWorkId(Long.valueOf(m[0].toString()));
                     taskPublishSetting.setSubject(String.valueOf(m[1]));
@@ -648,19 +647,28 @@ public class StageControlService {
         List<LevleProgressDTO> list = new ArrayList<>();
         List<ExamQuestion> examQuestions = examQuestionRepo.findByWorkIdAndSubject(workId, markSubject.getSubject());
         for (ExamQuestion examQuestion : examQuestions) {
-            //已评任务数
-            int areaSuccessCount = paperRepo.countByWorkIdAndSubjectAndLevelNotNullAndIsMissingFalseAndActiveTrueAndTestAndQuestionId(workId, subject, 0, examQuestion.getId());
             //所有任务数(查询所有有效试卷)
             int areaTotalCount = paperRepo.countByWorkIdAndSubjectAndIsMissingFalseAndTestAndQuestionId(workId, subject, 0, examQuestion.getId());
+            //已定档任务数
+            int areaSuccessCount = paperRepo.countByWorkIdAndSubjectAndLevelNotNullAndIsMissingFalseAndActiveTrueAndTestAndQuestionId(workId, subject, 0, examQuestion.getId());
 
-            BigDecimal areaWaitTotal = BigDecimal.valueOf(areaTotalCount).subtract(BigDecimal.valueOf(areaSuccessCount));
+            // 待评数量
+            int areaWaitCount = paperRepo.countByWorkIdAndSubjectAndLevelNullAndIsMissingFalseAndActiveTrueAndTestAndQuestionId(workId, subject, 0, examQuestion.getId());
+
+            // 待发数量
+            int areaWaitPublishCount = paperRepo.countByWorkIdAndSubjectAndIsMissingFalseAndActiveFalseAndTestAndQuestionId(workId, subject, 0, examQuestion.getId());
+
+            if (areaSuccessCount + areaWaitCount + areaWaitPublishCount - areaTotalCount != 0) {
+                throw new RuntimeException("已定档数量+待评数量+待发数量≠总数量");
+            }
             //进度
             BigDecimal areaProgress = BigDecimal.ZERO.compareTo(BigDecimal.valueOf(areaTotalCount)) == 0 ? BigDecimal.ZERO : BigDecimal.valueOf(areaSuccessCount).multiply(BigDecimal.valueOf(100)).divide(BigDecimal.valueOf(areaTotalCount), 2, BigDecimal.ROUND_HALF_UP);
 
             LevleProgressDTO areaProgressDTO = new LevleProgressDTO();
             areaProgressDTO.setSuccessCount(areaSuccessCount);
             areaProgressDTO.setTotalCount(areaTotalCount);
-            areaProgressDTO.setWaitCount(areaWaitTotal.intValue());
+            areaProgressDTO.setWaitCount(areaWaitCount);
+            areaProgressDTO.setWaitPublishCount(areaWaitPublishCount);
             areaProgressDTO.setProgress(areaProgress.doubleValue());
             areaProgressDTO.setAreaName(examQuestion.getAreaName());
             areaProgressDTO.setQuestionId(examQuestion.getId());