Explorar o código

3.4.6 20250612 bug修复(数据同步增加学年学期)

xiaofei hai 1 semana
pai
achega
56cf38778a

+ 2 - 0
distributed-print/install/mysql/init/teachcloud_db.sql

@@ -6468,6 +6468,8 @@ CREATE TABLE IF NOT EXISTS `t_sync_data`
     `school_id`      bigint      NOT NULL COMMENT '学校ID',
     `school_id`      bigint      NOT NULL COMMENT '学校ID',
     `semester_id`    bigint      NOT NULL COMMENT '学期ID',
     `semester_id`    bigint      NOT NULL COMMENT '学期ID',
     `exam_id`        bigint      NOT NULL COMMENT '考试ID',
     `exam_id`        bigint      NOT NULL COMMENT '考试ID',
+    `xn` VARCHAR(45) NULL COMMENT '学年(考务)',
+    `xq` VARCHAR(45) NULL COMMENT '学期(考务)',
     `data_type`      varchar(45) NOT NULL COMMENT '同步数据类型(A:机构同步,B:用户同步,C:课程同步,D:考生同步,E:命题任务同步)',
     `data_type`      varchar(45) NOT NULL COMMENT '同步数据类型(A:机构同步,B:用户同步,C:课程同步,D:考生同步,E:命题任务同步)',
     `start_time`     bigint       DEFAULT NULL COMMENT '同步开始时间',
     `start_time`     bigint       DEFAULT NULL COMMENT '同步开始时间',
     `end_time`       bigint       DEFAULT NULL COMMENT '同步结束时间',
     `end_time`       bigint       DEFAULT NULL COMMENT '同步结束时间',

+ 3 - 0
distributed-print/install/mysql/upgrade/3.4.5.sql

@@ -145,6 +145,9 @@ ADD COLUMN `retry_count` INT NULL DEFAULT 0 COMMENT '重试次数' AFTER `ai_mar
 ALTER TABLE `mark_task` ADD COLUMN `next_retry_time` BIGINT(20) NULL COMMENT '下一次重试时间' AFTER `retry_count`;
 ALTER TABLE `mark_task` ADD COLUMN `next_retry_time` BIGINT(20) NULL COMMENT '下一次重试时间' AFTER `retry_count`;
 ALTER TABLE `mark_student` ADD COLUMN `ai_mark_abnormal` TINYINT(1) NULL DEFAULT 0 COMMENT 'ai评卷异常' AFTER `version`;
 ALTER TABLE `mark_student` ADD COLUMN `ai_mark_abnormal` TINYINT(1) NULL DEFAULT 0 COMMENT 'ai评卷异常' AFTER `version`;
 INSERT INTO `sys_privilege` (`id`, `name`, `url`, `type`, `parent_id`, `sequence`, `property`, `enable`, `default_auth`, `front_display`) VALUES ('496', 'AI阅卷(开关)', 'OpenAiMark', 'BUTTON', '897', '4', 'AUTH', '1', '0', '1');
 INSERT INTO `sys_privilege` (`id`, `name`, `url`, `type`, `parent_id`, `sequence`, `property`, `enable`, `default_auth`, `front_display`) VALUES ('496', 'AI阅卷(开关)', 'OpenAiMark', 'BUTTON', '897', '4', 'AUTH', '1', '0', '1');
+ALTER TABLE `t_sync_data`
+    ADD COLUMN `xn` VARCHAR(45) NULL COMMENT '学年(考务)' AFTER `exam_id`,
+ADD COLUMN `xq` VARCHAR(45) NULL COMMENT '学期(考务)' AFTER `xn`;
 
 
 INSERT INTO `sys_role_privilege` (`id`,`role_id`,`privilege_id`,`enable`,`school_id`) VALUES (1914588152174108680,2,1222,1,NULL);
 INSERT INTO `sys_role_privilege` (`id`,`role_id`,`privilege_id`,`enable`,`school_id`) VALUES (1914588152174108680,2,1222,1,NULL);
 INSERT INTO `sys_role_privilege` (`id`,`role_id`,`privilege_id`,`enable`,`school_id`) VALUES (1914588152174108681,2,1223,1,NULL);
 INSERT INTO `sys_role_privilege` (`id`,`role_id`,`privilege_id`,`enable`,`school_id`) VALUES (1914588152174108681,2,1223,1,NULL);

+ 3 - 0
distributed-print/src/main/resources/upgrade/3.4.5/3.4.5-upgrade.sql

@@ -144,6 +144,9 @@ ADD COLUMN `retry_count` INT NULL DEFAULT 0 COMMENT '重试次数' AFTER `ai_mar
 
 
 ALTER TABLE `mark_task` ADD COLUMN `next_retry_time` BIGINT(20) NULL COMMENT '下一次重试时间' AFTER `retry_count`;
 ALTER TABLE `mark_task` ADD COLUMN `next_retry_time` BIGINT(20) NULL COMMENT '下一次重试时间' AFTER `retry_count`;
 ALTER TABLE `mark_student` ADD COLUMN `ai_mark_abnormal` TINYINT(1) NULL DEFAULT 0 COMMENT 'ai评卷异常' AFTER `version`;
 ALTER TABLE `mark_student` ADD COLUMN `ai_mark_abnormal` TINYINT(1) NULL DEFAULT 0 COMMENT 'ai评卷异常' AFTER `version`;
+ALTER TABLE `t_sync_data`
+    ADD COLUMN `xn` VARCHAR(45) NULL COMMENT '学年(考务)' AFTER `exam_id`,
+ADD COLUMN `xq` VARCHAR(45) NULL COMMENT '学期(考务)' AFTER `xn`;
 
 
 INSERT INTO `sys_privilege` (`id`, `name`, `url`, `type`, `parent_id`, `sequence`, `property`, `enable`, `default_auth`, `front_display`) VALUES ('496', 'AI阅卷(开关)', 'OpenAiMark', 'BUTTON', '897', '4', 'AUTH', '1', '0', '1');
 INSERT INTO `sys_privilege` (`id`, `name`, `url`, `type`, `parent_id`, `sequence`, `property`, `enable`, `default_auth`, `front_display`) VALUES ('496', 'AI阅卷(开关)', 'OpenAiMark', 'BUTTON', '897', '4', 'AUTH', '1', '0', '1');
 INSERT INTO `sys_role_privilege` (`id`,`role_id`,`privilege_id`,`enable`,`school_id`) VALUES (1914588152174108680,2,1222,1,NULL);
 INSERT INTO `sys_role_privilege` (`id`,`role_id`,`privilege_id`,`enable`,`school_id`) VALUES (1914588152174108680,2,1222,1,NULL);

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

@@ -35,9 +35,9 @@ public class DataUtil {
 
 
         String sql;
         String sql;
         if ("ORACLE".equals(datasourceType.trim())) {
         if ("ORACLE".equals(datasourceType.trim())) {
-            sql = getOracleSql(dataType, false);
+            sql = getOracleSql(null, null, dataType, false);
         } else if ("MYSQL".equals(datasourceType.trim())) {
         } else if ("MYSQL".equals(datasourceType.trim())) {
-            sql = getMysqlSql(dataType, false);
+            sql = getMysqlSql(dataType, false, null, null);
         } else {
         } else {
             throw ExceptionResultEnum.ERROR.exception("只支持Oracle和Mysql数据库");
             throw ExceptionResultEnum.ERROR.exception("只支持Oracle和Mysql数据库");
         }
         }
@@ -47,10 +47,10 @@ public class DataUtil {
     public List<UserDataVo> listUser(JdbcTemplate jdbcTemplate, DataType dataType, String datasourceType) {
     public List<UserDataVo> listUser(JdbcTemplate jdbcTemplate, DataType dataType, String datasourceType) {
         String sql;
         String sql;
         if ("ORACLE".equals(datasourceType.trim())) {
         if ("ORACLE".equals(datasourceType.trim())) {
-            sql = getOracleSql(dataType, true, "code");
+            sql = getOracleSql(null, null, dataType, true, "code");
             return pageOracle(jdbcTemplate, sql, UserDataVo.class);
             return pageOracle(jdbcTemplate, sql, UserDataVo.class);
         } else if ("MYSQL".equals(datasourceType.trim())) {
         } else if ("MYSQL".equals(datasourceType.trim())) {
-            sql = getMysqlSql(dataType, true);
+            sql = getMysqlSql(dataType, true, null, null);
             return pageMysql(jdbcTemplate, sql, UserDataVo.class);
             return pageMysql(jdbcTemplate, sql, UserDataVo.class);
         } else {
         } else {
             throw ExceptionResultEnum.ERROR.exception("只支持Oracle和Mysql数据库");
             throw ExceptionResultEnum.ERROR.exception("只支持Oracle和Mysql数据库");
@@ -60,9 +60,9 @@ public class DataUtil {
     public List<CourseDataVo> listCourse(JdbcTemplate jdbcTemplate, DataType dataType, String datasourceType) {
     public List<CourseDataVo> listCourse(JdbcTemplate jdbcTemplate, DataType dataType, String datasourceType) {
         String sql;
         String sql;
         if ("ORACLE".equals(datasourceType.trim())) {
         if ("ORACLE".equals(datasourceType.trim())) {
-            sql = getOracleSql(dataType, false);
+            sql = getOracleSql(null, null, dataType, false);
         } else if ("MYSQL".equals(datasourceType.trim())) {
         } else if ("MYSQL".equals(datasourceType.trim())) {
-            sql = getMysqlSql(dataType, false);
+            sql = getMysqlSql(dataType, false, null, null);
         } else {
         } else {
             throw ExceptionResultEnum.ERROR.exception("只支持Oracle和Mysql数据库");
             throw ExceptionResultEnum.ERROR.exception("只支持Oracle和Mysql数据库");
         }
         }
@@ -72,22 +72,22 @@ public class DataUtil {
     public List<ExamTaskDataVo> listExamTask(JdbcTemplate jdbcTemplate, DataType dataType, String datasourceType) {
     public List<ExamTaskDataVo> listExamTask(JdbcTemplate jdbcTemplate, DataType dataType, String datasourceType) {
         String sql;
         String sql;
         if ("ORACLE".equals(datasourceType.trim())) {
         if ("ORACLE".equals(datasourceType.trim())) {
-            sql = getOracleSql(dataType, false);
+            sql = getOracleSql(null, null, dataType, false);
         } else if ("MYSQL".equals(datasourceType.trim())) {
         } else if ("MYSQL".equals(datasourceType.trim())) {
-            sql = getMysqlSql(dataType, false);
+            sql = getMysqlSql(dataType, false, null, null);
         } else {
         } else {
             throw ExceptionResultEnum.ERROR.exception("只支持Oracle和Mysql数据库");
             throw ExceptionResultEnum.ERROR.exception("只支持Oracle和Mysql数据库");
         }
         }
         return query(jdbcTemplate, sql, ExamTaskDataVo.class);
         return query(jdbcTemplate, sql, ExamTaskDataVo.class);
     }
     }
 
 
-    public List<TSyncDataStudent> listExamStudent(JdbcTemplate jdbcTemplate, DataType dataType, String datasourceType) {
+    public List<TSyncDataStudent> listExamStudent(JdbcTemplate jdbcTemplate, DataType dataType, String datasourceType, String xn, String xq) {
         String sql;
         String sql;
         if ("ORACLE".equals(datasourceType.trim())) {
         if ("ORACLE".equals(datasourceType.trim())) {
-            sql = getOracleSql(dataType, true, "coursecode", "studentcode");
+            sql = getOracleSql(xn, xq, dataType, true, "coursecode", "studentcode");
             return pageOracle(jdbcTemplate, sql, TSyncDataStudent.class);
             return pageOracle(jdbcTemplate, sql, TSyncDataStudent.class);
         } else if ("MYSQL".equals(datasourceType.trim())) {
         } else if ("MYSQL".equals(datasourceType.trim())) {
-            sql = getMysqlSql(dataType, true);
+            sql = getMysqlSql(dataType, true, xn, xq);
             return pageMysql(jdbcTemplate, sql, TSyncDataStudent.class);
             return pageMysql(jdbcTemplate, sql, TSyncDataStudent.class);
         } else {
         } else {
             throw ExceptionResultEnum.ERROR.exception("只支持Oracle和Mysql数据库");
             throw ExceptionResultEnum.ERROR.exception("只支持Oracle和Mysql数据库");
@@ -160,18 +160,35 @@ public class DataUtil {
         return listAll;
         return listAll;
     }
     }
 
 
-    private String getMysqlSql(DataType dataType, boolean isPage) {
+    private String getMysqlSql(DataType dataType, boolean isPage, String xn, String xq) {
         //sql语句
         //sql语句
-        String sql;
+        StringJoiner sql = new StringJoiner("");
         if (isPage) {
         if (isPage) {
-            sql = "select * from " + dataType.getTable() + " limit ? ?";
+            sql.add("select * from ");
+            sql.add(dataType.getTable());
+            sql.add(" where 1=1 ");
+            if (StringUtils.isNotBlank(xn)) {
+                sql.add(" and xnm = \'" + xn + "\'");
+            }
+            if (StringUtils.isNotBlank(xq)) {
+                sql.add(" and xqm = \'" + xq + "\'");
+            }
+            sql.add(" limit ? ?");
         } else {
         } else {
-            sql = "select * from " + dataType.getTable();
+            sql.add("select * from ");
+            sql.add(dataType.getTable());
+            sql.add(" where 1=1 ");
+            if (StringUtils.isNotBlank(xn)) {
+                sql.add(" and xnm = \'" + xn + "\'");
+            }
+            if (StringUtils.isNotBlank(xq)) {
+                sql.add(" and xqm = \'" + xq + "\'");
+            }
         }
         }
-        return sql;
+        return sql.toString();
     }
     }
 
 
-    private String getOracleSql(DataType dataType, boolean isPage, String... sortColumn) {
+    private String getOracleSql(String xn, String xq, DataType dataType, boolean isPage, String... sortColumn) {
         //sql语句
         //sql语句
         String sql;
         String sql;
         if (isPage) {
         if (isPage) {
@@ -184,15 +201,42 @@ public class DataUtil {
             stringJoiner.add(sortStr.toString());
             stringJoiner.add(sortStr.toString());
             stringJoiner.add(") AS rn FROM ");
             stringJoiner.add(") AS rn FROM ");
             stringJoiner.add("\"" + dataType.getTable() + "\"");
             stringJoiner.add("\"" + dataType.getTable() + "\"");
-            stringJoiner.add(" t)  WHERE rn BETWEEN ? AND ?");
+            stringJoiner.add(" t where 1=1 ");
+            if (StringUtils.isNotBlank(xn)) {
+                stringJoiner.add(" and xnm = \'" + xn + "\'");
+            }
+            if (StringUtils.isNotBlank(xq)) {
+                stringJoiner.add(" and xqm = \'" + xq + "\'");
+            }
+            stringJoiner.add(" )  WHERE rn BETWEEN ? AND ?");
             sql = stringJoiner.toString();
             sql = stringJoiner.toString();
         } else {
         } else {
-            sql = "select * from \"" + dataType.getTable() + "\"";
+            sql = "select * from \"" + dataType.getTable() + "\" where 1=1 ";
+            if (StringUtils.isNotBlank(xn)) {
+                sql += " and xnm = \'" + xn + "\'";
+            }
+            if (StringUtils.isNotBlank(xq)) {
+                sql += " and xqm = \'" + xq + "\'";
+            }
         }
         }
         log.info(dataType.getName() + "数据同步sql:" + sql);
         log.info(dataType.getName() + "数据同步sql:" + sql);
         return sql;
         return sql;
     }
     }
 
 
+
+    public static void main(String[] args) {
+        DataUtil dataUtil = new DataUtil();
+        System.out.println(dataUtil.getOracleSql(null, null, DataType.B, true, "semestercode"));
+        System.out.println(dataUtil.getOracleSql(null, null, DataType.B, false, "semestercode", "examname"));
+        System.out.println(dataUtil.getOracleSql("2023-2024", "1", DataType.B, true, "semestercode"));
+        System.out.println(dataUtil.getOracleSql("2023-2024", "", DataType.B, false, "semestercode"));
+        System.out.println("------------------------------------");
+        System.out.println(dataUtil.getMysqlSql(DataType.B, true, null, null));
+        System.out.println(dataUtil.getMysqlSql(DataType.B, false, null, null));
+        System.out.println(dataUtil.getMysqlSql(DataType.B, true, "2023-2024", "1"));
+        System.out.println(dataUtil.getMysqlSql(DataType.B, false, "2023-2024", ""));
+    }
+
     public DataSource createDataSourceMap(Long schoolId) {
     public DataSource createDataSourceMap(Long schoolId) {
         SysConfig datasourceType = commonCacheService.addSysConfigCache(schoolId, SystemConstant.DATA_DATASOURCE_TYPE);
         SysConfig datasourceType = commonCacheService.addSysConfigCache(schoolId, SystemConstant.DATA_DATASOURCE_TYPE);
         if (datasourceType == null || StringUtils.isBlank(datasourceType.getConfigValue())) {
         if (datasourceType == null || StringUtils.isBlank(datasourceType.getConfigValue())) {

+ 32 - 11
teachcloud-data/src/main/java/com/qmth/teachcloud/data/entity/TSyncData.java

@@ -40,6 +40,11 @@ public class TSyncData implements Serializable {
     @JsonSerialize(using = ToStringSerializer.class)
     @JsonSerialize(using = ToStringSerializer.class)
     private Long examId;
     private Long examId;
 
 
+    @ApiModelProperty(value = "学年(考务)")
+    private String xn;
+    @ApiModelProperty(value = "学期(考务)")
+    private String xq;
+
     @ApiModelProperty(value = "同步数据类型(A:机构同步,B:用户同步,C:课程同步,D:考生同步,E:命题任务同步)")
     @ApiModelProperty(value = "同步数据类型(A:机构同步,B:用户同步,C:课程同步,D:考生同步,E:命题任务同步)")
     private String dataType;
     private String dataType;
 
 
@@ -110,6 +115,22 @@ public class TSyncData implements Serializable {
         this.examId = examId;
         this.examId = examId;
     }
     }
 
 
+    public String getXn() {
+        return xn;
+    }
+
+    public void setXn(String xn) {
+        this.xn = xn;
+    }
+
+    public String getXq() {
+        return xq;
+    }
+
+    public void setXq(String xq) {
+        this.xq = xq;
+    }
+
     public String getDataType() {
     public String getDataType() {
         return dataType;
         return dataType;
     }
     }
@@ -213,16 +234,16 @@ public class TSyncData implements Serializable {
     @Override
     @Override
     public String toString() {
     public String toString() {
         return "TSyncData{" +
         return "TSyncData{" +
-            "schoolId=" + schoolId +
-            ", semesterId=" + semesterId +
-            ", examId=" + examId +
-            ", dataType=" + dataType +
-            ", startTime=" + startTime +
-            ", endTime=" + endTime +
-            ", lastSyncTime=" + lastSyncTime +
-            ", detail=" + detail +
-            ", createTime=" + createTime +
-            ", updateTime=" + updateTime +
-        "}";
+                "schoolId=" + schoolId +
+                ", semesterId=" + semesterId +
+                ", examId=" + examId +
+                ", dataType=" + dataType +
+                ", startTime=" + startTime +
+                ", endTime=" + endTime +
+                ", lastSyncTime=" + lastSyncTime +
+                ", detail=" + detail +
+                ", createTime=" + createTime +
+                ", updateTime=" + updateTime +
+                "}";
     }
     }
 }
 }

+ 1 - 2
teachcloud-data/src/main/java/com/qmth/teachcloud/data/service/DataService.java

@@ -5,7 +5,6 @@ import com.qmth.distributed.print.business.bean.params.SysAdminSetParam;
 import com.qmth.teachcloud.data.dto.SyncDataResult;
 import com.qmth.teachcloud.data.dto.SyncDataResult;
 import com.qmth.teachcloud.data.entity.TSyncData;
 import com.qmth.teachcloud.data.entity.TSyncData;
 import org.springframework.jdbc.core.JdbcTemplate;
 import org.springframework.jdbc.core.JdbcTemplate;
-import org.springframework.transaction.annotation.Transactional;
 
 
 public interface DataService {
 public interface DataService {
     boolean testConnect(SysAdminSetParam sysAdminSetParam);
     boolean testConnect(SysAdminSetParam sysAdminSetParam);
@@ -17,7 +16,7 @@ public interface DataService {
 
 
     SyncDataResult syncCourse(JdbcTemplate jdbcTemplate, Long schoolId, Long examId, String datasourceType);
     SyncDataResult syncCourse(JdbcTemplate jdbcTemplate, Long schoolId, Long examId, String datasourceType);
 
 
-    SyncDataResult syncStudent(JdbcTemplate jdbcTemplate, Long schoolId, Long examId, String datasourceType);
+    SyncDataResult syncStudent(JdbcTemplate jdbcTemplate, Long schoolId, Long examId, String datasourceType, String xn, String xq);
 
 
     SyncDataResult syncExamTask(JdbcTemplate jdbcTemplate, Long schoolId, Long examId, String datasourceType);
     SyncDataResult syncExamTask(JdbcTemplate jdbcTemplate, Long schoolId, Long examId, String datasourceType);
 }
 }

+ 3 - 4
teachcloud-data/src/main/java/com/qmth/teachcloud/data/service/impl/DataServiceImpl.java

@@ -1,7 +1,6 @@
 package com.qmth.teachcloud.data.service.impl;
 package com.qmth.teachcloud.data.service.impl;
 
 
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSON;
-import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
 import com.qmth.distributed.print.business.bean.params.SysAdminSetParam;
 import com.qmth.distributed.print.business.bean.params.SysAdminSetParam;
 import com.qmth.distributed.print.business.service.BasicExamStudentService;
 import com.qmth.distributed.print.business.service.BasicExamStudentService;
 import com.qmth.distributed.print.business.service.BasicMessageService;
 import com.qmth.distributed.print.business.service.BasicMessageService;
@@ -121,7 +120,7 @@ public class DataServiceImpl implements DataService {
         // 考生同步
         // 考生同步
         if (dataRange.contains(DataType.D.name())) {
         if (dataRange.contains(DataType.D.name())) {
             log.info("开始同步考生");
             log.info("开始同步考生");
-            SyncDataResult syncDataResult = syncStudent(jdbcTemplate, schoolId, examId, datasourceType.getConfigValue().toString());
+            SyncDataResult syncDataResult = syncStudent(jdbcTemplate, schoolId, examId, datasourceType.getConfigValue().toString(), syncData.getXn(), syncData.getXq());
             stringJoiner.add(DataType.D.name() + ":" + syncDataResult.getCount());
             stringJoiner.add(DataType.D.name() + ":" + syncDataResult.getCount());
             sendSms = StringUtils.isNotBlank(syncDataResult.getErrMsg()) ? true : sendSms;
             sendSms = StringUtils.isNotBlank(syncDataResult.getErrMsg()) ? true : sendSms;
             log.info("结束同步考生,状态" + sendSms);
             log.info("结束同步考生,状态" + sendSms);
@@ -213,10 +212,10 @@ public class DataServiceImpl implements DataService {
 
 
     @Transactional
     @Transactional
     @Override
     @Override
-    public SyncDataResult syncStudent(JdbcTemplate jdbcTemplate, Long schoolId, Long examId, String datasourceType) {
+    public SyncDataResult syncStudent(JdbcTemplate jdbcTemplate, Long schoolId, Long examId, String datasourceType, String xn, String xq) {
         long startTime = System.currentTimeMillis();
         long startTime = System.currentTimeMillis();
         log.info("考生同步:查询待同步考生开始");
         log.info("考生同步:查询待同步考生开始");
-        List<TSyncDataStudent> dataVoList = dataUtil.listExamStudent(jdbcTemplate, DataType.D, datasourceType);
+        List<TSyncDataStudent> dataVoList = dataUtil.listExamStudent(jdbcTemplate, DataType.D, datasourceType, xn, xq);
         log.info("考生同步:查询待同步考生结束。数量:{}", dataVoList.size());
         log.info("考生同步:查询待同步考生结束。数量:{}", dataVoList.size());
         Map<String, Object> map = new HashMap<>();
         Map<String, Object> map = new HashMap<>();
         int successCount;
         int successCount;

+ 2 - 0
teachcloud-data/src/main/java/com/qmth/teachcloud/data/service/impl/TSyncDataServiceImpl.java

@@ -53,6 +53,8 @@ public class TSyncDataServiceImpl extends MppServiceImpl<TSyncDataMapper, TSyncD
             if (syncData.getStatus()) {
             if (syncData.getStatus()) {
                 throw ExceptionResultEnum.ERROR.exception("数据同步中,不能修改");
                 throw ExceptionResultEnum.ERROR.exception("数据同步中,不能修改");
             }
             }
+            syncData.setXn(tSyncData.getXn());
+            syncData.setXq(tSyncData.getXq());
             syncData.setDataType(tSyncData.getDataType());
             syncData.setDataType(tSyncData.getDataType());
             syncData.setStartTime(tSyncData.getStartTime());
             syncData.setStartTime(tSyncData.getStartTime());
             syncData.setEndTime(tSyncData.getEndTime());
             syncData.setEndTime(tSyncData.getEndTime());