Ver Fonte

多卷型生成pdf

xiaof há 3 anos atrás
pai
commit
d6f23a0a09

+ 8 - 8
distributed-print-business/src/main/java/com/qmth/distributed/print/business/bean/dto/PdfDto.java

@@ -16,7 +16,7 @@ public class PdfDto {
     String path;
 
     @ApiModelProperty(name = "页数")
-    int pageCount = 0;
+    String pageCount;
 
     @ApiModelProperty(name = "实际页数")
     int actualPageCount = 0;
@@ -39,31 +39,31 @@ public class PdfDto {
         this.pageSize = pageSize;
     }
 
-    public PdfDto(String path, PageSizeEnum pageSize, int pageCount) {
+    public PdfDto(String path, PageSizeEnum pageSize, String pageCount) {
         this.path = path;
         this.pageSize = pageSize;
         this.pageCount = pageCount;
     }
 
-    public PdfDto(String path, PageSizeEnum pageSize, int pageCount, int sequence) {
+    public PdfDto(String path, PageSizeEnum pageSize, String pageCount, int sequence) {
         this.path = path;
         this.pageSize = pageSize;
         this.pageCount = pageCount;
         this.sequence = sequence;
     }
 
-    public PdfDto(PageSizeEnum pageSize, int pageCount, boolean tag) {
+    public PdfDto(PageSizeEnum pageSize, String pageCount, boolean tag) {
         this.pageSize = pageSize;
         this.pageCount = pageCount;
         this.tag = tag;
     }
 
-    public PdfDto(PageSizeEnum pageSize, int pageCount) {
+    public PdfDto(PageSizeEnum pageSize, String pageCount) {
         this.pageSize = pageSize;
         this.pageCount = pageCount;
     }
 
-    public PdfDto(PageSizeEnum pageSize, int pageCount, int actualPageCount) {
+    public PdfDto(PageSizeEnum pageSize, String pageCount, int actualPageCount) {
         this.pageSize = pageSize;
         this.pageCount = pageCount;
         this.actualPageCount = actualPageCount;
@@ -85,11 +85,11 @@ public class PdfDto {
         this.path = path;
     }
 
-    public int getPageCount() {
+    public String getPageCount() {
         return pageCount;
     }
 
-    public void setPageCount(int pageCount) {
+    public void setPageCount(String pageCount) {
         this.pageCount = pageCount;
     }
 

+ 3 - 3
distributed-print-business/src/main/java/com/qmth/distributed/print/business/entity/ExamDetailCourse.java

@@ -49,7 +49,7 @@ public class ExamDetailCourse extends BaseEntity implements Serializable {
     private Integer totalSubjects;
 
     @TableField("paper_pages_a3")
-    private Integer paperPagesA3;
+    private String paperPagesA3;
 
     @TableField("card_pages_a3")
     private Integer cardPagesA3;
@@ -138,11 +138,11 @@ public class ExamDetailCourse extends BaseEntity implements Serializable {
         return serialVersionUID;
     }
 
-    public Integer getPaperPagesA3() {
+    public String getPaperPagesA3() {
         return paperPagesA3;
     }
 
-    public void setPaperPagesA3(Integer paperPagesA3) {
+    public void setPaperPagesA3(String paperPagesA3) {
         this.paperPagesA3 = paperPagesA3;
     }
 

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

@@ -291,7 +291,7 @@ public class TaskLogicServiceImpl implements TaskLogicService {
                     examTaskDetail.setRelatePaperType(paperType);
                     examDetailCourse.setPaperType(paperType);
 
-                    PaperPdfDto paperPdfDto = null;
+                    List<PaperPdfDto> paperPdfDto = null;
                     if (printContent.contains("PAPER")) {
                         paperPdfDto = createPdfUtil.getPaperPdfFile(paperType, examTaskDetail);
                     }
@@ -327,11 +327,16 @@ public class TaskLogicServiceImpl implements TaskLogicService {
                                     .eq(ExamStudent::getExamDetailCourseId, examDetailCourse.getId());
                             List<ExamStudent> examStudentList = examStudentService.list(examStudentQueryWrapper);
 
+                            List<String> paperTypes = Arrays.asList(paperType.split(","));
+                            int i = 0;
                             for (ExamStudent t : examStudentList) {
                                 if (Objects.nonNull(pdfDto)) {
                                     createPdfUtil.getExamStudentPaperPdf(paperPdfDto, paperPdfTempList);
                                 }
+                                int mod = i % examTaskDetail.getDrawCount().intValue();
+                                t.setPaperType(paperTypes.get(mod));
                                 basicAttachmentList.add(createPdfUtil.examStudentHtml(attachmentIds, studentContent, t, examDetail, examDetailCourse, sysUser.getId(), examStudentTempPdfList));
+                                i++;
                             }
                             list[2].addAll(paperPdfTempList);
                             list[3].addAll(examStudentTempPdfList);

+ 29 - 20
distributed-print-business/src/main/java/com/qmth/distributed/print/business/util/CreatePdfUtil.java

@@ -399,12 +399,16 @@ public class CreatePdfUtil {
      * @return
      * @throws IOException
      */
-    public PdfDto getExamStudentPaperPdf(PaperPdfDto paperPdfDto, List<PdfDto> pdfList) throws IOException {
-        if (Objects.nonNull(paperPdfDto)) {
-            int pages = paperPdfDto.getPages();
-            PdfDto pdfDto = PdfUtil.addPdfPage(paperPdfDto.getFile());
-            pdfList.add(new PdfDto(paperPdfDto.getFile().getPath(), PageSizeEnum.A3, pdfDto.getPageCount()));
-            return new PdfDto(PageSizeEnum.A3, pages);
+    public PdfDto getExamStudentPaperPdf(List<PaperPdfDto> paperPdfDto, List<PdfDto> pdfList) throws IOException {
+        Set<String> pagesList = new HashSet<>();
+        if (!CollectionUtils.isEmpty(paperPdfDto)) {
+            for (PaperPdfDto dto : paperPdfDto) {
+                int pages = dto.getPages();
+                pagesList.add(String.valueOf(pages));
+                PdfDto pdfDto = PdfUtil.addPdfPage(dto.getFile());
+                pdfList.add(new PdfDto(dto.getFile().getPath(), PageSizeEnum.A3, pdfDto.getPageCount()));
+            }
+            return new PdfDto(PageSizeEnum.A3, String.join(",", pagesList));
         } else {
             return null;
         }
@@ -419,15 +423,21 @@ public class CreatePdfUtil {
      * @return
      * @throws IOException
      */
-    public PdfDto getPaperPdf(PaperPdfDto paperPdfDto, Integer backupCount, List<PdfDto> pdfList) throws IOException {
-        if (Objects.nonNull(paperPdfDto)) {
-            int pages = paperPdfDto.getPages();
-            boolean tag = pages > 2 ? true : false;
-            PdfDto pdfDto = PdfUtil.addPdfPage(paperPdfDto.getFile());
-            for (int j = 1; j <= backupCount; j++) {
-                pdfList.add(new PdfDto(paperPdfDto.getFile().getPath(), PageSizeEnum.A3, pdfDto.getPageCount()));
+    public PdfDto getPaperPdf(List<PaperPdfDto> paperPdfDto, Integer backupCount, List<PdfDto> pdfList) throws IOException {
+        Set<String> pagesList = new HashSet<>();
+        boolean tag = false;
+        if (!CollectionUtils.isEmpty(paperPdfDto)) {
+            for (PaperPdfDto dto : paperPdfDto) {
+                int pages = dto.getPages();
+                pagesList.add(String.valueOf(pages));
+                tag = pages > 2;
+                PdfDto pdfDto = PdfUtil.addPdfPage(dto.getFile());
+                for (int j = 1; j <= backupCount; j++) {
+                    pdfList.add(new PdfDto(dto.getFile().getPath(), PageSizeEnum.A3, pdfDto.getPageCount()));
+                }
             }
-            return new PdfDto(PageSizeEnum.A3, pages, tag);
+
+            return new PdfDto(PageSizeEnum.A3, String.join(",", pagesList), tag);
         } else {
             return null;
         }
@@ -441,7 +451,7 @@ public class CreatePdfUtil {
      * @return
      * @throws IOException
      */
-    public PaperPdfDto getPaperPdfFile(String paperType, ExamTaskDetail examTaskDetail) throws IOException {
+    public List<PaperPdfDto> getPaperPdfFile(String paperType, ExamTaskDetail examTaskDetail) throws IOException {
         String[] paperTypes = paperType.split(",");
         List<PaperPdfDto> paperPdfDtoList = new ArrayList<>();
         PaperPdfDto paperPdfDto = null;
@@ -467,7 +477,7 @@ public class CreatePdfUtil {
 
             }
         }
-        return paperPdfDto;
+        return paperPdfDtoList;
     }
 
     /**
@@ -726,8 +736,8 @@ public class CreatePdfUtil {
         }
         studentHtml = studentHtml.replaceAll("\\$\\{examNumberStr\\}", t.getTicketNumber());
         //随机生成学生试卷条码并将图片转成base64
-        if (Objects.nonNull(examDetailCourse.getPaperType())) {
-            studentHtml = studentHtml.replaceAll("\\$\\{paperType\\}", GoogleBarCodeUtil.createBarCode(SystemConstant.convertPaperType(examDetailCourse.getPaperType()), false));
+        if (Objects.nonNull(t.getPaperType())) {
+            studentHtml = studentHtml.replaceAll("\\$\\{paperType\\}", GoogleBarCodeUtil.createBarCode(SystemConstant.convertPaperType(t.getPaperType()), false));
         }
         Map<String, Object> map = ConvertUtil.analyzeDateAndTime(examDetail.getExamStartTime(), examDetail.getExamEndTime());
         String examDate = Objects.nonNull(map.get("date")) ? (String) map.get("date") : "";
@@ -736,7 +746,7 @@ public class CreatePdfUtil {
         studentHtml = studentHtml.replaceAll("\\$\\{examTime\\}", examTime);
         studentHtml = studentHtml.replaceAll("\\$\\{ticketNumber\\}", t.getTicketNumber());
         studentHtml = studentHtml.replaceAll("\\$\\{siteNumber\\}", t.getSiteNumber());
-        studentHtml = studentHtml.replaceAll("\\$\\{paperTypeName\\}", examDetailCourse.getPaperType());
+        studentHtml = studentHtml.replaceAll("\\$\\{paperTypeName\\}", t.getPaperType());
         studentHtml = studentHtml.replaceAll("\\$\\{studentCode\\}", t.getStudentCode());
         studentHtml = studentHtml.replaceAll("\\$\\{studentName\\}", t.getStudentName());
         studentHtml = studentHtml.replaceAll("\\$\\{courseName\\}", examDetailCourse.getCourseName());
@@ -748,7 +758,6 @@ public class CreatePdfUtil {
         //学生题卡
         BasicAttachment examStudentAttachment = printCommonService.saveAttachmentHtml(examDetail.getSchoolId() + "|" + examDetailCourse.getCourseCode() + "|" + t.getTicketNumber(), studentHtml, userId, examStudentPdfList);
         t.setAttachmentId(examStudentAttachment.getId());
-        t.setPaperType(examDetailCourse.getPaperType());
         return examStudentAttachment;
     }