Pārlūkot izejas kodu

3.4.4 update-20250411

xiaofei 2 mēneši atpakaļ
vecāks
revīzija
9ba09d579c

+ 12 - 7
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/BasicExamStudentServiceImpl.java

@@ -198,6 +198,11 @@ public class BasicExamStudentServiceImpl extends ServiceImpl<BasicExamStudentMap
         String teacherCode = basicExamStudentParam.getTeacherCode();
         String paperType = basicExamStudentParam.getPaperType();
 
+        BasicExamRule basicExamRule = basicExamRuleService.getBySchoolId(schoolId);
+        if (basicExamRule == null) {
+            throw ExceptionResultEnum.ERROR.exception("通用规则未设置");
+        }
+
         if (StringUtils.isNotBlank(studentCode) && !studentCode.matches(SystemConstant.REGULAR_EXPRESSION_OF_STUDENT_CODE)) {
             throw ExceptionResultEnum.ERROR.exception("学号只能由大写字母、数字组成");
         }
@@ -363,16 +368,12 @@ public class BasicExamStudentServiceImpl extends ServiceImpl<BasicExamStudentMap
             basicExamStudent.setExamTime(time);
         }
 
-        parserRequiredField(basicExamStudent);
+        parserRequiredField(basicExamStudent, basicExamRule);
         return basicExamStudent;
     }
 
-    private void parserRequiredField(BasicExamStudent basicExamStudent) {
+    private void parserRequiredField(BasicExamStudent basicExamStudent, BasicExamRule basicExamRule) {
         // 组装requiredFields。extendFields前端传
-        BasicExamRule basicExamRule = basicExamRuleService.getBySchoolId(basicExamStudent.getSchoolId());
-        if (basicExamRule == null) {
-            throw ExceptionResultEnum.ERROR.exception("通用规则未设置");
-        }
         Map<String, EnumResult> enumResultMap = basicExamRule.getRequiredFieldList().stream().filter(m -> m.getEnable()).collect(Collectors.toMap(EnumResult::getCode, m -> m));
         List<CodeNameEnableDisabledValue> requiredFields = new ArrayList<>();
         Field[] declaredFields = basicExamStudent.getClass().getDeclaredFields();
@@ -602,6 +603,10 @@ public class BasicExamStudentServiceImpl extends ServiceImpl<BasicExamStudentMap
         Map<String, BasicExamStudent> courseIdStudentCodeMap = basicExamStudentList.stream().collect(Collectors.toMap(k -> k.getCourseId() + SystemConstant.HYPHEN + k.getStudentCode(), Function.identity(), (v1, v2) -> v1));
 
         BasicSchool basicSchool = commonCacheService.schoolCache(schoolId);
+        BasicExamRule basicExamRule = basicExamRuleService.getBySchoolId(schoolId);
+        if (basicExamRule == null) {
+            throw ExceptionResultEnum.ERROR.exception("通用规则未设置");
+        }
         // 学校设置强制校验卷型或者模式4
         boolean needPaperNumber = (basicSchool.getHasPaperNumber() != null && basicSchool.getHasPaperNumber());
         // 试卷编号->课程
@@ -771,7 +776,7 @@ public class BasicExamStudentServiceImpl extends ServiceImpl<BasicExamStudentMap
                         courseTeachClassTeacherMap.put(courseTeachClassTeacherKey, basicExamStudent.getTeacherId());
                     }
                 }
-                parserRequiredField(basicExamStudent);
+                parserRequiredField(basicExamStudent, basicExamRule);
                 basicExamStudents.add(basicExamStudent);
             } catch (Exception e) {
                 stringJoiner.add(e.getMessage());

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

@@ -10,6 +10,8 @@ import com.qmth.teachcloud.common.bean.sync.TSyncDataStudent;
 import com.qmth.teachcloud.data.enums.DataType;
 import org.apache.commons.collections4.CollectionUtils;
 import org.apache.commons.lang3.StringUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 import org.springframework.jdbc.core.BeanPropertyRowMapper;
 import org.springframework.jdbc.core.JdbcTemplate;
 import org.springframework.jdbc.datasource.DriverManagerDataSource;
@@ -21,6 +23,7 @@ import java.util.*;
 
 @Component
 public class DataUtil {
+    private static final Logger log = LoggerFactory.getLogger(DataUtil.class);
 
     // 一页1000条
     private static int PAGE_SIZE = 1000;
@@ -81,7 +84,7 @@ public class DataUtil {
     public List<TSyncDataStudent> listExamStudent(JdbcTemplate jdbcTemplate, DataType dataType, String datasourceType) {
         String sql;
         if ("ORACLE".equals(datasourceType.trim())) {
-            sql = getOracleSql(dataType, true, "course_code", "student_code");
+            sql = getOracleSql(dataType, true, "coursecode", "studentcode");
             return pageOracle(jdbcTemplate, sql, TSyncDataStudent.class);
         } else if ("MYSQL".equals(datasourceType.trim())) {
             sql = getMysqlSql(dataType, true);
@@ -176,7 +179,7 @@ public class DataUtil {
             stringJoiner.add("SELECT *  FROM (SELECT t.*, ROW_NUMBER() OVER (ORDER BY ");
             StringJoiner sortStr = new StringJoiner(",");
             for (String s : sortColumn) {
-                sortStr.add("\"" + s + "\"");
+                sortStr.add(" " + s + " ");
             }
             stringJoiner.add(sortStr.toString());
             stringJoiner.add(") AS rn FROM ");
@@ -186,6 +189,7 @@ public class DataUtil {
         } else {
             sql = "select * from \"" + dataType.getTable() + "\"";
         }
+        log.info(dataType.getName() + "数据同步sql:" + sql);
         return sql;
     }
 

+ 19 - 0
teachcloud-data/src/main/java/com/qmth/teachcloud/data/service/impl/DataServiceImpl.java

@@ -29,6 +29,8 @@ import com.qmth.teachcloud.data.service.TSyncDataLogService;
 import com.qmth.teachcloud.data.service.TSyncDataStudentService;
 import com.qmth.teachcloud.data.util.JdbcUtil;
 import org.apache.commons.lang3.StringUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 import org.springframework.jdbc.core.JdbcTemplate;
 import org.springframework.stereotype.Service;
 
@@ -42,6 +44,8 @@ import java.util.concurrent.atomic.AtomicInteger;
 @Service
 public class DataServiceImpl implements DataService {
 
+    private static final Logger log = LoggerFactory.getLogger(DataServiceImpl.class);
+
     @Resource
     private DataUtil dataUtil;
     @Resource
@@ -93,33 +97,43 @@ public class DataServiceImpl implements DataService {
         StringJoiner stringJoiner = new StringJoiner(";");
         // 机构同步
         if (dataRange.contains(DataType.A.name())) {
+            log.info("开始同步机构");
             SyncDataResult syncDataResult = syncOrg(jdbcTemplate, schoolId, examId, datasourceType.getConfigValue().toString());
             stringJoiner.add(DataType.A.name() + ":" + syncDataResult.getCount());
             sendSms = StringUtils.isNotBlank(syncDataResult.getErrMsg()) ? true : sendSms;
+            log.info("结束同步机构,状态" + sendSms);
         }
         // 用户同步
         if (dataRange.contains(DataType.B.name())) {
+            log.info("开始同步用户");
             SyncDataResult syncDataResult = syncUser(jdbcTemplate, schoolId, examId, datasourceType.getConfigValue().toString());
             stringJoiner.add(DataType.B.name() + ":" + syncDataResult.getCount());
             sendSms = StringUtils.isNotBlank(syncDataResult.getErrMsg()) ? true : sendSms;
+            log.info("结束同步用户,状态" + sendSms);
         }
         // 课程同步
         if (dataRange.contains(DataType.C.name())) {
+            log.info("开始同步课程");
             SyncDataResult syncDataResult = syncCourse(jdbcTemplate, schoolId, examId, datasourceType.getConfigValue().toString());
             stringJoiner.add(DataType.C.name() + ":" + syncDataResult.getCount());
             sendSms = StringUtils.isNotBlank(syncDataResult.getErrMsg()) ? true : sendSms;
+            log.info("结束同步课程,状态" + sendSms);
         }
         // 考生同步
         if (dataRange.contains(DataType.D.name())) {
+            log.info("开始同步考生");
             SyncDataResult syncDataResult = syncStudent(jdbcTemplate, schoolId, examId, datasourceType.getConfigValue().toString());
             stringJoiner.add(DataType.D.name() + ":" + syncDataResult.getCount());
             sendSms = StringUtils.isNotBlank(syncDataResult.getErrMsg()) ? true : sendSms;
+            log.info("结束同步考生,状态" + sendSms);
         }
         // 命题任务同步
         if (dataRange.contains(DataType.E.name())) {
+            log.info("开始同步命题任务");
             SyncDataResult syncDataResult = syncExamTask(jdbcTemplate, schoolId, examId, datasourceType.getConfigValue().toString());
             stringJoiner.add(DataType.E.name() + ":" + syncDataResult.getCount());
             sendSms = StringUtils.isNotBlank(syncDataResult.getErrMsg()) ? true : sendSms;
+            log.info("结束同步命题任务,状态" + sendSms);
         }
 
         syncData.setDetail(stringJoiner.toString());
@@ -138,6 +152,7 @@ public class DataServiceImpl implements DataService {
     private SyncDataResult syncOrg(JdbcTemplate jdbcTemplate, Long schoolId, Long examId, String datasourceType) {
         long startTime = System.currentTimeMillis();
         List<OrgDataVo> dataVoList = dataUtil.listOrg(jdbcTemplate, DataType.A, datasourceType);
+        log.info("查询到待同步机构数量:" + dataVoList.size());
         StringJoiner errorMsg = new StringJoiner("\n");
         AtomicInteger i = new AtomicInteger(0);
         for (OrgDataVo orgDataVo : dataVoList) {
@@ -156,6 +171,7 @@ public class DataServiceImpl implements DataService {
     private SyncDataResult syncUser(JdbcTemplate jdbcTemplate, Long schoolId, Long examId, String datasourceType) {
         long startTime = System.currentTimeMillis();
         List<UserDataVo> dataVoList = dataUtil.listUser(jdbcTemplate, DataType.B, datasourceType);
+        log.info("查询到待同步用户数量:" + dataVoList.size());
         StringJoiner errorMsg = new StringJoiner("\n");
         AtomicInteger i = new AtomicInteger(0);
         for (UserDataVo userDataVo : dataVoList) {
@@ -174,6 +190,7 @@ public class DataServiceImpl implements DataService {
     private SyncDataResult syncCourse(JdbcTemplate jdbcTemplate, Long schoolId, Long examId, String datasourceType) {
         long startTime = System.currentTimeMillis();
         List<CourseDataVo> dataVoList = dataUtil.listCourse(jdbcTemplate, DataType.C, datasourceType);
+        log.info("查询到待同步课程数量:" + dataVoList.size());
         StringJoiner errorMsg = new StringJoiner("\n");
         AtomicInteger i = new AtomicInteger(0);
         for (CourseDataVo courseDataVo : dataVoList) {
@@ -192,6 +209,7 @@ public class DataServiceImpl implements DataService {
     private SyncDataResult syncStudent(JdbcTemplate jdbcTemplate, Long schoolId, Long examId, String datasourceType) {
         long startTime = System.currentTimeMillis();
         List<TSyncDataStudent> dataVoList = dataUtil.listExamStudent(jdbcTemplate, DataType.D, datasourceType);
+        log.info("查询到待同步考生数量:" + dataVoList.size());
         Map<String, Object> map = new HashMap<>();
         int successCount = 0;
         String errMsg = null;
@@ -228,6 +246,7 @@ public class DataServiceImpl implements DataService {
     private SyncDataResult syncExamTask(JdbcTemplate jdbcTemplate, Long schoolId, Long examId, String datasourceType) {
         long startTime = System.currentTimeMillis();
         List<ExamTaskDataVo> dataVoList = dataUtil.listExamTask(jdbcTemplate, DataType.E, datasourceType);
+        log.info("查询到待同步命题任务数量:" + dataVoList.size());
         StringJoiner errorMsg = new StringJoiner("\n");
         AtomicInteger i = new AtomicInteger(0);
         for (ExamTaskDataVo examTaskDataVo : dataVoList) {