xiaofei 1 éve
szülő
commit
7ffb310d06

+ 5 - 5
distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/dto/initMarkData/ExamDetailCourseInitMarkDto.java

@@ -14,7 +14,7 @@ public class ExamDetailCourseInitMarkDto {
     private String coursePaperId;
     private String paperType;
     private Long createId;
-    private String packageCodes;
+    private String packageCode;
     private String examDetailCourseIds;
     private Long examStartTime;
     private Long examEndTime;
@@ -91,12 +91,12 @@ public class ExamDetailCourseInitMarkDto {
         this.createId = createId;
     }
 
-    public String getPackageCodes() {
-        return packageCodes;
+    public String getPackageCode() {
+        return packageCode;
     }
 
-    public void setPackageCodes(String packageCodes) {
-        this.packageCodes = packageCodes;
+    public void setPackageCode(String packageCode) {
+        this.packageCode = packageCode;
     }
 
     public String getExamDetailCourseIds() {

+ 44 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/dto/initMarkData/InitExamDetailDto.java

@@ -0,0 +1,44 @@
+package com.qmth.distributed.print.business.bean.dto.initMarkData;
+
+/**
+ * 课程同步阅卷数据dto
+ */
+public class InitExamDetailDto {
+
+    private Long examDetailCourseId;
+    private String examPlace;
+    private String examRoom;
+    private String packageCode;
+
+    public Long getExamDetailCourseId() {
+        return examDetailCourseId;
+    }
+
+    public void setExamDetailCourseId(Long examDetailCourseId) {
+        this.examDetailCourseId = examDetailCourseId;
+    }
+
+    public String getExamPlace() {
+        return examPlace;
+    }
+
+    public void setExamPlace(String examPlace) {
+        this.examPlace = examPlace;
+    }
+
+    public String getExamRoom() {
+        return examRoom;
+    }
+
+    public void setExamRoom(String examRoom) {
+        this.examRoom = examRoom;
+    }
+
+    public String getPackageCode() {
+        return packageCode;
+    }
+
+    public void setPackageCode(String packageCode) {
+        this.packageCode = packageCode;
+    }
+}

+ 4 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/mapper/ConditionMapper.java

@@ -56,4 +56,8 @@ public interface ConditionMapper {
     List<BasicCourse> listCourseForQuery(@Param("examId") Long examId, @Param("dpr") DataPermissionRule dpr);
 
     List<String> listPaperNumberForQuery(@Param("examId") Long examId, @Param("courseCode") String courseCode, @Param("dpr") DataPermissionRule dpr);
+
+    List<BasicCourse> listCourseForApproveHistory(@Param("semesterId") Long semesterId, @Param("examId") Long examId, @Param("dpr") DataPermissionRule dpr);
+
+    List<String> listPaperNumberForApproveHistory(@Param("semesterId") Long semesterId, @Param("examId") Long examId, @Param("courseCode") String courseCode, @Param("dpr") DataPermissionRule dpr);
 }

+ 5 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/mapper/ExamDetailMapper.java

@@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.qmth.distributed.print.business.bean.dto.*;
 import com.qmth.distributed.print.business.bean.dto.initMarkData.ExamDetailCourseInitMarkDto;
+import com.qmth.distributed.print.business.bean.dto.initMarkData.InitExamDetailDto;
 import com.qmth.distributed.print.business.bean.result.ExaminationDetailResult;
 import com.qmth.distributed.print.business.bean.result.ExaminationResult;
 import com.qmth.distributed.print.business.bean.result.SummarizedDataResult;
@@ -123,4 +124,8 @@ public interface ExamDetailMapper extends BaseMapper<ExamDetail> {
     int countMakeupUsedByExamIdAndPaperNumber(@Param("examId") Long examId, @Param("paperNumber") String paperNumber);
 
     List<ExamDetail> listByExamIdAndCourseCodeAndPaperNumber(@Param("schoolId") Long schoolId, @Param("examId") Long examId, @Param("courseCode") String courseCode, @Param("paperNumber") String paperNumber);
+
+    List<ExamDetailCourseInitMarkDto> listPrintFinishPackageCode(@Param("examId") Long examId, @Param("paperNumber") String paperNumber, @Param("paperType") String paperType);
+
+    List<InitExamDetailDto> listPrintFinishExamDetailCourseIds(@Param("examId") Long examId, @Param("paperNumber") String paperNumber, @Param("paperType") String paperType);
 }

+ 5 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/ExamDetailService.java

@@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.qmth.distributed.print.business.bean.dto.*;
 import com.qmth.distributed.print.business.bean.dto.initMarkData.ExamDetailCourseInitMarkDto;
+import com.qmth.distributed.print.business.bean.dto.initMarkData.InitExamDetailDto;
 import com.qmth.distributed.print.business.bean.examRule.FieldsDto;
 import com.qmth.distributed.print.business.bean.result.ExaminationDetailResult;
 import com.qmth.distributed.print.business.bean.result.ExaminationResult;
@@ -245,4 +246,8 @@ public interface ExamDetailService extends IService<ExamDetail> {
     int countMakeupUsedByExamIdAndPaperNumber(Long examId, String paperNumber);
 
     void updateStatusById(Long id, ExamDetailStatusEnum examDetailStatusEnum);
+
+    List<ExamDetailCourseInitMarkDto> listPrintFinishPackageCode(Long examId, String paperNumber, String paperType);
+
+    List<InitExamDetailDto> listPrintFinishExamDetailCourseIds(Long examId, String paperNumber, String paperType);
 }

+ 9 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/ConditionServiceImpl.java

@@ -113,6 +113,11 @@ public class ConditionServiceImpl implements ConditionService {
             dpr = basicRoleDataPermissionService.findDataPermission(privilegeId);
             return conditionMapper.listCourseForPlanTask(semesterId, examId, printPlanIds, dpr);
         }
+        // 流程审批记录管理(403)
+        else if ("403".equals(privilegeIdString)) {
+            dpr = basicRoleDataPermissionService.findDataPermission(privilegeId);
+            return conditionMapper.listCourseForApproveHistory(semesterId, examId, dpr);
+        }
         // 成绩查询
         else if ("487".equals(privilegeIdString) || "2001".equals(privilegeIdString)) {
             List<BasicCourse> basicCourses = teachCourseService.findTeachCourseByUserId(sysUser.getId());
@@ -180,6 +185,10 @@ public class ConditionServiceImpl implements ConditionService {
         else if ("47".equals(privilegeIdString)) {
             return conditionMapper.listPaperNumberPlanTask(semesterId, examId, printPlanIds, courseCode, dpr);
         }
+        // 流程审批记录管理(403)
+        else if ("403".equals(privilegeIdString)) {
+            return conditionMapper.listPaperNumberForApproveHistory(semesterId, examId, courseCode, dpr);
+        }
         // 评卷入口(491)
         else if ("491".equals(privilegeIdString)) {
             return conditionMapper.listPaperNumberForEntrance(examId, sysUser.getId(), courseCode, MarkPaperStatus.FORMAL.name());

+ 11 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/ExamDetailServiceImpl.java

@@ -13,6 +13,7 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.qmth.boot.api.exception.ApiException;
 import com.qmth.distributed.print.business.bean.dto.*;
 import com.qmth.distributed.print.business.bean.dto.initMarkData.ExamDetailCourseInitMarkDto;
+import com.qmth.distributed.print.business.bean.dto.initMarkData.InitExamDetailDto;
 import com.qmth.distributed.print.business.bean.examRule.CodeNameEnableValue;
 import com.qmth.distributed.print.business.bean.examRule.FieldsDto;
 import com.qmth.distributed.print.business.bean.result.ExaminationDetailResult;
@@ -1245,4 +1246,14 @@ public class ExamDetailServiceImpl extends ServiceImpl<ExamDetailMapper, ExamDet
                 .eq(ExamDetail::getId, id);
         this.update(updateWrapper);
     }
+
+    @Override
+    public List<ExamDetailCourseInitMarkDto> listPrintFinishPackageCode(Long examId, String paperNumber, String paperType) {
+        return this.baseMapper.listPrintFinishPackageCode(examId, paperNumber, paperType);
+    }
+
+    @Override
+    public List<InitExamDetailDto> listPrintFinishExamDetailCourseIds(Long examId, String paperNumber, String paperType) {
+        return this.baseMapper.listPrintFinishExamDetailCourseIds(examId, paperNumber, paperType);
+    }
 }

+ 78 - 0
distributed-print-business/src/main/resources/mapper/ConditionMapper.xml

@@ -624,4 +624,82 @@
         </where>
         order by IFNULL(g.update_time, a.update_time) desc
     </select>
+    <select id="listCourseForApproveHistory" resultType="com.qmth.teachcloud.common.entity.BasicCourse">
+        SELECT
+            distinct et.course_code code,
+            et.course_name name
+        FROM
+        t_f_flow_approve tffa
+        JOIN
+        t_f_custom_flow_entity tfcfe ON tfcfe.flow_id = tffa.flow_id
+        JOIN
+        exam_task et ON et.flow_id = tffa.flow_id
+        LEFT JOIN
+        basic_exam be ON et.exam_id = be.id
+        LEFT JOIN
+        basic_semester bs ON be.semester_id = bs.id
+        LEFT JOIN
+        sys_user su ON et.user_id = su.id
+        <where>
+            <if test="semesterId != null and semesterId != ''">
+                and bs.id = #{semesterId}
+            </if>
+            <if test="examId != null and examId != ''">
+                and be.id = #{examId}
+            </if>
+            <if test="dpr != null">
+                <if test="dpr.requestUserId != null">
+                    AND et.user_id = #{dpr.requestUserId}
+                </if>
+                <if test="dpr.orgIdSet != null and dpr.orgIdSet != '' and dpr.orgIdSet.size > 0">
+                    AND su.org_id IN
+                    <foreach collection="dpr.orgIdSet" item="item" index="index" open="(" separator="," close=")">
+                        #{item}
+                    </foreach>
+                </if>
+            </if>
+            and tffa.enable = 1
+            and et.enable = 1
+        </where>
+    </select>
+    <select id="listPaperNumberForApproveHistory" resultType="java.lang.String">
+        SELECT
+            et.paper_number paperNumber
+        FROM
+            t_f_flow_approve tffa
+            JOIN
+            t_f_custom_flow_entity tfcfe ON tfcfe.flow_id = tffa.flow_id
+            JOIN
+            exam_task et ON et.flow_id = tffa.flow_id
+            LEFT JOIN
+            basic_exam be ON et.exam_id = be.id
+            LEFT JOIN
+            basic_semester bs ON be.semester_id = bs.id
+            LEFT JOIN
+            sys_user su ON et.user_id = su.id
+        <where>
+            <if test="semesterId != null">
+                and bs.id = #{semesterId}
+            </if>
+            <if test="examId != null">
+                and be.id = #{examId}
+            </if>
+            <if test="courseCode != null and courseCode != ''">
+                and et.course_code = #{courseCode}
+            </if>
+            <if test="dpr != null">
+                <if test="dpr.requestUserId != null">
+                    AND et.user_id = #{dpr.requestUserId}
+                </if>
+                <if test="dpr.orgIdSet != null and dpr.orgIdSet != '' and dpr.orgIdSet.size > 0">
+                    AND su.org_id IN
+                    <foreach collection="dpr.orgIdSet" item="item" index="index" open="(" separator="," close=")">
+                        #{item}
+                    </foreach>
+                </if>
+            </if>
+            and tffa.enable = 1
+            and et.enable = 1
+        </where>
+    </select>
 </mapper>

+ 43 - 0
distributed-print-business/src/main/resources/mapper/ExamDetailMapper.xml

@@ -735,4 +735,47 @@
           AND a.course_code = #{courseCode}
           AND a.paper_number = #{paperNumber}
     </select>
+    <select id="listPrintFinishPackageCode"
+            resultType="com.qmth.distributed.print.business.bean.dto.initMarkData.ExamDetailCourseInitMarkDto">
+        SELECT
+            ed.exam_id examId,
+            edc.course_code courseCode,
+            edc.course_name courseName,
+            edc.paper_number paperNumber,
+            edc.course_paper_id coursePaperId,
+            ed.package_code
+        FROM
+            exam_detail ed
+                LEFT JOIN
+            exam_detail_course edc ON ed.id = edc.exam_detail_id
+        WHERE
+            ed.exam_id = #{examId}
+          AND edc.paper_number = #{paperNumber}
+          AND edc.paper_type LIKE CONCAT('%', #{paperType}, '%')
+          AND NOT EXISTS( SELECT
+                              1
+                          FROM
+                              mark_paper_package mpp
+                          WHERE
+                              ed.exam_id = mpp.exam_id
+                            AND edc.paper_number = mpp.paper_number
+                            AND mpp.paper_type = #{paperType}
+                            AND ed.package_code = mpp.package_code)
+
+    </select>
+    <select id="listPrintFinishExamDetailCourseIds" resultType="com.qmth.distributed.print.business.bean.dto.initMarkData.InitExamDetailDto">
+        SELECT
+            edc.id examDetailCourseId,
+            ed.exam_place examPlace,
+            ed.exam_room examRoom,
+            ed.package_code packageCode
+        FROM
+            exam_detail ed
+                LEFT JOIN
+            exam_detail_course edc ON ed.id = edc.exam_detail_id
+        WHERE
+            ed.exam_id = #{examId}
+          AND edc.paper_number = #{paperNumber}
+          AND edc.paper_type LIKE CONCAT('%', #{paperType}, '%')
+    </select>
 </mapper>

+ 2 - 1
teachcloud-task/src/main/java/com/qmth/teachcloud/task/job/service/impl/JobServiceImpl.java

@@ -154,7 +154,8 @@ public class JobServiceImpl implements JobService {
                 try {
                     ExamTaskDetail examTaskDetail = examTaskDetailService.getByExamIdAndCourseCodeAndPaperNumber(dto.getExamId(), dto.getCourseCode(),dto.getPaperNumber());
                     List<PaperInfoVo> paperInfoVos = ExamTaskUtil.parsePaperAttachmentPath(examTaskDetail.getPaperAttachmentIds(), paperType);
-                    printFinishService.insertMarkPaper(dto.getExamId(), dto.getCourseCode(), dto.getCourseName(), dto.getPaperNumber(), dto.getCoursePaperId(), dto.getPackageCodes(), dto.getCreateId(), paperType, paperInfoVos);
+                    printFinishService.insertMarkPaper(dto.getExamId(), dto.getCourseCode(), dto.getCourseName(), dto.getPaperNumber(), dto.getCoursePaperId(), dto.getCreateId(), paperType, paperInfoVos);
+                    printFinishService.insertMarkPaperPackageCode(dto, paperType);
                     printFinishService.insertMarkStudent(dto, paperType);
                     printFinishService.insertScanAnswerCardAndMarkQuestion(dto, paperType);
                     tbSyncTask.setResult(TaskResultEnum.SUCCESS);

+ 3 - 1
teachcloud-task/src/main/java/com/qmth/teachcloud/task/service/PrintFinishService.java

@@ -10,7 +10,7 @@ import java.util.List;
  */
 public interface PrintFinishService {
 
-    void insertMarkPaper(Long examId, String courseCode, String courseName, String paperNumber, String coursePaperId, String packageCode, Long userId, String paperType, List<PaperInfoVo> paperInfoVos);
+    void insertMarkPaper(Long examId, String courseCode, String courseName, String paperNumber, String coursePaperId, Long userId, String paperType, List<PaperInfoVo> paperInfoVos);
 
     void insertMarkStudent(ExamDetailCourseInitMarkDto examDetail, String paperType);
 
@@ -21,4 +21,6 @@ public interface PrintFinishService {
     void insertMarkQuestion(Long examId, String paperNumber, String paperType, String content);
 
     void insertPaperAnswerFile(Long examId, String paperNumber, String paperType, Long paperId);
+
+    void insertMarkPaperPackageCode(ExamDetailCourseInitMarkDto dto, String paperType);
 }

+ 19 - 15
teachcloud-task/src/main/java/com/qmth/teachcloud/task/service/impl/PrintFinishServiceImpl.java

@@ -2,6 +2,7 @@ package com.qmth.teachcloud.task.service.impl;
 
 import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
 import com.qmth.distributed.print.business.bean.dto.initMarkData.ExamDetailCourseInitMarkDto;
+import com.qmth.distributed.print.business.bean.dto.initMarkData.InitExamDetailDto;
 import com.qmth.distributed.print.business.entity.*;
 import com.qmth.distributed.print.business.enums.CardTypeEnum;
 import com.qmth.distributed.print.business.service.*;
@@ -83,12 +84,11 @@ public class PrintFinishServiceImpl implements PrintFinishService {
      * @param courseCode
      * @param courseName
      * @param paperNumber
-     * @param packageCode
      * @param paperInfoVos
      */
     @Transactional
     @Override
-    public void insertMarkPaper(Long examId, String courseCode, String courseName, String paperNumber, String coursePaperId, String packageCode, Long userId, String paperType, List<PaperInfoVo> paperInfoVos) {
+    public void insertMarkPaper(Long examId, String courseCode, String courseName, String paperNumber, String coursePaperId, Long userId, String paperType, List<PaperInfoVo> paperInfoVos) {
         try {
             MarkPaper markPaper = markPaperService.getByExamIdAndPaperNumberAndPaperType(examId, paperNumber, paperType);
             if (markPaper == null) {
@@ -101,11 +101,6 @@ public class PrintFinishServiceImpl implements PrintFinishService {
                 }
                 markPaperService.save(insertMarkPaper);
             }
-            List<MarkPaperPackage> markPaperPackages = new ArrayList<>();
-            for (String code : packageCode.split(",")) {
-                markPaperPackages.add(new MarkPaperPackage(examId, courseCode, courseName, paperNumber, coursePaperId, paperType, code));
-            }
-            markPaperPackageService.saveOrUpdateBatchByMultiId(markPaperPackages);
         } catch (Exception e) {
             log.info("同步考试课程失败");
         }
@@ -115,21 +110,18 @@ public class PrintFinishServiceImpl implements PrintFinishService {
     @Override
     public void insertMarkStudent(ExamDetailCourseInitMarkDto dto, String paperType) {
         try {
+            List<InitExamDetailDto> initExamDetailDtoList = examDetailService.listPrintFinishExamDetailCourseIds(dto.getExamId(), dto.getPaperNumber(), paperType);
+
             List<MarkStudent> markStudentList = new ArrayList<>();
             Set<String> secretNumberSet = new HashSet<>();
-            for (String id : dto.getExamDetailCourseIds().split(",")) {
-                Long examDetailCourseId = Long.valueOf(id);
-                ExamDetail examDetail = examDetailService.getByExamDetailCourseId(examDetailCourseId);
-                if (examDetail == null) {
-                    continue;
-                }
-                List<ExamStudent> examStudentList = examStudentService.listByExamDetailCourseIdNotIntMarkStudent(examDetailCourseId, paperType);
+            for (InitExamDetailDto initExamDetailDto : initExamDetailDtoList) {
+                List<ExamStudent> examStudentList = examStudentService.listByExamDetailCourseIdNotIntMarkStudent(initExamDetailDto.getExamDetailCourseId(), paperType);
                 for (ExamStudent examStudent : examStudentList) {
                     MarkStudent markStudent = markStudentService.getById(examStudent.getId());
                     if (markStudent != null) {
                         continue;
                     }
-                    MarkStudent student = new MarkStudent(examStudent.getId(), dto.getExamId(), dto.getCourseCode(), dto.getCourseName(), dto.getPaperNumber(), dto.getCoursePaperId(), paperType, examStudent.getStudentCode(), examStudent.getStudentName(), examDetail.getPackageCode(), examDetail.getExamPlace(), examDetail.getExamRoom(), examStudent.getCollegeName(), examStudent.getMajorName(), examStudent.getTeachClazzName(), examStudent.getTeacherId(), examStudent.getTeacherName(), dto.getExamStartTime(), dto.getExamEndTime(), dto.getCreateId());
+                    MarkStudent student = new MarkStudent(examStudent.getId(), dto.getExamId(), dto.getCourseCode(), dto.getCourseName(), dto.getPaperNumber(), dto.getCoursePaperId(), paperType, examStudent.getStudentCode(), examStudent.getStudentName(), initExamDetailDto.getPackageCode(), initExamDetailDto.getExamPlace(), initExamDetailDto.getExamRoom(), examStudent.getCollegeName(), examStudent.getMajorName(), examStudent.getTeachClazzName(), examStudent.getTeacherId(), examStudent.getTeacherName(), dto.getExamStartTime(), dto.getExamEndTime(), dto.getCreateId());
                     if (student.getSecretNumber() == null) {
                         student.randomSecretNumber();
                         while (secretNumberSet.contains(student.getSecretNumber())
@@ -312,4 +304,16 @@ public class PrintFinishServiceImpl implements PrintFinishService {
             }
         }
     }
+
+    @Override
+    public void insertMarkPaperPackageCode(ExamDetailCourseInitMarkDto dto, String paperType) {
+        List<ExamDetailCourseInitMarkDto> packageCodeList = examDetailService.listPrintFinishPackageCode(dto.getExamId(), dto.getPaperNumber(), paperType);
+        if (CollectionUtils.isNotEmpty(packageCodeList)) {
+            List<MarkPaperPackage> markPaperPackages = new ArrayList<>();
+            for (ExamDetailCourseInitMarkDto packageCodeDto : packageCodeList) {
+                markPaperPackages.add(new MarkPaperPackage(packageCodeDto.getExamId(), packageCodeDto.getCourseCode(), packageCodeDto.getCourseName(), packageCodeDto.getPaperNumber(), packageCodeDto.getCoursePaperId(), paperType, packageCodeDto.getPackageCode()));
+            }
+            markPaperPackageService.saveOrUpdateBatchByMultiId(markPaperPackages);
+        }
+    }
 }