Browse Source

演练登记簿样式修改代码提交

jingyuanchao 1 year ago
parent
commit
b68aad3837

+ 9 - 5
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/drill/service/impl/CoreDrillTaskServiceImpl.java

@@ -768,8 +768,8 @@ public class CoreDrillTaskServiceImpl extends ServiceImpl<CoreDrillTaskMapper, C
         String staticsPath = RemoteCallHandlerExecutor.executeRemoteCall(() -> fileService.getStaticPathPrefix(), ErrorMsgConstants.QUERY_FILE_PATH_ERROR).getData();
         String orgName = task.getOrgName();
         String drillSite = task.getDrillSite();
-        String startTime = DateUtil.format(task.getDrillStartTime(), "yyyy年MM月dd日 HH:mm");
-        String endTime = DateUtil.format(task.getDrillEndTime(), "HH:mm");
+        String startTime = DateUtil.format(task.getDrillStartTime(), "yyyy年MM月dd日 HH时mm分");
+        String endTime = DateUtil.format(task.getDrillEndTime(), "HH时mm分");
         String drillTime = startTime + " - " + endTime;
         String hostName = task.getHostName() == null ? StringUtil.EMPTY_STRING : task.getHostName();
         String typeText = task.getTypeText() == null ? StringUtil.EMPTY_STRING : task.getTypeText();
@@ -783,17 +783,21 @@ public class CoreDrillTaskServiceImpl extends ServiceImpl<CoreDrillTaskMapper, C
         data.put("drillTime", StringUtils.isNotEmpty(drillTime) ? drillTime : StringUtil.EMPTY_STRING);
         data.put("hostName", StringUtils.isNotEmpty(hostName) ? hostName : StringUtil.EMPTY_STRING);
         data.put("typeText", StringUtils.isNotEmpty(typeText) ? typeText : StringUtil.EMPTY_STRING);
-        data.put("imageData", getFileRealPath(Arrays.asList(task.getImageList().split(",")), prefixPath, staticsPath));
+        data.put("fileImage", getFileRealPath(Arrays.asList(task.getImageList().split(",")), prefixPath, staticsPath));
         data.put("recorderName", StringUtils.isNotEmpty(recorderName) ? recorderName : StringUtil.EMPTY_STRING);
         data.put("presetCase", StringUtils.isNotEmpty(presetCase) ? "预设案由: " + presetCase : StringUtil.EMPTY_STRING);
         data.put("drillSituation", StringUtils.isNotEmpty(drillSituation) ? "演练情况: " + drillSituation : StringUtil.EMPTY_STRING);
         data.put("comment", StringUtils.isNotEmpty(comment) ? "点评总结: " + comment : StringUtil.EMPTY_STRING);
         List<CoreDrillTaskToUser> taskUserList = task.getTaskUserList();
         if (ObjectUtil.isEmpty(taskUserList)) {
-            data.put("image", new ArrayList<>());
+            data.put("signImage", new ArrayList<>());
         } else {
             List<String> collect = taskUserList.stream().filter(item -> item.getType() == 1 && ObjectUtil.isNotEmpty(item.getSignImage())).map(CoreDrillTaskToUser::getSignImage).collect(Collectors.toList());
-            data.put("image", getFileRealPath(collect, prefixPath, staticsPath));
+            /*final String str = collect.get(0);
+            for (int i = 0; i < 6; i++) {
+                collect.add(str);
+            }*/
+            data.put("signImage", getFileRealPath(collect, prefixPath, staticsPath));
         }
         return data;
     }

+ 7 - 6
soc-modules/soc-modules-file/src/main/java/com/xunmei/file/service/LocalSysFileServiceImpl.java

@@ -254,11 +254,6 @@ public class LocalSysFileServiceImpl implements ISysFileService {
         return this.prefix + pathVo.getRelativePath();
     }
 
-    private Integer getEduTotalPageSize(Map<String, Object> data) {
-        final List<String> list = (List<String>) data.get("signImage");
-        Integer size = list.size() > 12 ? 2 : 1;
-        return ListUtil.split((List<String>) data.get("fileImage"), 2).size() + 1;
-    }
 
     @Override
     public String generateResumptionPdf(Map<String, Object> data) throws Exception {
@@ -352,7 +347,8 @@ public class LocalSysFileServiceImpl implements ISysFileService {
         orgCell.setRowspan(1);
         orgCell.setBorder(Rectangle.NO_BORDER);
         orgCell.setHorizontalAlignment(Element.ALIGN_LEFT);*/
-
+        PdfPCell checkUserCell1 = new PdfPCell(new Phrase(checkUser, font));
+        checkUserCell1.setColspan(15);
         PdfPCell checkUserCell = new PdfPCell(new Phrase(checkUser, font));
         checkUserCell.setColspan(20);
         checkUserCell.setRowspan(1);
@@ -388,8 +384,13 @@ public class LocalSysFileServiceImpl implements ISysFileService {
         final PdfPTable table = pdfTableVo.getTable();
         final BaseFont fs = pdfTableVo.getFs();
         final Font tableFont = pdfTableVo.getTableFont();
+
+        writer.setPageEvent(new PdfPageHelperEvent(ListUtil.split((List<String>) data.get("fileImage"), 6).size() + 1, writer, fs,tableFont));
+        document.open();
         PdfUtil.dealHeader(document, fs, "预 案 演 练 记 录", 24);
         PdfUtil.dealDrillBody(document, table, tableFont, data);
+
+
         document.close();
         writer.close();
         log.info("预案演练登记簿生成结束,当前绝对地址为:{}", afterStr);

+ 30 - 81
soc-modules/soc-modules-file/src/main/java/com/xunmei/file/utils/PdfUtil.java

@@ -325,104 +325,53 @@ public class PdfUtil {
     }
 
     public static void dealDrillBody(Document document, PdfPTable table, Font tableFont, Map<String, Object> data) throws Exception {
-        table.setSplitLate(false);
-        table.setSplitRows(true);
         //第一行
         createPDFCell(tableFont, table, "演练单位", Element.ALIGN_CENTER, 1, 1);
         createPDFCell(tableFont, table, data.get("orgName").toString(), Element.ALIGN_CENTER, 2, 1);
         createPDFCell(tableFont, table, "地点", Element.ALIGN_CENTER, 1, 1);
         createPDFCell(tableFont, table, data.get("drillSite").toString(), Element.ALIGN_CENTER, 2, 1);
         //第二行
-        createPDFCell(tableFont, table, "演练时间", Element.ALIGN_CENTER, 1, 1);
-        createPDFCell(tableFont, table, data.get("drillTime").toString(), Element.ALIGN_CENTER, 2, 1);
-        createPDFCell(tableFont, table, "演练项目", Element.ALIGN_CENTER, 1, 1);
-        createPDFCell(tableFont, table, data.get("typeText").toString(), Element.ALIGN_CENTER, 2, 1);
-        //第三行
         createPDFCell(tableFont, table, "指挥人", Element.ALIGN_CENTER, 1, 1);
         createPDFCell(tableFont, table, data.get("hostName").toString(), Element.ALIGN_CENTER, 2, 1);
         createPDFCell(tableFont, table, "记录人", Element.ALIGN_CENTER, 1, 1);
         createPDFCell(tableFont, table, data.get("recorderName").toString(), Element.ALIGN_CENTER, 2, 1);
-
+        //第三行
+        createPDFCell(tableFont, table, "演练时间", Element.ALIGN_CENTER, 1, 1);
+        createPDFCell(tableFont, table, data.get("drillTime").toString(), Element.ALIGN_LEFT, 5, 1);
+        createPDFCell(tableFont, table, "演练项目", Element.ALIGN_CENTER, 1, 1);
+        createPDFCell(tableFont, table, data.get("typeText").toString(), Element.ALIGN_LEFT, 5, 1);
         //预设案由
-        PdfPCell contentCell = new PdfPCell();
-        contentCell.setColspan(6);
-        final Paragraph presetCase = new Paragraph(new Chunk(data.get("presetCase").toString(), tableFont));
-        presetCase.setSpacingAfter(8F);
-        contentCell.addElement(presetCase);
-        contentCell.setBorder(Rectangle.LEFT | Rectangle.RIGHT | Rectangle.BOTTOM);
-        table.addCell(contentCell);
-        dealDrillImageCell(data.get("drillSituation").toString(), tableFont, (List<String>) data.get("imageData"), table);
-        dealDrillImageCell("参会演练人员(签字):", tableFont, (List<String>) data.get("image"), table);
-       /* //演练情况
-        PdfPCell noteCell = new PdfPCell();
-        noteCell.setColspan(6);
-        Paragraph noteParagraph = new Paragraph(new Chunk(data.get("drillSituation").toString(), tableFont));
-        noteParagraph.setSpacingAfter(8F);
-        noteCell.addElement(noteParagraph);
-        noteCell.setBorder(Rectangle.LEFT | Rectangle.RIGHT | Rectangle.BOTTOM);
-        final List<String> imageDataList = (List<String>) data.get("imageData");
-        final int imageDataAddNums = imageDataList.size() % 3;
-        for (int i = 0; i < 3 - imageDataAddNums; i++) {
-            imageDataList.add("black.png");
-        }
-        PdfPTable imageDataInnerTable = new PdfPTable(3);
-        for (String str : imageDataList) {
-            Image imageData = convertFileToByteArray(new File(str));
-            if (imageData != null) {
-                imageData.scaleAbsolute(130, 130);
-            }
-            PdfPCell cell = new PdfPCell(imageData);
-            cell.setBorder(Rectangle.NO_BORDER);
-            cell.setHorizontalAlignment(Element.ALIGN_CENTER);
-            cell.setVerticalAlignment(Element.ALIGN_MIDDLE);
-            imageDataInnerTable.addCell(cell);
-        }
-        noteCell.addElement(imageDataInnerTable);
-        table.addCell(noteCell);
-
-        //签字区域
-        PdfPCell signCell = new PdfPCell();
-        signCell.setColspan(6);
-        final Paragraph paragraph1 = new Paragraph(new Chunk("参会演练人员(签字):", tableFont));
-        paragraph1.setSpacingAfter(8F);
-        signCell.addElement(paragraph1);
-        signCell.setBorder(Rectangle.LEFT | Rectangle.RIGHT);
-        final List<String> imageList = (List<String>) data.get("image");
-        final int imageAddNums = imageList.size() % 3;
-        for (int i = 0; i < 3 - imageAddNums; i++) {
-            imageList.add("black.png");
-        }
-        PdfPTable imageInnerTable = new PdfPTable(3);
-        for (String str : imageList) {
-            Image imageData = convertFileToByteArray(new File(str));
-            if (imageData != null) {
-                imageData.scaleAbsolute(130, 130);
-            }
-            PdfPCell cell = new PdfPCell(imageData);
-            cell.setBorder(Rectangle.NO_BORDER);
-            cell.setHorizontalAlignment(Element.ALIGN_CENTER);
-            cell.setVerticalAlignment(Element.ALIGN_MIDDLE);
-            imageInnerTable.addCell(cell);
-        }
-        signCell.addElement(imageInnerTable);
-        table.addCell(signCell);*/
-
-
+        createPDFCell(tableFont, table, "预设案由", Element.ALIGN_MIDDLE, 1, 140);
+        createPDFCell(tableFont, table, data.get("presetCase").toString(), Element.ALIGN_LEFT, 5, 140);
+        //演练情况
+        createPDFCell(tableFont, table, "演练情况", Element.ALIGN_MIDDLE, 1, 140);
+        createPDFCell(tableFont, table, data.get("drillSituation").toString(), Element.ALIGN_LEFT, 5, 140);
         //点评总结
-        PdfPCell commentCell = new PdfPCell();
-        commentCell.setColspan(6);
-        commentCell.addElement(new Paragraph(new Chunk(data.get("comment").toString(), tableFont)));
-        table.addCell(commentCell);
+        createPDFCell(tableFont, table, "点评总结", Element.ALIGN_MIDDLE, 1, 140);
+        createPDFCell(tableFont, table, data.get("comment").toString(), Element.ALIGN_LEFT, 5, 140);
+        //参会人员签字
+        createPDFCell(tableFont, table, "参会人员签字", Element.ALIGN_MIDDLE, 1, 140);
+        dealEduImageCell((List<String>) data.get("signImage"), table, 5, 30, 30);
         document.add(table);
+
+        //第二页
+        //按6份等分图片数组,一页只显示6张
+        final List<List<String>> listList = ListUtil.split((List<String>) data.get("fileImage"), 6);
+        for (List<String> stringList : listList) {
+            PdfPTable innerTable = new PdfPTable(6);
+            createPDFCell(tableFont, innerTable, "图片附件", Element.ALIGN_MIDDLE, 1, 1);
+            innerTable.setSpacingBefore(10f);
+            //一行展示一张图片
+            dealEduImageCell(new ArrayList<>(stringList), innerTable, 2, 150, 200);
+            document.newPage();
+             document.add(innerTable);
+         }
     }
 
-    public static void dealDrillImageCell(String chunk, Font tableFont, List<String> imageList, PdfPTable table) throws Exception {
+    public static void dealDrillImageCell( List<String> imageList, PdfPTable table) throws Exception {
         //签字区域
         PdfPCell outCell = new PdfPCell();
-        outCell.setColspan(6);
-        final Paragraph paragraph1 = new Paragraph(new Chunk(chunk, tableFont));
-        paragraph1.setSpacingAfter(8F);
-        outCell.addElement(paragraph1);
+        outCell.setColspan(5);
         outCell.setBorder(Rectangle.LEFT | Rectangle.RIGHT | Rectangle.BOTTOM);
         final int imageAddNums = imageList.size() % 3;
         if (imageAddNums != 0) {