浏览代码

3.4.6 20250612 bug修复(数据同步bug)

xiaofei 1 周之前
父节点
当前提交
97d42d409e

+ 28 - 14
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/BasicExamStudentServiceImpl.java

@@ -630,9 +630,9 @@ public class BasicExamStudentServiceImpl extends ServiceImpl<BasicExamStudentMap
                 if (StringUtils.isBlank(tSyncDataStudent.getCourseCode())) {
                     throw ExceptionResultEnum.ERROR.exception("课程代码必填");
                 }
-                if (StringUtils.isBlank(tSyncDataStudent.getCourseCollegeName())) {
-                    throw ExceptionResultEnum.ERROR.exception("课程开课学院必填");
-                }
+//                if (StringUtils.isBlank(tSyncDataStudent.getCourseCollegeName())) {
+//                    throw ExceptionResultEnum.ERROR.exception("课程开课学院必填");
+//                }
                 if (needPaperNumber && StringUtils.isBlank(tSyncDataStudent.getPaperNumber())) {
                     throw ExceptionResultEnum.ERROR.exception("试卷编号必填");
                 }
@@ -658,21 +658,35 @@ public class BasicExamStudentServiceImpl extends ServiceImpl<BasicExamStudentMap
                 Long courseId = null;
                 String key = tSyncDataStudent.getCourseCode() + SystemConstant.HYPHEN + tSyncDataStudent.getCourseCollegeName();
                 if (!basicCourseIdMap.containsKey(key)) {
-                    List<SysOrg> sysOrgList = sysOrgService.getSecondOrg(schoolId, tSyncDataStudent.getCourseCollegeName());
-                    if (CollectionUtils.isEmpty(sysOrgList)) {
-                        throw ExceptionResultEnum.ERROR.exception("开课学院[" + tSyncDataStudent.getCourseCollegeName() + "]在学院层级不存在");
-                    } else if (sysOrgList.size() == 1) {
-                        SysOrg sysOrg = sysOrgList.get(0);
-                        // 校验课程代码和开课学院
-                        BasicCourse basicCourse = basicCourseService.getByTeachRoomIdAndCode(sysOrg.getId(), tSyncDataStudent.getCourseCode());
-                        if (Objects.isNull(basicCourse)) {
-                            throw ExceptionResultEnum.ERROR.exception("课程代码[" + tSyncDataStudent.getCourseCode() + "]在开课学院[" + tSyncDataStudent.getCourseCollegeName() + "]不存在");
+                    String courseCollege = tSyncDataStudent.getCourseCollegeName();
+                    if (StringUtils.isNotBlank(courseCollege)) {
+                        List<SysOrg> sysOrgList = sysOrgService.getSecondOrg(schoolId, tSyncDataStudent.getCourseCollegeName());
+                        if (CollectionUtils.isEmpty(sysOrgList)) {
+                            throw ExceptionResultEnum.ERROR.exception("开课学院[" + tSyncDataStudent.getCourseCollegeName() + "]在学院层级不存在");
+                        } else if (sysOrgList.size() == 1) {
+                            SysOrg sysOrg = sysOrgList.get(0);
+                            // 校验课程代码和开课学院
+                            BasicCourse basicCourse = basicCourseService.getByTeachRoomIdAndCode(sysOrg.getId(), tSyncDataStudent.getCourseCode());
+                            if (Objects.isNull(basicCourse)) {
+                                throw ExceptionResultEnum.ERROR.exception("课程代码[" + tSyncDataStudent.getCourseCode() + "]在开课学院[" + tSyncDataStudent.getCourseCollegeName() + "]不存在");
+                            } else {
+                                courseId = basicCourse.getId();
+                                basicCourseIdMap.put(key, basicCourse.getId());
+                            }
                         } else {
+                            throw ExceptionResultEnum.ERROR.exception("开课学院[" + tSyncDataStudent.getCourseCollegeName() + "]存在多个相同值");
+                        }
+                    } else {
+                        List<BasicCourse> basicCourseList = basicCourseService.listBySchoolIdAndCode(schoolId, tSyncDataStudent.getCourseCode());
+                        if(CollectionUtils.isEmpty(basicCourseList)){
+                            throw ExceptionResultEnum.ERROR.exception("课程代码[" + tSyncDataStudent.getCourseCode() + "]不存在");
+                        } else if(basicCourseList.size() == 1){
+                            BasicCourse basicCourse = basicCourseList.get(0);
                             courseId = basicCourse.getId();
                             basicCourseIdMap.put(key, basicCourse.getId());
+                        }else {
+                            throw ExceptionResultEnum.ERROR.exception("开课学院[" + tSyncDataStudent.getCourseCollegeName() + "]必填");
                         }
-                    } else {
-                        throw ExceptionResultEnum.ERROR.exception("开课学院[" + tSyncDataStudent.getCourseCollegeName() + "]存在多个相同值");
                     }
                 } else {
                     courseId = basicCourseIdMap.get(key);

+ 1 - 1
teachcloud-data/src/main/java/com/qmth/teachcloud/data/DataUtil.java

@@ -173,7 +173,7 @@ public class DataUtil {
             if (StringUtils.isNotBlank(xq)) {
                 sql.add(" and xqm = \'" + xq + "\'");
             }
-            sql.add(" limit ? ?");
+            sql.add(" limit ?, ?");
         } else {
             sql.add("select * from ");
             sql.add(dataType.getTable());

+ 7 - 9
teachcloud-data/src/main/java/com/qmth/teachcloud/data/service/impl/DataServiceImpl.java

@@ -33,10 +33,7 @@ import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
 import javax.annotation.Resource;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.StringJoiner;
+import java.util.*;
 import java.util.concurrent.atomic.AtomicInteger;
 
 @Service
@@ -214,13 +211,14 @@ public class DataServiceImpl implements DataService {
     @Override
     public SyncDataResult syncStudent(JdbcTemplate jdbcTemplate, Long schoolId, Long examId, String datasourceType, String xn, String xq) {
         long startTime = System.currentTimeMillis();
-        log.info("考生同步:查询待同步考生开始");
-        List<TSyncDataStudent> dataVoList = dataUtil.listExamStudent(jdbcTemplate, DataType.D, datasourceType, xn, xq);
-        log.info("考生同步:查询待同步考生结束。数量:{}", dataVoList.size());
-        Map<String, Object> map = new HashMap<>();
         int successCount;
         String errMsg = null;
+        List<TSyncDataStudent> dataVoList = new ArrayList<>();
+        Map<String, Object> map = new HashMap<>();
         try {
+            log.info("考生同步:查询待同步考生开始");
+            dataVoList = dataUtil.listExamStudent(jdbcTemplate, DataType.D, datasourceType, xn, xq);
+            log.info("考生同步:查询待同步考生结束。数量:{}", dataVoList.size());
             log.info("考生同步:处理考试时间开始");
             for (TSyncDataStudent tSyncDataStudent : dataVoList) {
                 tSyncDataStudent.setId(SystemConstant.getDbUuid());
@@ -249,7 +247,7 @@ public class DataServiceImpl implements DataService {
             log.info("考生同步:处理考生考入结束");
         } catch (Exception e) {
             errMsg = e.getMessage();
-            log.info("考生同步:过程中报错:{}",errMsg);
+            log.info("考生同步:过程中报错:{}", errMsg);
             e.printStackTrace();
         } finally {
             log.info("考生同步:保存日志数据开始");

+ 10 - 0
teachcloud-mark/src/main/java/com/qmth/teachcloud/mark/dto/mark/manage/MarkManageDto.java

@@ -11,6 +11,8 @@ public class MarkManageDto {
 
     @JsonSerialize(using = ToStringSerializer.class)
     private Long examId;
+    @JsonSerialize(using = ToStringSerializer.class)
+    private Long courseId;
     private String courseCode;
     private String courseName;
     private String openCollege;
@@ -45,6 +47,14 @@ public class MarkManageDto {
         this.examId = examId;
     }
 
+    public Long getCourseId() {
+        return courseId;
+    }
+
+    public void setCourseId(Long courseId) {
+        this.courseId = courseId;
+    }
+
     public String getCourseCode() {
         return courseCode;
     }

+ 1 - 0
teachcloud-mark/src/main/resources/mapper/MarkTaskMapper.xml

@@ -26,6 +26,7 @@
     <select id="listPaperManage" resultType="com.qmth.teachcloud.mark.dto.mark.manage.MarkManageDto">
         SELECT
             mp.exam_id examId,
+            mp.course_id courseId,
             bc.code courseCode,
             bc.name courseName,
             so.name openCollege,