Przeglądaj źródła

线上版本-新需求、bug-20201016

xiaof 4 lat temu
rodzic
commit
5d9b0c2174

+ 3 - 1
stmms-ms-admin/src/main/java/cn/com/qmth/stmms/ms/admin/api/ParamApi.java

@@ -121,7 +121,8 @@ public class ParamApi {
                                            @RequestParam Integer autoCallback,
                                            @RequestParam Integer majority,
                                            @RequestParam Integer cumulativeError,
-                                           @RequestParam Integer levelShowAllPaper) {
+                                           @RequestParam Integer levelShowAllPaper,
+                                           @RequestParam Integer showPaperCount) {
         List<MarkSubject> markSubjects = markSubjectRepo.findByWorkIdAndTestNotIn(workId, Arrays.asList(TrialEnum.DEFAULT.ordinal(), TrialEnum.START_FORMAL.ordinal()));
         List<MarkTask> markTasks = markTaskRepo.findByWorkId(workId);
         boolean flag = false;
@@ -145,6 +146,7 @@ public class ParamApi {
         paramSetting.setMajority(majority);
         paramSetting.setCumulativeError(cumulativeError);
         paramSetting.setLevelShowAllPaper(levelShowAllPaper);
+        paramSetting.setShowPaperCount(showPaperCount);
         paramSettingRepo.saveAndFlush(paramSetting);
         ParamCache.resetParam(paramSetting);
 

+ 109 - 0
stmms-ms-admin/src/main/java/cn/com/qmth/stmms/ms/admin/dto/StudentExpDTO.java

@@ -0,0 +1,109 @@
+package cn.com.qmth.stmms.ms.admin.dto;
+
+import cn.com.qmth.stmms.ms.commons.utils.excel.ExcelProperty;
+
+import java.io.Serializable;
+
+public class StudentExpDTO implements Serializable {
+
+    private static final long serialVersionUID = -4556126416794102992L;
+
+    @ExcelProperty(index = 0, name = "序号", type = 1)
+    private Integer seq;
+
+    @ExcelProperty(index = 1, name = "姓名", type = 1)
+    private String name;
+
+    @ExcelProperty(index = 2, name = "考号", type = 1)
+    private String examNumber;
+
+    @ExcelProperty(index = 3, name = "考区", type = 1)
+    private String areaName;
+
+    @ExcelProperty(index = 4, name = "学校", type = 1)
+    private String school;
+
+    @ExcelProperty(index = 5, name = "考场", type = 1)
+    private String examRoom;
+
+    @ExcelProperty(index = 6, name = "色彩", type = 1)
+    private String sc;
+
+    @ExcelProperty(index = 7, name = "素描", type = 1)
+    private String sm;
+
+    @ExcelProperty(index = 8, name = "速写", type = 1)
+    private String sx;
+
+    public Integer getSeq() {
+        return seq;
+    }
+
+    public void setSeq(Integer seq) {
+        this.seq = seq;
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    public String getExamNumber() {
+        return examNumber;
+    }
+
+    public void setExamNumber(String examNumber) {
+        this.examNumber = examNumber;
+    }
+
+    public String getAreaName() {
+        return areaName;
+    }
+
+    public void setAreaName(String areaName) {
+        this.areaName = areaName;
+    }
+
+    public String getSchool() {
+        return school;
+    }
+
+    public void setSchool(String school) {
+        this.school = school;
+    }
+
+    public String getExamRoom() {
+        return examRoom;
+    }
+
+    public void setExamRoom(String examRoom) {
+        this.examRoom = examRoom;
+    }
+
+    public String getSc() {
+        return sc;
+    }
+
+    public void setSc(String sc) {
+        this.sc = sc;
+    }
+
+    public String getSm() {
+        return sm;
+    }
+
+    public void setSm(String sm) {
+        this.sm = sm;
+    }
+
+    public String getSx() {
+        return sx;
+    }
+
+    public void setSx(String sx) {
+        this.sx = sx;
+    }
+}

+ 67 - 0
stmms-ms-admin/src/main/java/cn/com/qmth/stmms/ms/admin/exporter/StudentExporter.java

@@ -0,0 +1,67 @@
+package cn.com.qmth.stmms.ms.admin.exporter;
+
+import cn.com.qmth.stmms.ms.admin.dto.StudentExpDTO;
+import cn.com.qmth.stmms.ms.commons.utils.excel.ExportUtils;
+import cn.com.qmth.stmms.ms.core.domain.Student;
+import cn.com.qmth.stmms.ms.core.repository.StudentRepo;
+import cn.com.qmth.stmms.ms.core.specification.StudentSpecification;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.RestController;
+
+import javax.servlet.http.HttpServletResponse;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.concurrent.atomic.AtomicInteger;
+
+/**
+ * 考生导出
+ */
+@RestController
+@RequestMapping("api/export/student")
+public class StudentExporter {
+
+    @Autowired
+    private StudentRepo studentRepo;
+
+    @GetMapping
+    public void export(@RequestParam StudentSpecification params, HttpServletResponse response) {
+
+        List<Student> students = studentRepo.findAll(params.getSpecification());
+        List<StudentExpDTO> list = new ArrayList<>();
+        if (students != null && students.size() > 0) {
+            AtomicInteger atomicInteger = new AtomicInteger(0);
+            students.forEach(s -> {
+                StudentExpDTO studentExpDTO = new StudentExpDTO();
+                studentExpDTO.setSeq(atomicInteger.incrementAndGet());
+                studentExpDTO.setName(s.getName());
+                studentExpDTO.setExamNumber(s.getExamNumber());
+                studentExpDTO.setAreaName(s.getAreaName());
+                studentExpDTO.setSchool(s.getSchool());
+                studentExpDTO.setExamRoom(s.getExamRoom());
+                String uploadStatus = s.getUploadStatus();
+                for (String str : uploadStatus.split(",")) {
+                    //色彩
+                    if (str.contains("SC")) {
+                        String[] strings = str.split(":");
+                        studentExpDTO.setSc(strings[1]);
+                    }
+                    //素描
+                    if (str.contains("SM")) {
+                        String[] strings = str.split(":");
+                        studentExpDTO.setSm(strings[1]);
+                    }
+                    //速写
+                    if (str.contains("SX")) {
+                        String[] strings = str.split(":");
+                        studentExpDTO.setSx(strings[1]);
+                    }
+                }
+                list.add(studentExpDTO);
+            });
+        }
+        ExportUtils.exportEXCEL("考生管理", StudentExpDTO.class, list, response);
+    }
+}

+ 12 - 0
stmms-ms-core/src/main/java/cn/com/qmth/stmms/ms/core/domain/ParamSetting.java

@@ -36,6 +36,8 @@ public class ParamSetting implements Serializable {
 
     private Integer levelShowAllPaper;
 
+    private Integer showPaperCount;
+
     private Integer roundUp;
 
     private Integer changeStage;
@@ -53,6 +55,8 @@ public class ParamSetting implements Serializable {
         paramSetting.setAutoCallback(0);
         paramSetting.setMajority(1);
         paramSetting.setLevelShowAllPaper(0);
+        //是否显示试卷数量,默认显示1
+        paramSetting.setShowPaperCount(1);
         paramSetting.setRoundUp(1);
         paramSetting.setChangeStage(0);
         paramSetting.setScoreShowAllPaper(0);
@@ -147,6 +151,14 @@ public class ParamSetting implements Serializable {
         this.levelShowAllPaper = levelShowAllPaper;
     }
 
+    public Integer getShowPaperCount() {
+        return showPaperCount;
+    }
+
+    public void setShowPaperCount(Integer showPaperCount) {
+        this.showPaperCount = showPaperCount;
+    }
+
     public Integer getRoundUp() {
         return roundUp;
     }

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

@@ -93,6 +93,8 @@ public class MarkTask implements Serializable {
 
     private Integer displayNumber;
 
+    private Integer manualScore;
+
     public Long getBatchNo() {
         return batchNo;
     }
@@ -326,4 +328,12 @@ public class MarkTask implements Serializable {
     public void setDisplayNumber(Integer displayNumber) {
         this.displayNumber = displayNumber;
     }
+
+    public Integer getManualScore() {
+        return manualScore;
+    }
+
+    public void setManualScore(Integer manualScore) {
+        this.manualScore = manualScore;
+    }
 }

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

@@ -213,4 +213,6 @@ public interface MarkTaskRepo extends JpaRepository<MarkTask, Long>, JpaSpecific
     List<MarkTask> findByWorkIdAndSubjectAndMarkerIdAndStage(Long workId, Subject subject, Long valueOf, MarkStage stage);
 
     int countByWorkIdAndStageAndResultNotNull(Long id, MarkStage level);
+
+    int countByWorkIdAndSubjectAndStage(Long workId, Subject subject, MarkStage stage);
 }

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

@@ -93,7 +93,7 @@ score.level.taskSort=paper
 #score.level.taskSort=paper
 
 #\u524D\u7AEF\u9759\u6001\u8D44\u6E90\u76EE\u5F55
-web.upload-path=D:\\company\\qmth\\bat-pro\\msyj-202008\\static\\
+web.upload-path=D:\\company\\qmth\\bat-pro\\msyj-202009-v2.0\\static\\
 spring.mvc.static-path-pattern=/**
 spring.resources.static-locations=classpath:/META-INF/resources/,classpath:/resources/,classpath:/static/,classpath:/public/,file:${sys.config.localhostPath},file:${web.upload-path}
 

+ 17 - 0
stmms-ms-marking/src/main/java/cn/com/qmth/stmms/ms/marking/api/MarkSubjectApi.java

@@ -59,6 +59,9 @@ public class MarkSubjectApi {
     @Autowired
     private TaskPublishSettingRepo taskPublishSettingRepo;
 
+    @Autowired
+    MarkTaskRepo markTaskRepo;
+
     /**
      * 查询所有科目状态
      *
@@ -239,6 +242,13 @@ public class MarkSubjectApi {
         if (markerGroup.getMarkers().size() == 0) {
             throw new RuntimeException("不可创建空分组");
         }
+        if (MarkStage.LEVEL == markSubject.getStage() || MarkStage.SCORE == markSubject.getStage()) {
+            int count = markTaskRepo.countByWorkIdAndSubjectAndStage(markSubject.getWorkId(), markSubject.getSubject(), markSubject.getStage());
+            if(count > 0){
+                throw new RuntimeException("当前阶段已发布任务,不能编辑分组");
+            }
+        }
+
         markerGroup.setWorkId(markSubject.getWorkId());
         markerGroup.setSubject(markSubject.getSubject());
         return markerGroupRepo.save(markerGroup);
@@ -265,6 +275,13 @@ public class MarkSubjectApi {
      */
     @RequestMapping(value = "{markSubject}/markergroups/{domain}", method = RequestMethod.DELETE)
     public void removeMarkerGroup(@PathVariable MarkSubject markSubject, @PathVariable MarkerGroup domain) {
+        if (MarkStage.LEVEL == markSubject.getStage() || MarkStage.SCORE == markSubject.getStage()) {
+            int count = markTaskRepo.countByWorkIdAndSubjectAndStage(markSubject.getWorkId(), markSubject.getSubject(), markSubject.getStage());
+            if(count > 0){
+                throw new RuntimeException("当前阶段已发布任务,不能删除分组");
+            }
+        }
+
         markerGroupRepo.delete(domain);
     }
 

+ 4 - 0
stmms-ms-marking/src/main/java/cn/com/qmth/stmms/ms/marking/api/MarkTaskApi.java

@@ -27,6 +27,7 @@ import org.springframework.http.HttpStatus;
 import org.springframework.http.ResponseEntity;
 import org.springframework.orm.jpa.vendor.OpenJpaDialect;
 import org.springframework.transaction.annotation.Transactional;
+import org.springframework.util.StringUtils;
 import org.springframework.web.bind.annotation.*;
 
 import javax.persistence.criteria.CriteriaBuilder;
@@ -268,6 +269,9 @@ public class MarkTaskApi {
                 break;
             case SCORE:
                 Integer score = Integer.parseInt(result);
+                //是否手工输入分数
+                String manualScore = body.get("manualScore");
+                markTask.setManualScore(StringUtils.isEmpty(manualScore) ? 0 : Integer.parseInt(manualScore));
                 synchronized (this) {
                     markingService.scoring(markTask, score);
                 }

+ 1 - 0
stmms-ms-marking/src/main/java/cn/com/qmth/stmms/ms/marking/assembler/PaperAssembler.java

@@ -190,6 +190,7 @@ public class PaperAssembler {
             paperDTO.setPaperTest(paper.getTest());
             paperDTO.setShift(paper.isShift());
             paperDTO.setShiftScore(paper.isShiftScore());
+            paperDTO.setStudentName(student.getName());
         }
         return paperDTO;
     }

+ 10 - 0
stmms-ms-marking/src/main/java/cn/com/qmth/stmms/ms/marking/dto/PaperDTO.java

@@ -50,6 +50,8 @@ public class PaperDTO implements Serializable{
     private Integer rejectedCount;
    //排序用
     private int sortSum;
+    //考生姓名
+    private String studentName;
     private List<MarkTaskDTO> markResults = new ArrayList<>();
 
     public int getPaperTest() {
@@ -311,4 +313,12 @@ public class PaperDTO implements Serializable{
     public void setRejectedCount(Integer rejectedCount) {
         this.rejectedCount = rejectedCount;
     }
+
+    public String getStudentName() {
+        return studentName;
+    }
+
+    public void setStudentName(String studentName) {
+        this.studentName = studentName;
+    }
 }

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

@@ -213,24 +213,13 @@ public class AssignTaskService {
     }
 
     @Transactional
-    public void assignForGroupingScore(List<MarkerGroup> markerGroups, MarkSubject markSubject) {
-        markerGroups = markerGroups.stream().filter(m -> m.getMarkers().size() > 0).collect(Collectors.toList());
-        int sum = markerGroups.stream().mapToInt(m -> m.getMarkers().size()).sum();
-        List<MarkTask> markTasks = markTaskRepo.findByWorkId(markSubject.getWorkId());
+    public void assignForGroupingScore(MarkSubject markSubject) {
         if (markSubject.getTest() != 1) {
             //更新subject表formal为正试评卷
             markSubject.setFormal(true);
             markSubjectRepo.saveAndFlush(markSubject);
         }
-        //只有全部任务投放完成,才能删除分组
         int count = paperRepo.countByWorkIdAndSubjectAndIsMissingFalseAndActiveFalseAndBatchNoIsNullAndTest(markSubject.getWorkId(), markSubject.getSubject(), 0);
-        //进入分档阶段后,清空当前分组,以便打分阶段前重新分组
-        if (MarkStage.LEVEL.equals(markSubject.getStage()) && count == 0) {
-            for (MarkerGroup markerGroup : markerGroups) {
-                markerGroup.setMarkers(null);
-            }
-            markerGroupRepo.delete(markerGroups);
-        }
         if (MarkStage.SCORE.equals(markSubject.getStage()) && count == 0) {
             //初始化打分任务数据
             initTaskPublishData(markSubject);

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

@@ -339,13 +339,13 @@ public class StageControlService {
             throw new RuntimeException("没有分档完成");
         }
         this.isPtFull(workId, markSubject);
-        List<MarkerGroup> markerGroups = markerGroupRepo.findByWorkIdAndSubject(workId, subject);
+        /*List<MarkerGroup> markerGroups = markerGroupRepo.findByWorkIdAndSubject(workId, subject);
         if (markerGroups.size() == 0) {
             statusMap.put(markSubject.getId(), false);
             throw new RuntimeException("评卷员没有进行分组");
-        }
+        }*/
         markSubject.setAllLevel(true);
-        assignTaskService.assignForGroupingScore(markerGroups, markSubject);
+        assignTaskService.assignForGroupingScore(markSubject);
     }
 
     @Transactional