Przeglądaj źródła

3.2.7 bug修改

xiaofei 1 rok temu
rodzic
commit
fd4cc9428d

+ 18 - 13
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/ExamTaskServiceImpl.java

@@ -1257,25 +1257,30 @@ public class ExamTaskServiceImpl extends ServiceImpl<ExamTaskMapper, ExamTask> i
     public Map<String, Object> submitTaskApply(ExamTaskApplyTemp examTaskApplyTemp) {
         Long schoolId = Long.valueOf(ServletUtil.getRequestHeaderSchoolId().toString());
         SysUser sysUser = (SysUser) ServletUtil.getRequestUser();
-        Long customFlowId = examTaskApplyTemp.getCustomFlowId();
-        Optional.ofNullable(customFlowId).orElseThrow(() -> ExceptionResultEnum.ERROR.exception("自定义流程ID为空"));
 
-        if (Objects.nonNull(examTaskApplyTemp.getVersion())) {
-            Integer version = examTaskApplyTemp.getVersion();
-            Optional.ofNullable(version).orElseThrow(() -> ExceptionResultEnum.ERROR.exception("自定义流程版本号为空"));
+        JSONObject jsonObject = JSONObject.parseObject(examTaskApplyTemp.getExamTaskContent());
+        // 新建命题任务
+        ExamTask examTask = JSONObject.parseObject(String.valueOf(jsonObject.get("examTask")), ExamTask.class);
+        BasicPrintConfig basicPrintConfig = basicPrintConfigService.getByExamId(examTask.getExamId());
 
-            TFCustomFlow tfCustomFlow = tfCustomFlowService.getById(customFlowId);
-            Optional.ofNullable(tfCustomFlow).orElseThrow(() -> ExceptionResultEnum.ERROR.exception("未找到自定义流程数据"));
+        if (basicPrintConfig.getReview()) {
+            Long customFlowId = examTaskApplyTemp.getCustomFlowId();
+            Optional.ofNullable(customFlowId).orElseThrow(() -> ExceptionResultEnum.ERROR.exception("自定义流程ID为空"));
 
-            if (tfCustomFlow.getVersion().intValue() != version.intValue()) {
-                throw ExceptionResultEnum.ERROR.exception("自定义流程数据已发生改变,请刷新重试");
+            if (Objects.nonNull(examTaskApplyTemp.getVersion())) {
+                Integer version = examTaskApplyTemp.getVersion();
+                Optional.ofNullable(version).orElseThrow(() -> ExceptionResultEnum.ERROR.exception("自定义流程版本号为空"));
+
+                TFCustomFlow tfCustomFlow = tfCustomFlowService.getById(customFlowId);
+                Optional.ofNullable(tfCustomFlow).orElseThrow(() -> ExceptionResultEnum.ERROR.exception("未找到自定义流程数据"));
+
+                if (tfCustomFlow.getVersion().intValue() != version.intValue()) {
+                    throw ExceptionResultEnum.ERROR.exception("自定义流程数据已发生改变,请刷新重试");
+                }
             }
         }
 
-        JSONObject jsonObject = JSONObject.parseObject(examTaskApplyTemp.getExamTaskContent());
         Map<String, Object> mapVar = new HashMap<>();
-        // 新建命题任务
-        ExamTask examTask = JSONObject.parseObject(String.valueOf(jsonObject.get("examTask")), ExamTask.class);
         try {
             if (StringUtils.isNotBlank(examTask.getPaperNumber())) {
                 validPaperNumberExists(schoolId, examTask);
@@ -1292,7 +1297,7 @@ public class ExamTaskServiceImpl extends ServiceImpl<ExamTaskMapper, ExamTask> i
             examTask.setSchoolId(schoolId);
             examTask.setOrgId(basicCourseService.getOrgIdBySchoolIdAndCourseCode(schoolId, examTask.getCourseCode()));
 
-            BasicPrintConfig basicPrintConfig = basicPrintConfigService.getByExamId(examTask.getExamId());
+
             examTask.setReview(basicPrintConfig.getReview());
             examTask.setUserId(sysUser.getId());
             examTask.setStatus(ExamStatusEnum.SUBMIT);

+ 11 - 4
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/PrintCommonServiceImpl.java

@@ -983,13 +983,20 @@ public class PrintCommonServiceImpl implements PrintCommonService {
             log.info("卷库已禁用");
             return;
         }
-        TFFlowApprove tfFlowApprove = tfFlowApproveService.findByFlowId(examTask.getFlowId());
-        // 1.命题任务已完成
-        if (tfFlowApprove != null && tfFlowApprove.getStatus() == FlowStatusEnum.FINISH) {
+
+        boolean canCreatePdf = true;
+        if (examTask.getReview()) {
+            TFFlowApprove tfFlowApprove = tfFlowApproveService.findByFlowId(examTask.getFlowId());
+            // 1.命题任务已完成
+            if (tfFlowApprove == null || tfFlowApprove.getStatus() != FlowStatusEnum.FINISH) {
+                canCreatePdf = false;
+            }
+        }
+
+        if (canCreatePdf) {
             // 2.校验考务数据是否导入
             List<ExamDetail> examDetails = examDetailService.listByCourseCodeAndPaperNumber(schoolId, examId, courseCode, paperNumber);
             if (examDetails != null && examDetails.size() > 0) {
-
                 // 3.检查examDetailId下有无其它课程
                 for (ExamDetail examDetail : examDetails) {
                     List<ExamDetailCourse> examDetailCourses = examDetailCourseService.listByExamDetailIdAndStatus(examDetail.getId());

+ 4 - 2
distributed-print-business/src/main/java/com/qmth/distributed/print/business/templete/execute/AsyncExaminationImportTemplateService.java

@@ -81,6 +81,7 @@ public class AsyncExaminationImportTemplateService extends AsyncImportTaskTemple
 
             // 如果excel独立行数据校验有问题则生成excel
             if (result.containsKey(SystemConstant.ERROR_DATA_LIST)) {
+                tbTask.setResult(TaskResultEnum.ERROR);
                 List<ExaminationImportDto> examinationImportDtoList = JSON.parseArray(JSON.toJSONString(result.get(SystemConstant.ERROR_DATA_LIST)), ExaminationImportDto.class);
                 List<FieldsDto> fieldsDtoList = JSON.parseArray(JSON.toJSONString(result.get("fieldsDtoList")), FieldsDto.class);
 
@@ -94,6 +95,8 @@ public class AsyncExaminationImportTemplateService extends AsyncImportTaskTemple
                 if (!CollectionUtils.isEmpty(errorList)) {
                     throw ExceptionResultEnum.ERROR.exception(String.join(";\r\n", errorList));
                 }
+            } else {
+                tbTask.setResult(TaskResultEnum.SUCCESS);
             }
 
             // 检测是否去生成pdf
@@ -107,13 +110,12 @@ public class AsyncExaminationImportTemplateService extends AsyncImportTaskTemple
             examTaskService.checkDataByExamination(tbTask.getPrintPlanId(), examDetailIdList, user);
 
             stringJoinerSummary.add(MessageFormat.format("{0}{1}{2}{3}", DateUtil.format(new Date(), SystemConstant.DEFAULT_DATE_PATTERN), FINISH_TITLE, Long.valueOf(String.valueOf(result.get("dataCount"))), FINISH_ERROR_SIZE));
-            tbTask.setResult(TaskResultEnum.SUCCESS);
         } catch (Exception e) {
             log.error(SystemConstant.LOG_ERROR, e);
             stringJoinerSummary.add(MessageFormat.format("{0}{1}{2}{3}", DateUtil.format(new Date(), SystemConstant.DEFAULT_DATE_PATTERN), EXCEPTION_TITLE, EXCEPTION_DATA, e.getMessage()));
             tbTask.setResult(TaskResultEnum.ERROR);
 
-            // 有异常,删除考务数据
+            // 有异常,删除考务数据 (2023-07-21和产品商量后不再删除数据)
             examDetailService.deleteExaminationDataByExamDetailIds(examDetailIdList);
 
             if (e instanceof ApiException) {

+ 7 - 5
distributed-print-business/src/main/java/com/qmth/distributed/print/business/templete/execute/AsyncStudentDataImportService.java

@@ -36,11 +36,12 @@ public class AsyncStudentDataImportService extends AsyncImportTaskTemplete {
     private final static Logger log = LoggerFactory.getLogger(AsyncStudentDataImportService.class);
 
     public static final String OBJ_TITLE = "学生基础数据";
+
     @Override
     public Result importTask(Map<String, Object> map) throws Exception {
         TBTask tbTask = (TBTask) map.get(SystemConstant.TASK);
         InputStream inputStream = super.getUploadFileInputStream(tbTask);
-        map.put("inputStream",inputStream);
+        map.put("inputStream", inputStream);
 
         StringJoiner stringJoinerSummary = new StringJoiner("\n")
                 .add(MessageFormat.format("{0}{1}{2}", DateUtil.format(new Date(), SystemConstant.DEFAULT_DATE_PATTERN), BEGIN_TITLE, OBJ_TITLE));
@@ -55,15 +56,16 @@ public class AsyncStudentDataImportService extends AsyncImportTaskTemplete {
 
             //错误数据,生成文件
             if (result.containsKey(SystemConstant.ERROR_DATA_LIST)) {
+                tbTask.setResult(TaskResultEnum.ERROR);
                 List<BasicStudentErrorExportDto> errorDataList = (List<BasicStudentErrorExportDto>) result.get(SystemConstant.ERROR_DATA_LIST);
-                if (!CollectionUtils.isEmpty(errorDataList)){
+                if (!CollectionUtils.isEmpty(errorDataList)) {
                     super.createErrorFile(tbTask, BasicStudentErrorExportDto.class, errorDataList);
                 }
+            } else {
+                tbTask.setResult(TaskResultEnum.SUCCESS);
             }
-
             stringJoinerSummary.add(MessageFormat.format("{0}{1}{2}{3}{4}{5}{6}{7}", DateUtil.format(new Date(), SystemConstant.DEFAULT_DATE_PATTERN), FINISH_TITLE, Long.valueOf(String.valueOf(result.get(SystemConstant.DATA_COUNT))), FINISH_TOTAL_SIZE, Long.valueOf(String.valueOf(result.get(SystemConstant.SUCCESS_DATA_COUNT))), FINISH_SUCCESS_SIZE, Long.valueOf(String.valueOf(result.get(SystemConstant.ERROR_DATA_COUNT))), FINISH_ERROR_SIZE));
-            tbTask.setResult(TaskResultEnum.SUCCESS);
-        }catch (Exception e){
+        } catch (Exception e) {
             log.error(SystemConstant.LOG_ERROR, e);
             stringJoinerSummary.add(MessageFormat.format("{0}{1}{2}{3}", DateUtil.format(new Date(), SystemConstant.DEFAULT_DATE_PATTERN), EXCEPTION_TITLE, EXCEPTION_DATA, e.getMessage()));
             tbTask.setResult(TaskResultEnum.ERROR);

+ 3 - 4
distributed-print-business/src/main/java/com/qmth/distributed/print/business/templete/execute/AsyncSysUserDataImportService.java

@@ -37,9 +37,6 @@ public class AsyncSysUserDataImportService extends AsyncImportTaskTemplete {
 
     public static final String OBJ_TITLE = "用户基本信息";
 
-//    @Resource
-//    private CloudUserPushService cloudUserPushService;
-
     @Override
     public Result importTask(Map<String, Object> map) throws Exception {
         TBTask tbTask = (TBTask) map.get(SystemConstant.TASK);
@@ -59,10 +56,13 @@ public class AsyncSysUserDataImportService extends AsyncImportTaskTemplete {
 
             //错误数据,生成文件
             if (result.containsKey(SystemConstant.ERROR_DATA_LIST)) {
+                tbTask.setResult(TaskResultEnum.ERROR);
                 List<SysUserErrorExportDto> errorDataList = (List<SysUserErrorExportDto>) result.get(SystemConstant.ERROR_DATA_LIST);
                 if (CollectionUtils.isNotEmpty(errorDataList)) {
                     super.createErrorFile(tbTask, SysUserErrorExportDto.class, errorDataList);
                 }
+            } else {
+                tbTask.setResult(TaskResultEnum.SUCCESS);
             }
 
 //            // 执行用户同步数据
@@ -73,7 +73,6 @@ public class AsyncSysUserDataImportService extends AsyncImportTaskTemplete {
 //            }
 
             stringJoinerSummary.add(MessageFormat.format("{0}{1}{2}{3}{4}{5}{6}{7}", DateUtil.format(new Date(), SystemConstant.DEFAULT_DATE_PATTERN), FINISH_TITLE, Long.valueOf(String.valueOf(result.get(SystemConstant.DATA_COUNT))), FINISH_TOTAL_SIZE, Long.valueOf(String.valueOf(result.get(SystemConstant.SUCCESS_DATA_COUNT))), FINISH_SUCCESS_SIZE, Long.valueOf(String.valueOf(result.get(SystemConstant.ERROR_DATA_COUNT))), FINISH_ERROR_SIZE));
-            tbTask.setResult(TaskResultEnum.SUCCESS);
         } catch (Exception e) {
             log.error(SystemConstant.LOG_ERROR, e);
             stringJoinerSummary.add(MessageFormat.format("{0}{1}{2}{3}", DateUtil.format(new Date(), SystemConstant.DEFAULT_DATE_PATTERN), EXCEPTION_TITLE, EXCEPTION_DATA, e.getMessage()));

+ 6 - 3
distributed-print-business/src/main/java/com/qmth/distributed/print/business/templete/service/impl/TaskLogicServiceImpl.java

@@ -251,7 +251,10 @@ public class TaskLogicServiceImpl implements TaskLogicService {
                 return null;
             }
             //查询命题任务绑定的试卷和题卡
-            ExamTask examTask = examTaskService.findExamTaskByFlowStatus(sysUser.getSchoolId(), examPrintPlan.getExamId(), examDetailCourse.getCourseCode(), examDetailCourse.getPaperNumber(), FlowStatusEnum.FINISH);
+            ExamTask examTask = examTaskService.getByCourseCodeAndPaperNumber(sysUser.getSchoolId(), examPrintPlan.getExamId(), examDetailCourse.getCourseCode(), examDetailCourse.getPaperNumber());
+            if (examTask.getReview()) {
+                examTask = examTaskService.findExamTaskByFlowStatus(sysUser.getSchoolId(), examPrintPlan.getExamId(), examDetailCourse.getCourseCode(), examDetailCourse.getPaperNumber(), FlowStatusEnum.FINISH);
+            }
             ExamTaskDetail examTaskDetail = examTaskDetailService.getByExamTaskId(examTask.getId());
 
             JSONObject jsonObject = new JSONObject();
@@ -716,8 +719,6 @@ public class TaskLogicServiceImpl implements TaskLogicService {
                 throw ExceptionResultEnum.ERROR.exception("考务数据必填字段[" + fieldsDto.getName() + "]在表头中不存在");
             }
         }
-        Long examId = examPrintPlan.getExamId();
-        BasicExam basicExam = basicExamService.getById(examId);
 
         List<ExaminationImportDto> examinationImportDtoList = new ArrayList<>();
 
@@ -737,6 +738,8 @@ public class TaskLogicServiceImpl implements TaskLogicService {
         Map<String, Integer> paperNumberWithExamTaskMap = new HashMap<>();
         // 命题任务中试卷编号对应的课程代码map
         Map<String, String> paperNumberWithCourseCodeInExamTaskMap = new HashMap<>();
+
+        Long examId = examPrintPlan.getExamId();
         List<ExamTask> examTaskList = examTaskService.list(new QueryWrapper<ExamTask>()
                 .lambda()
                 .eq(ExamTask::getSchoolId, schoolId)

+ 2 - 2
distributed-print/src/main/java/com/qmth/distributed/print/api/ExamTaskApplyController.java

@@ -201,10 +201,10 @@ public class ExamTaskApplyController {
     public Result submitTaskApply(@RequestBody ExamTaskApplyTemp examTaskApplyTemp) throws IOException {
         Map<String, Object> map = examTaskService.submitTaskApply(examTaskApplyTemp);
         ExamTask examTask = (ExamTask) map.get(SystemConstant.EXAM_TASK);
-        /*if (Objects.nonNull(examTask.getReview()) && !examTask.getReview()) {
+        if (Objects.nonNull(examTask.getReview()) && !examTask.getReview()) {
             // 校验是否可以提交打印状态
             printCommonService.checkData(examTask.getSchoolId(), examTask.getExamId(), examTask.getCourseCode(), examTask.getPaperNumber(), (SysUser) ServletUtil.getRequestUser());
-        }*/
+        }
         Boolean sendFlowStartMq = (Boolean) map.get(SystemConstant.SEND_FLOW_START_MQ);
         Boolean sendFlowMq = (Boolean) map.get(SystemConstant.SEND_FLOW_MQ);
         if (Objects.nonNull(sendFlowStartMq) && sendFlowStartMq) {