|
@@ -7,11 +7,10 @@ import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
|
|
|
import com.qmth.boot.api.exception.ApiException;
|
|
|
import com.qmth.distributed.print.business.bean.dto.SyncExamCardDto;
|
|
|
import com.qmth.distributed.print.business.bean.dto.SyncExamStudentDto;
|
|
|
-import com.qmth.distributed.print.business.bean.params.SyncDataParam;
|
|
|
import com.qmth.distributed.print.business.entity.*;
|
|
|
+import com.qmth.distributed.print.business.enums.ExamPaperStructureStatusEnum;
|
|
|
import com.qmth.distributed.print.business.enums.ExamPrintPlanSyncStatusEnum;
|
|
|
import com.qmth.distributed.print.business.enums.PrintPlanStatusEnum;
|
|
|
-import com.qmth.distributed.print.business.enums.ExamPaperStructureStatusEnum;
|
|
|
import com.qmth.distributed.print.business.service.*;
|
|
|
import com.qmth.teachcloud.common.bean.dto.stmms.GroupDetailDTO;
|
|
|
import com.qmth.teachcloud.common.bean.dto.stmms.PicConfig;
|
|
@@ -19,12 +18,13 @@ import com.qmth.teachcloud.common.bean.dto.stmms.QuestionBaseDTO;
|
|
|
import com.qmth.teachcloud.common.bean.dto.stmms.QuestionDTO;
|
|
|
import com.qmth.teachcloud.common.contant.SystemConstant;
|
|
|
import com.qmth.teachcloud.common.entity.BasicAttachment;
|
|
|
-import com.qmth.teachcloud.common.entity.SysConfig;
|
|
|
import com.qmth.teachcloud.common.entity.SysOrg;
|
|
|
import com.qmth.teachcloud.common.entity.SysUser;
|
|
|
-import com.qmth.teachcloud.common.enums.*;
|
|
|
+import com.qmth.teachcloud.common.enums.ExceptionResultEnum;
|
|
|
+import com.qmth.teachcloud.common.enums.SyncFileTypeEnum;
|
|
|
+import com.qmth.teachcloud.common.enums.TaskResultEnum;
|
|
|
+import com.qmth.teachcloud.common.enums.TaskStatusEnum;
|
|
|
import com.qmth.teachcloud.common.service.BasicAttachmentService;
|
|
|
-import com.qmth.teachcloud.common.service.SysConfigService;
|
|
|
import com.qmth.teachcloud.common.service.TeachcloudCommonService;
|
|
|
import com.qmth.teachcloud.common.sync.CloudMarkingTaskUtils;
|
|
|
import com.qmth.teachcloud.common.util.ServletUtil;
|
|
@@ -43,7 +43,7 @@ import java.util.concurrent.Executors;
|
|
|
import java.util.stream.Collectors;
|
|
|
|
|
|
/**
|
|
|
- * @Date: 2021/5/20.
|
|
|
+ * 同步服务类
|
|
|
*/
|
|
|
@Service
|
|
|
public class DataSyncServiceImpl implements DataSyncService {
|
|
@@ -68,8 +68,6 @@ public class DataSyncServiceImpl implements DataSyncService {
|
|
|
@Resource
|
|
|
private ExamPaperStructureService examPaperStructureService;
|
|
|
|
|
|
- @Resource
|
|
|
- private SysConfigService sysConfigService;
|
|
|
|
|
|
@Resource
|
|
|
private TeachcloudCommonService teachcloudCommonService;
|
|
@@ -88,8 +86,6 @@ public class DataSyncServiceImpl implements DataSyncService {
|
|
|
|
|
|
ExecutorService executorService = Executors.newFixedThreadPool(5);
|
|
|
|
|
|
- private static final String DATE_FORMAT = "yyyy-MM-dd HH:mm:ss";
|
|
|
-
|
|
|
/**
|
|
|
* 定时任务批量同步
|
|
|
*/
|
|
@@ -103,81 +99,62 @@ public class DataSyncServiceImpl implements DataSyncService {
|
|
|
List<ExamPrintPlan> examPrintPlans = examPrintPlanService.list(queryWrapper);
|
|
|
if (!CollectionUtils.isEmpty(examPrintPlans)) {
|
|
|
for (ExamPrintPlan examPrintPlan : examPrintPlans) {
|
|
|
- executorService.execute(syncBaseData(examPrintPlan, null, examPrintPlan.getName(), sysUser));
|
|
|
+// executorService.execute(syncBaseData(examPrintPlan, null, examPrintPlan.getName(), sysUser));
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- /**
|
|
|
- * 单个同步
|
|
|
- *
|
|
|
- * @param printPlanId
|
|
|
- * @param thirdRelateId
|
|
|
- */
|
|
|
- @Override
|
|
|
- public void syncDataCloud(Long printPlanId, Long thirdRelateId) {
|
|
|
- SysUser sysUser = (SysUser) ServletUtil.getRequestUser();
|
|
|
- ExamPrintPlan examPrintPlan = examPrintPlanService.getById(printPlanId);
|
|
|
- if (examPrintPlan == null) {
|
|
|
- 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;
|
|
|
- String thirdRelateName = Objects.isNull(examPrintPlan.getThirdRelateId()) ? examPrintPlan.getName() : examPrintPlan.getThirdRelateName();
|
|
|
- executorService.execute(syncBaseData(examPrintPlan, relateId, thirdRelateName, sysUser));
|
|
|
-
|
|
|
- }
|
|
|
-
|
|
|
+ @Async
|
|
|
@Override
|
|
|
- public void syncDataMerge(SyncDataParam syncDataParam) {
|
|
|
- SysUser sysUser = (SysUser) ServletUtil.getRequestUser();
|
|
|
- List<Long> printPlans = syncDataParam.getList();
|
|
|
- if (CollectionUtils.isEmpty(printPlans)) {
|
|
|
- throw ExceptionResultEnum.ERROR.exception("请选择需要合并的印刷任务");
|
|
|
- }
|
|
|
+ public void syncExamAndStudentAndCard(Long thirdRelateId, String thirdRelateName, Long examEndTime, TBSyncTask tbSyncTask, SysUser sysUser) {
|
|
|
+ UpdateWrapper<ExamPrintPlan> updateWrapper = new UpdateWrapper<>();
|
|
|
+ ExamPrintPlanSyncStatusEnum syncStatus = ExamPrintPlanSyncStatusEnum.INIT;
|
|
|
|
|
|
- if (Objects.isNull(syncDataParam.getThirdRelateId()) && Objects.isNull(syncDataParam.getThirdRelateName())) {
|
|
|
- throw ExceptionResultEnum.ERROR.exception("考试ID、考试名称至少填一个");
|
|
|
- }
|
|
|
+ // 同步初始参数
|
|
|
+ TaskResultEnum result = null;
|
|
|
+ TaskStatusEnum status;
|
|
|
+ String errorMessage = null;
|
|
|
+ Long schoolId = tbSyncTask.getSchoolId();
|
|
|
+ Long printPlanId = tbSyncTask.getObjectId();
|
|
|
+ try {
|
|
|
+ // 同步中
|
|
|
+ status = TaskStatusEnum.RUNNING;
|
|
|
+ tbSyncTaskService.updateStatusAndResultById(tbSyncTask.getId(), null, status, null, null);
|
|
|
|
|
|
- // todo 校验印刷计划是否完成
|
|
|
- if (syncDataParam.getThirdRelateId() == null) {
|
|
|
- String time = String.valueOf(System.currentTimeMillis());
|
|
|
- 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(cloudMarkingTaskUtils.syncExam(examPrintPlan.getSchoolId(), time, syncDataParam.getThirdRelateName(), examTime));
|
|
|
- }
|
|
|
+ // 同步计划 -> 同步到云阅卷考试
|
|
|
+ thirdRelateId = saveExam(schoolId, printPlanId, thirdRelateId, thirdRelateName, examEndTime);
|
|
|
+ syncStatus = ExamPrintPlanSyncStatusEnum.EXAM_FINISH;
|
|
|
+ tbSyncTask.setThirdRelateId(thirdRelateId);
|
|
|
+ // 考试同步成功,才能同步考生和题卡
|
|
|
+ if (Objects.nonNull(thirdRelateId)) {
|
|
|
+ updateWrapper.lambda().set(ExamPrintPlan::getThirdRelateId, thirdRelateId).set(ExamPrintPlan::getThirdRelateName, thirdRelateName);
|
|
|
+ // 同步考生
|
|
|
+ saveStudent(schoolId, printPlanId, thirdRelateId);
|
|
|
+ syncStatus = ExamPrintPlanSyncStatusEnum.STUDENT_FINISH;
|
|
|
+ // 同步题卡
|
|
|
+ cardUpload(schoolId, printPlanId, thirdRelateId);
|
|
|
+ syncStatus = ExamPrintPlanSyncStatusEnum.FINISH;
|
|
|
+ } else {
|
|
|
+ throw ExceptionResultEnum.ERROR.exception("无法获取云阅卷考试ID,同步数据失败");
|
|
|
+ }
|
|
|
+ // 任务结果
|
|
|
+ result = TaskResultEnum.SUCCESS;
|
|
|
+ } catch (Exception e) {
|
|
|
+ result = TaskResultEnum.ERROR;
|
|
|
+ errorMessage = e.getMessage();
|
|
|
+ } finally {
|
|
|
+ // 同步结束
|
|
|
+ status = TaskStatusEnum.FINISH;
|
|
|
|
|
|
- for (Long printPlanId : printPlans) {
|
|
|
- ExamPrintPlan printPlan = examPrintPlanService.getById(printPlanId);
|
|
|
- executorService.execute(syncBaseData(printPlan, syncDataParam.getThirdRelateId(), syncDataParam.getThirdRelateName(), sysUser));
|
|
|
- }
|
|
|
- }
|
|
|
+ tbSyncTaskService.updateStatusAndResultById(tbSyncTask.getId(), thirdRelateId, status, result, errorMessage);
|
|
|
|
|
|
- /**
|
|
|
- * 同步基础信息
|
|
|
- *
|
|
|
- * @param examPrintPlan
|
|
|
- * @param thirdRelateId
|
|
|
- * @param thirdRelateName
|
|
|
- * @return
|
|
|
- */
|
|
|
- private TimerTask syncBaseData(ExamPrintPlan examPrintPlan, Long thirdRelateId, String thirdRelateName, SysUser sysUser) {
|
|
|
- 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.getSchoolId(), examPrintPlan.getId(), PushTypeEnum.EXAM_PUSH);
|
|
|
- doSyncBaseData(examPrintPlan, thirdRelateId, thirdRelateName, syncTask, sysUser);
|
|
|
- }
|
|
|
+ updateWrapper.lambda().set(ExamPrintPlan::getSyncStatus, syncStatus).eq(ExamPrintPlan::getId, printPlanId);
|
|
|
+ examPrintPlanService.update(updateWrapper);
|
|
|
+ // 同步成功,发送短信
|
|
|
+ if (ExamPrintPlanSyncStatusEnum.FINISH.equals(syncStatus)) {
|
|
|
+ examPrintPlanService.sendNoticeUploadStructure(printPlanId, sysUser);
|
|
|
}
|
|
|
- };
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
@Async
|
|
@@ -201,7 +178,7 @@ public class DataSyncServiceImpl implements DataSyncService {
|
|
|
String subjectCode = examPaperStructure.getCourseCode().concat(examPaperStructure.getPaperType()).concat(examPaperStructure.getSequence());
|
|
|
|
|
|
// 同步中
|
|
|
- tbSyncTaskService.updateStatusAndResultById(tbSyncTask.getId(), TaskStatusEnum.RUNNING, null, null);
|
|
|
+ tbSyncTaskService.updateStatusAndResultById(tbSyncTask.getId(), examPaperStructure.getThirdRelateId(), TaskStatusEnum.RUNNING, null, null);
|
|
|
|
|
|
// 同步主观题
|
|
|
String subjectiveStructure = examPaperStructure.getSubjectiveStructure();
|
|
@@ -235,13 +212,13 @@ public class DataSyncServiceImpl implements DataSyncService {
|
|
|
String picListString = examPaperGroup.getPictureConfig();
|
|
|
if (StringUtils.isNotBlank(picListString)) {
|
|
|
List<PicConfig> picConfigs = JSONObject.parseArray(picListString, PicConfig.class);
|
|
|
- groupDetailDTO.setPicList(picConfigs);
|
|
|
+ groupDetailDTO.setPicConfig(picConfigs);
|
|
|
}
|
|
|
groupDetailDTO.setDoubleRate(examPaperGroup.getDoubleRate());
|
|
|
groupDetailDTO.setArbitrateThreshold(examPaperGroup.getArbitrateThreshold());
|
|
|
groupDetailDTO.setScorePolicy(examPaperGroup.getScorePolicy().getValue());
|
|
|
// groupDetailDTO.setEnableAllZero();
|
|
|
- groupDetailDTO.setMarkMode("");
|
|
|
+// groupDetailDTO.setMarkMode(null);
|
|
|
String questionsString = examPaperGroup.getQuestionInfo();
|
|
|
if (StringUtils.isNotBlank(questionsString)) {
|
|
|
List<JSONObject> jsonObjects = JSONObject.parseArray(questionsString, JSONObject.class);
|
|
@@ -275,7 +252,7 @@ public class DataSyncServiceImpl implements DataSyncService {
|
|
|
examPaperStructure.setStatus(structureStatus);
|
|
|
examPaperStructureService.updateById(examPaperStructure);
|
|
|
|
|
|
- tbSyncTaskService.updateStatusAndResultById(tbSyncTask.getId(), TaskStatusEnum.FINISH, result, errorMessage);
|
|
|
+ tbSyncTaskService.updateStatusAndResultById(tbSyncTask.getId(), examPaperStructure.getThirdRelateId(), TaskStatusEnum.FINISH, result, errorMessage);
|
|
|
}
|
|
|
}
|
|
|
|
|
@@ -293,14 +270,15 @@ public class DataSyncServiceImpl implements DataSyncService {
|
|
|
String subjectCode = examPaperStructure.getCourseCode().concat(examPaperStructure.getPaperType()).concat(examPaperStructure.getSequence());
|
|
|
|
|
|
// 同步中
|
|
|
- tbSyncTaskService.updateStatusAndResultById(tbSyncTask.getId(), TaskStatusEnum.RUNNING, null, null);
|
|
|
- // 同步试卷
|
|
|
+ tbSyncTaskService.updateStatusAndResultById(tbSyncTask.getId(), examPaperStructure.getThirdRelateId(), TaskStatusEnum.RUNNING, null, null);
|
|
|
+
|
|
|
String paperAnswer = examPaperStructure.getPaperAnswer();
|
|
|
if (StringUtils.isNotBlank(paperAnswer)) {
|
|
|
List<JSONObject> paperAnswerJsons = JSONObject.parseArray(paperAnswer, JSONObject.class);
|
|
|
for (JSONObject paperAnswerJson : paperAnswerJsons) {
|
|
|
if (paperAnswerJson.containsKey("paperType") && paperAnswerJson.containsKey("paper")) {
|
|
|
String paperType = paperAnswerJson.getString("paperType");
|
|
|
+ // 同步试卷
|
|
|
String paper = paperAnswerJson.getString("paper");
|
|
|
if (StringUtils.isAnyBlank(paperType, paper)) {
|
|
|
continue;
|
|
@@ -310,17 +288,8 @@ public class DataSyncServiceImpl implements DataSyncService {
|
|
|
String syncPaperFileUrl = cloudMarkingTaskUtils.syncFile(schoolId, examId, subjectCode, SyncFileTypeEnum.PAPER, paperFile);
|
|
|
// 试卷文件保存url
|
|
|
paperAnswerJson.put("paperUrl", syncPaperFileUrl);
|
|
|
- }
|
|
|
- }
|
|
|
- examPaperStructure.setPaperAnswer(JSONObject.toJSONString(paperAnswerJsons));
|
|
|
- }
|
|
|
|
|
|
- // 同步标答
|
|
|
- if (StringUtils.isNotBlank(paperAnswer)) {
|
|
|
- List<JSONObject> paperAnswerJsons = JSONObject.parseArray(paperAnswer, JSONObject.class);
|
|
|
- for (JSONObject paperAnswerJson : paperAnswerJsons) {
|
|
|
- if (paperAnswerJson.containsKey("paperType") && paperAnswerJson.containsKey("answer")) {
|
|
|
- String paperType = paperAnswerJson.getString("paperType");
|
|
|
+ // 同步标答
|
|
|
String answer = paperAnswerJson.getString("answer");
|
|
|
if (StringUtils.isAnyBlank(paperType, answer)) {
|
|
|
continue;
|
|
@@ -332,14 +301,20 @@ public class DataSyncServiceImpl implements DataSyncService {
|
|
|
paperAnswerJson.put("answerUrl", syncAnswerFileUrl);
|
|
|
}
|
|
|
}
|
|
|
- examPaperStructure.setPaperAnswer(JSONObject.toJSONString(paperAnswerJsons));
|
|
|
+ String paperAnswerUrl = JSONObject.toJSONString(paperAnswerJsons);
|
|
|
+
|
|
|
+ // 更新url
|
|
|
+ UpdateWrapper<ExamPaperStructure> updateWrapper = new UpdateWrapper<>();
|
|
|
+ updateWrapper.lambda().set(ExamPaperStructure::getPaperAnswer, paperAnswerUrl).eq(ExamPaperStructure::getId, examPaperStructure.getId());
|
|
|
+ examPaperStructureService.update(updateWrapper);
|
|
|
}
|
|
|
+
|
|
|
result = TaskResultEnum.SUCCESS;
|
|
|
} catch (ApiException e) {
|
|
|
result = TaskResultEnum.ERROR;
|
|
|
errorMessage = e.getMessage();
|
|
|
} finally {
|
|
|
- tbSyncTaskService.updateStatusAndResultById(tbSyncTask.getId(), TaskStatusEnum.FINISH, result, errorMessage);
|
|
|
+ tbSyncTaskService.updateStatusAndResultById(tbSyncTask.getId(), examPaperStructure.getThirdRelateId(), TaskStatusEnum.FINISH, result, errorMessage);
|
|
|
}
|
|
|
}
|
|
|
|
|
@@ -376,84 +351,25 @@ public class DataSyncServiceImpl implements DataSyncService {
|
|
|
result = TaskResultEnum.ERROR;
|
|
|
errorMessage = e.getMessage();
|
|
|
} finally {
|
|
|
- tbSyncTaskService.updateStatusAndResultById(tbSyncTask.getId(), TaskStatusEnum.FINISH, result, errorMessage);
|
|
|
+ tbSyncTaskService.updateStatusAndResultById(tbSyncTask.getId(), examPaperStructure.getThirdRelateId(), TaskStatusEnum.FINISH, result, errorMessage);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
- * 同步考试、考生、科目、题卡
|
|
|
+ * 创建考试
|
|
|
*
|
|
|
- * @param examPrintPlan 计划
|
|
|
+ * @param schoolId 学校ID
|
|
|
+ * @param printPlanId 计划ID
|
|
|
* @param thirdRelateId 云阅卷考试ID
|
|
|
* @param thirdRelateName 云阅卷考试名称
|
|
|
- * @param syncTask 同步任务对象
|
|
|
- * @param sysUser 登录用户
|
|
|
- */
|
|
|
- public void doSyncBaseData(ExamPrintPlan examPrintPlan, Long thirdRelateId, String thirdRelateName, TBSyncTask syncTask, SysUser sysUser) {
|
|
|
- UpdateWrapper<ExamPrintPlan> updateWrapper = new UpdateWrapper<>();
|
|
|
- ExamPrintPlanSyncStatusEnum syncStatus = ExamPrintPlanSyncStatusEnum.INIT;
|
|
|
-
|
|
|
- // 同步初始参数
|
|
|
- TaskResultEnum result = null;
|
|
|
- TaskStatusEnum status;
|
|
|
- String errorMessage = null;
|
|
|
- try {
|
|
|
- if (!PrintPlanStatusEnum.END.equals(examPrintPlan.getStatus()) && !PrintPlanStatusEnum.PRINT_FINISH.equals(examPrintPlan.getStatus())) {
|
|
|
- throw ExceptionResultEnum.ERROR.exception("印刷计划未打印完成或者未结束,不能同步数据");
|
|
|
- }
|
|
|
- // 同步中
|
|
|
- status = TaskStatusEnum.RUNNING;
|
|
|
- tbSyncTaskService.updateStatusAndResultById(syncTask.getId(), status, null, null);
|
|
|
-
|
|
|
- // 同步计划 -> 同步到云阅卷考试
|
|
|
- thirdRelateId = saveExam(examPrintPlan, thirdRelateId);
|
|
|
- syncStatus = ExamPrintPlanSyncStatusEnum.EXAM_FINISH;
|
|
|
- syncTask.setThirdRelateId(thirdRelateId);
|
|
|
- // 考试同步成功,才能同步考生和题卡
|
|
|
- if (Objects.nonNull(thirdRelateId)) {
|
|
|
- updateWrapper.lambda().set(ExamPrintPlan::getThirdRelateId, thirdRelateId).set(ExamPrintPlan::getThirdRelateName, thirdRelateName);
|
|
|
- // 同步考生
|
|
|
- saveStudent(examPrintPlan.getSchoolId(), examPrintPlan.getId(), thirdRelateId);
|
|
|
- syncStatus = ExamPrintPlanSyncStatusEnum.STUDENT_FINISH;
|
|
|
- // 同步题卡
|
|
|
- cardUpload(examPrintPlan.getSchoolId(), examPrintPlan.getId(), thirdRelateId);
|
|
|
- syncStatus = ExamPrintPlanSyncStatusEnum.FINISH;
|
|
|
- } else {
|
|
|
- throw ExceptionResultEnum.ERROR.exception("无法获取云阅卷考试ID,同步数据失败");
|
|
|
- }
|
|
|
- // 任务结果
|
|
|
- result = TaskResultEnum.SUCCESS;
|
|
|
- } catch (Exception e) {
|
|
|
- result = TaskResultEnum.ERROR;
|
|
|
- errorMessage = e.getMessage();
|
|
|
- } finally {
|
|
|
- // 同步结束
|
|
|
- status = TaskStatusEnum.FINISH;
|
|
|
- tbSyncTaskService.updateStatusAndResultById(syncTask.getId(), status, result, errorMessage);
|
|
|
-
|
|
|
- updateWrapper.lambda().set(ExamPrintPlan::getSyncStatus, syncStatus).eq(ExamPrintPlan::getId, examPrintPlan.getId());
|
|
|
- examPrintPlanService.update(updateWrapper);
|
|
|
- // 同步成功,发送短信
|
|
|
- if (ExamPrintPlanSyncStatusEnum.FINISH.equals(syncStatus)) {
|
|
|
- examPrintPlanService.sendNoticeUploadStructure(examPrintPlan.getId(), sysUser);
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- }
|
|
|
-
|
|
|
- /**
|
|
|
- * 创建考试
|
|
|
- *
|
|
|
- * @param examPrintPlan
|
|
|
- * @return
|
|
|
+ * @param examEndTime 考试时间
|
|
|
*/
|
|
|
- public Long saveExam(ExamPrintPlan examPrintPlan, Long thirdRelateId) {
|
|
|
+ public Long saveExam(Long schoolId, Long printPlanId, Long thirdRelateId, String thirdRelateName, Long examEndTime) {
|
|
|
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 = cloudMarkingTaskUtils.syncExam(examPrintPlan.getSchoolId(), code, name, examTime);
|
|
|
+ String code = String.valueOf(printPlanId);
|
|
|
+ String examTime = DateUtil.format(new Date(examEndTime), CloudMarkingTaskUtils.DATE_FORMAT);
|
|
|
+ thirdRelateId = cloudMarkingTaskUtils.syncExam(schoolId, code, thirdRelateName, examTime);
|
|
|
}
|
|
|
return thirdRelateId;
|
|
|
} catch (Exception e) {
|
|
@@ -464,7 +380,9 @@ public class DataSyncServiceImpl implements DataSyncService {
|
|
|
/**
|
|
|
* 新增考生
|
|
|
*
|
|
|
- * @return
|
|
|
+ * @param schoolId 学校ID
|
|
|
+ * @param examPrintPlanId 计划ID
|
|
|
+ * @param thirdRelateId 云阅卷考试ID
|
|
|
*/
|
|
|
public void saveStudent(Long schoolId, Long examPrintPlanId, Long thirdRelateId) {
|
|
|
List<SyncExamStudentDto> examStudents = examStudentService.listStudentByPrintPlanIdAndSyncStatus(examPrintPlanId);
|
|
@@ -479,8 +397,8 @@ public class DataSyncServiceImpl implements DataSyncService {
|
|
|
String college = Objects.nonNull(sysOrg) && StringUtils.isNotBlank(sysOrg.getName()) ? sysOrg.getName() : "无";
|
|
|
String className = StringUtils.isBlank(examStudent.getClazzName()) ? getClassName(examStudent.getExtendFields()) : examStudent.getClazzName();
|
|
|
String teacher = "无";
|
|
|
- String subjectCode = examStudent.getPaperNumberId() + examStudent.getPaperType(); // 取试卷编号
|
|
|
- String subjectName = examStudent.getPaperNumber() + examStudent.getPaperType() + "-" + examStudent.getCourseName();
|
|
|
+ String subjectCode = examStudent.getCourseCode() + examStudent.getPaperType() + examStudent.getSequence(); // 取试卷编号
|
|
|
+ String subjectName = examStudent.getCourseName();
|
|
|
boolean syncStudent = cloudMarkingTaskUtils.syncStudent(schoolId, examId, examNumber, studentCode, name, college, className, teacher, subjectCode, subjectName, null, null, null, null);
|
|
|
|
|
|
if (syncStudent) {
|
|
@@ -497,7 +415,9 @@ public class DataSyncServiceImpl implements DataSyncService {
|
|
|
/**
|
|
|
* 同步题卡
|
|
|
*
|
|
|
- * @return
|
|
|
+ * @param schoolId 学校ID
|
|
|
+ * @param examPrintPlanId 计划ID
|
|
|
+ * @param thirdRelateId 云阅卷考试ID
|
|
|
*/
|
|
|
public void cardUpload(Long schoolId, Long examPrintPlanId, Long thirdRelateId) {
|
|
|
List<ExamDetailCourse> examDetailCourses = examDetailService.listSyncPaperNumberByPrintPlanId(examPrintPlanId);
|
|
@@ -509,18 +429,15 @@ public class DataSyncServiceImpl implements DataSyncService {
|
|
|
if (CollectionUtils.isEmpty(syncExamCardDtos)) {
|
|
|
return;
|
|
|
}
|
|
|
-
|
|
|
if (syncExamCardDtos.size() > 1) {
|
|
|
log.info("数据异常,通过学校:{},课程代码:{},试卷编号:{}查出{}个题卡数据", examDetailCours.getSchoolId(), examDetailCours.getCourseCode(), examDetailCours.getPaperNumber(), syncExamCardDtos.size());
|
|
|
return;
|
|
|
}
|
|
|
-
|
|
|
String paperType = examDetailCours.getPaperType();
|
|
|
if (StringUtils.isBlank(paperType)) {
|
|
|
log.info("数据异常,通过学校:{},课程代码:{},试卷编号:{}查出绑定试卷类型为空", examDetailCours.getSchoolId(), examDetailCours.getCourseCode(), examDetailCours.getPaperNumber());
|
|
|
return;
|
|
|
}
|
|
|
-
|
|
|
SyncExamCardDto syncExamCardDto = syncExamCardDtos.get(0);
|
|
|
if (StringUtils.isNotEmpty(syncExamCardDto.getContent())) {
|
|
|
for (String s : paperType.split(",")) {
|
|
@@ -531,7 +448,7 @@ public class DataSyncServiceImpl implements DataSyncService {
|
|
|
String filePath = getTempDir(SyncFileTypeEnum.CARD);
|
|
|
file = createJsonFile(filePath, syncExamCardDto.getContent());
|
|
|
if (file.exists()) {
|
|
|
- String uploadCardUrl = cloudMarkingTaskUtils.syncFile(schoolId, String.valueOf(thirdRelateId), syncExamCardDto.getPaperNumberId() + s, SyncFileTypeEnum.CARD, file);
|
|
|
+ String uploadCardUrl = cloudMarkingTaskUtils.syncFile(schoolId, String.valueOf(thirdRelateId), syncExamCardDto.getCourseCode() + s + syncExamCardDto.getSequence(), SyncFileTypeEnum.CARD, file);
|
|
|
if (StringUtils.isNotBlank(uploadCardUrl)) {
|
|
|
UpdateWrapper<ExamCard> updateWrapper = new UpdateWrapper<>();
|
|
|
updateWrapper.lambda().set(ExamCard::getSyncStatus, true).eq(ExamCard::getId, syncExamCardDto.getId());
|
|
@@ -553,8 +470,7 @@ public class DataSyncServiceImpl implements DataSyncService {
|
|
|
/**
|
|
|
* 上传文件临时目录
|
|
|
*
|
|
|
- * @param type
|
|
|
- * @return
|
|
|
+ * @param type 同步类型
|
|
|
*/
|
|
|
private String getTempDir(SyncFileTypeEnum type) {
|
|
|
return SystemConstant.TEMP_FILES_DIR + File.separator + "upload-temp" + File.separator + type.name().toLowerCase() + File.separator + System.currentTimeMillis();
|
|
@@ -563,11 +479,10 @@ public class DataSyncServiceImpl implements DataSyncService {
|
|
|
/**
|
|
|
* 通过扩展字段,获取班级名称
|
|
|
*
|
|
|
- * @param extendCloumn
|
|
|
- * @return
|
|
|
+ * @param extendColumn 扩展字段
|
|
|
*/
|
|
|
- private String getClassName(String extendCloumn) {
|
|
|
- List<Map> mapList = JSONObject.parseArray(extendCloumn, Map.class);
|
|
|
+ private String getClassName(String extendColumn) {
|
|
|
+ List<Map> mapList = JSONObject.parseArray(extendColumn, Map.class);
|
|
|
for (Map map : mapList) {
|
|
|
if (Objects.equals("className", map.get("code").toString())
|
|
|
|| Objects.equals("clazzName", map.get("code").toString())) {
|
|
@@ -577,12 +492,13 @@ public class DataSyncServiceImpl implements DataSyncService {
|
|
|
return "无";
|
|
|
}
|
|
|
|
|
|
- /*
|
|
|
+ /**
|
|
|
* 生成文件
|
|
|
- * @param file 文件路径+文件名称
|
|
|
- * @param conent 要生成的文件内容
|
|
|
+ *
|
|
|
+ * @param url 文件路径+文件名称
|
|
|
+ * @param content 要生成的文件内容
|
|
|
*/
|
|
|
- public static File createJsonFile(String url, String conent) {
|
|
|
+ public static File createJsonFile(String url, String content) {
|
|
|
|
|
|
File file = new File(url);
|
|
|
if (!file.exists()) {
|
|
@@ -593,7 +509,7 @@ public class DataSyncServiceImpl implements DataSyncService {
|
|
|
try {
|
|
|
file.createNewFile();
|
|
|
out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(file, true)));
|
|
|
- out.write(conent);
|
|
|
+ out.write(content);
|
|
|
} catch (Exception e) {
|
|
|
} finally {
|
|
|
try {
|
|
@@ -607,10 +523,9 @@ public class DataSyncServiceImpl implements DataSyncService {
|
|
|
/**
|
|
|
* 下载附件临时文件
|
|
|
*
|
|
|
- * @param attachmentId
|
|
|
- * @param name
|
|
|
- * @param type
|
|
|
- * @return
|
|
|
+ * @param attachmentId 附件ID
|
|
|
+ * @param name 文件名称
|
|
|
+ * @param type 文件类型
|
|
|
*/
|
|
|
private File downFileFromFss(String attachmentId, String name, SyncFileTypeEnum type) {
|
|
|
try {
|
|
@@ -620,8 +535,7 @@ public class DataSyncServiceImpl implements DataSyncService {
|
|
|
throw ExceptionResultEnum.ERROR.exception("附件数据异常");
|
|
|
}
|
|
|
String fileName = attachment.getName() + "-" + name + attachment.getType();
|
|
|
- File file = teachcloudCommonService.copyFile(getTempDir(type), fileName, attachment);
|
|
|
- return file;
|
|
|
+ return teachcloudCommonService.copyFile(getTempDir(type), fileName, attachment);
|
|
|
}
|
|
|
} catch (Exception e) {
|
|
|
throw ExceptionResultEnum.ERROR.exception(e.getMessage());
|