Prechádzať zdrojové kódy

3.0.1-同步云阅卷bug修改

xiaof 3 rokov pred
rodič
commit
0c618891bd

+ 11 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/result/PrintPlanResult.java

@@ -103,6 +103,9 @@ public class PrintPlanResult {
     @ApiModelProperty("考试名称")
     private String examName;
 
+    @ApiModelProperty("是否能推送云阅卷")
+    private Boolean isCanPush;
+
     public Long getId() {
         return id;
     }
@@ -310,4 +313,12 @@ public class PrintPlanResult {
     public void setExamName(String examName) {
         this.examName = examName;
     }
+
+    public Boolean getCanPush() {
+        return isCanPush;
+    }
+
+    public void setCanPush(Boolean canPush) {
+        isCanPush = canPush;
+    }
 }

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

@@ -47,4 +47,6 @@ public interface ExamStudentMapper extends BaseMapper<ExamStudent> {
     SysOrg getSysOrgByBelongOrgId(@Param("studentCode") String studentCode, @Param("schoolId") Long schoolId);
 
     ExamStudentPdfInfoDto getByStudentId(Long id);
+
+    List<Map> listStudentScoreSync(@Param("schoolId") Long schoolId, @Param("studentCode") String studentCode, @Param("examNumber") String examNumber, @Param("subjectCode") String subjectCode, @Param("printPlanId") Long printPlanId);
 }

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

@@ -60,16 +60,13 @@ public interface TSyncExamStudentScoreMapper extends BaseMapper<TSyncExamStudent
      *
      * @param schoolId
      * @param semesterId
-     * @param orgId
-     * @param majorId
      * @param clazzId
      * @param courseCode
      * @return
      */
     public int exportCount(@Param("schoolId") Long schoolId,
                            @Param("semesterId") Long semesterId,
-                           @Param("orgId") Long orgId,
-                           @Param("majorId") Long majorId,
+                           @Param("examId") Long examId,
                            @Param("clazzId") Long clazzId,
                            @Param("courseCode") String courseCode);
 }

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

@@ -45,4 +45,6 @@ public interface ExamStudentService extends IService<ExamStudent> {
     SysOrg getSysOrgByBelongOrgId(String studentCode, Long schoolId);
 
     ExamStudentPdfInfoDto getByStudentId(Long id);
+
+    List<Map> listStudentScoreSync(Long schoolId, String studentCode, String examNumber, String subjectCode, Long printPlanId);
 }

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

@@ -67,8 +67,7 @@ public interface TSyncExamStudentScoreService extends IService<TSyncExamStudentS
      */
     public int exportCount(Long schoolId,
                            Long semesterId,
-                           Long orgId,
-                           Long majorId,
+                           Long examId,
                            Long clazzId,
                            String courseCode);
 

+ 6 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/ExamPrintPlanServiceImpl.java

@@ -89,6 +89,9 @@ public class ExamPrintPlanServiceImpl extends ServiceImpl<ExamPrintPlanMapper, E
     @Resource
     ExamDetailCourseService examDetailCourseService;
 
+    @Resource
+    ExamStudentService examStudentService;
+
     @Resource
     AsyncCloudMarkingTaskService asyncCloudMarkingTaskService;
 
@@ -123,6 +126,9 @@ public class ExamPrintPlanServiceImpl extends ServiceImpl<ExamPrintPlanMapper, E
         IPage<PrintPlanResult> page = examPrintPlanMapper.findPrintPlanSyncPage(new Page<>(pageNumber, pageSize), schoolId, semesterId, examId, status, printPlanId, startTime, endTime, orgIds);
         List<PrintPlanResult> list = page.getRecords();
         for (PrintPlanResult printPlanResult : list) {
+            List<SyncExamStudentDto> examStudentDtos = examStudentService.listStudentByPrintPlanIdAndSyncStatus(printPlanResult.getId());
+            printPlanResult.setCanPush(examStudentDtos != null && examStudentDtos.size() > 0);
+
             List<Map> variableContent = JSONObject.parseArray(printPlanResult.getVariableContentTemp(), Map.class);
             List<Map> ordinaryContent = JSONObject.parseArray(printPlanResult.getOrdinaryContentTemp(), Map.class);
             printPlanResult.setVariableContent(variableContent);

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

@@ -111,4 +111,9 @@ public class ExamStudentServiceImpl extends ServiceImpl<ExamStudentMapper, ExamS
     public ExamStudentPdfInfoDto getByStudentId(Long id) {
         return this.baseMapper.getByStudentId(id);
     }
+
+    @Override
+    public List<Map> listStudentScoreSync(Long schoolId, String studentCode, String examNumber, String subjectCode, Long printPlanId) {
+        return this.baseMapper.listStudentScoreSync(schoolId, studentCode, examNumber, subjectCode, printPlanId);
+    }
 }

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

@@ -91,8 +91,8 @@ public class TSyncExamStudentScoreServiceImpl extends ServiceImpl<TSyncExamStude
      * @return
      */
     @Override
-    public int exportCount(Long schoolId, Long semesterId, Long orgId, Long majorId, Long clazzId, String courseCode) {
-        return tSyncExamStudentScoreMapper.exportCount(schoolId, semesterId, orgId, majorId, clazzId, courseCode);
+    public int exportCount(Long schoolId, Long semesterId, Long examId, Long clazzId, String courseCode) {
+        return tSyncExamStudentScoreMapper.exportCount(schoolId, semesterId, examId, clazzId, courseCode);
     }
 
     /**

+ 24 - 20
distributed-print-business/src/main/java/com/qmth/distributed/print/business/templete/service/impl/PushLogicServiceImpl.java

@@ -1,16 +1,16 @@
 package com.qmth.distributed.print.business.templete.service.impl;
 
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
-import com.qmth.distributed.print.business.entity.ExamStudent;
 import com.qmth.distributed.print.business.entity.TSyncExamStudentScore;
+import com.qmth.distributed.print.business.entity.TeachClazz;
 import com.qmth.distributed.print.business.service.ExamStudentService;
 import com.qmth.distributed.print.business.service.TSyncExamStudentScoreService;
+import com.qmth.distributed.print.business.service.TeachClazzService;
 import com.qmth.distributed.print.business.templete.service.PushLogicService;
 import com.qmth.teachcloud.common.bean.result.SyncCountResult;
 import com.qmth.teachcloud.common.contant.SystemConstant;
 import com.qmth.teachcloud.common.entity.BasicClazz;
 import com.qmth.teachcloud.common.entity.BasicMajor;
-import com.qmth.teachcloud.common.entity.BasicStudent;
 import com.qmth.teachcloud.common.entity.SysUser;
 import com.qmth.teachcloud.common.enums.ExceptionResultEnum;
 import com.qmth.teachcloud.common.service.BasicClazzService;
@@ -25,7 +25,10 @@ import org.springframework.transaction.annotation.Transactional;
 import org.springframework.util.LinkedMultiValueMap;
 
 import javax.annotation.Resource;
-import java.util.*;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+import java.util.Objects;
 import java.util.concurrent.atomic.AtomicInteger;
 
 /**
@@ -46,6 +49,9 @@ public class PushLogicServiceImpl implements PushLogicService {
     @Resource
     BasicClazzService basicClazzService;
 
+    @Resource
+    TeachClazzService teachClazzService;
+
     @Resource
     TSyncExamStudentScoreService tSyncExamStudentScoreService;
 
@@ -101,19 +107,21 @@ public class PushLogicServiceImpl implements PushLogicService {
                                 try {
                                     Long orgId = null, clazzId = null, majorId = null;
                                     if (Objects.nonNull(student.get("studentCode")) && !Objects.equals("无", student.get("studentCode"))) {
-                                        //先查学生表
-                                        QueryWrapper<BasicStudent> basicStudentQueryWrapper = new QueryWrapper<>();
-                                        basicStudentQueryWrapper.lambda().eq(BasicStudent::getSchoolId, sysUser.getSchoolId())
-                                                .eq(BasicStudent::getStudentCode, student.get("studentCode"));
-                                        BasicStudent basicStudent = basicStudentService.getOne(basicStudentQueryWrapper);
-                                        if (Objects.isNull(basicStudent)) {//如果学生表为空,则查考生表
-                                            QueryWrapper<ExamStudent> examStudentQueryWrapper = new QueryWrapper<>();
-                                            examStudentQueryWrapper.lambda().eq(ExamStudent::getSchoolId, sysUser.getSchoolId())
-                                                    .eq(ExamStudent::getStudentCode, student.get("studentCode"));
-                                            ExamStudent examStudent = examStudentService.getOne(examStudentQueryWrapper);
-                                            Optional.ofNullable(examStudent).orElseThrow(() -> ExceptionResultEnum.ERROR.exception("未找到此考生信息"));
-                                            clazzId = Long.parseLong(examStudent.getClazzId());
-                                            if (Objects.nonNull(clazzId)) {
+                                        String studentCode = String.valueOf(student.get("studentCode"));
+                                        String subjectCode = String.valueOf(student.get("subjectCode"));
+                                        String examNumber = String.valueOf(student.get("examNumber"));
+                                        Long printPlanId = Long.valueOf(student.get("examCode").toString()); // 计划ID
+
+                                        List<Map> studentInfos = examStudentService.listStudentScoreSync(schoolId, studentCode, examNumber, subjectCode, printPlanId);
+                                        if (studentInfos == null || studentInfos.size() == 0) {
+                                            throw ExceptionResultEnum.ERROR.exception("未找到此考生信息");
+                                        }
+                                        Map stuMap = studentInfos.get(0);
+
+                                        clazzId = stuMap.get("clazzId") == null || "".equals(stuMap.get("clazzId")) ? null : Long.parseLong(String.valueOf(stuMap.get("clazzId")));
+                                        if (clazzId != null) {
+                                            TeachClazz teachClazz = teachClazzService.getById(clazzId);
+                                            if (teachClazz == null) {
                                                 BasicClazz basicClazz = basicClazzService.getById(clazzId);
                                                 if (Objects.nonNull(basicClazz)) {
                                                     majorId = basicClazz.getMajorId();
@@ -121,10 +129,6 @@ public class PushLogicServiceImpl implements PushLogicService {
                                                     orgId = basicMajor.getBelongOrgId();
                                                 }
                                             }
-                                        } else {
-                                            orgId = basicStudent.getBelongOrgId();
-                                            clazzId = basicStudent.getClazzId();
-                                            majorId = basicStudent.getMajorId();
                                         }
                                     }
                                     student.put(SystemConstant.SCHOOL_ID, schoolId);

+ 27 - 0
distributed-print-business/src/main/resources/mapper/ExamStudentMapper.xml

@@ -205,5 +205,32 @@
         WHERE
             a.id = #{id}
     </select>
+    <select id="listStudentScoreSync" resultType="java.util.Map">
+        SELECT
+            a.clazz_id clazzId,
+            b.course_code courseCode,
+            b.paper_number paperNumber,
+            a.paper_type paperType,
+            d.sequence
+        FROM
+            (SELECT
+                 *
+             FROM
+                 exam_student
+             WHERE
+                 school_id = 1 AND student_code = 1
+               AND ticket_number = 1) a
+                JOIN
+            exam_detail_course b ON a.exam_detail_course_id = b.id
+                JOIN
+            exam_detail c ON b.exam_detail_id = c.id
+                JOIN
+            exam_task d ON b.school_id = d.school_id
+                AND b.course_code = d.course_code
+                AND b.paper_number = d.paper_number
+        WHERE
+            c.print_plan_id = 1
+          AND CONCAT(b.course_code, a.paper_type, d.sequence) = 1
+    </select>
 
 </mapper>

+ 1 - 1
distributed-print/src/main/java/com/qmth/distributed/print/api/TSyncExamStudentScoreController.java

@@ -166,7 +166,7 @@ public class TSyncExamStudentScoreController {
      */
     private Result createScoreTbTask(TaskTypeEnum taskTypeEnum, String... params) {
         SysUser sysUser = (SysUser) ServletUtil.getRequestUser();
-        int count = tSyncExamStudentScoreService.exportCount(sysUser.getSchoolId(), SystemConstant.convertIdToLong(params[0]), SystemConstant.convertIdToLong(params[1]), SystemConstant.convertIdToLong(params[2]), SystemConstant.convertIdToLong(params[3]), params[4]);
+        int count = tSyncExamStudentScoreService.exportCount(sysUser.getSchoolId(), SystemConstant.convertIdToLong(params[0]), SystemConstant.convertIdToLong(params[1]), SystemConstant.convertIdToLong(params[2]), params[3]);
         if (count == 0) {
             throw ExceptionResultEnum.ERROR.exception("没有成绩信息");
         }