Quellcode durchsuchen

推送oa的记录用合并pdf

xuzhancheng vor 1 Tag
Ursprung
Commit
447e906f57

+ 48 - 1
tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/service/boilertaskorder/BoilerTaskOrderServiceImpl.java

@@ -3884,7 +3884,8 @@ public class BoilerTaskOrderServiceImpl extends ServiceImpl<BoilerTaskOrderMappe
         String id = taskOrderItemReportDO.getId();
         // 记录模板
         DynamicTbInsDO dynamicTbInsDO = dynamicTbInsService.getDynamicRefId(id);
-        byte[] pdf1 = pdfService.pdf(dynamicTbInsDO.getTbId(), dynamicTbInsDO.getId());
+//        byte[] pdf1 = pdfService.pdf(dynamicTbInsDO.getTbId(), dynamicTbInsDO.getId());
+        byte[] pdf1 = getRecordOutputStreamMerge2(taskOrderItemReportDO.getOrderItemId());
         // 报告
         byte[] pdf2 = getRecordOutputStreamMerge(taskOrderItemReportDO.getOrderItemId());
         ExternalOAUploadAttachmentRes externalOAUploadAttachmentRes1 = externalOAService.externalOAUploadAttachment(new ByteArrayInputStream(pdf1), "检验记录_" + boilerTaskOrderDO.getOrderNo() + ".pdf");
@@ -5531,6 +5532,52 @@ public class BoilerTaskOrderServiceImpl extends ServiceImpl<BoilerTaskOrderMappe
 
     }
 
+    /**
+     * 记录合并
+     * @return
+     */
+    public byte[] getRecordOutputStreamMerge2(String orderItemId) {
+
+        List<BoilerTaskOrderItemReportDO> taskOrderReportDOS = taskOrderItemReportMapper.selectList(new LambdaQueryWrapperX<BoilerTaskOrderItemReportDO>().
+                eq(BoilerTaskOrderItemReportDO::getOrderItemId, orderItemId).
+                in(BoilerTaskOrderItemReportDO::getTaskStatus, List.of(520,600,700,710,800))
+                .orderByAsc(BoilerTaskOrderItemReportDO::getReportType)
+                .orderByAsc(BoilerTaskOrderItemReportDO::getSort));
+
+        if (CollUtil.isEmpty(taskOrderReportDOS)) {
+            return null;
+        }
+
+        try {
+            ByteArrayOutputStream mergeOutputStream = new ByteArrayOutputStream();
+            PDFMergerUtility mergerUtility = new PDFMergerUtility();
+            taskOrderReportDOS.parallelStream().forEachOrdered(taskOrderReportDO -> {
+                try {
+                    // 报告模板
+                    DynamicTbInsDO insDO = dynamicTbInsService.getDynamicRefId("record_" + taskOrderReportDO.getId());
+                    if (insDO != null) {
+                        byte[] pdf = pdfService.pdf(taskOrderReportDO.getReportTemplateId(), insDO.getId());
+                        mergerUtility.addSource(new ByteArrayInputStream(pdf));
+                    }
+                } catch (Exception e) {
+                    throw new RuntimeException(e);
+                }
+            });
+            // pdf 文件流合并
+            mergerUtility.setDestinationStream(mergeOutputStream);
+            mergerUtility.mergeDocuments(null);
+
+            // 重新生成页码
+            byte[] mergedPdfBytes = mergeOutputStream.toByteArray();
+
+            return pdfService.addPageNumbersToPdf(mergedPdfBytes);
+
+        } catch (Exception e) {
+            throw new RuntimeException(e);
+        }
+
+    }
+
     @Override
     public Boolean syncReportData(BoilerTaskOrderSyncReportVO reqVO) {
 

+ 54 - 1
tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/service/pipetaskorder/PipeTaskOrderServiceImpl.java

@@ -3100,7 +3100,8 @@ public class PipeTaskOrderServiceImpl extends ServiceImpl<PipeTaskOrderMapper, P
 
         // 记录模板
         DynamicTbInsDO dynamicTbInsDO1 = dynamicTbInsService.getDynamicRefId(taskOrderItemReportDO.getId());
-        byte[] pdf1 =  pdfService.pdf(dynamicTbInsDO1.getTbId(), dynamicTbInsDO1.getId());
+//        byte[] pdf1 =  pdfService.pdf(dynamicTbInsDO1.getTbId(), dynamicTbInsDO1.getId());
+        byte[] pdf1 =getRecordOutputStreamMerge2(pipeTaskOrderDO.getId());
         // 报告模板
         byte[] pdf2 =getRecordOutputStreamMerge(pipeTaskOrderDO.getId());
 //        byte[] pdf2 = externalOAService.pdf(dynamicTbInsDO1.getTbId(), dynamicTbInsDO1.getId());
@@ -4841,6 +4842,58 @@ public class PipeTaskOrderServiceImpl extends ServiceImpl<PipeTaskOrderMapper, P
 
     }
 
+    /**
+     * 合并记录pdf
+     * @return
+     */
+    public byte[] getRecordOutputStreamMerge2(String orderId) {
+
+//        List<PipeTaskOrderItemReportDO> taskOrderReportDOS = taskOrderItemReportMapper.selectList(new LambdaQueryWrapperX<PipeTaskOrderItemReportDO>().
+//                eq(PipeTaskOrderItemReportDO::getOrderId, orderId).
+//                in(PipeTaskOrderItemReportDO::getTaskStatus, List.of(520,600,700,710,800))
+//                .orderByDesc(PipeTaskOrderItemReportDO::getOrderItemId)
+//                .orderByAsc(PipeTaskOrderItemReportDO::getSort)
+//                .orderByAsc(PipeTaskOrderItemReportDO::getReportType)); //主报告排最前面
+
+        List<PipeTaskOrderItemReportDO> taskOrderReportDOS = taskOrderItemReportMapper.selectGenerateReportList(orderId);
+
+        if (CollUtil.isEmpty(taskOrderReportDOS)) {
+            return null;
+        }
+
+        try {
+            ByteArrayOutputStream mergeOutputStream = new ByteArrayOutputStream();
+            PDFMergerUtility mergerUtility = new PDFMergerUtility();
+
+            taskOrderReportDOS.parallelStream().forEachOrdered(taskOrderReportDO -> {
+                try {
+
+                    // 报告模板
+                    DynamicTbInsDO insDO = dynamicTbInsService.getDynamicRefId("record_" + taskOrderReportDO.getId());
+                    if (insDO != null) {
+                        byte[] pdf = pdfService.pdf(taskOrderReportDO.getReportTemplateId(), insDO.getId());
+                        mergerUtility.addSource(new ByteArrayInputStream(pdf));
+                    }
+                } catch (Exception e) {
+                    throw new RuntimeException(e);
+                }
+            });
+            // pdf 文件流合并
+            mergerUtility.setDestinationStream(mergeOutputStream);
+            mergerUtility.mergeDocuments(null);
+
+            // 重新生成页码
+            byte[] mergedPdfBytes = mergeOutputStream.toByteArray();
+            byte[] pdfWithPageNumbers = pdfService.addPageNumbersToPdf(mergedPdfBytes);
+
+            return pdfWithPageNumbers;
+
+        } catch (Exception e) {
+            throw new RuntimeException(e);
+        }
+
+    }
+
     @Override
     public PageResult<AdminUserRespDTO> getRecheckUserPage(PipeRecheckUserPageReqVO pageReqVO) {
 

+ 2 - 1
tz-module-pressure2/tz-module-pressure2-biz/src/main/resources/application-uat.yaml

@@ -136,7 +136,8 @@ tz:
     enable: false
   minio:
      host: http://192.168.19.190/cyjw/
-     hostouter: https://tjt.gzsei.cn/app-api/dexdev/
+     hostouter: http://192.168.19.190/cyjw/
+#     hostouter: https://tjt.gzsei.cn/app-api/dexdev/
   office:
     docservice:
       url: 'http://192.168.0.53:6180/'