xy 1 deň pred
rodič
commit
b9db0160e3
11 zmenil súbory, kde vykonal 244 pridanie a 30 odobranie
  1. 10 0
      tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/controller/admin/boilertaskorder/vo/BoilerTaskOrderArchiveDetailRespVO.java
  2. 10 0
      tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/controller/admin/pipetaskorder/vo/PipeTaskOrderArchiveDetailRespVO.java
  3. 6 0
      tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/controller/admin/pipetaskorderinput/PipeTaskOrderInputController.java
  4. 19 0
      tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/service/boilertaskorder/BoilerTaskOrderServiceImpl.java
  5. 49 15
      tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/service/boilertaskorderissuereport/BoilerTaskOrderIssueReportServiceImpl.java
  6. 1 0
      tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/service/pdf/PdfService.java
  7. 32 0
      tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/service/pdf/PdfServiceImpl.java
  8. 18 0
      tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/service/pipetaskorder/PipeTaskOrderServiceImpl.java
  9. 9 0
      tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/service/pipetaskorderinput/PipeTaskOrderInputService.java
  10. 43 0
      tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/service/pipetaskorderinput/PipeTaskOrderInputServiceImpl.java
  11. 47 15
      tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/service/pipetaskorderissuereport/PipeTaskOrderIssueReportServiceImpl.java

+ 10 - 0
tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/controller/admin/boilertaskorder/vo/BoilerTaskOrderArchiveDetailRespVO.java

@@ -100,6 +100,10 @@ public class BoilerTaskOrderArchiveDetailRespVO implements Serializable {
 
         @Schema(description = "检验员", example = "6948")
         private String checkName;
+
+        @Schema(description = "pdf文件地址", example = "6948")
+        private String filePdf;
+
     }
 
     @Data
@@ -127,6 +131,12 @@ public class BoilerTaskOrderArchiveDetailRespVO implements Serializable {
 
         @Schema(description = "完成时间", example = "6948")
         private LocalDateTime completionTime;
+
+        @Schema(description = "模板ID", example = "6948")
+        private String templateId;
+
+        @Schema(description = "pdf文件地址", example = "6948")
+        private String filePdf;
     }
 
 }

+ 10 - 0
tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/controller/admin/pipetaskorder/vo/PipeTaskOrderArchiveDetailRespVO.java

@@ -103,6 +103,9 @@ public class PipeTaskOrderArchiveDetailRespVO implements Serializable {
 
         @Schema(description = "检验员", example = "6948")
         private String checkName;
+
+        @Schema(description = "pdf文件地址", example = "6948")
+        private String filePdf;
     }
 
     @Data
@@ -130,6 +133,13 @@ public class PipeTaskOrderArchiveDetailRespVO implements Serializable {
 
         @Schema(description = "完成时间", example = "6948")
         private LocalDateTime completionTime;
+
+        @Schema(description = "模板ID", example = "6948")
+        private String templateId;
+
+        @Schema(description = "pdf文件地址", example = "6948")
+        private String filePdf;
+
     }
 
 }

+ 6 - 0
tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/controller/admin/pipetaskorderinput/PipeTaskOrderInputController.java

@@ -91,4 +91,10 @@ public class PipeTaskOrderInputController {
     public void downloadPipeTaskOrderInput(@Validated @RequestBody List<PipeTaskOrderInputPrintReqVO> printReqVOS, HttpServletResponse response) throws Exception {
         pipeTaskOrderInputService.downloadPipeTaskOrderInput(printReqVOS, response);
     }
+
+    @PostMapping("/downloadPdf")
+    @Operation(summary = "下载管道检测项目PDF")
+    public void downloadPipeTaskOrderInputPdf(@Validated @RequestBody PipeTaskOrderInputPrintReqVO printReqVO, HttpServletResponse response) throws Exception {
+        pipeTaskOrderInputService.downloadPipeTaskOrderInputPdf(printReqVO, response);
+    }
 }

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

@@ -236,6 +236,7 @@ import java.time.LocalDateTime;
 import java.time.ZoneId;
 import java.time.format.DateTimeFormatter;
 import java.util.*;
+import java.util.concurrent.CompletableFuture;
 import java.util.concurrent.TimeUnit;
 import java.util.concurrent.atomic.AtomicReference;
 import java.util.function.Function;
@@ -3823,6 +3824,24 @@ public class BoilerTaskOrderServiceImpl extends ServiceImpl<BoilerTaskOrderMappe
                 syncReportVO_rp.setRefId(taskOrderAuditSingleVO.getId());
                 syncReportVO_rp.setReportType("report");
                 syncReportData(syncReportVO_rp);
+
+                if (TaskOrderItemReportTypeEnum.SUB_REPORT.getType().equals(boilerTaskOrderItemReportDO.getReportType())){
+                    //子项目生成报告PDF
+                    CompletableFuture.runAsync(() -> {
+                        try {
+                            log.info("记录校核生成PDF");
+                            byte[] bytes = pdfService.pdfByRefId(dynamicTbDOReport.getId(), "report_" + itemReportDO.getId());
+                            String fileUrl = fileApi.createFile(bytes);
+                            BoilerTaskOrderItemReportDO updateIssueDo = new BoilerTaskOrderItemReportDO();
+                            updateIssueDo.setId(taskOrderAuditSingleVO.getId());
+                            updateIssueDo.setIssueUrl(fileUrl);
+                            taskOrderItemReportMapper.updateById(updateIssueDo);
+                        } catch (Exception e) {
+                            log.error("记录校核生成PDF错误,{}", e.getMessage());
+                        }
+                    });
+                }
+
             }
 
             if (dynamicTbDOResult != null){

+ 49 - 15
tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/service/boilertaskorderissuereport/BoilerTaskOrderIssueReportServiceImpl.java

@@ -797,7 +797,7 @@ public class BoilerTaskOrderIssueReportServiceImpl extends ServiceImpl<BoilerTas
                             throw new RuntimeException(e);
                         }
                         if (EnvConstants.ENV_UAT.equals(env) || EnvConstants.ENV_PROD.equals(env)) {
-                            this.issueReportPush(taskOrderItemDO.getId());
+                            //this.issueReportPush(taskOrderItemDO.getId());
                         }
                     } catch (Exception e) {
                         log.error("邮件发送失败", e);
@@ -881,7 +881,7 @@ public class BoilerTaskOrderIssueReportServiceImpl extends ServiceImpl<BoilerTas
                             }
                             taskOrderItemMapper.updateById(updateOb);
                             if (EnvConstants.ENV_UAT.equals(env) || EnvConstants.ENV_PROD.equals(env)) {
-                                this.issueReportPush(taskOrderItemDO.getId());
+//                                this.issueReportPush(taskOrderItemDO.getId());
                             }
                         }
                     } catch (Exception e) {
@@ -1454,7 +1454,7 @@ public class BoilerTaskOrderIssueReportServiceImpl extends ServiceImpl<BoilerTas
                                 throw new RuntimeException(e);
                             }
                             if (EnvConstants.ENV_UAT.equals(env) || EnvConstants.ENV_PROD.equals(env)) {
-                                this.issueReportPush(taskOrderItemDO.getId());
+//                                this.issueReportPush(taskOrderItemDO.getId());
                             }
                         } catch (Exception e) {
                             log.error("邮件发送失败", e);
@@ -1538,7 +1538,7 @@ public class BoilerTaskOrderIssueReportServiceImpl extends ServiceImpl<BoilerTas
                                 }
                                 taskOrderItemMapper.updateById(updateOb);
                                 if (EnvConstants.ENV_UAT.equals(env) || EnvConstants.ENV_PROD.equals(env)) {
-                                    this.issueReportPush(taskOrderItemDO.getId());
+//                                    this.issueReportPush(taskOrderItemDO.getId());
                                 }
                             }
                         } catch (Exception e) {
@@ -2131,7 +2131,8 @@ public class BoilerTaskOrderIssueReportServiceImpl extends ServiceImpl<BoilerTas
                 list.forEach(x -> {
                     if (x.getSignFilePdf() == null || x.getSignFilePdf().isEmpty()){
                         if (x.getSecurityCheckId() != null){
-                            DynamicTbInsDO InsDO = dynamicTbInsMapper.selectOne(new LambdaQueryWrapperX<DynamicTbInsDO>().eq(DynamicTbInsDO::getRefId, x.getSecurityCheckId()),false);;
+                            DynamicTbInsDO InsDO = dynamicTbInsMapper.selectOne(new LambdaQueryWrapperX<DynamicTbInsDO>()
+                                    .eq(DynamicTbInsDO::getRefId, x.getSecurityCheckId()),false);;
                             if (InsDO != null){
                                 try {
                                     byte[] bytes = pdfService.pdf(InsDO.getTbId(), InsDO.getId());
@@ -2249,14 +2250,10 @@ public class BoilerTaskOrderIssueReportServiceImpl extends ServiceImpl<BoilerTas
                                 .eq(BoilerTaskOrderItemReportDO::getOrderItemId, x.getOrderItemId()),false);
                         if (itemReportDO != null){
                             try {
-                                DynamicTbInsDO dynamicTbInsDO = dynamicTbInsMapper.selectOne(new LambdaQueryWrapperX<DynamicTbInsDO>()
-                                        .eq(DynamicTbInsDO::getRefId, itemReportDO.getId()),false);
-                                if (dynamicTbInsDO != null){
-                                    byte[] bytes = pdfService.pdf(itemReportDO.getTemplateId(), dynamicTbInsDO.getId());
-                                    String fileUrl = fileApi.createFile(bytes);
-                                    x.setSignFilePdf(fileUrl);
-                                    updateList.add(new BoilerTaskOrderSignFileDO().setId(x.getId()).setSignFilePdf(fileUrl));
-                                }
+                                byte[] bytes = pdfService.pdfByRefId(itemReportDO.getTemplateId(), itemReportDO.getId());
+                                String fileUrl = fileApi.createFile(bytes);
+                                x.setSignFilePdf(fileUrl);
+                                updateList.add(new BoilerTaskOrderSignFileDO().setId(x.getId()).setSignFilePdf(fileUrl));
                             } catch (Exception e) {
                                 log.error("生成重大问题线索PDF错误,{}", e.getMessage());
                             }
@@ -2306,7 +2303,7 @@ public class BoilerTaskOrderIssueReportServiceImpl extends ServiceImpl<BoilerTas
             }
 
             //获取检验项目
-            List<BoilerTaskOrderItemReportDO> list = taskOrderItemReportDOS.stream().filter(x -> Arrays.asList(100, 200, 300, 400, 900).contains(x.getReportType())).toList();
+            List<BoilerTaskOrderItemReportDO> list = taskOrderItemReportDOS.stream().filter(x -> Arrays.asList(100, 200, 300).contains(x.getReportType())).toList();
             if (CollUtil.isNotEmpty(list)) {
                 //获取所有报告id
                 List<String> reportIds = list.stream().map(BoilerTaskOrderItemReportDO::getId).toList();
@@ -2330,6 +2327,7 @@ public class BoilerTaskOrderIssueReportServiceImpl extends ServiceImpl<BoilerTas
                 }
 
                 List<BoilerTaskOrderArchiveDetailRespVO.InspectionItem> inspectionItems = new ArrayList<>();
+                List<BoilerTaskOrderItemReportDO> updateIssueReportList = new ArrayList<>();
                 for (BoilerTaskOrderItemReportDO taskOrderItemReportDO : list) {
                     BoilerTaskOrderArchiveDetailRespVO.InspectionItem inspectionItem = new BoilerTaskOrderArchiveDetailRespVO.InspectionItem();
                     inspectionItem.setOrderId(taskOrderItemReportDO.getOrderId());
@@ -2340,6 +2338,20 @@ public class BoilerTaskOrderIssueReportServiceImpl extends ServiceImpl<BoilerTas
                     inspectionItem.setReportTemplateId(taskOrderItemReportDO.getReportTemplateId());
                     inspectionItem.setTaskStatus(taskOrderItemReportDO.getTaskStatus());
                     inspectionItem.setProjectName(taskOrderItemReportDO.getReportName());
+                    if (taskOrderItemReportDO.getIssueUrl() != null && !taskOrderItemReportDO.getIssueUrl().isEmpty()){
+                        inspectionItem.setFilePdf(taskOrderItemReportDO.getIssueUrl());
+                    }else{
+                        //生成文件PDF
+                        try {
+                            byte[] bytes = pdfService.pdfByRefId(taskOrderItemReportDO.getReportTemplateId(), "report_" + taskOrderItemReportDO.getId());
+                            String fileUrl = fileApi.createFile(bytes);
+                            BoilerTaskOrderItemReportDO updateItemReportDO = new BoilerTaskOrderItemReportDO().setId(taskOrderItemReportDO.getId()).setIssueUrl(fileUrl);
+                            updateIssueReportList.add(updateItemReportDO);
+                            inspectionItem.setFilePdf(fileUrl);
+                        } catch (Exception e) {
+                            log.error("{} 生成检验项目PDF失败,{}", taskOrderItemReportDO.getId(),e.getMessage());
+                        }
+                    }
                     //独走报告需要获取关联作业指导书
                     if (Integer.valueOf(300).equals(taskOrderItemReportDO.getReportType())) {
                         List<BoilerTaskOrderItemReportDO> list1 = taskOrderItemReportDOS.stream()
@@ -2388,11 +2400,15 @@ public class BoilerTaskOrderIssueReportServiceImpl extends ServiceImpl<BoilerTas
                     inspectionItems.add(inspectionItem);
                 }
                 taskOrderArchiveDetail.setInspectionItems(inspectionItems);
+                if (!updateIssueReportList.isEmpty()){
+                    taskOrderItemReportMapper.updateBatch(updateIssueReportList);
+                }
             }
 
             //获取项目文件
-            List<BoilerTaskOrderItemReportDO> list1 = taskOrderItemReportDOS.stream().filter(x -> Arrays.asList(600, 700).contains(x.getReportType())).toList();
+            List<BoilerTaskOrderItemReportDO> list1 = taskOrderItemReportDOS.stream().filter(x -> Arrays.asList(600, 700, 400).contains(x.getReportType())).toList();
             if (CollUtil.isNotEmpty(list1)) {
+                List<BoilerTaskOrderItemReportDO> updateIssueReportList = new ArrayList<>();
                 List<BoilerTaskOrderArchiveDetailRespVO.ItemFile> itemFiles = new ArrayList<>();
                 for (BoilerTaskOrderItemReportDO taskOrderItemReportDO : list1) {
                     BoilerTaskOrderArchiveDetailRespVO.ItemFile itemFile = new BoilerTaskOrderArchiveDetailRespVO.ItemFile();
@@ -2402,9 +2418,27 @@ public class BoilerTaskOrderIssueReportServiceImpl extends ServiceImpl<BoilerTas
                     itemFile.setReportType(taskOrderItemReportDO.getReportType());
                     itemFile.setReportId(taskOrderItemReportDO.getId());
                     itemFile.setCompletionTime(taskOrderItemReportDO.getRatifyTime());
+                    itemFile.setTemplateId(taskOrderItemReportDO.getTemplateId());
+                    if (taskOrderItemReportDO.getIssueUrl() != null&& !taskOrderItemReportDO.getIssueUrl().isEmpty()){
+                        itemFile.setFilePdf(taskOrderItemReportDO.getIssueUrl());
+                    }else{
+                        //生成文件PDF
+                        try {
+                            byte[] bytes = pdfService.pdfByRefId(taskOrderItemReportDO.getTemplateId(), taskOrderItemReportDO.getId());
+                            String fileUrl = fileApi.createFile(bytes);
+                            BoilerTaskOrderItemReportDO updateItemReportDO = new BoilerTaskOrderItemReportDO().setId(taskOrderItemReportDO.getId()).setIssueUrl(fileUrl);
+                            updateIssueReportList.add(updateItemReportDO);
+                            itemFile.setFilePdf(fileUrl);
+                        } catch (Exception e) {
+                            log.error("{} 生成项目文件PDF失败,{}", taskOrderItemReportDO.getId(),e.getMessage());
+                        }
+                    }
                     itemFiles.add(itemFile);
                 }
                 taskOrderArchiveDetail.setItemFiles(itemFiles);
+                if (!updateIssueReportList.isEmpty()){
+                    taskOrderItemReportMapper.updateBatch(updateIssueReportList);
+                }
             }
         }
         return taskOrderArchiveDetail;

+ 1 - 0
tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/service/pdf/PdfService.java

@@ -9,4 +9,5 @@ public interface PdfService {
     byte[] addPageNumbersToPdf(byte[] pdfBytes) throws IOException;
     byte[] pdf(String templateId, String instanceId) throws Exception;
     byte[] fullPdf(byte[] templateBytes, Map<String, Object> data, List<String> imgIns, String templateId, String instanceId) throws Exception;
+    byte[] pdfByRefId(String templateId, String refId) throws Exception;
 }

+ 32 - 0
tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/service/pdf/PdfServiceImpl.java

@@ -2,6 +2,7 @@ package cn.start.tz.module.pressure2.service.pdf;
 
 import cn.hutool.http.HttpResponse;
 import cn.hutool.http.HttpUtil;
+import cn.start.tz.framework.mybatis.core.query.LambdaQueryWrapperX;
 import cn.start.tz.module.grape.city.api.vo.GrapeCityReqDTO;
 import cn.start.tz.module.infra.api.file.FileApi;
 import cn.start.tz.module.pressure2.controller.admin.dynamictb.vo.DynamicTbRespVO;
@@ -10,6 +11,7 @@ import cn.start.tz.module.pressure2.controller.admin.dynamictbval.vo.DynamicTBAn
 import cn.start.tz.module.pressure2.controller.admin.dynamictbval.vo.DynamicTBViewOrAddVO;
 import cn.start.tz.module.pressure2.dal.dataobject.dynamictbins.DynamicTbInsDO;
 import cn.start.tz.module.pressure2.dal.dataobject.dynamictbval.DynamicTbValDO;
+import cn.start.tz.module.pressure2.dal.mysql.dynamictbins.DynamicTbInsMapper;
 import cn.start.tz.module.pressure2.service.dynamictb.DynamicTbService;
 import cn.start.tz.module.pressure2.service.dynamictbcol.DynamicTbColService;
 import cn.start.tz.module.pressure2.service.dynamictbins.DynamicTbInsService;
@@ -58,6 +60,9 @@ public class PdfServiceImpl implements PdfService {
     @Resource
     private DynamicTbService dynamicTbService;
 
+    @Resource
+    private DynamicTbInsMapper dynamicTbInsMapper;
+
     @Resource
     private FileApi fileApi;
 
@@ -131,6 +136,33 @@ public class PdfServiceImpl implements PdfService {
             return this.fullPdf(bytes, map, imgIns,templateId, instanceId);
     }
 
+    @Override
+    public byte[] pdfByRefId(String templateId, String refId) throws Exception {
+
+        DynamicTbInsDO dynamicTbInsDO = dynamicTbInsMapper.selectOne(new LambdaQueryWrapperX<DynamicTbInsDO>()
+                .eq(DynamicTbInsDO::getRefId, refId),false);
+
+        if (dynamicTbInsDO != null){
+            String fileUrl =  standardTemplateService.getById(templateId).getFileUrl();
+            byte[] bytes = null;
+            bytes = fileApi.getFileByPath(fileUrl).getCheckedData();
+            GrapeCityReqDTO grapeCityReqDTO = new GrapeCityReqDTO();
+            grapeCityReqDTO.setTemplateBytes(bytes);
+
+            List<DynamicTbValDO> list = dynamicTbValService.lambdaQuery().eq(DynamicTbValDO::getInsId, dynamicTbInsDO.getId()).list();
+            Map<String, Object> map = new HashMap<>();
+            List<String> imgIns = dynamicTbColService.getImgTb(templateId).stream().map(DynamicTbColRespVO::getColCode).toList();
+
+            for (DynamicTbValDO dynamicTbValDO : list) {
+                map.put(dynamicTbValDO.getColCode(), dynamicTbValDO.getValValue());
+            }
+            return this.fullPdf(bytes, map, imgIns,templateId, dynamicTbInsDO.getId());
+        }
+
+        return null;
+
+    }
+
     @Override
     public byte[] fullPdf(byte[] templateBytes, Map<String, Object> data, List<String> imgIns, String templateId, String instanceId) throws Exception {
         // 将 data 中的 JSON 字符串值解析为实际对象/数组,确保 GcExcel 模板引擎能正确处理表格绑定

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

@@ -206,6 +206,7 @@ import java.time.LocalDateTime;
 import java.time.ZoneId;
 import java.time.format.DateTimeFormatter;
 import java.util.*;
+import java.util.concurrent.CompletableFuture;
 import java.util.concurrent.TimeUnit;
 import java.util.concurrent.atomic.AtomicReference;
 import java.util.function.Function;
@@ -3007,6 +3008,23 @@ public class PipeTaskOrderServiceImpl extends ServiceImpl<PipeTaskOrderMapper, P
                 syncReportVO_rp.setReportType("report");
                 syncReportData(syncReportVO_rp);
 
+                if (TaskOrderItemReportTypeEnum.SUB_REPORT.getType().equals(boilerTaskOrderItemReportDO.getReportType())){
+                    //子项目生成报告PDF
+                    CompletableFuture.runAsync(() -> {
+                        try {
+                            log.info("记录校核生成PDF");
+                            byte[] bytes = pdfService.pdfByRefId(dynamicTbDOReport.getId(), "report_" + itemReportDO.getId());
+                            String fileUrl = fileApi.createFile(bytes);
+                            PipeTaskOrderItemReportDO updateIssueDo = new PipeTaskOrderItemReportDO();
+                            updateIssueDo.setId(taskOrderAuditSingleVO.getId());
+                            updateIssueDo.setIssueUrl(fileUrl);
+                            taskOrderItemReportMapper.updateById(updateIssueDo);
+                        } catch (Exception e) {
+                            log.error("记录校核生成PDF错误,{}", e.getMessage());
+                        }
+                    });
+                }
+
             }
 
             if (dynamicTbDOResult != null){

+ 9 - 0
tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/service/pipetaskorderinput/PipeTaskOrderInputService.java

@@ -79,4 +79,13 @@ public interface PipeTaskOrderInputService extends IService<PipeTaskOrderInputDO
      * @param response 响应
      */
     void downloadPipeTaskOrderInput(List<PipeTaskOrderInputPrintReqVO> printReqVOS, HttpServletResponse response) throws Exception;
+
+    /**
+     * 下载管道检测项目PDF(单个文件)
+     *
+     * @param printReqVO 下载信息
+     * @param response 响应
+     */
+    void downloadPipeTaskOrderInputPdf(PipeTaskOrderInputPrintReqVO printReqVO, HttpServletResponse response) throws Exception;
+
 }

+ 43 - 0
tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/service/pipetaskorderinput/PipeTaskOrderInputServiceImpl.java

@@ -204,4 +204,47 @@ public class PipeTaskOrderInputServiceImpl extends ServiceImpl<PipeTaskOrderInpu
         response.getOutputStream().flush();
     }
 
+    @Override
+    public void downloadPipeTaskOrderInputPdf(PipeTaskOrderInputPrintReqVO printReqVO, HttpServletResponse response) throws Exception {
+        log.info("printReqVO:{}", printReqVO);
+
+        String templateId = printReqVO.getTemplateId();
+        String instanceId = null;
+        DynamicTbInsDO dynamicRefId = new DynamicTbInsDO();
+
+        DynamicTbDO dynamicTbDO = dynamicTbMapper.selectById(templateId);
+        if (dynamicTbDO != null){
+            // 意见通知书、检验方案、作业指导书等特殊报告类型处理
+            if (TaskOrderItemReportTypeEnum.isSpecialReportType(dynamicTbDO.getReportType())) {
+                dynamicRefId = dynamicTbInsService.getDynamicRefId(printReqVO.getId());
+                instanceId = dynamicRefId.getId();
+            }else{
+                // 根据任务状态确定模板 ID 和实例 ID
+                if (printReqVO.getTaskStatus() >= 520) {
+                    templateId = printReqVO.getReportTemplateId();
+                    dynamicRefId = dynamicTbInsService.getDynamicRefId("report_" + printReqVO.getId());
+                    instanceId = dynamicRefId.getId();
+                } else {
+                    dynamicRefId = dynamicTbInsService.getDynamicRefId(printReqVO.getId());
+                    instanceId = dynamicRefId.getId();
+                }
+            }
+        }else{
+            throw exception(new ErrorCode(500, "报表模板不存在"));
+        }
+
+        // 生成 PDF
+        byte[] pdf = pdfService.pdf(templateId, instanceId);
+
+        // 设置响应头
+        response.setContentType("application/pdf");
+        String fileName = URLEncoder.encode(dynamicRefId.getRefName() + ".pdf", StandardCharsets.UTF_8);
+        response.setHeader("Content-Disposition", "attachment; filename=" + fileName);
+        response.setContentLength(pdf.length);
+
+        // 写入响应
+        response.getOutputStream().write(pdf);
+        response.getOutputStream().flush();
+    }
+
 }

+ 47 - 15
tz-module-pressure2/tz-module-pressure2-biz/src/main/java/cn/start/tz/module/pressure2/service/pipetaskorderissuereport/PipeTaskOrderIssueReportServiceImpl.java

@@ -741,7 +741,7 @@ public class PipeTaskOrderIssueReportServiceImpl extends ServiceImpl<PipeTaskOrd
                             }
                             if (EnvConstants.ENV_UAT.equals(env) || EnvConstants.ENV_PROD.equals(env)) {
                                 finalTaskOrderItemDOList.forEach(taskOrderItemDO -> {
-                                    this.issueReportPush(taskOrderItemDO.getId());
+//                                    this.issueReportPush(taskOrderItemDO.getId());
                                 });
                             }
                         } catch (Exception e) {
@@ -828,7 +828,7 @@ public class PipeTaskOrderIssueReportServiceImpl extends ServiceImpl<PipeTaskOrd
                             }
                             taskOrderItemMapper.updateById(updateOb);
                             if (EnvConstants.ENV_UAT.equals(env) || EnvConstants.ENV_PROD.equals(env)) {
-                                this.issueReportPush(taskOrderItemDO.getId());
+//                                this.issueReportPush(taskOrderItemDO.getId());
                             }
                         }
                     } catch (Exception e) {
@@ -1426,7 +1426,7 @@ public class PipeTaskOrderIssueReportServiceImpl extends ServiceImpl<PipeTaskOrd
                                 }
                                 if (EnvConstants.ENV_UAT.equals(env) || EnvConstants.ENV_PROD.equals(env)) {
                                     finalTaskOrderItemDOList.forEach(taskOrderItemDO -> {
-                                        this.issueReportPush(taskOrderItemDO.getId());
+//                                        this.issueReportPush(taskOrderItemDO.getId());
                                     });
                                 }
                             } catch (Exception e) {
@@ -1515,7 +1515,7 @@ public class PipeTaskOrderIssueReportServiceImpl extends ServiceImpl<PipeTaskOrd
                                 }
                                 taskOrderItemMapper.updateById(updateOb);
                                 if (EnvConstants.ENV_UAT.equals(env) || EnvConstants.ENV_PROD.equals(env)) {
-                                    this.issueReportPush(taskOrderItemDO.getId());
+//                                    this.issueReportPush(taskOrderItemDO.getId());
                                 }
                             }
                         } catch (Exception e) {
@@ -2234,14 +2234,10 @@ public class PipeTaskOrderIssueReportServiceImpl extends ServiceImpl<PipeTaskOrd
                                 .eq(PipeTaskOrderItemReportDO::getOrderId, x.getOrderId()),false);
                         if (itemReportDO != null){
                             try {
-                                DynamicTbInsDO dynamicTbInsDO = dynamicTbInsMapper.selectOne(new LambdaQueryWrapperX<DynamicTbInsDO>()
-                                        .eq(DynamicTbInsDO::getRefId, itemReportDO.getId()),false);
-                                if (dynamicTbInsDO != null){
-                                    byte[] bytes = pdfService.pdf(itemReportDO.getTemplateId(), dynamicTbInsDO.getId());
-                                    String fileUrl = fileApi.createFile(bytes);
-                                    x.setSignFilePdf(fileUrl);
-                                    updateList.add(new BoilerTaskOrderSignFileDO().setId(x.getId()).setSignFilePdf(fileUrl));
-                                }
+                                byte[] bytes = pdfService.pdfByRefId(itemReportDO.getTemplateId(), itemReportDO.getId());
+                                String fileUrl = fileApi.createFile(bytes);
+                                x.setSignFilePdf(fileUrl);
+                                updateList.add(new BoilerTaskOrderSignFileDO().setId(x.getId()).setSignFilePdf(fileUrl));
                             } catch (Exception e) {
                                 log.error("生成重大问题线索PDF错误,{}", e.getMessage());
                             }
@@ -2291,7 +2287,7 @@ public class PipeTaskOrderIssueReportServiceImpl extends ServiceImpl<PipeTaskOrd
             }
 
             //获取检验项目
-            List<PipeTaskOrderItemReportDO> list = taskOrderItemReportDOS.stream().filter(x -> Arrays.asList(100, 200, 300, 400, 900).contains(x.getReportType())).toList();
+            List<PipeTaskOrderItemReportDO> list = taskOrderItemReportDOS.stream().filter(x -> Arrays.asList(100, 200, 300).contains(x.getReportType())).toList();
             if (CollUtil.isNotEmpty(list)) {
                 //获取所有报告id
                 List<String> reportIds = list.stream().map(PipeTaskOrderItemReportDO::getId).toList();
@@ -2318,6 +2314,7 @@ public class PipeTaskOrderIssueReportServiceImpl extends ServiceImpl<PipeTaskOrd
                 }
 
                 List<PipeTaskOrderArchiveDetailRespVO.InspectionItem> inspectionItems = new ArrayList<>();
+                List<PipeTaskOrderItemReportDO> updateIssueReportList = new ArrayList<>();
                 for (PipeTaskOrderItemReportDO taskOrderItemReportDO : list) {
                     PipeTaskOrderArchiveDetailRespVO.InspectionItem inspectionItem = new PipeTaskOrderArchiveDetailRespVO.InspectionItem();
                     inspectionItem.setOrderId(taskOrderItemReportDO.getOrderId());
@@ -2328,13 +2325,26 @@ public class PipeTaskOrderIssueReportServiceImpl extends ServiceImpl<PipeTaskOrd
                     inspectionItem.setReportTemplateId(taskOrderItemReportDO.getReportTemplateId());
                     inspectionItem.setTaskStatus(taskOrderItemReportDO.getTaskStatus());
                     inspectionItem.setProjectName(taskOrderItemReportDO.getReportName());
-
                     //获取检测录入ID
                     List<PipeTaskOrderInputDO> inputDOS = pipeTaskOrderInputMapper.selectList(new LambdaQueryWrapperX<PipeTaskOrderInputDO>()
                             .eq(PipeTaskOrderInputDO::getOrderId, taskOrderItemReportDO.getOrderId()));
                     if (!inputDOS.isEmpty()){
                         inspectionItem.setInputId(inputDOS.get(0).getId());
                     }
+                    if (taskOrderItemReportDO.getIssueUrl() != null && !taskOrderItemReportDO.getIssueUrl().isEmpty()){
+                        inspectionItem.setFilePdf(taskOrderItemReportDO.getIssueUrl());
+                    }else{
+                        //生成报告文件PDF
+                        try {
+                            byte[] bytes = pdfService.pdfByRefId(taskOrderItemReportDO.getReportTemplateId(), "report_" + taskOrderItemReportDO.getId());
+                            String fileUrl = fileApi.createFile(bytes);
+                            PipeTaskOrderItemReportDO updateItemReportDO = new PipeTaskOrderItemReportDO().setId(taskOrderItemReportDO.getId()).setIssueUrl(fileUrl);
+                            updateIssueReportList.add(updateItemReportDO);
+                            inspectionItem.setFilePdf(fileUrl);
+                        } catch (Exception e) {
+                            log.error("{} 生成检验项目PDF失败,{}", taskOrderItemReportDO.getId(),e.getMessage());
+                        }
+                    }
                     //独走报告需要获取关联作业指导书
                     if (Integer.valueOf(300).equals(taskOrderItemReportDO.getReportType())) {
                         List<PipeTaskOrderItemReportDO> list1 = taskOrderItemReportDOS.stream()
@@ -2383,11 +2393,15 @@ public class PipeTaskOrderIssueReportServiceImpl extends ServiceImpl<PipeTaskOrd
                     inspectionItems.add(inspectionItem);
                 }
                 taskOrderArchiveDetail.setInspectionItems(inspectionItems);
+                if (!updateIssueReportList.isEmpty()){
+                    taskOrderItemReportMapper.updateBatch(updateIssueReportList);
+                }
             }
 
             //获取项目文件
-            List<PipeTaskOrderItemReportDO> list1 = taskOrderItemReportDOS.stream().filter(x -> Arrays.asList(600, 700).contains(x.getReportType())).toList();
+            List<PipeTaskOrderItemReportDO> list1 = taskOrderItemReportDOS.stream().filter(x -> Arrays.asList(600, 700, 400).contains(x.getReportType())).toList();
             if (CollUtil.isNotEmpty(list1)) {
+                List<PipeTaskOrderItemReportDO> updateIssueReportList = new ArrayList<>();
                 List<PipeTaskOrderArchiveDetailRespVO.ItemFile> itemFiles = new ArrayList<>();
                 for (PipeTaskOrderItemReportDO taskOrderItemReportDO : list1) {
                     PipeTaskOrderArchiveDetailRespVO.ItemFile itemFile = new PipeTaskOrderArchiveDetailRespVO.ItemFile();
@@ -2397,9 +2411,27 @@ public class PipeTaskOrderIssueReportServiceImpl extends ServiceImpl<PipeTaskOrd
                     itemFile.setReportType(taskOrderItemReportDO.getReportType());
                     itemFile.setReportId(taskOrderItemReportDO.getId());
                     itemFile.setCompletionTime(taskOrderItemReportDO.getRatifyTime());
+                    itemFile.setTemplateId(taskOrderItemReportDO.getTemplateId());
+                    if (taskOrderItemReportDO.getIssueUrl() != null && !taskOrderItemReportDO.getIssueUrl().isEmpty()){
+                        itemFile.setFilePdf(taskOrderItemReportDO.getIssueUrl());
+                    }else{
+                        //生成文件PDF
+                        try {
+                            byte[] bytes = pdfService.pdfByRefId(taskOrderItemReportDO.getTemplateId(), taskOrderItemReportDO.getId());
+                            String fileUrl = fileApi.createFile(bytes);
+                            PipeTaskOrderItemReportDO updateItemReportDO = new PipeTaskOrderItemReportDO().setId(taskOrderItemReportDO.getId()).setIssueUrl(fileUrl);
+                            updateIssueReportList.add(updateItemReportDO);
+                            itemFile.setFilePdf(fileUrl);
+                        } catch (Exception e) {
+                            log.error("{} 生成项目文件PDF失败,{}", taskOrderItemReportDO.getId(),e.getMessage());
+                        }
+                    }
                     itemFiles.add(itemFile);
                 }
                 taskOrderArchiveDetail.setItemFiles(itemFiles);
+                if (!updateIssueReportList.isEmpty()){
+                    taskOrderItemReportMapper.updateBatch(updateIssueReportList);
+                }
             }
         }
         return taskOrderArchiveDetail;