Ver Fonte

3.4.0 update

xiaofei há 1 ano atrás
pai
commit
f2942ef759
17 ficheiros alterados com 143 adições e 122 exclusões
  1. 1 8
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/mapper/BasicTemplateMapper.java
  2. 2 2
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/mapper/ExamDetailMapper.java
  3. 2 8
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/BasicTemplateService.java
  4. 1 1
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/ExamDetailService.java
  5. 3 1
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/ExamTaskWholeService.java
  6. 8 11
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/BasicTemplateServiceImpl.java
  7. 3 3
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/ExamDetailServiceImpl.java
  8. 13 17
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/ExamPrintPlanServiceImpl.java
  9. 29 12
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/ExamTaskWholeServiceImpl.java
  10. 41 19
      distributed-print-business/src/main/java/com/qmth/distributed/print/business/util/PdfUtil.java
  11. 0 22
      distributed-print-business/src/main/resources/mapper/BasicTemplateMapper.xml
  12. 8 8
      distributed-print-business/src/main/resources/mapper/ExamDetailMapper.xml
  13. 3 1
      distributed-print-business/src/main/resources/mapper/TBTaskPdfMapper.xml
  14. 3 4
      distributed-print/install/mysql/upgrade/3.4.0.sql
  15. 4 3
      distributed-print/src/main/java/com/qmth/distributed/print/api/ExamPrintTaskController.java
  16. 21 0
      teachcloud-common/src/main/java/com/qmth/teachcloud/common/bean/result/TaskPdfResult.java
  17. 1 2
      teachcloud-common/src/main/java/com/qmth/teachcloud/common/enums/ClassifyEnum.java

+ 1 - 8
distributed-print-business/src/main/java/com/qmth/distributed/print/business/mapper/BasicTemplateMapper.java

@@ -20,13 +20,6 @@ import java.util.List;
  */
 public interface BasicTemplateMapper extends BaseMapper<BasicTemplate> {
 
-    IPage<BasicTemplate> listPage(Page<BasicTemplate> page, @Param("schoolId") Long schoolId, @Param("enable") Boolean enable, @Param("name") String name, @Param("startTime") Long startTime, @Param("endTime") Long endTime,@Param("dpr") DataPermissionRule dpr);
+    IPage<BasicTemplate> listPage(Page<BasicTemplate> page, @Param("schoolId") Long schoolId, @Param("enable") Boolean enable, @Param("name") String name, @Param("startTime") Long startTime, @Param("endTime") Long endTime, @Param("dpr") DataPermissionRule dpr);
 
-    /**
-     * 查找模版(机构同级及以下)
-     *
-     * @param ids
-     * @return
-     */
-    List<TemplatePrintInfoResult> findTemplateInfoByOrgIds(@Param("orgIds") List<Long> ids);
 }

+ 2 - 2
distributed-print-business/src/main/java/com/qmth/distributed/print/business/mapper/ExamDetailMapper.java

@@ -80,7 +80,7 @@ public interface ExamDetailMapper extends BaseMapper<ExamDetail> {
                                     @Param("examId") Long examId,
                                     @Param("printPlanId") Long printPlanId,
                                     @Param("status") String status,
-                                    @Param("courseCode") String courseCode,
+                                    @Param("courseId") Long courseId,
                                     @Param("paperNumber") String paperNumber,
                                     @Param("examPlace") String examPlace,
                                     @Param("examRoom") String examRoom,
@@ -99,7 +99,7 @@ public interface ExamDetailMapper extends BaseMapper<ExamDetail> {
                                             @Param("examId") Long examId,
                                             @Param("printPlanId") Long printPlanId,
                                             @Param("status") String status,
-                                            @Param("courseCode") String courseCode,
+                                            @Param("courseId") Long courseId,
                                             @Param("paperNumber") String paperNumber,
                                             @Param("examPlace") String examPlace,
                                             @Param("examRoom") String examRoom,

+ 2 - 8
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/BasicTemplateService.java

@@ -25,15 +25,9 @@ public interface BasicTemplateService extends IService<BasicTemplate> {
 
     BasicTemplate getOne(Long id);
 
-    /**
-     * 查找模版(机构同级及以下)
-     *
-     * @param ids
-     * @return
-     */
-    List<TemplatePrintInfoResult> findTemplateInfoByOrgIds(List<Long> ids);
-
     String preview(Long id);
 
     boolean remove(Long id);
+
+    List<BasicTemplate> listBySchoolId(Long schoolId);
 }

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

@@ -52,7 +52,7 @@ public interface ExamDetailService extends IService<ExamDetail> {
 
     IPage<PrintTaskDto> listPrintTask(Long semesterId, Long examId, Long printPlanId, String status, Long courseId, String paperNumber, String examPlace, String examRoom, Long examStartTime, Long examEndTime, Long printStartTime, Long printEndTime, Long printHouseId, Integer pageNumber, Integer pageSize);
 
-    PrintTaskTotalDto taskTotalData(Long semesterId, Long examId, Long printPlanId, String status, String courseCode, String paperNumber, String examPlace, String examRoom, Long examStartTime, Long examEndTime, Long printStartTime, Long printEndTime, Long printHouseId);
+    PrintTaskTotalDto taskTotalData(Long semesterId, Long examId, Long printPlanId, String status, Long courseId, String paperNumber, String examPlace, String examRoom, Long examStartTime, Long examEndTime, Long printStartTime, Long printEndTime, Long printHouseId);
 
     List<JSONObject> taskViewPDF(Long examDetailId);
 

+ 3 - 1
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/ExamTaskWholeService.java

@@ -7,13 +7,15 @@ import com.qmth.distributed.print.business.entity.ExamTaskWhole;
 import com.qmth.teachcloud.common.enums.clientpackage.ClientPackageEnum;
 import org.springframework.web.multipart.MultipartFile;
 
+import java.util.Map;
+
 public interface ExamTaskWholeService extends IService<ExamTaskWhole> {
 
    void checkAndCreateTask(Long examId, Long courseId, String paperNumber);
 
    ExamTaskWhole getByExamIdAndCourseIdAndPaperNumber(Long examId, Long courseId, String paperNumber);
 
-   String getWholePdf(Long examId, Long courseId, String paperNumber);
+   Map getWholePdf(Long examId, Long courseId, String paperNumber);
 
    void mergeWholePdf(ExamTaskWhole examTaskWhole);
 }

+ 8 - 11
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/BasicTemplateServiceImpl.java

@@ -237,17 +237,6 @@ public class BasicTemplateServiceImpl extends ServiceImpl<BasicTemplateMapper, B
         return basicTemplate;
     }
 
-    /**
-     * 查找模版(机构同级及以下)
-     *
-     * @param ids
-     * @return
-     */
-    @Override
-    public List<TemplatePrintInfoResult> findTemplateInfoByOrgIds(List<Long> ids) {
-        return basicTemplateMapper.findTemplateInfoByOrgIds(ids);
-    }
-
     @Override
     public String preview(Long id) {
         BasicTemplate basicTemplate = basicTemplateMapper.selectById(id);
@@ -321,4 +310,12 @@ public class BasicTemplateServiceImpl extends ServiceImpl<BasicTemplateMapper, B
         }
         return this.removeById(id);
     }
+
+    @Override
+    public List<BasicTemplate> listBySchoolId(Long schoolId) {
+        QueryWrapper<BasicTemplate> queryWrapper = new QueryWrapper<>();
+        queryWrapper.lambda().eq(BasicTemplate::getSchoolId, schoolId)
+                .eq(BasicTemplate::getEnable, true);
+        return this.list(queryWrapper);
+    }
 }

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

@@ -159,16 +159,16 @@ public class ExamDetailServiceImpl extends ServiceImpl<ExamDetailMapper, ExamDet
     }
 
     @Override
-    public PrintTaskTotalDto taskTotalData(Long semesterId, Long examId, Long printPlanId, String status, String courseCode, String paperNumber, String examPlace, String examRoom, Long examStartTime, Long examEndTime, Long printStartTime, Long printEndTime, Long printHouseId) {
+    public PrintTaskTotalDto taskTotalData(Long semesterId, Long examId, Long printPlanId, String status, Long courseId, String paperNumber, String examPlace, String examRoom, Long examStartTime, Long examEndTime, Long printStartTime, Long printEndTime, Long printHouseId) {
         Long schoolId = Long.valueOf(ServletUtil.getRequestHeaderSchoolId().toString());
         SysUser requestUser = (SysUser) ServletUtil.getRequestUser();
         DataPermissionRule dpr = basicRoleDataPermissionService.findDataPermission(schoolId, requestUser.getId(), ServletUtil.getRequest().getServletPath());
-        PrintTaskTotalDto printTaskTotalDto = this.baseMapper.taskTotalData(schoolId, semesterId, examId, printPlanId, status, courseCode, paperNumber, examPlace, examRoom, examStartTime, examEndTime, printStartTime, printEndTime, printHouseId, dpr);
+        PrintTaskTotalDto printTaskTotalDto = this.baseMapper.taskTotalData(schoolId, semesterId, examId, printPlanId, status, courseId, paperNumber, examPlace, examRoom, examStartTime, examEndTime, printStartTime, printEndTime, printHouseId, dpr);
 
         if (printTaskTotalDto != null) {
             // 试卷总计
             Set<String> paperNumberTypeSet = new HashSet<>();
-            List<ExamDetailCourse> examDetailCourseList = this.baseMapper.selectPaperCount(schoolId, semesterId, examId, printPlanId, status, courseCode, paperNumber, examPlace, examRoom, examStartTime, examEndTime, printStartTime, printEndTime, printHouseId, dpr);
+            List<ExamDetailCourse> examDetailCourseList = this.baseMapper.selectPaperCount(schoolId, semesterId, examId, printPlanId, status, courseId, paperNumber, examPlace, examRoom, examStartTime, examEndTime, printStartTime, printEndTime, printHouseId, dpr);
             for (ExamDetailCourse examDetailCourse : examDetailCourseList) {
                 for (String s : examDetailCourse.getPaperType().split(",")) {
                     paperNumberTypeSet.add(examDetailCourse.getPaperNumber().concat(s));

+ 13 - 17
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/ExamPrintPlanServiceImpl.java

@@ -136,26 +136,22 @@ public class ExamPrintPlanServiceImpl extends ServiceImpl<ExamPrintPlanMapper, E
         List<Long> orgIds = sysOrgService.list(new QueryWrapper<SysOrg>().lambda().eq(SysOrg::getSchoolId, schoolId)).stream().map(SysOrg::getId).collect(Collectors.toList());
 
         //3.关联template和template_org表 查询出来orgIds所包含的所有模板并组装
-        if (CollectionUtils.isEmpty(orgIds)) {
-            return null;
-        }
-        List<TemplatePrintInfoResult> templateInfoList = basicTemplateService.findTemplateInfoByOrgIds(orgIds);
+        List<BasicTemplate> templateInfoList = basicTemplateService.listBySchoolId(schoolId);
         Map<String, Object> result = new HashMap<>();
 
         // 变量印品
         List<Map<String, Object>> variable = new ArrayList<>();
-        List<TemplatePrintInfoResult> variableList = templateInfoList.stream()
-                .filter(e -> ClassifyEnum.SIGN == e.getTemplateClassify() || ClassifyEnum.PACKAGE == e.getTemplateClassify())
+        List<BasicTemplate> variableList = templateInfoList.stream()
+                .filter(e -> ClassifyEnum.SIGN.equals(e.getClassify()) || ClassifyEnum.PACKAGE.equals(e.getClassify()))
                 .collect(Collectors.toList());
         for (ClassifyEnum value : ClassifyEnum.values()) {
             Map<String, Object> variableMap = new HashMap<>();
-            List<TemplatePrintInfoResult> sourceList = variableList.stream().filter(e -> value.equals(e.getTemplateClassify())).collect(Collectors.toList());
+            List<BasicTemplate> sourceList = variableList.stream().filter(e -> value.equals(e.getClassify())).collect(Collectors.toList());
             List<Map<String, Object>> templateList = new ArrayList<>();
-            for (TemplatePrintInfoResult templatePrintInfoResult : sourceList) {
+            for (BasicTemplate templatePrintInfoResult : sourceList) {
                 Map<String, Object> printMap = new HashMap<>();
-                printMap.put("id", String.valueOf(templatePrintInfoResult.getTemplateId()));
-                printMap.put("name", templatePrintInfoResult.getTemplateName());
-//                printMap.put("attachmentId", templatePrintInfoResult.getAttachmentId().toString());
+                printMap.put("id", String.valueOf(templatePrintInfoResult.getId()));
+                printMap.put("name", templatePrintInfoResult.getName());
                 templateList.add(printMap);
             }
             if (templateList.size() > 0) {
@@ -167,17 +163,17 @@ public class ExamPrintPlanServiceImpl extends ServiceImpl<ExamPrintPlanMapper, E
 
         // 普通印品
         List<Map<String, Object>> ordinary = new ArrayList<>();
-        List<TemplatePrintInfoResult> ordinaryList = templateInfoList.stream()
-                .filter(e -> ClassifyEnum.CHECK_IN == e.getTemplateClassify())
+        List<BasicTemplate> ordinaryList = templateInfoList.stream()
+                .filter(e -> ClassifyEnum.CHECK_IN.equals(e.getClassify()))
                 .collect(Collectors.toList());
         Map<String, Object> ordinaryMap = new HashMap<>();
         for (ClassifyEnum value : ClassifyEnum.values()) {
-            List<TemplatePrintInfoResult> sourceList = ordinaryList.stream().filter(e -> value.equals(e.getTemplateClassify())).collect(Collectors.toList());
+            List<BasicTemplate> sourceList = ordinaryList.stream().filter(e -> value.equals(e.getClassify())).collect(Collectors.toList());
             List<Map<String, Object>> templateList = new ArrayList<>();
-            for (TemplatePrintInfoResult templatePrintInfoResult : sourceList) {
+            for (BasicTemplate templatePrintInfoResult : sourceList) {
                 Map<String, Object> printMap = new HashMap<>();
-                printMap.put("id", String.valueOf(templatePrintInfoResult.getTemplateId()));
-                printMap.put("name", templatePrintInfoResult.getTemplateName());
+                printMap.put("id", String.valueOf(templatePrintInfoResult.getId()));
+                printMap.put("name", templatePrintInfoResult.getName());
                 printMap.put("attachmentId", templatePrintInfoResult.getAttachmentId().toString());
                 templateList.add(printMap);
             }

+ 29 - 12
distributed-print-business/src/main/java/com/qmth/distributed/print/business/service/impl/ExamTaskWholeServiceImpl.java

@@ -16,6 +16,7 @@ import com.qmth.teachcloud.common.bean.vo.FilePathVo;
 import com.qmth.teachcloud.common.bean.vo.PrintPathVo;
 import com.qmth.teachcloud.common.contant.SystemConstant;
 import com.qmth.teachcloud.common.entity.BasicAttachment;
+import com.qmth.teachcloud.common.enums.ClassifyEnum;
 import com.qmth.teachcloud.common.enums.CreatePdfTypeEnum;
 import com.qmth.teachcloud.common.enums.ExceptionResultEnum;
 import com.qmth.teachcloud.common.enums.UploadFileEnum;
@@ -31,7 +32,9 @@ import java.io.File;
 import java.io.IOException;
 import java.io.InputStream;
 import java.util.ArrayList;
+import java.util.HashMap;
 import java.util.List;
+import java.util.Map;
 
 @Service
 public class ExamTaskWholeServiceImpl extends ServiceImpl<ExamTaskWholeMapper, ExamTaskWhole> implements ExamTaskWholeService {
@@ -49,20 +52,30 @@ public class ExamTaskWholeServiceImpl extends ServiceImpl<ExamTaskWholeMapper, E
     public void checkAndCreateTask(Long examId, Long courseId, String paperNumber) {
         boolean isAllPrintFinish = examDetailService.allExamDetailIsFinish(examId, courseId, paperNumber);
         ExamTaskWhole examTaskWhole = this.getByExamIdAndCourseIdAndPaperNumber(examId, courseId, paperNumber);
-        if (examTaskWhole != null) {
-            if (examTaskWhole != null && ExamTaskWholeStatusEnum.INIT.equals(examTaskWhole.getStatus())) {
-                throw ExceptionResultEnum.ERROR.exception("文件生成中,请稍后再试");
-            }
-            if (isAllPrintFinish) {
+        if (isAllPrintFinish) {
+            if (examTaskWhole != null) {
+                if (examTaskWhole != null && ExamTaskWholeStatusEnum.RUNNING.equals(examTaskWhole.getStatus())) {
+                    throw ExceptionResultEnum.ERROR.exception("文件生成中,请稍后再试");
+                }
                 examTaskWhole.setAttachmentPath(null);
                 examTaskWhole.setStatus(ExamTaskWholeStatusEnum.INIT);
                 this.updateById(examTaskWhole);
-
-                // 开始生成
-                asyncCreateWholePdfTemplateService.createWholePdf(examTaskWhole);
             } else {
-                this.removeById(examTaskWhole.getId());
+                examTaskWhole = new ExamTaskWhole();
+                examTaskWhole.setId(SystemConstant.getDbUuid());
+                examTaskWhole.setExamId(examId);
+                examTaskWhole.setCourseId(courseId);
+                examTaskWhole.setPaperNumber(paperNumber);
+                examTaskWhole.setStatus(ExamTaskWholeStatusEnum.INIT);
+                examTaskWhole.setCreateTime(System.currentTimeMillis());
+                this.save(examTaskWhole);
             }
+            // 开始生成
+            asyncCreateWholePdfTemplateService.createWholePdf(examTaskWhole);
+
+        } else {
+            this.removeById(examTaskWhole.getId());
+            throw ExceptionResultEnum.ERROR.exception("部分考场未生成PDF,无法合并文件");
         }
     }
 
@@ -76,9 +89,12 @@ public class ExamTaskWholeServiceImpl extends ServiceImpl<ExamTaskWholeMapper, E
     }
 
     @Override
-    public String getWholePdf(Long examId, Long courseId, String paperNumber) {
+    public Map getWholePdf(Long examId, Long courseId, String paperNumber) {
         ExamTaskWhole examTaskWhole = getByExamIdAndCourseIdAndPaperNumber(examId, courseId, paperNumber);
-        return examTaskWhole != null ? fileUploadService.filePreview(examTaskWhole.getAttachmentPath()) : null;
+        Map map = new HashMap();
+        map.put("status", examTaskWhole != null ? examTaskWhole.getStatus() : ExamTaskWholeStatusEnum.INIT);
+        map.put("url", examTaskWhole != null && StringUtils.isNotBlank(examTaskWhole.getAttachmentPath()) ? fileUploadService.filePreview(examTaskWhole.getAttachmentPath()) : null);
+        return map;
     }
 
     @Override
@@ -96,6 +112,7 @@ public class ExamTaskWholeServiceImpl extends ServiceImpl<ExamTaskWholeMapper, E
                         if (inputStream == null) {
                             throw ExceptionResultEnum.ERROR.exception("读取印品文件失败:" + printPathVo.getPdfPath());
                         }
+                        inputStream = PdfUtil.addPdfEmptyPageForWholePdf(inputStream);
                         inputStreamList.add(inputStream);
                     }
                 }
@@ -137,7 +154,7 @@ public class ExamTaskWholeServiceImpl extends ServiceImpl<ExamTaskWholeMapper, E
             File pdfFileTemp = null;
             try {
                 pdfFileTemp = SystemConstant.getFileTempVar(SystemConstant.PDF_PREFIX);
-                String mergePdf = PdfUtil.mergePdf(inputStreamList, pdfFileTemp.getAbsolutePath());
+                String mergePdf = PdfUtil.mergeWholePdf(inputStreamList, pdfFileTemp.getAbsolutePath());
                 if (StringUtils.isNotBlank(mergePdf)) {
                     File localPaperPdfFile = new File(FileUtil.replaceSplit(mergePdf));
                     String uploadFileName = PdfUtil.md5FileName(CreatePdfTypeEnum.ALL.name() + examTaskWhole.getId()) + SystemConstant.PDF_PREFIX;

+ 41 - 19
distributed-print-business/src/main/java/com/qmth/distributed/print/business/util/PdfUtil.java

@@ -1,9 +1,7 @@
 package com.qmth.distributed.print.business.util;
 
 import com.itextpdf.awt.AsianFontMapper;
-import com.itextpdf.text.Document;
-import com.itextpdf.text.DocumentException;
-import com.itextpdf.text.Element;
+import com.itextpdf.text.*;
 import com.itextpdf.text.Rectangle;
 import com.itextpdf.text.pdf.*;
 import com.qmth.boot.api.exception.ApiException;
@@ -20,6 +18,7 @@ import com.qmth.teachcloud.common.service.CommonCacheService;
 import com.qmth.teachcloud.common.util.FileUtil;
 import com.qmth.teachcloud.common.util.HtmlToPdfUtil;
 import com.qmth.teachcloud.common.util.ResultUtil;
+import jdk.internal.util.xml.impl.Input;
 import org.apache.commons.collections4.CollectionUtils;
 import org.apache.commons.io.IOUtils;
 import org.slf4j.Logger;
@@ -30,6 +29,7 @@ import org.springframework.util.FileCopyUtils;
 import javax.swing.*;
 import java.awt.*;
 import java.io.*;
+import java.nio.channels.Channels;
 import java.nio.charset.StandardCharsets;
 import java.util.List;
 import java.util.*;
@@ -143,23 +143,13 @@ public class PdfUtil {
 
     /**
      * 将多个PDF合并成一个PDF
-     *
-     * @param inputStreamList
-     * @param outputPath
      */
-    public static String mergePdf(List<InputStream> inputStreamList, String outputPath) {
+    public static String mergeWholePdf(List<InputStream> inputStreamList, String outputPath) {
         Document document = null;
         PdfCopy copy = null;
-        StringJoiner dirName = new StringJoiner("");
-        File pdfFileTemp = null;
         try {
+            document = new Document(PageSize.A3);
             if (CollectionUtils.isNotEmpty(inputStreamList)) {
-                document = new Document(new PdfReader(inputStreamList.get(0)).getPageSize(1));
-                if (Objects.isNull(outputPath)) {
-                    pdfFileTemp = SystemConstant.getFileTempVar(SystemConstant.PDF_PREFIX);
-                    dirName.add(pdfFileTemp.getPath());
-                    outputPath = dirName.toString();
-                }
                 copy = new PdfSmartCopy(document, new FileOutputStream(outputPath));
                 document.open();
                 for (int i = 0; i < inputStreamList.size(); i++) {
@@ -183,11 +173,8 @@ public class PdfUtil {
                 copy.flush();
                 copy.close();
             }
-//            if(Objects.nonNull(pdfFileTemp)){
-//                FileUtil.deleteFile(pdfFileTemp);
-//            }
         }
-        return Objects.nonNull(dirName) ? dirName.toString() : null;
+        return outputPath;
     }
 
     /**
@@ -266,6 +253,41 @@ public class PdfUtil {
         }
     }
 
+    /**
+     * 新增pdf page
+     *
+     * @param inputStream
+     * @return
+     */
+    public static InputStream addPdfEmptyPageForWholePdf(InputStream inputStream) {
+        PdfReader reader = null;
+        int pageCount;
+        byte[] readArray = new byte[0];
+        try {
+            readArray = IOUtils.toByteArray(inputStream);
+            if (readArray.length > 0) {
+                reader = new PdfReader(readArray);
+                pageCount = reader.getNumberOfPages();
+                if (Math.abs(pageCount % 2) == 1) {
+                    ByteArrayOutputStream baos = new ByteArrayOutputStream();
+                    PdfStamper stamper = new PdfStamper(reader, baos);
+                    for (int i = 1; i <= pageCount; i++) {
+                        stamper.insertPage(pageCount + 1, reader.getPageSizeWithRotation(1));
+                    }
+                    stamper.close();
+                    return new ByteArrayInputStream(baos.toByteArray());
+                }
+            }
+        } catch (Exception e) {
+            log.error(SystemConstant.LOG_ERROR, e);
+        } finally {
+            if (Objects.nonNull(reader)) {
+                reader.close();
+            }
+        }
+        return new ByteArrayInputStream(readArray);
+    }
+
     /**
      * 获取pdfPages
      *

+ 0 - 22
distributed-print-business/src/main/resources/mapper/BasicTemplateMapper.xml

@@ -65,26 +65,4 @@
         </where>
         order by create_time desc
     </select>
-
-
-    <select id="findTemplateInfoByOrgIds" resultType="com.qmth.distributed.print.business.bean.result.TemplatePrintInfoResult">
-        SELECT
-        DISTINCT (tmp.id) as templateId,
-        tmp.school_id as schoolId,
-        tmp.name as templateName,
-        tmp.classify as templateClassify,
-        tmp.attachment_id as attachmentId,
-        tmp.enable as enable,
-        tmp.remark as remark
-        FROM basic_template tmp
-        <where>
-            and tmp.enable = true
-            <if test="orgIds != null and orgIds != '' and orgIds.size() > 0">
-                AND tmp.org_id IN
-                <foreach collection="orgIds" item="item" index="index" open="(" separator="," close=")">
-                    #{item}
-                </foreach>
-            </if>
-        </where>
-    </select>
 </mapper>

+ 8 - 8
distributed-print-business/src/main/resources/mapper/ExamDetailMapper.xml

@@ -499,13 +499,13 @@
                          FROM
                              exam_task
                          WHERE
-                             exam_id = #{examId}) et ON edc.course_code = et.course_code
+                             exam_id = #{examId}) et ON edc.course_id = et.course_id
                             AND edc.paper_number = et.paper_number
                             left join sys_user su ON et.user_id = su.id
                     WHERE
                         ed.id = edc.exam_detail_id
-                        <if test="courseCode != null and courseCode != ''">
-                            and edc.course_code = #{courseCode}
+                        <if test="courseId != null">
+                            and edc.course_id = #{courseId}
                         </if>
                         <if test="paperNumber != null and paperNumber != ''">
                             and edc.paper_number = #{paperNumber}
@@ -556,7 +556,7 @@
         FROM
             (SELECT
                  edc.exam_detail_id,
-                 edc.course_code,
+                 edc.course_id,
                  edc.paper_number,
                  edc.paper_type
              FROM
@@ -614,13 +614,13 @@
              FROM
                  exam_task
              WHERE
-                 exam_id = #{examId}) et ON edc.course_code = et.course_code
+                 exam_id = #{examId}) et ON edc.course_id = et.course_id
                 AND edc.paper_number = et.paper_number
                 LEFT JOIN
              sys_user su ON et.user_id = su.id
             <where>
-                <if test="courseCode != null and courseCode != ''">
-                    and edc.course_code = #{courseCode}
+                <if test="courseId != null">
+                    and edc.course_id = #{courseId}
                 </if>
                 <if test="paperNumber != null and paperNumber != ''">
                     and edc.paper_number = #{paperNumber}
@@ -630,7 +630,7 @@
                         AND et.user_id = #{dpr.requestUserId}
                     </if>
                     <if test="dpr.courseUserId != null">
-                        AND EXISTS( SELECT 1 FROM (select course_code from teach_course where exam_id = #{examId} and user_id = #{dpr.courseUserId}) tc WHERE tc.course_code = et.course_code)
+                        AND EXISTS( SELECT 1 FROM (select course_id from teach_course where exam_id = #{examId} and user_id = #{dpr.courseUserId}) tc WHERE tc.course_id = et.course_id)
                     </if>
                     <if test="dpr.orgIdSet != null and dpr.orgIdSet != '' and dpr.orgIdSet.size > 0">
                         AND su.org_id IN

+ 3 - 1
distributed-print-business/src/main/resources/mapper/TBTaskPdfMapper.xml

@@ -35,7 +35,9 @@
             ed.exam_place,
             ed.exam_room,
             ed.exam_start_time,
-            ed.exam_end_time
+            ed.exam_end_time,
+            tp.create_time,
+            tp.update_time
         FROM
             t_b_task_pdf tp
                 LEFT JOIN

+ 3 - 4
distributed-print/install/mysql/upgrade/3.4.0.sql

@@ -129,10 +129,9 @@ CREATE TABLE `exam_task_whole` (
       `create_time` BIGINT(20) NULL COMMENT '创建时间',
       PRIMARY KEY (`id`));
 
-INSERT INTO `sys_privilege` (`id`, `name`, `url`, `type`, `parent_id`, `sequence`, `property`, `related`, `enable`, `default_auth`, `front_display`) VALUES ('1144', '任务PDF查看', 'Preview', 'BUTTON', '47', '4', 'AUTH', '1145', '1', '0', '1');
-INSERT INTO `sys_privilege` (`id`, `name`, `url`, `type`, `parent_id`, `sequence`, `property`, `enable`, `default_auth`, `front_display`) VALUES ('1145', '任务PDF查看', '/api/admin/exam/print/get_whole_pdf', 'URL', '47', '5', 'AUTH', '1', '1', '1');
-INSERT INTO `sys_privilege` (`id`, `name`, `url`, `type`, `parent_id`, `sequence`, `property`, `related`, `enable`, `default_auth`, `front_display`) VALUES ('1146', '任务PDF生成', 'CreateWholePdf', 'BUTTON', '47', '5', 'AUTH', '1147', '1', '0', '1');
-INSERT INTO `sys_privilege` (`id`, `name`, `url`, `type`, `parent_id`, `sequence`, `property`, `enable`, `default_auth`, `front_display`) VALUES ('1147', '任务PDF生成', '/api/admin/exam/print/create_whole_pdf', 'URL', '47', '6', 'AUTH', '1', '1', '1');
+INSERT INTO `sys_privilege` (`id`, `name`, `url`, `type`, `parent_id`, `sequence`, `property`, `enable`, `default_auth`, `front_display`) VALUES ('1145', '合并PDF查看', '/api/admin/exam/print/get_whole_pdf', 'URL', '47', '5', 'AUTH', '1', '1', '1');
+INSERT INTO `sys_privilege` (`id`, `name`, `url`, `type`, `parent_id`, `sequence`, `property`, `related`, `enable`, `default_auth`, `front_display`) VALUES ('1146', '合并PDF生成', 'CreateWholePdf', 'BUTTON', '47', '5', 'AUTH', '1145,1147', '1', '0', '1');
+INSERT INTO `sys_privilege` (`id`, `name`, `url`, `type`, `parent_id`, `sequence`, `property`, `enable`, `default_auth`, `front_display`) VALUES ('1147', '合并PDF生成', '/api/admin/exam/print/create_whole_pdf', 'URL', '47', '6', 'AUTH', '1', '1', '1');
 
 -- drop table if exists exam_detail_course_paper_type;
 -- drop table if exists basic_template_org;

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

@@ -109,7 +109,7 @@ public class ExamPrintTaskController {
                                 @ApiParam(value = "考试ID") @RequestParam(required = false) Long examId,
                                 @ApiParam(value = "印刷计划ID") @RequestParam(value = "printPlanId", required = false) Long printPlanId,
                                 @ApiParam(value = "印刷计划状态") @RequestParam(value = "status", required = false) String status,
-                                @ApiParam(value = "课程代码") @RequestParam(value = "courseCode", required = false) String courseCode,
+                                @ApiParam(value = "课程ID") @RequestParam(value = "courseId", required = false) Long courseId,
                                 @ApiParam(value = "试卷编号") @RequestParam(value = "paperNumber", required = false) String paperNumber,
                                 @ApiParam(value = "考点") @RequestParam(value = "examPlace", required = false) String examPlace,
                                 @ApiParam(value = "考场") @RequestParam(value = "examRoom", required = false) String examRoom,
@@ -118,7 +118,7 @@ public class ExamPrintTaskController {
                                 @ApiParam(value = "打印时间(开始)") @RequestParam(value = "printStartTime", required = false) Long printStartTime,
                                 @ApiParam(value = "打印时间(结束)") @RequestParam(value = "printEndTime", required = false) Long printEndTime,
                                 @ApiParam(value = "印刷室ID") @RequestParam(value = "printHouseId", required = false) String printHouseId) {
-        PrintTaskTotalDto printTaskTotalDto = examDetailService.taskTotalData(semesterId, examId, printPlanId, status, courseCode, paperNumber, examPlace, examRoom, examStartTime, examEndTime, printStartTime, printEndTime, SystemConstant.convertIdToLong(printHouseId));
+        PrintTaskTotalDto printTaskTotalDto = examDetailService.taskTotalData(semesterId, examId, printPlanId, status, courseId, paperNumber, examPlace, examRoom, examStartTime, examEndTime, printStartTime, printEndTime, SystemConstant.convertIdToLong(printHouseId));
         return ResultUtil.ok(printTaskTotalDto);
     }
 
@@ -241,11 +241,12 @@ public class ExamPrintTaskController {
     public Result getWholePdf(@ApiParam(value = "考试ID") @RequestParam Long examId,
                               @ApiParam(value = "课程ID") @RequestParam Long courseId,
                               @ApiParam(value = "试卷编号") @RequestParam String paperNumber) {
-        return ResultUtil.ok(examTaskWholeService.getWholePdf(examId, courseId, paperNumber));
+        return ResultUtil.success(examTaskWholeService.getWholePdf(examId, courseId, paperNumber));
     }
 
     @ApiOperation(value = "印刷任务管理-生成pdf查询")
     @RequestMapping(value = "/create_whole_pdf", method = RequestMethod.POST)
+    @OperationLogDetail(operationType = OperationTypeEnum.UPDATE, detail = "生成完整PDF操作,考试ID:{{examId}}、课程ID:{{courseId}}、试卷编号:{{paperNumber}}")
     public Result createWholePdf(@ApiParam(value = "考试ID") @RequestParam Long examId,
                                  @ApiParam(value = "课程ID") @RequestParam Long courseId,
                                  @ApiParam(value = "试卷编号") @RequestParam String paperNumber) {

+ 21 - 0
teachcloud-common/src/main/java/com/qmth/teachcloud/common/bean/result/TaskPdfResult.java

@@ -51,6 +51,11 @@ public class TaskPdfResult implements Serializable {
     @ApiModelProperty(value = "考试时间(结束)")
     private String examEndTime;
 
+    @ApiModelProperty(value = "任务创建时间")
+    private String createTime;
+    @ApiModelProperty(value = "完成时间")
+    private String updateTime;
+
     public Long getId() {
         return id;
     }
@@ -178,4 +183,20 @@ public class TaskPdfResult implements Serializable {
     public void setExamEndTime(String examEndTime) {
         this.examEndTime = examEndTime;
     }
+
+    public String getCreateTime() {
+        return createTime;
+    }
+
+    public void setCreateTime(String createTime) {
+        this.createTime = createTime;
+    }
+
+    public String getUpdateTime() {
+        return updateTime;
+    }
+
+    public void setUpdateTime(String updateTime) {
+        this.updateTime = updateTime;
+    }
 }

+ 1 - 2
teachcloud-common/src/main/java/com/qmth/teachcloud/common/enums/ClassifyEnum.java

@@ -10,9 +10,8 @@ import java.util.List;
  */
 public enum ClassifyEnum {
 
-//    CARD("通卡"),
-    SIGN("签到表"),
     PACKAGE("卷袋贴"),
+    SIGN("签到表"),
     CHECK_IN("登记表");
 
     ClassifyEnum(String name) {