Browse Source

美术阅卷10月新增需求-新增试评检查状态功能

wangliang 5 năm trước cách đây
mục cha
commit
39b9f92dcc

+ 12 - 0
stmms-ms-admin/src/main/java/cn/com/qmth/stmms/ms/admin/api/TrialController.java

@@ -45,4 +45,16 @@ public class TrialController {
     public void finishTrial(@RequestParam Long workId, @RequestParam Subject subject) throws Exception {
     public void finishTrial(@RequestParam Long workId, @RequestParam Subject subject) throws Exception {
         trialService.finishTrial(workId, subject);
         trialService.finishTrial(workId, subject);
     }
     }
+
+    /**
+     * 检查任务状态
+     *
+     * @param workId
+     * @param subject
+     * @throws Exception
+     */
+    @RequestMapping(value = "checkMissionStatus", method = RequestMethod.GET)
+    public void checkMissionStatus(@RequestParam Long workId, @RequestParam Subject subject) throws Exception {
+        trialService.checkMissionStatus(workId, subject);
+    }
 }
 }

+ 1 - 0
stmms-ms-admin/src/main/java/cn/com/qmth/stmms/ms/admin/service/DataUploadService.java

@@ -383,6 +383,7 @@ public class DataUploadService {
                     paperNew.setQuestionName(questionNew.getName());
                     paperNew.setQuestionName(questionNew.getName());
                     paperNew.setQuestionId(questionNew.getId());
                     paperNew.setQuestionId(questionNew.getId());
                     paperNew.setSecretNumber(new StringBuffer(String.valueOf(subject.ordinal())).append(questionNew.getAreaCode()).append(random).toString());
                     paperNew.setSecretNumber(new StringBuffer(String.valueOf(subject.ordinal())).append(questionNew.getAreaCode()).append(random).toString());
+                    paperNew.setActive(true);
                     paperRepo.save(paperNew);
                     paperRepo.save(paperNew);
                 } catch (Exception e) {
                 } catch (Exception e) {
                     ExcelError excelError = new ExcelError();
                     ExcelError excelError = new ExcelError();

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

@@ -47,6 +47,30 @@ public class TrialService {
     @Autowired
     @Autowired
     ExamQuestionRepo examQuestionRepo;
     ExamQuestionRepo examQuestionRepo;
 
 
+    /**
+     * 检查任务状态
+     *
+     * @param workId
+     * @param subject
+     * @throws Exception
+     */
+    @Transactional
+    public void checkMissionStatus(Long workId, Subject subject) throws Exception {
+        Work work = workRepo.findOne(workId);
+        if (Objects.isNull(work)) {
+            throw new Exception("没有此工作区,请检查workId是否正确");
+        }
+        List<MarkSubject> markSubjectList = work.getSubjects().stream().filter(o -> o.getId().toUpperCase().contains(subject.toString().toUpperCase()))
+                .collect(Collectors.toList());
+        MarkSubject markSubject = markSubjectList.get(0);
+        if (markSubject.getTest() == TrialEnum.INIT.getId() || markSubject.getTest() == TrialEnum.START_TRIAL.getId()) {
+            finishTrial(workId, subject);
+        }
+        //修改科目test
+        markSubject.setTest(TrialEnum.START_FORMAL.getId());
+        markSubjectRepo.save(markSubject);
+    }
+
     /**
     /**
      * 开始试评任务
      * 开始试评任务
      *
      *

+ 1 - 1
stmms-ms-core/src/main/java/cn/com/qmth/stmms/ms/core/domain/ExamQuestion.java

@@ -36,7 +36,7 @@ public class ExamQuestion implements Serializable{
 
 
     @Basic
     @Basic
     @Column(name = "is_test")
     @Column(name = "is_test")
-    private int test; //是否试评,0:不是,1:数据已导入,2:试评中
+    private int test; //是否试评0:不是,1:数据已导入,2:试评中
 
 
     public int getTest() {
     public int getTest() {
         return test;
         return test;

+ 14 - 14
stmms-ms-core/src/main/java/cn/com/qmth/stmms/ms/core/domain/MarkSubject.java

@@ -1,7 +1,7 @@
 package cn.com.qmth.stmms.ms.core.domain;
 package cn.com.qmth.stmms.ms.core.domain;
 
 
+import cn.com.qmth.stmms.ms.core.domain.enums.TrialEnum;
 import cn.com.qmth.stmms.ms.core.vo.Subject;
 import cn.com.qmth.stmms.ms.core.vo.Subject;
-import org.hibernate.annotations.Columns;
 
 
 import javax.persistence.*;
 import javax.persistence.*;
 import java.io.Serializable;
 import java.io.Serializable;
@@ -11,7 +11,7 @@ import java.io.Serializable;
  * Created by zhengmin on 2016/9/21.
  * Created by zhengmin on 2016/9/21.
  */
  */
 @Entity
 @Entity
-public class MarkSubject implements Serializable{
+public class MarkSubject implements Serializable {
 
 
     private static final long serialVersionUID = -7205062745569303448L;
     private static final long serialVersionUID = -7205062745569303448L;
 
 
@@ -31,7 +31,7 @@ public class MarkSubject implements Serializable{
 
 
     @Enumerated(value = EnumType.ORDINAL)
     @Enumerated(value = EnumType.ORDINAL)
     private MarkStage stage;
     private MarkStage stage;
-    
+
     /**
     /**
      * 标准卷
      * 标准卷
      */
      */
@@ -39,14 +39,14 @@ public class MarkSubject implements Serializable{
 
 
     @Basic
     @Basic
     @Column(name = "is_test")
     @Column(name = "is_test")
-    private int test; //是否试评,0:不是,1:数据已导入,2:试评中
+    private int test; //是否试评,0:不是,1:数据已导入,2:试评中,3:正式任务
 
 
     public static long getSerialVersionUID() {
     public static long getSerialVersionUID() {
         return serialVersionUID;
         return serialVersionUID;
     }
     }
 
 
     public int getTest() {
     public int getTest() {
-        return test;
+        return test == TrialEnum.START_FORMAL.getId() ? TrialEnum.DEFAULT.getId() : test;
     }
     }
 
 
     public void setTest(int test) {
     public void setTest(int test) {
@@ -95,11 +95,11 @@ public class MarkSubject implements Serializable{
         this.stage = stage;
         this.stage = stage;
     }
     }
 
 
-    public Long getWorkId(){
+    public Long getWorkId() {
         return Long.parseLong(this.getId().split("-")[0]);
         return Long.parseLong(this.getId().split("-")[0]);
     }
     }
 
 
-    public Subject getSubject(){
+    public Subject getSubject() {
         return Subject.valueOf(this.getId().split("-")[1]);
         return Subject.valueOf(this.getId().split("-")[1]);
     }
     }
 
 
@@ -115,12 +115,12 @@ public class MarkSubject implements Serializable{
         this.collectConfig = collectConfig;
         this.collectConfig = collectConfig;
     }
     }
 
 
-	public int getSampleCount() {
-		return sampleCount;
-	}
+    public int getSampleCount() {
+        return sampleCount;
+    }
+
+    public void setSampleCount(int sampleCount) {
+        this.sampleCount = sampleCount;
+    }
 
 
-	public void setSampleCount(int sampleCount) {
-		this.sampleCount = sampleCount;
-	}
-    
 }
 }

+ 1 - 1
stmms-ms-core/src/main/java/cn/com/qmth/stmms/ms/core/domain/Paper.java

@@ -124,7 +124,7 @@ public class Paper implements Serializable {
 
 
     @Basic
     @Basic
     @Column(name = "is_test")
     @Column(name = "is_test")
-    private int test; //是否试评,0:不是,1:数据已导入,2:试评中
+    private int test; //是否试评0:不是,1:数据已导入,2:试评中
 
 
     @Basic
     @Basic
     @Column(name = "is_active")
     @Column(name = "is_active")

+ 1 - 1
stmms-ms-core/src/main/java/cn/com/qmth/stmms/ms/core/domain/Student.java

@@ -46,7 +46,7 @@ public class Student implements Serializable {
 
 
     @Basic
     @Basic
     @Column(name = "is_test")
     @Column(name = "is_test")
-    private String test; //是否试评,0:不是,1:数据已导入,2:试评中
+    private String test; //是否试评0:不是,1:数据已导入,2:试评中
 
 
     public static long getSerialVersionUID() {
     public static long getSerialVersionUID() {
         return serialVersionUID;
         return serialVersionUID;

+ 9 - 1
stmms-ms-core/src/main/java/cn/com/qmth/stmms/ms/core/domain/enums/TrialEnum.java

@@ -22,7 +22,11 @@ public enum TrialEnum {
     /**
     /**
      * 开始试评
      * 开始试评
      */
      */
-    START_TRIAL(2, "开始试评");
+    START_TRIAL(2, "开始试评"),
+    /**
+     * 正式任务
+     */
+    START_FORMAL(3, "正式任务"),;
 
 
     private int id;
     private int id;
 
 
@@ -60,6 +64,8 @@ public enum TrialEnum {
             return DEFAULT.getId();
             return DEFAULT.getId();
         } else if (Objects.equals(value.trim(), INIT.name)) {
         } else if (Objects.equals(value.trim(), INIT.name)) {
             return INIT.getId();
             return INIT.getId();
+        } else if (Objects.equals(value.trim(), START_FORMAL.name)) {
+            return START_FORMAL.getId();
         } else {
         } else {
             return START_TRIAL.getId();
             return START_TRIAL.getId();
         }
         }
@@ -76,6 +82,8 @@ public enum TrialEnum {
             return DEFAULT.name;
             return DEFAULT.name;
         } else if (id == INIT.getId()) {
         } else if (id == INIT.getId()) {
             return INIT.name;
             return INIT.name;
+        } else if (id == START_FORMAL.getId()) {
+            return START_FORMAL.name;
         } else {
         } else {
             return START_TRIAL.name;
             return START_TRIAL.name;
         }
         }

+ 13 - 1
stmms-ms-core/src/main/java/cn/com/qmth/stmms/ms/core/domain/task/MarkTask.java

@@ -78,7 +78,19 @@ public class MarkTask implements Serializable {
 
 
     @Basic
     @Basic
     @Column(name = "is_test")
     @Column(name = "is_test")
-    private int test; //是否试评,0:不是,1:数据已导入,2:试评中
+    private int test; //是否试评,0:不是,1:数据已导入,2:试评中
+
+    @Basic
+    @Column(name = "is_active")
+    private boolean isActive;//是否激活(false:不是,true:是)
+
+    public boolean isActive() {
+        return isActive;
+    }
+
+    public void setActive(boolean active) {
+        isActive = active;
+    }
 
 
     public int getTest() {
     public int getTest() {
         return test;
         return test;

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

@@ -32,6 +32,8 @@ public interface PaperRepo extends JpaRepository<Paper, Long>, JpaSpecificationE
 
 
     Page<Paper> findByQuestionId(Long questionId, Pageable pageable);
     Page<Paper> findByQuestionId(Long questionId, Pageable pageable);
 
 
+    Paper findTopByLevelAndIsSampleAndIsMissingAndSubjectAndTestOrderByUpdatedOnDesc(String level, boolean isSample, boolean isMissing, Subject subject, int test);
+
     /**
     /**
      * 统计各省各科试卷数量[areaCode,areaName,questionName,count]
      * 统计各省各科试卷数量[areaCode,areaName,questionName,count]
      *
      *

+ 22 - 12
stmms-ms-marking/src/main/java/cn/com/qmth/stmms/ms/marking/api/MarkTaskApi.java

@@ -3,11 +3,14 @@ package cn.com.qmth.stmms.ms.marking.api;
 import cn.com.qmth.stmms.ms.commons.web.PageableDTO;
 import cn.com.qmth.stmms.ms.commons.web.PageableDTO;
 import cn.com.qmth.stmms.ms.core.domain.ExamQuestion;
 import cn.com.qmth.stmms.ms.core.domain.ExamQuestion;
 import cn.com.qmth.stmms.ms.core.domain.MarkStage;
 import cn.com.qmth.stmms.ms.core.domain.MarkStage;
+import cn.com.qmth.stmms.ms.core.domain.Paper;
 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.task.MarkTask;
 import cn.com.qmth.stmms.ms.core.domain.task.MarkTask;
+import cn.com.qmth.stmms.ms.core.domain.user.MarkUser;
 import cn.com.qmth.stmms.ms.core.repository.ExamQuestionRepo;
 import cn.com.qmth.stmms.ms.core.repository.ExamQuestionRepo;
 import cn.com.qmth.stmms.ms.core.repository.LevelRepo;
 import cn.com.qmth.stmms.ms.core.repository.LevelRepo;
 import cn.com.qmth.stmms.ms.core.repository.MarkTaskRepo;
 import cn.com.qmth.stmms.ms.core.repository.MarkTaskRepo;
+import cn.com.qmth.stmms.ms.core.repository.PaperRepo;
 import cn.com.qmth.stmms.ms.marking.assembler.MarkTaskAssembler;
 import cn.com.qmth.stmms.ms.marking.assembler.MarkTaskAssembler;
 import cn.com.qmth.stmms.ms.marking.dto.MarkTaskDTO;
 import cn.com.qmth.stmms.ms.marking.dto.MarkTaskDTO;
 import cn.com.qmth.stmms.ms.marking.service.MarkingService;
 import cn.com.qmth.stmms.ms.marking.service.MarkingService;
@@ -18,8 +21,12 @@ import org.springframework.data.jpa.domain.Specification;
 import org.springframework.http.HttpStatus;
 import org.springframework.http.HttpStatus;
 import org.springframework.http.ResponseEntity;
 import org.springframework.http.ResponseEntity;
 import org.springframework.web.bind.annotation.*;
 import org.springframework.web.bind.annotation.*;
+import org.springframework.web.context.request.RequestContextHolder;
+import org.springframework.web.context.request.ServletRequestAttributes;
 
 
 import javax.persistence.criteria.Predicate;
 import javax.persistence.criteria.Predicate;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpSession;
 import java.util.*;
 import java.util.*;
 
 
 /**
 /**
@@ -45,6 +52,9 @@ public class MarkTaskApi {
     @Autowired
     @Autowired
     ExamQuestionRepo examQuestionRepo;
     ExamQuestionRepo examQuestionRepo;
 
 
+    @Autowired
+    PaperRepo paperRepo;
+
     /**
     /**
      * 评卷员的评卷任务
      * 评卷员的评卷任务
      *
      *
@@ -62,7 +72,7 @@ public class MarkTaskApi {
                             @RequestParam(required = false) String level,
                             @RequestParam(required = false) String level,
                             @RequestParam(required = false) String sn,
                             @RequestParam(required = false) String sn,
                             @RequestParam Long questionId,
                             @RequestParam Long questionId,
-                            Pageable pageable) {
+                            Pageable pageable) throws Exception {
         List<MarkTaskDTO> markTaskDTOs = new ArrayList<>();
         List<MarkTaskDTO> markTaskDTOs = new ArrayList<>();
 
 
         Specification<MarkTask> specification = (root, query, builder) -> {
         Specification<MarkTask> specification = (root, query, builder) -> {
@@ -87,17 +97,17 @@ public class MarkTaskApi {
         if (Objects.isNull(markTasks) || markTasks.getContent().size() == 0) {
         if (Objects.isNull(markTasks) || markTasks.getContent().size() == 0) {
             if (Objects.nonNull(isSample) && isSample) {
             if (Objects.nonNull(isSample) && isSample) {
                 ExamQuestion examQuestion = examQuestionRepo.findOne(questionId);
                 ExamQuestion examQuestion = examQuestionRepo.findOne(questionId);
-                specification = (root, query, builder) -> {
-                    List<Predicate> predicates = new ArrayList<>();
-                    if (isSample != null) {
-                        predicates.add(builder.equal(root.get("paper").get("isSample"), isSample));
-                    }
-                    predicates.add(builder.equal(root.get("paper").get("isMissing"), false));
-                    predicates.add(builder.equal(root.get("paper").get("subject"), examQuestion.getSubject()));
-                    predicates.add(builder.equal(root.get("paper").get("test"), TrialEnum.START_TRIAL.getId()));
-                    return builder.and(predicates.toArray(new Predicate[predicates.size()]));
-                };
-                markTasks = markTaskRepo.findAll(specification, pageable);
+                Paper paper = paperRepo.findTopByLevelAndIsSampleAndIsMissingAndSubjectAndTestOrderByUpdatedOnDesc(level, isSample, false, examQuestion.getSubject(), TrialEnum.START_TRIAL.getId());
+                ServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();
+                HttpServletRequest request = attributes.getRequest();
+                HttpSession session = request.getSession();
+                String token = (String) session.getAttribute("token");
+                if (Objects.isNull(token)) {
+                    throw new Exception("请先登录");
+                }
+                MarkUser markUser = (MarkUser) session.getAttribute("markUser");
+                MarkTask markTask = new MarkTask(markUser, paper, stage, 1L);
+                markTaskDTOs.add(markTaskAssembler.toDTO(markTask));
             }
             }
         }
         }
         markTasks.getContent().forEach(m -> {
         markTasks.getContent().forEach(m -> {

+ 2 - 1
stmms-ms-marking/src/main/java/cn/com/qmth/stmms/ms/marking/api/PaperApi.java

@@ -19,7 +19,6 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.data.domain.Page;
 import org.springframework.data.domain.Page;
 import org.springframework.data.domain.PageRequest;
 import org.springframework.data.domain.PageRequest;
 import org.springframework.data.domain.Pageable;
 import org.springframework.data.domain.Pageable;
-import org.springframework.data.domain.Sort;
 import org.springframework.data.jpa.domain.Specification;
 import org.springframework.data.jpa.domain.Specification;
 import org.springframework.http.HttpStatus;
 import org.springframework.http.HttpStatus;
 import org.springframework.http.ResponseEntity;
 import org.springframework.http.ResponseEntity;
@@ -199,6 +198,8 @@ public class PaperApi {
         if (Objects.isNull(papers) || papers.getContent().size() == 0) {
         if (Objects.isNull(papers) || papers.getContent().size() == 0) {
             if (Objects.nonNull(isSample) && isSample) {
             if (Objects.nonNull(isSample) && isSample) {
                 ExamQuestion examQuestion = examQuestionRepo.findOne(questionId);
                 ExamQuestion examQuestion = examQuestionRepo.findOne(questionId);
+//                Paper paper = paperRepo.findTopByLevelAndIsSampleAndIsMissingAndSubjectAndTestOrderByUpdatedOnDesc(level, isSample, false, examQuestion.getSubject(), TrialEnum.START_TRIAL.getId());
+//                papers.getContent().add(paper);
                 specification = (root, query, builder) -> {
                 specification = (root, query, builder) -> {
                     List<Predicate> predicates = new ArrayList<>();
                     List<Predicate> predicates = new ArrayList<>();
                     if (Objects.isNull(level)) {
                     if (Objects.isNull(level)) {

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

@@ -108,6 +108,7 @@ public class AssignTaskService {
             for (MarkUser marker : markerGroups.get(idx).getMarkers()) {
             for (MarkUser marker : markerGroups.get(idx).getMarkers()) {
                 Long random = getRandom(marker.getId(), paper.getId(), marker.getWorkId(), paper.getExamNumber());
                 Long random = getRandom(marker.getId(), paper.getId(), marker.getWorkId(), paper.getExamNumber());
                 MarkTask markTask = new MarkTask(marker, paper, markSubject.getStage(), random, markSubject.getTest());
                 MarkTask markTask = new MarkTask(marker, paper, markSubject.getStage(), random, markSubject.getTest());
+                markTask.setActive(true);
                 markTaskRepo.save(markTask);
                 markTaskRepo.save(markTask);
             }
             }
             idx++;
             idx++;