فهرست منبع

1.1.0 update-20250214优化考务数据同步

xiaofei 4 ماه پیش
والد
کامیت
5a9a7ea54a
1فایلهای تغییر یافته به همراه19 افزوده شده و 9 حذف شده
  1. 19 9
      src/main/java/com/qmth/eds/service/impl/WhuDataSyncServiceImpl.java

+ 19 - 9
src/main/java/com/qmth/eds/service/impl/WhuDataSyncServiceImpl.java

@@ -105,19 +105,13 @@ public class WhuDataSyncServiceImpl implements WhuDataSyncService {
             // 调用接口获取数据
             List<ExamSyncStudentTemp> examSyncStudentTemps = whuUtils.getKwData(schoolId, token);
 
-            String txtFileMd5 = null;
-
             long syncDate = System.currentTimeMillis();
 
             SyncLog syncLog = new SyncLog();
             syncLog.setSyncDate(DateUtil.formatDateTime(new Date(syncDate)));
 
-            if(StringUtils.isBlank(examSyncTotal.getDataMd5())){
-                txtFileMd5 = md5DataText(schoolId, examSyncStudentTemps);
-            }
-
             // 校验数据是否变动,若变动,需要新增
-            if (StringUtils.isBlank(examSyncTotal.getDataMd5()) || examSyncStudentTemps.size() != examSyncTotal.getStudents() || !examSyncTotal.getDataMd5().equals(txtFileMd5 = md5DataText(schoolId, examSyncStudentTemps))) {
+            if (canAddTotal(examSyncTotal, examSyncStudentTemps)){
                 List<ExamSyncStudent> examSyncStudentList = examSyncStudentService.listByExamSyncTotalId(examSyncTotal);
 
                 Long examSyncTotalId = examSyncTotal.getId();
@@ -170,7 +164,6 @@ public class WhuDataSyncServiceImpl implements WhuDataSyncService {
                 int students = examSyncStudents.size();
                 examSyncTotal.setStudents(students);
 
-                examSyncTotal.setDataMd5(txtFileMd5);
                 // 生成excel文件
                 File excelFile = createExcel(examSyncTotal, examSyncStudents);
 
@@ -183,7 +176,7 @@ public class WhuDataSyncServiceImpl implements WhuDataSyncService {
 
                 // 下载过学校+学期+考试类型  文件的实施人员发送短信
                 basicMessageService.sendTeachDataChangeNotice(schoolId, semesterId, examTypeId);
-            } else {
+            } else{
                 syncLog.setLogDetail("数据无变动");
                 syncLogList.add(syncLog);
                 examSyncTotal.setSyncLog(JSON.toJSONString(syncLogList));
@@ -218,6 +211,23 @@ public class WhuDataSyncServiceImpl implements WhuDataSyncService {
         return s1;
     }
 
+    /**
+     * 判断考务数据是否有变动
+     *
+     * @param examSyncTotal        生成汇总数据
+     * @param examSyncStudentTemps 同步考生数据
+     */
+    private boolean canAddTotal(ExamSyncTotal examSyncTotal, List<ExamSyncStudentTemp> examSyncStudentTemps) {
+        String txtFileMd5 = md5DataText(examSyncTotal.getSchoolId(), examSyncStudentTemps);
+        // 首次新增或者数据有变动
+        if (StringUtils.isBlank(examSyncTotal.getDataMd5())
+                || !txtFileMd5.equals(examSyncTotal.getDataMd5())) {
+            examSyncTotal.setDataMd5(txtFileMd5);
+            return true;
+        }
+        return false;
+    }
+
     private boolean compareStudent(ExamSyncStudent s1, ExamSyncStudentTemp s2) {
         String s1String = spliceParam(s1.getJxbId(), s1.getJxbmc(), s1.getKcmc(), s1.getJgh(), s1.getXm(), s1.getKkbm(), s1.getXf(), s1.getXsxm(), s1.getJgmc(), s1.getZymc(), s1.getCxbj(), s1.getNjdmId(), s1.getZwh(), s1.getCdmc(), s1.getKsbz());
         String s2String = spliceParam(s2.getJxbId(), s2.getJxbmc(), s2.getKcmc(), s2.getJgh(), s2.getXm(), s2.getKkbm(), s2.getXf(), s2.getXsxm(), s2.getJgmc(), s2.getZymc(), s2.getCxbj(), s2.getNjdmId(), s2.getZwh(), s2.getCdmc(), s2.getKsbz());