|
@@ -20,6 +20,7 @@ import com.qmth.teachcloud.common.service.SysOrgService;
|
|
|
import com.qmth.teachcloud.common.service.SysUserService;
|
|
|
import com.qmth.teachcloud.common.util.ConvertUtil;
|
|
|
import com.qmth.teachcloud.data.DataUtil;
|
|
|
+import com.qmth.teachcloud.data.dto.SyncDataResult;
|
|
|
import com.qmth.teachcloud.data.entity.TSyncData;
|
|
|
import com.qmth.teachcloud.common.bean.sync.TSyncDataStudent;
|
|
|
import com.qmth.teachcloud.data.enums.DataType;
|
|
@@ -36,6 +37,7 @@ import java.util.HashMap;
|
|
|
import java.util.List;
|
|
|
import java.util.Map;
|
|
|
import java.util.StringJoiner;
|
|
|
+import java.util.concurrent.atomic.AtomicInteger;
|
|
|
|
|
|
@Service
|
|
|
public class DataServiceImpl implements DataService {
|
|
@@ -91,33 +93,33 @@ public class DataServiceImpl implements DataService {
|
|
|
StringJoiner stringJoiner = new StringJoiner(";");
|
|
|
// 机构同步
|
|
|
if (dataRange.contains(DataType.A.name())) {
|
|
|
- int count = syncOrg(jdbcTemplate, schoolId, examId, datasourceType.getConfigValue().toString());
|
|
|
- stringJoiner.add(DataType.A.name() + ":" + count);
|
|
|
- sendSms = count == 0 ? true : sendSms;
|
|
|
+ SyncDataResult syncDataResult = syncOrg(jdbcTemplate, schoolId, examId, datasourceType.getConfigValue().toString());
|
|
|
+ stringJoiner.add(DataType.A.name() + ":" + syncDataResult.getCount());
|
|
|
+ sendSms = StringUtils.isNotBlank(syncDataResult.getErrMsg()) ? true : sendSms;
|
|
|
}
|
|
|
// 用户同步
|
|
|
if (dataRange.contains(DataType.B.name())) {
|
|
|
- int count = syncUser(jdbcTemplate, schoolId, examId, datasourceType.getConfigValue().toString());
|
|
|
- stringJoiner.add(DataType.B.name() + ":" + count);
|
|
|
- sendSms = count == 0 ? true : sendSms;
|
|
|
+ SyncDataResult syncDataResult = syncUser(jdbcTemplate, schoolId, examId, datasourceType.getConfigValue().toString());
|
|
|
+ stringJoiner.add(DataType.B.name() + ":" + syncDataResult.getCount());
|
|
|
+ sendSms = StringUtils.isNotBlank(syncDataResult.getErrMsg()) ? true : sendSms;
|
|
|
}
|
|
|
// 课程同步
|
|
|
if (dataRange.contains(DataType.C.name())) {
|
|
|
- int count = syncCourse(jdbcTemplate, schoolId, examId, datasourceType.getConfigValue().toString());
|
|
|
- stringJoiner.add(DataType.C.name() + ":" + count);
|
|
|
- sendSms = count == 0 ? true : sendSms;
|
|
|
+ SyncDataResult syncDataResult = syncCourse(jdbcTemplate, schoolId, examId, datasourceType.getConfigValue().toString());
|
|
|
+ stringJoiner.add(DataType.C.name() + ":" + syncDataResult.getCount());
|
|
|
+ sendSms = StringUtils.isNotBlank(syncDataResult.getErrMsg()) ? true : sendSms;
|
|
|
}
|
|
|
// 考生同步
|
|
|
if (dataRange.contains(DataType.D.name())) {
|
|
|
- int count = syncStudent(jdbcTemplate, schoolId, examId, datasourceType.getConfigValue().toString());
|
|
|
- stringJoiner.add(DataType.D.name() + ":" + count);
|
|
|
- sendSms = count == 0 ? true : sendSms;
|
|
|
+ SyncDataResult syncDataResult = syncStudent(jdbcTemplate, schoolId, examId, datasourceType.getConfigValue().toString());
|
|
|
+ stringJoiner.add(DataType.D.name() + ":" + syncDataResult.getCount());
|
|
|
+ sendSms = StringUtils.isNotBlank(syncDataResult.getErrMsg()) ? true : sendSms;
|
|
|
}
|
|
|
// 命题任务同步
|
|
|
if (dataRange.contains(DataType.E.name())) {
|
|
|
- int count = syncExamTask(jdbcTemplate, schoolId, examId, datasourceType.getConfigValue().toString());
|
|
|
- stringJoiner.add(DataType.E.name() + ":" + count);
|
|
|
- sendSms = count == 0 ? true : sendSms;
|
|
|
+ SyncDataResult syncDataResult = syncExamTask(jdbcTemplate, schoolId, examId, datasourceType.getConfigValue().toString());
|
|
|
+ stringJoiner.add(DataType.E.name() + ":" + syncDataResult.getCount());
|
|
|
+ sendSms = StringUtils.isNotBlank(syncDataResult.getErrMsg()) ? true : sendSms;
|
|
|
}
|
|
|
|
|
|
syncData.setDetail(stringJoiner.toString());
|
|
@@ -128,73 +130,71 @@ public class DataServiceImpl implements DataService {
|
|
|
Map<String, String> variableParams = new HashMap<>();
|
|
|
variableParams.put("schoolName", basicSchool.getName());
|
|
|
for (String phoneNumber : syncData.getPhoneNumber().split(",")) {
|
|
|
- basicMessageService.saveMessageSendLog(schoolId, null, null, phoneNumber, JSON.toJSONString(variableParams), MessageEnum.NOTICE_SYNC_DATA);
|
|
|
+// basicMessageService.saveMessageSendLog(schoolId, null, null, phoneNumber, JSON.toJSONString(variableParams), MessageEnum.NOTICE_SYNC_DATA);
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- private int syncOrg(JdbcTemplate jdbcTemplate, Long schoolId, Long examId, String datasourceType) {
|
|
|
+ private SyncDataResult syncOrg(JdbcTemplate jdbcTemplate, Long schoolId, Long examId, String datasourceType) {
|
|
|
long startTime = System.currentTimeMillis();
|
|
|
List<OrgDataVo> dataVoList = dataUtil.listOrg(jdbcTemplate, DataType.A, datasourceType);
|
|
|
- int count = dataVoList.size();
|
|
|
- String errorMsg = null;
|
|
|
- try {
|
|
|
- for (OrgDataVo orgDataVo : dataVoList) {
|
|
|
+ StringJoiner errorMsg = new StringJoiner("<br>");
|
|
|
+ AtomicInteger i = new AtomicInteger(0);
|
|
|
+ for (OrgDataVo orgDataVo : dataVoList) {
|
|
|
+ try {
|
|
|
sysOrgService.saveOrgFromSync(schoolId, orgDataVo);
|
|
|
+ i.getAndIncrement();
|
|
|
+ } catch (Exception e) {
|
|
|
+ errorMsg.add(e.getMessage());
|
|
|
}
|
|
|
- } catch (Exception e) {
|
|
|
- count = 0;
|
|
|
- errorMsg = e.getMessage();
|
|
|
- } finally {
|
|
|
- long endTime = System.currentTimeMillis();
|
|
|
- tSyncDataLogService.saveLog(schoolId, examId, DataType.A.name(), startTime, endTime, count, errorMsg);
|
|
|
}
|
|
|
- return count;
|
|
|
+ long endTime = System.currentTimeMillis();
|
|
|
+ tSyncDataLogService.saveLog(schoolId, examId, DataType.A.name(), startTime, endTime, dataVoList.size(), i.get(), errorMsg.toString());
|
|
|
+ return new SyncDataResult(i.get(), errorMsg.toString());
|
|
|
}
|
|
|
|
|
|
- private int syncUser(JdbcTemplate jdbcTemplate, Long schoolId, Long examId, String datasourceType) {
|
|
|
+ private SyncDataResult syncUser(JdbcTemplate jdbcTemplate, Long schoolId, Long examId, String datasourceType) {
|
|
|
long startTime = System.currentTimeMillis();
|
|
|
List<UserDataVo> dataVoList = dataUtil.listUser(jdbcTemplate, DataType.B, datasourceType);
|
|
|
- int count = dataVoList.size();
|
|
|
- String errorMsg = null;
|
|
|
- try {
|
|
|
- for (UserDataVo userDataVo : dataVoList) {
|
|
|
+ StringJoiner errorMsg = new StringJoiner("<br>");
|
|
|
+ AtomicInteger i = new AtomicInteger(0);
|
|
|
+ for (UserDataVo userDataVo : dataVoList) {
|
|
|
+ try {
|
|
|
sysUserService.saveUserFromSync(schoolId, userDataVo);
|
|
|
+ i.getAndIncrement();
|
|
|
+ } catch (Exception e) {
|
|
|
+ errorMsg.add(e.getMessage());
|
|
|
}
|
|
|
- } catch (Exception e) {
|
|
|
- count = 0;
|
|
|
- errorMsg = e.getMessage();
|
|
|
- } finally {
|
|
|
- long endTime = System.currentTimeMillis();
|
|
|
- tSyncDataLogService.saveLog(schoolId, examId, DataType.B.name(), startTime, endTime, count, errorMsg);
|
|
|
}
|
|
|
- return count;
|
|
|
+ long endTime = System.currentTimeMillis();
|
|
|
+ tSyncDataLogService.saveLog(schoolId, examId, DataType.B.name(), startTime, endTime, dataVoList.size(), i.get(), errorMsg.toString());
|
|
|
+ return new SyncDataResult(i.get(), errorMsg.toString());
|
|
|
}
|
|
|
|
|
|
- private int syncCourse(JdbcTemplate jdbcTemplate, Long schoolId, Long examId, String datasourceType) {
|
|
|
+ private SyncDataResult syncCourse(JdbcTemplate jdbcTemplate, Long schoolId, Long examId, String datasourceType) {
|
|
|
long startTime = System.currentTimeMillis();
|
|
|
List<CourseDataVo> dataVoList = dataUtil.listCourse(jdbcTemplate, DataType.C, datasourceType);
|
|
|
- int count = dataVoList.size();
|
|
|
- String errorMsg = null;
|
|
|
- try {
|
|
|
- for (CourseDataVo courseDataVo : dataVoList) {
|
|
|
+ StringJoiner errorMsg = new StringJoiner("<br>");
|
|
|
+ AtomicInteger i = new AtomicInteger(0);
|
|
|
+ for (CourseDataVo courseDataVo : dataVoList) {
|
|
|
+ try {
|
|
|
basicCourseService.saveBasicCourseFormSync(schoolId, courseDataVo);
|
|
|
+ i.getAndIncrement();
|
|
|
+ } catch (Exception e) {
|
|
|
+ errorMsg.add(e.getMessage());
|
|
|
}
|
|
|
- } catch (Exception e) {
|
|
|
- count = 0;
|
|
|
- errorMsg = e.getMessage();
|
|
|
- } finally {
|
|
|
- long endTime = System.currentTimeMillis();
|
|
|
- tSyncDataLogService.saveLog(schoolId, examId, DataType.C.name(), startTime, endTime, count, errorMsg);
|
|
|
}
|
|
|
- return count;
|
|
|
+ long endTime = System.currentTimeMillis();
|
|
|
+ tSyncDataLogService.saveLog(schoolId, examId, DataType.C.name(), startTime, endTime, dataVoList.size(), i.get(), errorMsg.toString());
|
|
|
+ return new SyncDataResult(i.get(), errorMsg.toString());
|
|
|
}
|
|
|
|
|
|
- private int syncStudent(JdbcTemplate jdbcTemplate, Long schoolId, Long examId, String datasourceType) {
|
|
|
+ private SyncDataResult syncStudent(JdbcTemplate jdbcTemplate, Long schoolId, Long examId, String datasourceType) {
|
|
|
long startTime = System.currentTimeMillis();
|
|
|
List<TSyncDataStudent> dataVoList = dataUtil.listExamStudent(jdbcTemplate, DataType.D, datasourceType);
|
|
|
- int count = dataVoList.size();
|
|
|
- String errorMsg = null;
|
|
|
+ Map<String, Object> map = new HashMap<>();
|
|
|
+ int successCount = 0;
|
|
|
+ String errMsg = null;
|
|
|
try {
|
|
|
for (TSyncDataStudent tSyncDataStudent : dataVoList) {
|
|
|
tSyncDataStudent.setId(SystemConstant.getDbUuid());
|
|
@@ -212,34 +212,34 @@ public class DataServiceImpl implements DataService {
|
|
|
}
|
|
|
}
|
|
|
tSyncDataStudentService.remove(new UpdateWrapper<TSyncDataStudent>().lambda().eq(TSyncDataStudent::getSchoolId, schoolId).eq(TSyncDataStudent::getExamId, examId));
|
|
|
- tSyncDataStudentService.saveBatch(dataVoList, 2000);
|
|
|
- basicExamStudentService.saveBasicExamStudentFormSync(schoolId, examId, dataVoList);
|
|
|
+ tSyncDataStudentService.saveBatch(dataVoList);
|
|
|
+ map = basicExamStudentService.saveBasicExamStudentFormSync(schoolId, examId, dataVoList);
|
|
|
} catch (Exception e) {
|
|
|
- count = 0;
|
|
|
- errorMsg = e.getMessage();
|
|
|
+ errMsg = e.getMessage();
|
|
|
} finally {
|
|
|
+ successCount = map.containsKey("count") ? Integer.parseInt(map.get("count").toString()) : 0;
|
|
|
+ errMsg = errMsg == null && map.containsKey("errMsg") ? map.get("errMsg").toString() : null;
|
|
|
long endTime = System.currentTimeMillis();
|
|
|
- tSyncDataLogService.saveLog(schoolId, examId, DataType.D.name(), startTime, endTime, count, errorMsg);
|
|
|
+ tSyncDataLogService.saveLog(schoolId, examId, DataType.D.name(), startTime, endTime, dataVoList.size(), successCount, errMsg);
|
|
|
}
|
|
|
- return count;
|
|
|
+ return new SyncDataResult(successCount, errMsg);
|
|
|
}
|
|
|
|
|
|
- private int syncExamTask(JdbcTemplate jdbcTemplate, Long schoolId, Long examId, String datasourceType) {
|
|
|
+ private SyncDataResult syncExamTask(JdbcTemplate jdbcTemplate, Long schoolId, Long examId, String datasourceType) {
|
|
|
long startTime = System.currentTimeMillis();
|
|
|
List<ExamTaskDataVo> dataVoList = dataUtil.listExamTask(jdbcTemplate, DataType.E, datasourceType);
|
|
|
- int count = dataVoList.size();
|
|
|
- String errorMsg = null;
|
|
|
- try {
|
|
|
- for (ExamTaskDataVo examTaskDataVo : dataVoList) {
|
|
|
+ StringJoiner errorMsg = new StringJoiner("<br>");
|
|
|
+ AtomicInteger i = new AtomicInteger(0);
|
|
|
+ for (ExamTaskDataVo examTaskDataVo : dataVoList) {
|
|
|
+ try {
|
|
|
examTaskService.saveExamTaskFormSync(schoolId, examId, examTaskDataVo);
|
|
|
+ i.getAndIncrement();
|
|
|
+ } catch (Exception e) {
|
|
|
+ errorMsg.add(e.getMessage());
|
|
|
}
|
|
|
- } catch (Exception e) {
|
|
|
- count = 0;
|
|
|
- errorMsg = e.getMessage();
|
|
|
- } finally {
|
|
|
- long endTime = System.currentTimeMillis();
|
|
|
- tSyncDataLogService.saveLog(schoolId, examId, DataType.E.name(), startTime, endTime, count, errorMsg);
|
|
|
}
|
|
|
- return count;
|
|
|
+ long endTime = System.currentTimeMillis();
|
|
|
+ tSyncDataLogService.saveLog(schoolId, examId, DataType.E.name(), startTime, endTime, dataVoList.size(), i.get(), errorMsg.toString());
|
|
|
+ return new SyncDataResult(i.get(), errorMsg.toString());
|
|
|
}
|
|
|
}
|