Browse Source

3.3.1 联调bug

xiaofei 1 year ago
parent
commit
2562a9af9a

+ 4 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/dto/ExamTaskDetailDto.java

@@ -1,5 +1,7 @@
 package com.qmth.distributed.print.business.bean.dto;
 
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
 import com.qmth.distributed.print.business.enums.MakeMethodEnum;
 import io.swagger.annotations.ApiModelProperty;
 
@@ -33,8 +35,10 @@ public class ExamTaskDetailDto {
     private Integer totalSubjects;
     private String examDetailCourseIds;
 
+    @JsonSerialize(using = ToStringSerializer.class)
     private Long examId;
     private String examName;
+    @JsonSerialize(using = ToStringSerializer.class)
     private Long semesterId;
     private String semesterName;
 

+ 1 - 1
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/ExamTaskDetailServiceImpl.java

@@ -167,7 +167,7 @@ public class ExamTaskDetailServiceImpl extends ServiceImpl<ExamTaskDetailMapper,
         List<ExamDetail> examDetails = examDetailService.listByPrintPlanIdAndCourseCodeAndPaperNumber(examTask.getSchoolId(), paperParam.getPrintPlanId(), examTask.getCourseCode(), examTask.getPaperNumber());
         List<ExamDetail> examDetailsPrint = examDetails.stream().filter(m -> !ExamDetailStatusEnum.NEW.equals(m.getStatus()) && !ExamDetailStatusEnum.READY.equals(m.getStatus())).collect(Collectors.toList());
         if (CollectionUtils.isNotEmpty(examDetailsPrint)) {
-            throw ExceptionResultEnum.ERROR.exception("部分考场pdf文件已印刷,不能修改卷型");
+            throw ExceptionResultEnum.ERROR.exception("部分考场pdf文件已提交印刷或已印刷,不能修改卷型");
         }
 
         List<Long> examDetailIds = examDetails.stream().map(ExamDetail::getId).collect(Collectors.toList());

+ 4 - 3
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/ExamTaskServiceImpl.java

@@ -2173,6 +2173,7 @@ public class ExamTaskServiceImpl extends ServiceImpl<ExamTaskMapper, ExamTask> i
             File paperDataFile = tikuUtils.getTikuPaperData(schoolId, paperId);
             ExamTaskPaperData examTaskPaperData = saveTikuPaperData(examId, paperId, uuid, paperDataFile);
             map.put("paperJson", examTaskPaperData.getPaperJson());
+            map.put("answerJson", examTaskPaperData.getAnswerJson());
             map.put("attachmentId", String.valueOf(examTaskPaperData.getPaperPdfAttachmentId()));
             return map;
         } catch (Exception e) {
@@ -2197,7 +2198,7 @@ public class ExamTaskServiceImpl extends ServiceImpl<ExamTaskMapper, ExamTask> i
                 examTaskPaperData.setPaperId(paperId);
             }
             // data.zip
-            String zipPdfName = PdfUtil.md5FileName(examTaskPaperData.getUuid() + "data" + paperId + SystemConstant.ZIP_PREFIX);
+            String zipPdfName = PdfUtil.md5FileName(examTaskPaperData.getUuid() + "data" + paperId) + SystemConstant.ZIP_PREFIX;
             FilePathVo filePathVoZip = fileUploadService.uploadFile(zipFile, UploadFileEnum.FILE, zipPdfName);
             examTaskPaperData.setDataPacketPath(JSON.toJSONString(filePathVoZip));
             // paper.json
@@ -2207,14 +2208,14 @@ public class ExamTaskServiceImpl extends ServiceImpl<ExamTaskMapper, ExamTask> i
             String answerJson = FileUtils.readFileToString(new File(zipDestPath + File.separator + "answer.json"), StandardCharsets.UTF_8);
             examTaskPaperData.setAnswerJson(answerJson);
             // paper.pdf
-            String paperPdfName = PdfUtil.md5FileName(examTaskPaperData.getUuid() + "paper" + paperId + SystemConstant.PDF_PREFIX);
+            String paperPdfName = PdfUtil.md5FileName(examTaskPaperData.getUuid() + "paper" + paperId) + SystemConstant.PDF_PREFIX;
             File paperPdfFile = new File(zipDestPath + File.separator + "paper.pdf");
             FilePathVo filePathVoPaper = fileUploadService.uploadFile(paperPdfFile, UploadFileEnum.PDF, paperPdfName);
             BasicAttachment paperPdfBasicAttachment = new BasicAttachment(JSON.toJSONString(filePathVoPaper), paperPdfName, SystemConstant.PDF_PREFIX, new BigDecimal(paperPdfFile.length()), filePathVoPaper.getMd5(), sysUser.getId());
             basicAttachmentService.save(paperPdfBasicAttachment);
             examTaskPaperData.setPaperPdfAttachmentId(paperPdfBasicAttachment.getId());
             // answer.pdf
-            String answerPdfName = PdfUtil.md5FileName(examTaskPaperData.getUuid() + "answer" + paperId + SystemConstant.PDF_PREFIX);
+            String answerPdfName = PdfUtil.md5FileName(examTaskPaperData.getUuid() + "answer" + paperId) + SystemConstant.PDF_PREFIX;
             File answerPdfFile = new File(zipDestPath + File.separator + "answer.pdf");
             FilePathVo filePathVoAnswer = fileUploadService.uploadFile(answerPdfFile, UploadFileEnum.PDF, answerPdfName);
             BasicAttachment answerBasicAttachment = new BasicAttachment(JSON.toJSONString(filePathVoAnswer), answerPdfName, SystemConstant.PDF_PREFIX, new BigDecimal(answerPdfFile.length()), filePathVoAnswer.getMd5(), sysUser.getId());

+ 6 - 0
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/TBTaskPdfServiceImpl.java

@@ -1,5 +1,7 @@
 package com.qmth.distributed.print.business.service.impl;
 
+import cn.hutool.core.date.DateUtil;
+import cn.hutool.cron.TaskTable;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
@@ -19,7 +21,10 @@ import com.qmth.teachcloud.common.util.ResultUtil;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.stereotype.Service;
 
+import java.text.MessageFormat;
+import java.util.Date;
 import java.util.List;
+import java.util.StringJoiner;
 
 /**
  * <p>
@@ -74,6 +79,7 @@ public class TBTaskPdfServiceImpl extends ServiceImpl<TBTaskPdfMapper, TBTaskPdf
         tbTaskPdf.setStatus(TaskStatusEnum.INIT);
         tbTaskPdf.setCreateType(type);
         tbTaskPdf.setResult(null);
+        tbTaskPdf.setSummary(MessageFormat.format("{0}{1}{2}", DateUtil.format(new Date(), SystemConstant.DEFAULT_DATE_PATTERN), "->", "重置成功,PDF待生成"));
         this.updateById(tbTaskPdf);
     }
 

+ 5 - 3
distributed-print-business/src/main/java/com/qmth/distributed/print/business/util/pdf/CreatePdfNewUtil.java

@@ -5,6 +5,7 @@ import cn.hutool.core.util.ReflectUtil;
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
+import com.itextpdf.text.pdf.PdfReader;
 import com.qmth.teachcloud.common.bean.vo.PrintPathVo;
 import com.qmth.distributed.print.business.bean.dto.*;
 import com.qmth.distributed.print.business.entity.*;
@@ -38,6 +39,7 @@ import org.springframework.transaction.annotation.Transactional;
 
 import javax.annotation.Resource;
 import java.io.File;
+import java.io.FileInputStream;
 import java.io.IOException;
 import java.math.BigDecimal;
 import java.util.*;
@@ -684,9 +686,9 @@ public class CreatePdfNewUtil {
                     File file = SystemConstant.getFileTempVar(SystemConstant.PDF_PREFIX);
                     createPdfDto.getFileTempList().add(file);
                     fileUploadService.downloadFile(basicAttachment, file.getPath());
-                    PageSizeEnum pageSizeEnum = PageSizeEnum.valueOf(original.getPageSize());
-                    Optional.ofNullable(pageSizeEnum).orElseThrow(() -> ExceptionResultEnum.ERROR.exception("命题任务中上传试卷文件未设置pdf格式"));
-                    paperPdfDto = new PaperPdfDto(type, file, original.getPages(), pageSizeEnum);
+//                    PageSizeEnum pageSizeEnum = PageSizeEnum.valueOf(original.getPageSize());
+//                    Optional.ofNullable(pageSizeEnum).orElseThrow(() -> ExceptionResultEnum.ERROR.exception("命题任务中上传试卷文件未设置pdf格式"));
+                    paperPdfDto = new PaperPdfDto(type, file, new PdfReader(new FileInputStream(file)).getNumberOfPages(), null);
                     paperPdfDtoList.add(paperPdfDto);
                     break;
                 }

+ 23 - 23
distributed-print/install/mysql/upgrade/3.3.1.sql

@@ -20,6 +20,27 @@ ALTER TABLE `basic_card_rule`
     ADD COLUMN `first_level_subheading` VARCHAR(200) NULL COMMENT '一级副标题' AFTER `fill_number`,
 ADD COLUMN `second_level_subheading` VARCHAR(200) NULL COMMENT '二级副标题' AFTER `first_level_subheading`;
 
+DROP TABLE IF EXISTS `t_b_task_pdf`;
+CREATE TABLE `t_b_task_pdf` (
+                                `id` bigint NOT NULL COMMENT '主键(与exam_detail表id一致)',
+                                `school_id` bigint NOT NULL COMMENT '学校id',
+                                `semester_id` bigint DEFAULT NULL COMMENT '学期ID',
+                                `exam_id` bigint DEFAULT NULL COMMENT '考试ID',
+                                `print_plan_id` bigint NOT NULL COMMENT '印刷计划id',
+                                `course_name_code` mediumtext COMMENT '课程名称',
+                                `paper_number` mediumtext COMMENT '试卷编号',
+                                `create_type` varchar(45) DEFAULT NULL COMMENT '生成pdf类型:ALL("全部"),PAPER("试卷"),CARD_A3("题卡"),SIGN("签到表"),PACKAGE("卷袋贴"),CHECK_IN("登记表")',
+                                `status` varchar(30) NOT NULL COMMENT '任务状态,INIT:未开始,RUNNING:进行中,FINISH:已完成',
+                                `summary` mediumtext COMMENT '实时摘要信息',
+                                `result` varchar(30) DEFAULT NULL COMMENT '数据结果,SUCCESS:成功,ERROR:失败',
+                                `create_id` bigint DEFAULT NULL COMMENT '创建人',
+                                `create_time` bigint DEFAULT NULL COMMENT '创建时间',
+                                `update_id` bigint DEFAULT NULL COMMENT '更新人',
+                                `update_time` bigint DEFAULT NULL COMMENT '更新时间',
+                                `remark` mediumtext COMMENT '备注',
+                                PRIMARY KEY (`id`) USING BTREE
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='pdf生成日志表';
+
 insert into t_b_task_pdf(id, school_id, semester_id, exam_id, print_plan_id, course_name_code, paper_number, status, summary, result) select a.entity_id, a.school_id, a.semester_id, a.exam_id, a.print_plan_id, a.course_name_code, a.paper_number,a.status, a.summary, a.result  from (select id, entity_id, school_id, semester_id, exam_id, print_plan_id, case when course_name is null then null else concat(course_name, '(', course_code, ')') end as course_name_code, paper_number,status, summary, result from t_b_task where type = 'CREATE_PDF' and entity_id is not null) a join (SELECT entity_id, min(id) min_id FROM t_b_task where type = 'CREATE_PDF' group by entity_id having entity_id is not null ) b on a.entity_id = b.entity_id and a.id = b.min_id;
 update t_b_task_pdf set create_type = 'ALL';
 
@@ -232,27 +253,6 @@ CREATE TABLE `exam_task_assign_paper_type` (
            PRIMARY KEY (`exam_id`,`paper_number`,`exam_start_time`,`exam_end_time`)
 ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
 
-DROP TABLE IF EXISTS `t_b_task_pdf`;
-CREATE TABLE `t_b_task_pdf` (
-            `id` bigint NOT NULL COMMENT '主键(与exam_detail表id一致)',
-            `school_id` bigint NOT NULL COMMENT '学校id',
-            `semester_id` bigint DEFAULT NULL COMMENT '学期ID',
-            `exam_id` bigint DEFAULT NULL COMMENT '考试ID',
-            `print_plan_id` bigint NOT NULL COMMENT '印刷计划id',
-            `course_name_code` mediumtext COMMENT '课程名称',
-            `paper_number` mediumtext COMMENT '试卷编号',
-            `create_type` varchar(45) DEFAULT NULL COMMENT '生成pdf类型:ALL("全部"),PAPER("试卷"),CARD_A3("题卡"),SIGN("签到表"),PACKAGE("卷袋贴"),CHECK_IN("登记表")',
-            `status` varchar(30) NOT NULL COMMENT '任务状态,INIT:未开始,RUNNING:进行中,FINISH:已完成',
-            `summary` mediumtext COMMENT '实时摘要信息',
-            `result` varchar(30) DEFAULT NULL COMMENT '数据结果,SUCCESS:成功,ERROR:失败',
-            `create_id` bigint DEFAULT NULL COMMENT '创建人',
-            `create_time` bigint DEFAULT NULL COMMENT '创建时间',
-            `update_id` bigint DEFAULT NULL COMMENT '更新人',
-            `update_time` bigint DEFAULT NULL COMMENT '更新时间',
-            `remark` mediumtext COMMENT '备注',
-            PRIMARY KEY (`id`) USING BTREE
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='pdf生成日志表';
-
 CREATE TABLE `course_target` (
                                  `id` BIGINT(20) NOT NULL COMMENT 'id',
                                  `school_id` BIGINT(20) NOT NULL COMMENT '学校id',
@@ -387,9 +387,9 @@ where t.objective_policy = 'LEAK';
 ALTER TABLE `mark_question`
     ADD COLUMN `objective_policy_score` double DEFAULT NULL COMMENT '客观题判分策略计分';
 ALTER TABLE `scan_paper`
-    ADD COLUMN `invalid` bit(1) NOT NULL COMMENT '强制绑定';
+    ADD COLUMN `invalid` bit(1) DEFAULT b'0' COMMENT '强制绑定';
 ALTER TABLE `mark_student`
-    ADD COLUMN `invalid` bit(1) NOT NULL COMMENT '强制绑定';
+    ADD COLUMN `invalid` bit(1) DEFAULT b'0' COMMENT '强制绑定';
 
 ALTER TABLE `exam_card` ADD COLUMN `blank_card_path` VARCHAR(500) NULL COMMENT '空白题卡pdf路径' AFTER `update_time`;
 

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

@@ -202,12 +202,12 @@ public class ExamPrintTaskController {
     }
 
     /**
-     * 印刷任务管理-查看PDF
+     * 印刷任务管理-预览PDF
      *
      * @param map
      * @return
      */
-    @ApiOperation(value = "印刷任务管理-查看PDF")
+    @ApiOperation(value = "印刷任务管理-预览")
     @RequestMapping(value = "/task_view_pdf", method = RequestMethod.POST)
     public Result taskViewPDF(@RequestBody Map<String, Long> map) {
         List<JSONObject> list = examDetailService.taskViewPDF(map.get("examDetailId"));

+ 4 - 0
teachcloud-report-business/src/main/resources/mapper/ExamTaskPaperDataMapper.xml

@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
+<mapper namespace="com.qmth.distributed.print.business.mapper.ExamTaskPaperDataMapper">
+</mapper>

+ 1 - 1
teachcloud-task/src/main/java/com/qmth/teachcloud/task/service/impl/PrintFinishServiceImpl.java

@@ -138,7 +138,7 @@ public class PrintFinishServiceImpl implements PrintFinishService {
                 markPaperService.updateStudentCountByExamIdAndPaperNumberAndPaperType(dto.getExamId(), dto.getPaperNumber(), paperType);
             }
         } catch (Exception e) {
-            log.info("考生同步阅卷失败");
+            log.info("考生同步阅卷失败", e.getMessage());
         }
     }
 

+ 1 - 1
teachcloud-task/src/main/java/com/qmth/teachcloud/task/start/StartRunning.java

@@ -117,7 +117,7 @@ public class StartRunning implements CommandLineRunner {
         Map createPdfJobMap = new HashMap();
         createPdfJobMap.computeIfAbsent("name", v -> CreatePdfTaskJob.class.getName());
         quartzService.deleteJob(JobEnum.CREATE_PDF_JOB.name(), JobEnum.CREATE_PDF_JOB.getGroupName());
-        quartzService.addJob(CreatePdfTaskJob.class, JobEnum.CREATE_PDF_JOB.name(), JobEnum.CREATE_PDF_JOB.getGroupName(), "0 0/10 * * * ?", createPdfJobMap);
+        quartzService.addJob(CreatePdfTaskJob.class, JobEnum.CREATE_PDF_JOB.name(), JobEnum.CREATE_PDF_JOB.getGroupName(), "0 0/2 * * * ?", createPdfJobMap);
         log.info("增加清空过期任务定时任务 end");
 
         log.info("服务器启动时执行 end");