소스 검색

机构版-迭代

xiaof 4 년 전
부모
커밋
4e7a6d37bc

+ 10 - 0
stmms-ms-admin/src/main/java/cn/com/qmth/stmms/ms/admin/api/StudentApi.java

@@ -4,7 +4,9 @@ import cn.com.qmth.stmms.ms.admin.service.DataUploadService;
 import cn.com.qmth.stmms.ms.commons.utils.specification.PagingAndSortingDTO;
 import cn.com.qmth.stmms.ms.core.domain.MarkStage;
 import cn.com.qmth.stmms.ms.core.domain.MarkSubject;
+import cn.com.qmth.stmms.ms.core.domain.Paper;
 import cn.com.qmth.stmms.ms.core.domain.Student;
+import cn.com.qmth.stmms.ms.core.domain.enums.TrialEnum;
 import cn.com.qmth.stmms.ms.core.repository.MarkSubjectRepo;
 import cn.com.qmth.stmms.ms.core.repository.PaperRepo;
 import cn.com.qmth.stmms.ms.core.repository.StudentRepo;
@@ -15,6 +17,7 @@ import org.springframework.dao.DataIntegrityViolationException;
 import org.springframework.data.domain.Page;
 import org.springframework.http.HttpStatus;
 import org.springframework.http.ResponseEntity;
+import org.springframework.transaction.annotation.Transactional;
 import org.springframework.web.bind.annotation.*;
 import org.springframework.web.multipart.MultipartFile;
 
@@ -202,6 +205,7 @@ public class StudentApi {
      * @throws Exception
      */
     @RequestMapping(value = "/missing", method = RequestMethod.POST)
+    @Transactional
     public ResponseEntity addPaper(@RequestParam Long studentId,
                                    @RequestParam Subject subject,
                                    @RequestParam boolean isManual) {
@@ -219,6 +223,12 @@ public class StudentApi {
             throw new RuntimeException("科目有误");
         }
         studentRepo.save(student);
+        // 同步更新paper表缺考
+        Paper paper = paperRepo.findByWorkIdAndSubjectAndExamNumberAndTest(student.getWorkId(), subject, student.getExamNumber(), TrialEnum.DEFAULT.getId());
+        if(paper != null){
+            paper.setIsMissing(isManual);
+            paperRepo.save(paper);
+        }
         return new ResponseEntity(true, HttpStatus.OK);
     }
 

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

@@ -388,5 +388,7 @@ public interface PaperRepo extends JpaRepository<Paper, Long>, JpaSpecificationE
     @Query(value = "select count(distinct p.id) from mark_task m inner join paper p on m.paper_id = p.id and m.stage = ?3 where p.work_id = ?1 and p.subject = ?2 and m.manual_score = 1", nativeQuery = true)
     int countByWorkIdAndSubjectAndStageAndManualScore(Long workId, String subject, int stage);
 
+    long countByWorkIdAndQuestionIdAndIsMissingIsFalse(Long workId, Long questionId);
+
 //    List<Paper> findByWorkIdAndSubjectAndInspectRange(Long workId, Subject subject, Long inspectRange);
 }

+ 18 - 2
stmms-ms-marking/src/main/java/cn/com/qmth/stmms/ms/marking/api/MakrerApi.java

@@ -137,6 +137,7 @@ public class MakrerApi {
         List<Level> levels = levelRepo.findByWorkId(markSubject.getWorkId());
         Map<String, Level> levelMap = levels.stream().collect(Collectors.toMap(Level::getCode, l -> l));
         Integer levelShowAllPaper = ParamCache.paramMap.get(marker.getWorkId()).getLevelShowAllPaper();
+        Integer propDenominator = ParamCache.paramMap.get(marker.getWorkId()).getPropDenominator();
         Long batchNo = null;
         if(levelShowAllPaper == 0){
             batchNo = paperRepo.findMaxBatchNoByWorkIdAndSubject(marker.getWorkId(), marker.getSubject());
@@ -155,7 +156,14 @@ public class MakrerApi {
                     kdtotal = markTaskRepo.countByQuestionIdAndBatchNo(questionId, finalBatchNo, marker.getId());
                 }
                 //当前考区内试卷总数
-                long total = paperRepo.countByWorkIdAndQuestionId(markSubject.getWorkId(), questionId);
+                long total = 0;
+                if(propDenominator == 1){
+                    // 全部考生
+                    total = paperRepo.countByWorkIdAndQuestionId(markSubject.getWorkId(), questionId);
+                } else if (propDenominator == 2) {
+                    // 去除缺考考生
+                    total = paperRepo.countByWorkIdAndQuestionIdAndIsMissingIsFalse(markSubject.getWorkId(), questionId);
+                }
                 map.put("kdtotal", kdtotal);
                 map.put("total", total);
                 return map;
@@ -250,6 +258,7 @@ public class MakrerApi {
         List<Level> levels = levelRepo.findByWorkId(markSubject.getWorkId());
         Map<String, Level> levelMap = levels.stream().collect(Collectors.toMap(Level::getCode, l -> l));
         Integer levelShowAllPaper = ParamCache.paramMap.get(marker.getWorkId()).getLevelShowAllPaper();
+        Integer propDenominator = ParamCache.paramMap.get(marker.getWorkId()).getPropDenominator();
         Long batchNo = null;
         if(levelShowAllPaper == 0){
             batchNo = paperRepo.findMaxBatchNoByWorkIdAndSubject(marker.getWorkId(), marker.getSubject());
@@ -267,7 +276,14 @@ public class MakrerApi {
                     kdtotal = markTaskRepo.countByQuestionIdAndBatchNo(questionId, finalBatchNo, marker.getId());
                 }
                 //当前考区内试卷总数
-                long total = paperRepo.countByWorkIdAndQuestionId(markSubject.getWorkId(), questionId);
+                long total = 0;
+                if(propDenominator == 1){
+                    // 全部考生
+                    total = paperRepo.countByWorkIdAndQuestionId(markSubject.getWorkId(), questionId);
+                } else if (propDenominator == 2) {
+                    // 去除缺考考生
+                    total = paperRepo.countByWorkIdAndQuestionIdAndIsMissingIsFalse(markSubject.getWorkId(), questionId);
+                }
                 map.put("kdtotal", kdtotal);
                 map.put("total", total);
                 return map;