Quellcode durchsuchen

生成pdf文件

徐展城 vor 3 Wochen
Ursprung
Commit
5d344aa40d

+ 4 - 0
build-uat/update.sql

@@ -1620,3 +1620,7 @@ COMMENT ON COLUMN "PRESSURE2_USER_ALERT_CONFIG"."UPDATE_TIME" IS '更新时间';
 COMMENT ON COLUMN "PRESSURE2_USER_ALERT_CONFIG"."DELETED" IS '是否删除';
 
 -- 已加
+
+
+ALTER TABLE "PRESSURE2_BOILER_TASK_ORDER_ITEM_REPORT" ADD COLUMN "ENTER_PDF_URL" VARCHAR(64);
+COMMENT ON COLUMN "PRESSURE2_BOILER_TASK_ORDER_ITEM_REPORT"."ENTER_PDF_URL" IS '记录pdfurl';

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

@@ -8,6 +8,19 @@ import java.util.Map;
 public interface PdfService {
     byte[] addPageNumbersToPdf(byte[] pdfBytes) throws IOException;
     byte[] pdf(String templateId, String instanceId) throws Exception;
+
+    /**
+     * 根据项目 ID 获取 PDF 文件地址
+     *
+     * @param projectId 项目 ID
+     * @param refId     关联 ID(如模板实例 ID 或业务引用 ID)
+     * @param isReport  是否为报告类型(true-报告,false-记录)
+     * @return PDF 文件的访问 URL
+     * @throws Exception 获取过程中发生异常时抛出
+     */
+    String getPdfUrlByProjectId(String projectId, String refId, boolean isReport) 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;
 }

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

@@ -9,9 +9,11 @@ import cn.start.tz.module.pressure2.controller.admin.dynamictb.vo.DynamicTbRespV
 import cn.start.tz.module.pressure2.controller.admin.dynamictbcol.vo.DynamicTbColRespVO;
 import cn.start.tz.module.pressure2.controller.admin.dynamictbval.vo.DynamicTBAndColVO;
 import cn.start.tz.module.pressure2.controller.admin.dynamictbval.vo.DynamicTBViewOrAddVO;
+import cn.start.tz.module.pressure2.dal.dataobject.boilerconnectrecordreport.BoilerConnectRecordReportDO;
 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.boilerconnectrecordreport.BoilerConnectRecordReportService;
 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;
@@ -48,6 +50,9 @@ public class PdfServiceImpl implements PdfService {
     @Resource
     private StandardTemplateService standardTemplateService;
 
+    @Resource
+    private BoilerConnectRecordReportService boilerConnectRecordReportService;
+
     @Resource
     private DynamicTbValService dynamicTbValService;
 
@@ -163,6 +168,44 @@ public class PdfServiceImpl implements PdfService {
 
     }
 
+    @Override
+    public String getPdfUrlByProjectId(String projectId, String refId, boolean isReport) throws Exception {
+
+        BoilerConnectRecordReportDO project = boilerConnectRecordReportService.getById(projectId);
+        if (project == null) {
+            throw new Exception("没有该检验项目");
+        }
+        String templateId = null;
+        if (isReport) {
+            templateId = project.getReportTemplateId();
+        } else {
+            templateId = project.getRecordTemplateId();
+        }
+
+        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());
+            }
+            byte[] pdfBytes = this.fullPdf(bytes, map, imgIns, templateId, dynamicTbInsDO.getId());
+            return fileApi.createFile(pdfBytes);
+        }
+
+        throw new Exception("没有该检验报告");
+    }
+
     @Override
     public byte[] fullPdf(byte[] templateBytes, Map<String, Object> data, List<String> imgIns, String templateId, String instanceId) throws Exception {
         // 将 data 中的 JSON 字符串值解析为实际对象/数组,确保 GcExcel 模板引擎能正确处理表格绑定