Jelajahi Sumber

ierge branch 'dev_v3.2.3' into dev_v3.2.4
merge

wangliang 2 tahun lalu
induk
melakukan
aaba3370f0
14 mengubah file dengan 87 tambahan dan 57 penghapusan
  1. 11 0
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/entity/ExamStudent.java
  2. 1 1
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/mapper/ExamStudentMapper.java
  3. 1 1
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/ExamStudentService.java
  4. 1 1
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/ExamTaskSyncService.java
  5. 1 1
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/PrintCommonService.java
  6. 1 1
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/DataSyncServiceImpl.java
  7. 2 1
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/ExamDetailServiceImpl.java
  8. 2 2
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/ExamStudentServiceImpl.java
  9. 6 4
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/ExamTaskServiceImpl.java
  10. 2 1
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/ExamTaskSyncServiceImpl.java
  11. 2 1
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/PrintCommonServiceImpl.java
  12. 2 0
      distributed-print-business/src/main/resources/mapper/ExamDetailCourseMapper.xml
  13. 52 41
      distributed-print-business/src/main/resources/mapper/ExamPaperStructureMapper.xml
  14. 3 2
      distributed-print-business/src/main/resources/mapper/ExamStudentMapper.xml

+ 11 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/entity/ExamStudent.java

@@ -43,6 +43,9 @@ public class ExamStudent extends BaseEntity implements Serializable {
     @TableField("student_code")
     private String studentCode;
 
+    @TableField("exam_id")
+    private Long examId;
+
     @TableField("paper_number")
     private String paperNumber;
 
@@ -272,6 +275,14 @@ public class ExamStudent extends BaseEntity implements Serializable {
         this.majorName = majorName;
     }
 
+    public Long getExamId() {
+        return examId;
+    }
+
+    public void setExamId(Long examId) {
+        this.examId = examId;
+    }
+
     public String getPaperNumber() {
         return paperNumber;
     }

+ 1 - 1
distributed-print-business/src/main/java/com/qmth/distributed/print/business/mapper/ExamStudentMapper.java

@@ -55,5 +55,5 @@ public interface ExamStudentMapper extends BaseMapper<ExamStudent> {
 
     List<SyncExamStudentDto> listStudentByExamDetailCourseId(@Param("examDetailCourseId") Long examDetailCourseId);
 
-    List<String> listTicketNumberBySemesterId(String semesterId);
+    List<String> listTicketNumberBySemesterId(@Param("semesterId") String semesterId, @Param("examId") Long examId);
 }

+ 1 - 1
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/ExamStudentService.java

@@ -48,5 +48,5 @@ public interface ExamStudentService extends IService<ExamStudent> {
 
     List<SyncExamStudentDto> listStudentByExamDetailCourseId(List<ExamDetailCourseDto> examDetailCourseList);
 
-    List<String> listTicketNumberBySemesterId(String semesterId);
+    List<String> listTicketNumberBySemesterId(String semesterId, Long examId);
 }

+ 1 - 1
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/ExamTaskSyncService.java

@@ -11,5 +11,5 @@ import com.qmth.distributed.print.business.entity.ExamTaskSync;
  */
 public interface ExamTaskSyncService extends IService<ExamTaskSync> {
 
-    ExamTaskSync getBySchoolIdAndOrgCodeAndPaperNumber(Long schoolId, String orgCode, String paperNumber);
+    ExamTaskSync getBySchoolIdAndOrgCodeAndPaperNumber(Long schoolId, Long examId, String orgCode, String paperNumber);
 }

+ 1 - 1
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/PrintCommonService.java

@@ -265,7 +265,7 @@ public interface PrintCommonService {
      * @param sysUser                        请求用户
      * @return 结果
      */
-    List<ExamStudent> createBatchStudentByStudentList(Long schoolId, String semesterId, String paperNumber, String extendFields, List<ExamTaskStudentObjectParam> examTaskStudentObjectParamList, Long examDetailCourseId, String examShortCode, String courseShortCode, Long cardRuleId, SysUser sysUser);
+    List<ExamStudent> createBatchStudentByStudentList(Long schoolId, Long examId, String semesterId, String paperNumber, String extendFields, List<ExamTaskStudentObjectParam> examTaskStudentObjectParamList, Long examDetailCourseId, String examShortCode, String courseShortCode, Long cardRuleId, SysUser sysUser);
 
     /**
      * 生成准考证号

+ 1 - 1
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/DataSyncServiceImpl.java

@@ -134,7 +134,7 @@ public class DataSyncServiceImpl implements DataSyncService {
 
                 Long examTaskId = Long.valueOf(param.getExamTaskId());
                 ExamTask examTask = examTaskService.getById(examTaskId);
-                ExamTaskSync examTaskSync = examTaskSyncService.getBySchoolIdAndOrgCodeAndPaperNumber(schoolId, orgCode, examTask.getPaperNumber());
+                ExamTaskSync examTaskSync = examTaskSyncService.getBySchoolIdAndOrgCodeAndPaperNumber(schoolId, examTask.getExamId(), orgCode, examTask.getPaperNumber());
                 if (examTaskSync != null && ExamTaskSyncStatusEnum.STARTING.equals(examTaskSync.getSyncStatus())) {
                     throw ExceptionResultEnum.ERROR.exception("其它任务中该课程正在同步中,请刷新列表查看最新状态");
                 }

+ 2 - 1
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/ExamDetailServiceImpl.java

@@ -653,7 +653,7 @@ public class ExamDetailServiceImpl extends ServiceImpl<ExamDetailMapper, ExamDet
     public void disposeExamStudentByExaminationExcel(Long examId, List<ExaminationImportDto> dataList, Long userId, SysUser sysUser) throws IllegalAccessException {
         BasicExam basicExam = basicExamService.getById(examId);
         // 查询学期下所有考务数据的准考证号集合
-        List<String> examStudentTicketNumberList = examStudentService.listTicketNumberBySemesterId(basicExam.getSemesterId());
+        List<String> examStudentTicketNumberList = examStudentService.listTicketNumberBySemesterId(basicExam.getSemesterId(), examId);
 
         List<ExamStudent> examStudentList = new ArrayList<>();
         List<BasicStudentExtrasParam> basicStudentExtrasParamList = new ArrayList<>();
@@ -726,6 +726,7 @@ public class ExamDetailServiceImpl extends ServiceImpl<ExamDetailMapper, ExamDet
             examStudent.setStudentClazzType(StudentClazzEnum.BASIC_CLAZZ);
             examStudent.setCreateId(userId);
             examStudent.setUpdateId(userId);
+            examStudent.setExamId(examId);
             examStudent.setPaperNumber(paperNumber);
             examStudentList.add(examStudent);
 

+ 2 - 2
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/ExamStudentServiceImpl.java

@@ -122,7 +122,7 @@ public class ExamStudentServiceImpl extends ServiceImpl<ExamStudentMapper, ExamS
     }
 
     @Override
-    public List<String> listTicketNumberBySemesterId(String semesterId) {
-        return this.baseMapper.listTicketNumberBySemesterId(semesterId);
+    public List<String> listTicketNumberBySemesterId(String semesterId, Long examId) {
+        return this.baseMapper.listTicketNumberBySemesterId(semesterId, examId);
     }
 }

+ 6 - 4
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/ExamTaskServiceImpl.java

@@ -1571,13 +1571,15 @@ public class ExamTaskServiceImpl extends ServiceImpl<ExamTaskMapper, ExamTask> i
      * @param examTask
      */
     public void validPaperNumberExists(Long schoolId, ExamTask examTask) {
-        boolean lock = redisUtil.lock(SystemConstant.REDIS_LOCK_PAPER_NUMBER_PREFIX + schoolId + examTask.getPaperNumber(), SystemConstant.REDIS_LOCK_PAPER_NUMBER_TIME_OUT);
+        boolean lock = redisUtil.lock(SystemConstant.REDIS_LOCK_PAPER_NUMBER_PREFIX + schoolId + examTask.getExamId() + examTask.getPaperNumber(), SystemConstant.REDIS_LOCK_PAPER_NUMBER_TIME_OUT);
         if (!lock) {
             throw ExceptionResultEnum.ERROR.exception("正在校验试卷编号中,请稍候再试!");
         }
         try {
             QueryWrapper<ExamTask> taskQueryWrapper = new QueryWrapper<>();
-            taskQueryWrapper.lambda().eq(ExamTask::getSchoolId, schoolId).eq(ExamTask::getPaperNumber, examTask.getPaperNumber());
+            taskQueryWrapper.lambda().eq(ExamTask::getSchoolId, schoolId)
+                    .eq(ExamTask::getExamId, examTask.getExamId())
+                    .eq(ExamTask::getPaperNumber, examTask.getPaperNumber());
             if (Objects.nonNull(examTask.getId())) {
                 taskQueryWrapper.lambda().ne(ExamTask::getId, examTask.getId());
             }
@@ -1586,7 +1588,7 @@ public class ExamTaskServiceImpl extends ServiceImpl<ExamTaskMapper, ExamTask> i
                 throw ExceptionResultEnum.ERROR.exception("试卷编号已存在");
             }
         } finally {
-            redisUtil.releaseLock(SystemConstant.REDIS_LOCK_PAPER_NUMBER_PREFIX + schoolId + examTask.getPaperNumber());
+            redisUtil.releaseLock(SystemConstant.REDIS_LOCK_PAPER_NUMBER_PREFIX + schoolId + examTask.getExamId() + examTask.getPaperNumber());
         }
     }
 
@@ -1784,7 +1786,7 @@ public class ExamTaskServiceImpl extends ServiceImpl<ExamTaskMapper, ExamTask> i
 
                         // 更新实际考生数量
                         List<ExamTaskStudentObjectParam> examTaskStudentObjectParamList = examDetailList.getExamTaskStudentObjectParamList();
-                        List<ExamStudent> examStudents = printCommonService.createBatchStudentByStudentList(schoolId, basicExam.getSemesterId(), paperNumber, examDetailList.getExtendFields(), examTaskStudentObjectParamList, examDetailCourse.getId(), basicExam.getShortCode(), basicCourse.getShortCode(), basicPrintConfig.getCardRuleId(), sysUser);
+                        List<ExamStudent> examStudents = printCommonService.createBatchStudentByStudentList(schoolId, examPrintPlan.getExamId(), basicExam.getSemesterId(), paperNumber, examDetailList.getExtendFields(), examTaskStudentObjectParamList, examDetailCourse.getId(), basicExam.getShortCode(), basicCourse.getShortCode(), basicPrintConfig.getCardRuleId(), sysUser);
                         if (!CollectionUtils.isEmpty(examStudents)) {
                             examStudentService.insertBatch(examStudents);
                         }

+ 2 - 1
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/ExamTaskSyncServiceImpl.java

@@ -18,10 +18,11 @@ import org.springframework.stereotype.Service;
 public class ExamTaskSyncServiceImpl extends ServiceImpl<ExamTaskSyncMapper, ExamTaskSync> implements ExamTaskSyncService {
 
     @Override
-    public ExamTaskSync getBySchoolIdAndOrgCodeAndPaperNumber(Long schoolId, String orgCode, String paperNumber) {
+    public ExamTaskSync getBySchoolIdAndOrgCodeAndPaperNumber(Long schoolId, Long examId, String orgCode, String paperNumber) {
 
         QueryWrapper<ExamTaskSync> queryWrapper = new QueryWrapper<>();
         queryWrapper.lambda().eq(ExamTaskSync::getSchoolId, schoolId)
+                .eq(ExamTaskSync::getExamId, examId)
                 .eq(ExamTaskSync::getPaperNumber, paperNumber);
         if(StringUtils.isNotBlank(orgCode)){
             queryWrapper.lambda().eq(ExamTaskSync::getOrgCode, orgCode);

+ 2 - 1
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/PrintCommonServiceImpl.java

@@ -1107,7 +1107,7 @@ public class PrintCommonServiceImpl implements PrintCommonService {
 
     @Transactional(rollbackFor = Exception.class)
     @Override
-    public List<ExamStudent> createBatchStudentByStudentList(Long schoolId, String semesterId, String paperNumber, String extendFields, List<ExamTaskStudentObjectParam> examTaskStudentObjectParamList, Long examDetailCourseId, String examShortCode, String courseShortCode, Long cardRuleId, SysUser sysUser) {
+    public List<ExamStudent> createBatchStudentByStudentList(Long schoolId, Long examId, String semesterId, String paperNumber, String extendFields, List<ExamTaskStudentObjectParam> examTaskStudentObjectParamList, Long examDetailCourseId, String examShortCode, String courseShortCode, Long cardRuleId, SysUser sysUser) {
         AtomicInteger atomicInteger = new AtomicInteger(1);
 
         BasicCardRule basicCardRule = basicCardRuleService.getById(cardRuleId);
@@ -1151,6 +1151,7 @@ public class PrintCommonServiceImpl implements PrintCommonService {
             examStudent.setExamDetailCourseId(examDetailCourseId);
             examStudent.setStudentName(basicStudentResult.getStudentName());
             examStudent.setStudentCode(basicStudentResult.getStudentCode());
+            examStudent.setExamId(examId);
             examStudent.setPaperNumber(paperNumber);
             examStudent.setCollegeName(basicStudentResult.getCollegeName());
             examStudent.setMajorName(basicStudentResult.getMajorName());

+ 2 - 0
distributed-print-business/src/main/resources/mapper/ExamDetailCourseMapper.xml

@@ -241,10 +241,12 @@
              exam_detail c ON b.exam_detail_id = c.id
                  LEFT JOIN
              exam_task et ON b.school_id = et.school_id
+                 and c.exam_id = et.exam_id
                  and b.course_code = et.course_code
                  and b.paper_number = et.paper_number
                  LEFT JOIN
              exam_task_sync ets ON et.school_id = ets.school_id
+                and et.exam_id = ets.exam_id
                  and et.paper_number = ets.paper_number
         <where>
             <if test="examTaskId != null">

+ 52 - 41
distributed-print-business/src/main/resources/mapper/ExamPaperStructureMapper.xml

@@ -5,10 +5,8 @@
             resultType="com.qmth.distributed.print.business.entity.ExamPaperStructure">
         SELECT
             eps.id,
-            epp.school_id schoolId,
-            be.id examId,
-            bs.id semesterId,
-            bs.name semesterName,
+            ep.school_id schoolId,
+            ep.exam_id examId,
             ep.third_relate_id thirdRelateId,
             ep.third_relate_name thirdRelateName,
             eps.objective_structure objectiveStructure,
@@ -25,15 +23,9 @@
             eps.mark_leader markLeader,
             et.transfer_id transferId
         FROM
-            exam_print_plan epp
-                LEFT JOIN
-            basic_exam be ON epp.exam_id = be.id
-                LEFT JOIN
-            basic_semester bs ON be.semester_id = bs.id
-                LEFT JOIN
             (SELECT
                  ed.school_id,
-                 ed.print_plan_id,
+                 ed.exam_id,
                  edc.paper_number,
                  edc.course_code,
                  edc.course_name,
@@ -42,48 +34,67 @@
              FROM
                  exam_detail ed
                      LEFT JOIN exam_detail_course edc ON ed.id = edc.exam_detail_id
-                     LEFT JOIN exam_task_sync ets ON edc.school_id = ets.school_id and ed.exam_id = ets.exam_id and edc.paper_number = ets.paper_number
-                     LEFT JOIN t_sync_stmms_exam tsse ON edc.school_id = tsse.school_id and ets.third_relate_id = tsse.exam_id
-            WHERE ets.sync_status = #{syncStatus}) ep ON epp.id = ep.print_plan_id
+                     LEFT JOIN exam_task_sync ets ON edc.school_id = ets.school_id
+                     AND ed.exam_id = ets.exam_id
+                     AND edc.paper_number = ets.paper_number
+                     LEFT JOIN t_sync_stmms_exam tsse ON edc.school_id = tsse.school_id
+                     AND ets.third_relate_id = tsse.exam_id
+                     LEFT JOIN basic_exam be ON ed.exam_id = be.id
+                <where>
+                    AND ets.sync_status = #{syncStatus}
+                    AND be.enable = TRUE
+                    <if test="semesterId != null">
+                        and be.semester_id = #{semesterId}
+                    </if>
+                    <if test="examId != null">
+                        and be.id = #{examId}
+                    </if>
+                </where>
+               ) ep
                 LEFT JOIN
-            (SELECT
-                 school_id, paper_number, paper_type
+            (SELECT DISTINCT
+                 es.school_id, es.exam_id, es.paper_number, es.paper_type
              FROM
-                 exam_student
-             GROUP BY school_id , paper_number , paper_type) es ON es.school_id = ep.school_id
+                 exam_student es
+                     JOIN basic_exam be ON es.exam_id = be.id
+             <where>
+                <if test="semesterId != null">
+                    and be.semester_id = #{semesterId}
+                </if>
+                <if test="examId != null">
+                    and be.id = #{examId}
+                </if>
+             </where>
+             ) es ON es.school_id = ep.school_id
+                AND es.exam_id = ep.exam_id
                 AND es.paper_number = ep.paper_number
                 LEFT JOIN
             exam_task et ON ep.school_id = et.school_id
-                AND et.exam_id = epp.exam_id
+                AND et.exam_id = ep.exam_id
                 AND ep.paper_number = et.paper_number
                 LEFT JOIN
             exam_paper_structure eps ON ep.school_id = eps.school_id
+                AND et.exam_id = eps.exam_id
                 AND ep.paper_number = eps.paper_number
                 AND es.paper_type = eps.paper_type
         WHERE
-            epp.school_id = #{schoolId}
-            and ifnull(et.transfer_id ,et.user_id) = #{propositionTeacherId}
-        <if test="semesterId != null and semesterId != ''">
-            and bs.id = #{semesterId}
-        </if>
-        <if test="examId != null and examId != ''">
-            and be.id = #{examId}
-        </if>
+            ep.school_id = #{schoolId}
+          AND IFNULL(et.transfer_id, et.user_id) = #{propositionTeacherId}
         <if test="structureStatusEnums != null and structureStatusEnums != ''">
-        <choose>
-            <when test="ready != null and ready != '' and ready == true">
-                AND eps.status IN
-                <foreach collection="structureStatusEnums" item="item" index="index" open="(" separator="," close=")">
-                    #{item}
-                </foreach>
-            </when>
-            <otherwise>
-                AND ifnull(eps.status, 'INIT') NOT IN
-                <foreach collection="structureStatusEnums" item="item" index="index" open="(" separator="," close=")">
-                    #{item}
-                </foreach>
-            </otherwise>
-        </choose>
+            <choose>
+                <when test="ready != null and ready != '' and ready == true">
+                    AND eps.status IN
+                    <foreach collection="structureStatusEnums" item="item" index="index" open="(" separator="," close=")">
+                        #{item}
+                    </foreach>
+                </when>
+                <otherwise>
+                    AND ifnull(eps.status, 'INIT') NOT IN
+                    <foreach collection="structureStatusEnums" item="item" index="index" open="(" separator="," close=")">
+                        #{item}
+                    </foreach>
+                </otherwise>
+            </choose>
         </if>
         <if test="dpr != null">
             <if test="dpr.requestUserId != null">

+ 3 - 2
distributed-print-business/src/main/resources/mapper/ExamStudentMapper.xml

@@ -131,7 +131,7 @@
              exam_detail c ON b.exam_detail_id = c.id
                  LEFT JOIN
              exam_task et ON b.school_id = et.school_id
-                 c.exam_id = et.exam_id
+                 and c.exam_id = et.exam_id
                  and b.course_code = et.course_code
                  and b.paper_number = et.paper_number
         WHERE b.id = #{examDetailCourseId}
@@ -306,6 +306,7 @@
                         basic_exam be ON epp.exam_id = be.id
                     WHERE
                         es.exam_detail_course_id = edc.id
-                      AND be.semester_id = #{semesterId})
+                      AND be.semester_id = #{semesterId}
+                        AND be.id = #{examId})
     </select>
 </mapper>