|
@@ -87,7 +87,7 @@ public class DataSyncServiceImpl implements DataSyncService {
|
|
|
List<ExamPrintPlan> examPrintPlans = examPrintPlanService.list(queryWrapper);
|
|
|
if (!CollectionUtils.isEmpty(examPrintPlans)) {
|
|
|
for (ExamPrintPlan examPrintPlan : examPrintPlans) {
|
|
|
- executors.execute(syncData(examPrintPlan, null));
|
|
|
+ executors.execute(syncData(examPrintPlan, null, examPrintPlan.getName()));
|
|
|
}
|
|
|
}
|
|
|
}
|
|
@@ -104,43 +104,52 @@ public class DataSyncServiceImpl implements DataSyncService {
|
|
|
if (examPrintPlan == null) {
|
|
|
throw ExceptionResultEnum.ERROR.exception("印刷计划数据异常");
|
|
|
}
|
|
|
- if (!PrintPlanStatusEnum.END.equals(examPrintPlan.getStatus())) {
|
|
|
- throw ExceptionResultEnum.ERROR.exception("印刷计划未结束,不能同步数据");
|
|
|
+ if (!PrintPlanStatusEnum.END.equals(examPrintPlan.getStatus()) && !PrintPlanStatusEnum.PRINT_FINISH.equals(examPrintPlan.getStatus())) {
|
|
|
+ throw ExceptionResultEnum.ERROR.exception("印刷计划未打印完成或者未结束,不能同步数据");
|
|
|
}
|
|
|
Long relateId = Objects.isNull(thirdRelateId) ? examPrintPlan.getThirdRelateId() : thirdRelateId;
|
|
|
- executors.execute(syncData(examPrintPlan, relateId));
|
|
|
+ String thirdRelateName = Objects.isNull(examPrintPlan.getThirdRelateId()) ? examPrintPlan.getName() : examPrintPlan.getThirdRelateName();
|
|
|
+ executors.execute(syncData(examPrintPlan, relateId, thirdRelateName));
|
|
|
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
public void syncDataMerge(SyncDataParam syncDataParam) {
|
|
|
- List<ExamPrintPlan> printPlans = syncDataParam.getList();
|
|
|
- if(CollectionUtils.isEmpty(printPlans)){
|
|
|
- return;
|
|
|
+ List<Long> printPlans = syncDataParam.getList();
|
|
|
+ if (CollectionUtils.isEmpty(printPlans)) {
|
|
|
+ throw ExceptionResultEnum.ERROR.exception("请选择需要合并的印刷任务");
|
|
|
+ }
|
|
|
+
|
|
|
+ if(Objects.isNull(syncDataParam.getThirdRelateId()) || Objects.isNull(syncDataParam.getThirdRelateName())){
|
|
|
+ throw ExceptionResultEnum.ERROR.exception("考试ID、考试名称至少填一个");
|
|
|
}
|
|
|
|
|
|
// todo 校验印刷计划是否完成
|
|
|
- if(syncDataParam.getThirdRelateId() == null){
|
|
|
+ if (syncDataParam.getThirdRelateId() == null) {
|
|
|
Long schoolId = Long.valueOf(ServletUtil.getRequestHeaderSchoolId().toString());
|
|
|
String time = String.valueOf(System.currentTimeMillis());
|
|
|
- ExamPrintPlan examPrintPlan = printPlans.stream().max(Comparator.comparingLong(ExamPrintPlan::getExamEndTime)).get();
|
|
|
+ QueryWrapper<ExamPrintPlan> printPlanQueryWrapper = new QueryWrapper<>();
|
|
|
+ printPlanQueryWrapper.lambda().in(ExamPrintPlan::getId, syncDataParam.getList());
|
|
|
+ List<ExamPrintPlan> examPrintPlans = examPrintPlanService.list(printPlanQueryWrapper);
|
|
|
+ ExamPrintPlan examPrintPlan = examPrintPlans.stream().max(Comparator.comparingLong(ExamPrintPlan::getExamEndTime)).get();
|
|
|
String examTime = DateUtil.format(new Date(examPrintPlan.getExamEndTime()), DATE_FORMAT);
|
|
|
syncDataParam.setThirdRelateId(getExamId(schoolId, time, syncDataParam.getThirdRelateName(), examTime));
|
|
|
}
|
|
|
|
|
|
- for (ExamPrintPlan printPlan : printPlans) {
|
|
|
- executors.execute(syncData(printPlan, syncDataParam.getThirdRelateId()));
|
|
|
+ for (Long printPlanId : printPlans) {
|
|
|
+ ExamPrintPlan printPlan = examPrintPlanService.getById(printPlanId);
|
|
|
+ executors.execute(syncData(printPlan, syncDataParam.getThirdRelateId(), syncDataParam.getThirdRelateName()));
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- private TimerTask syncData(ExamPrintPlan examPrintPlan, Long thirdRelateId) {
|
|
|
+ private TimerTask syncData(ExamPrintPlan examPrintPlan, Long thirdRelateId, String thirdRelateName) {
|
|
|
return new TimerTask() {
|
|
|
@Override
|
|
|
public void run() {
|
|
|
SysConfig sysConfig = sysConfigService.getByKey("sys.sync.enable");
|
|
|
if (sysConfig != null && "true".equals(sysConfig.getConfigValue())) {
|
|
|
TBSyncTask syncTask = tbSyncTaskService.saveTask(examPrintPlan);
|
|
|
- doSyncCore(examPrintPlan, thirdRelateId, syncTask);
|
|
|
+ doSyncCore(examPrintPlan, thirdRelateId, thirdRelateName, syncTask);
|
|
|
}
|
|
|
}
|
|
|
};
|
|
@@ -149,14 +158,15 @@ public class DataSyncServiceImpl implements DataSyncService {
|
|
|
/**
|
|
|
* 同步核心方法
|
|
|
*
|
|
|
+ * @param thirdRelateName
|
|
|
* @param syncTask
|
|
|
*/
|
|
|
@Transactional
|
|
|
- public void doSyncCore(ExamPrintPlan examPrintPlan, Long thirdRelateId, TBSyncTask syncTask) {
|
|
|
+ public void doSyncCore(ExamPrintPlan examPrintPlan, Long thirdRelateId, String thirdRelateName, TBSyncTask syncTask) {
|
|
|
UpdateWrapper<ExamPrintPlan> updateWrapper = new UpdateWrapper<>();
|
|
|
try {
|
|
|
- if (!PrintPlanStatusEnum.END.equals(examPrintPlan.getStatus())) {
|
|
|
- throw ExceptionResultEnum.ERROR.exception("印刷计划未结束,不能同步数据");
|
|
|
+ if (!PrintPlanStatusEnum.END.equals(examPrintPlan.getStatus()) && !PrintPlanStatusEnum.PRINT_FINISH.equals(examPrintPlan.getStatus())) {
|
|
|
+ throw ExceptionResultEnum.ERROR.exception("印刷计划未打印完成或者未结束,不能同步数据");
|
|
|
}
|
|
|
// 校验同步url
|
|
|
validatUrl();
|
|
@@ -165,7 +175,7 @@ public class DataSyncServiceImpl implements DataSyncService {
|
|
|
tbSyncTaskService.update(tbSyncTaskUpdateWrapper);
|
|
|
|
|
|
// 同步计划 -> 对应云阅卷考试
|
|
|
- ExamPrintPlan printPlan = examSave(examPrintPlan, thirdRelateId);
|
|
|
+ ExamPrintPlan printPlan = examSave(examPrintPlan, thirdRelateId, thirdRelateName);
|
|
|
syncTask.setThirdRelateId(printPlan.getThirdRelateId());
|
|
|
// 考试同步成功,才能同步考生和题卡
|
|
|
if (Objects.nonNull(printPlan.getThirdRelateId())) {
|
|
@@ -211,19 +221,22 @@ public class DataSyncServiceImpl implements DataSyncService {
|
|
|
* 创建考试
|
|
|
*
|
|
|
* @param examPrintPlan
|
|
|
+ * @param thirdRelateName
|
|
|
* @return
|
|
|
*/
|
|
|
- public ExamPrintPlan examSave(ExamPrintPlan examPrintPlan, Long thirdRelateId) {
|
|
|
+ public ExamPrintPlan examSave(ExamPrintPlan examPrintPlan, Long thirdRelateId, String thirdRelateName) {
|
|
|
try {
|
|
|
if (Objects.isNull(thirdRelateId)) {
|
|
|
-
|
|
|
String code = String.valueOf(examPrintPlan.getId());
|
|
|
String name = examPrintPlan.getName();
|
|
|
String examTime = DateUtil.format(new Date(examPrintPlan.getExamEndTime()), DATE_FORMAT);
|
|
|
thirdRelateId = getExamId(examPrintPlan.getSchoolId(), code, name, examTime);
|
|
|
}
|
|
|
UpdateWrapper<ExamPrintPlan> updateWrapper = new UpdateWrapper<>();
|
|
|
- updateWrapper.lambda().set(ExamPrintPlan::getThirdRelateId, thirdRelateId).set(ExamPrintPlan::getSyncStatus, null).eq(ExamPrintPlan::getId, examPrintPlan.getId());
|
|
|
+ updateWrapper.lambda().set(ExamPrintPlan::getThirdRelateId, thirdRelateId)
|
|
|
+ .set(ExamPrintPlan::getThirdRelateName, thirdRelateName)
|
|
|
+ .set(ExamPrintPlan::getSyncStatus, null)
|
|
|
+ .eq(ExamPrintPlan::getId, examPrintPlan.getId());
|
|
|
examPrintPlanService.update(updateWrapper);
|
|
|
return examPrintPlanService.getById(examPrintPlan.getId());
|
|
|
} catch (Exception e) {
|