소스 검색

联考版-迭代

xiaof 4 년 전
부모
커밋
667b4fb52d

+ 2 - 1
stmms-ms-admin/src/main/java/cn/com/qmth/stmms/ms/admin/exporter/UserExporter.java

@@ -8,6 +8,7 @@ import cn.com.qmth.stmms.ms.commons.utils.excel.ExportUtils;
 import cn.com.qmth.stmms.ms.core.domain.MarkSubject;
 import cn.com.qmth.stmms.ms.core.domain.Work;
 import cn.com.qmth.stmms.ms.core.domain.user.MarkUser;
+import cn.com.qmth.stmms.ms.core.domain.user.Role;
 import cn.com.qmth.stmms.ms.core.repository.MarkSubjectRepo;
 import cn.com.qmth.stmms.ms.core.repository.MarkUserRepo;
 import cn.com.qmth.stmms.ms.core.repository.StudentRepo;
@@ -49,7 +50,7 @@ public class UserExporter {
         List<MarkUserDTO> markUserDTOs = new ArrayList<>();
         Stream<MarkUser> markUserStream = markUserRepo.findByWorkId(workId).stream();
         if (subject != null) {
-            markUserStream = markUserStream.filter(u -> u.getSubject().name() == subject.name());
+            markUserStream = markUserStream.filter(u -> u.getSubject().name() == subject.name() && (Role.MARKER.equals(u.getRole()) || Role.MARK_LEADER.equals(u.getRole())));
         }
         markUserStream.forEach(u -> {
             markUserDTOs.add(markUserAssembler.toDTO(u));

+ 8 - 4
stmms-ms-admin/src/main/java/cn/com/qmth/stmms/ms/admin/service/DataUploadService.java

@@ -241,7 +241,6 @@ public class DataUploadService {
         if (papers != null && papers.size() > 0) {
             throw new Exception("已有采集数据,不能导入考生数据");
         }
-        examQuestionRepo.deleteByWorkId(workId);
         List<Student> studentList = new ArrayList<>();
 
         ExcelReader excelReader = new ExcelReader(StudentDTO.class);
@@ -266,6 +265,7 @@ public class DataUploadService {
 
                     long isExist = examQuestionRepo.countByWorkIdAndAreaCode(workId, dto.getAreaCode());
                     if (isExist == 0) {
+                        examQuestionRepo.deleteByWorkIdAndAreaCode(workId, dto.getAreaCode());
                         if (!imageConfig.isCustomSubject()) {
                             for (Subject subject : Subject.values()) {
                                 ExamQuestion question = new ExamQuestion(dto.getAreaCode(), subject, workId, dto.getAreaName());
@@ -643,15 +643,19 @@ public class DataUploadService {
         Long random = 0L;
         while (true) {
             random = randomUtil.getRandomMap().get(workId).get(new Random().nextInt(randomUtil.getRandomMap().get(workId).size()));
-//            random = RandomUtil.randomList.get(new Random().nextInt(RandomUtil.randomList.size()));
             result = paperRepo.countByWorkIdAndExamNumberAndRandomSeq(workId, examNumber, random);
-            if (result == 0 && random != Long.parseLong(examNumber.substring(3, examNumber.length()))) {
+            String examNumberSub;
+            if(examNumber.length() > 3){
+                examNumberSub = examNumber.substring(3);
+            } else {
+                examNumberSub = examNumber;
+            }
+            if (result == 0 && !random.toString().equals(examNumberSub)) {
                 break;
             } else {
                 count++;
             }
             if (count > 1000) {
-//                throw new Exception("重复几率较高,建议重新生成随机号");
                 randomUtil.getRandom(workId, true);
                 getRandom(workId, examNumber);
             }

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

@@ -42,4 +42,6 @@ public interface ExamQuestionRepo extends JpaRepository<ExamQuestion, Long> {
 
     @Query(value = "select id, area_name areaName, name from exam_question eq where eq.id in (select question_id from paper p where p.work_id = ? and p.subject = ? and p.is_sample = 1 and p.is_missing = 0)", nativeQuery = true)
     List<Object[]> listByWorkIdAndSubject(Long workId, String subject);
+
+    void deleteByWorkIdAndAreaCode(Long workId, String areaCode);
 }

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

@@ -389,7 +389,7 @@ public interface PaperRepo extends JpaRepository<Paper, Long>, JpaSpecificationE
     void updateScoreByWorkIdAndSubject(Long workId, String name);
 
     @Modifying
-    @Query(value = "update paper p set p.level = case p.is_sample when true then p.level else null end, p.redo_level = null, p.batch_no = null, p.is_active = false, p.is_arbitrated = false, p.is_manual = false, p.is_rejected = false, p.is_tagged = false, p.mark_by_leader = false, p.is_one_click = false where p.work_id = ?1 and p.subject = ?2", nativeQuery = true)
+    @Query(value = "update paper p set p.level = case p.is_sample when true then p.level else null end, p.redo_level = null, p.batch_no = null, p.is_active = false, p.is_arbitrated = false, p.is_rejected = false, p.is_tagged = false, p.mark_by_leader = false, p.is_one_click = false where p.work_id = ?1 and p.subject = ?2", nativeQuery = true)
     void updateLevelByWorkIdAndSubject(Long workId, String name);
 
 //    List<Paper> findByWorkIdAndSubjectAndInspectRange(Long workId, Subject subject, Long inspectRange);

+ 13 - 0
stmms-ms-core/src/main/java/cn/com/qmth/stmms/ms/core/specification/StudentSpecification.java

@@ -3,6 +3,7 @@ package cn.com.qmth.stmms.ms.core.specification;
 import cn.com.qmth.stmms.ms.commons.utils.specification.PagingAndSortingSpecification;
 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.vo.Subject;
 import org.springframework.data.jpa.domain.Specification;
 import org.springframework.util.CollectionUtils;
 
@@ -161,6 +162,18 @@ public class StudentSpecification extends PagingAndSortingSpecification {
                     } else {
                         predicates.add(cb.equal(root.get("uploadStatus"), "SX:0,SC:0,SM:0"));
                     }
+                    // 未上传考生不包含标记缺考
+                    if (Subject.SC.name().equals(getSubject())) {
+                        predicates.add(cb.equal(root.get("scMissing"), false));
+                    } else if (Subject.SX.name().equals(getSubject())) {
+                        predicates.add(cb.equal(root.get("sxMissing"), false));
+                    } else if (Subject.SM.name().equals(getSubject())) {
+                        predicates.add(cb.equal(root.get("smMissing"), false));
+                    } else {
+                        predicates.add(cb.equal(root.get("scMissing"), false));
+                        predicates.add(cb.equal(root.get("sxMissing"), false));
+                        predicates.add(cb.equal(root.get("smMissing"), false));
+                    }
                 } else if (getUpload() != null && getUpload()) {
                     if (Objects.nonNull(getSubject())  && !getSubject().isEmpty()) {
                         predicates.add(cb.like(root.get("uploadStatus"), "%" + getSubject() + ":1" + "%"));

+ 1 - 1
stmms-ms-main/src/main/resources/ehcache.xml

@@ -34,7 +34,7 @@
             maxElementsInMemory="1000"
             overflowToDisk="false"
             diskPersistent="false"
-            timeToIdleSeconds="300"
+            timeToIdleSeconds="0"
             timeToLiveSeconds="0"
             memoryStoreEvictionPolicy="LRU" />