feat:工段报告生成接口

This commit is contained in:
FCL
2026-03-12 16:25:48 +08:00
parent 199dd7715e
commit 6635ce4497
4 changed files with 199 additions and 19 deletions

View File

@@ -13,6 +13,7 @@ import com.zt.plat.framework.common.pojo.vo.BatchDeleteReqVO;
import com.zt.plat.framework.common.util.object.BeanUtils; import com.zt.plat.framework.common.util.object.BeanUtils;
import com.zt.plat.framework.datapermission.core.annotation.DeptDataPermissionIgnore; import com.zt.plat.framework.datapermission.core.annotation.DeptDataPermissionIgnore;
import com.zt.plat.framework.excel.core.util.ExcelUtils; import com.zt.plat.framework.excel.core.util.ExcelUtils;
import com.zt.plat.module.qms.business.bus.dal.dataobject.BusinessAssayReportDataDO;
import com.zt.plat.module.qms.business.reportdoc.controller.vo.ReportDocumentDataPageReqVO; import com.zt.plat.module.qms.business.reportdoc.controller.vo.ReportDocumentDataPageReqVO;
import com.zt.plat.module.qms.business.reportdoc.controller.vo.ReportDocumentDataRespVO; import com.zt.plat.module.qms.business.reportdoc.controller.vo.ReportDocumentDataRespVO;
import com.zt.plat.module.qms.business.reportdoc.controller.vo.ReportDocumentDataSaveReqVO; import com.zt.plat.module.qms.business.reportdoc.controller.vo.ReportDocumentDataSaveReqVO;
@@ -60,6 +61,17 @@ public class ReportDocumentDataController extends AbstractFileUploadController i
@Resource private ReportDocumentMainService reportDocumentMainService; @Resource private ReportDocumentMainService reportDocumentMainService;
@Resource private ReportDocumentTypeService reportDocumentTypeService; @Resource private ReportDocumentTypeService reportDocumentTypeService;
@PostMapping("/assembleByReportData")
@Operation(summary = "创建检测报告明细")
//@PreAuthorize("@ss.hasPermission('qms:report-document-data:create')")
public CommonResult<JSONArray> assembleByReportData(@RequestBody JSONObject jsonObject) {
// Long mainId = jsonObject.getLong("mainId");
List<BusinessAssayReportDataDO> assayReportDataList = jsonObject.getJSONArray("assayReportDataList").toJavaList(BusinessAssayReportDataDO.class);
List<String> itemNameList = jsonObject.getJSONArray("itemNameList").toJavaList(String.class);
return reportDocumentDataService.assembleByReportData(assayReportDataList, itemNameList);
}
/* /*
* 查询报告明细数据,返回结果包含表头、数据、检出限等。会按报告配置进行“换行”处理。*/ * 查询报告明细数据,返回结果包含表头、数据、检出限等。会按报告配置进行“换行”处理。*/
@GetMapping("/queryReportDetail") @GetMapping("/queryReportDetail")

View File

@@ -28,7 +28,7 @@ import com.zt.plat.module.system.api.iwork.dto.IWorkOperationRespDTO;
import com.zt.plat.module.system.api.iwork.dto.IWorkWorkflowCreateReqDTO; import com.zt.plat.module.system.api.iwork.dto.IWorkWorkflowCreateReqDTO;
import jakarta.annotation.Resource; import jakarta.annotation.Resource;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.compress.utils.IOUtils; import org.apache.commons.io.IOUtils;
import org.springframework.beans.factory.annotation.Value; import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
@@ -124,6 +124,27 @@ public class ReportDocumentAssistService {
return iWorkIntegrationApi.createWorkflow(dto); return iWorkIntegrationApi.createWorkflow(dto);
} }
/*
* 通过处理后的数据和模板id生成pdf
* */
public byte[] generateReportPDF(JSONArray data, Long templateId) throws IOException {
DataTemplateDO templateDO = dataTemplateService.getDataTemplate(templateId);
String templateContent = templateDO.getFormContent();
JSONObject bodyJson = new JSONObject();
bodyJson.put("Template", templateContent);
bodyJson.put("Data", data.toJSONString());
String bodyStr = bodyJson.toJSONString();
// log.info("html2pdf body: " + bodyStr);
log.info("html2pdf--start at {}", LocalDateTime.now());
HttpResponse response = HttpUtil.createPost(html2pdfAddr)
.body(bodyStr)
.timeout(15000)
.execute();
log.info("html2pdf--end at {}", LocalDateTime.now());
InputStream inputStream = response.bodyStream();
return IOUtils.toByteArray(inputStream);
}
/* /*
* 生成新版pdf文件 * 生成新版pdf文件
* 在reportDocumentFile创建新pdf文件 * 在reportDocumentFile创建新pdf文件
@@ -133,22 +154,11 @@ public class ReportDocumentAssistService {
String pageFlag = "1"; //分页处理 String pageFlag = "1"; //分页处理
Long typeId = mainDO.getReportDocumentTypeId(); Long typeId = mainDO.getReportDocumentTypeId();
ReportDocumentTypeDO typeDO = reportDocumentTypeService.getReportDocumentType(typeId); ReportDocumentTypeDO typeDO = reportDocumentTypeService.getReportDocumentType(typeId);
DataTemplateDO templateDO = dataTemplateService.getDataTemplate(mainDO.getDataTemplateId()); Long templateId = mainDO.getDataTemplateId();
CommonResult<JSONArray> result = reportDocumentDataService.assembleDynamicData(mainDO, typeDO, pageFlag); CommonResult<JSONArray> result = reportDocumentDataService.assembleDynamicData(mainDO, typeDO, pageFlag);
JSONArray data = result.getData(); JSONArray data = result.getData();
String templateContent = templateDO.getFormContent(); byte[] fileBytes = generateReportPDF(data, templateId);
JSONObject bodyJson = new JSONObject();
bodyJson.put("Template", templateContent);
bodyJson.put("Data", data.toJSONString());
String bodyStr = bodyJson.toJSONString();
log.info("html2pdf body: " + bodyStr);
log.info("html2pdf--start at {}", LocalDateTime.now());
HttpResponse response = HttpUtil.createPost(html2pdfAddr)
.body(bodyStr)
.timeout(15000)
.execute();
log.info("html2pdf--end at {}", LocalDateTime.now());
InputStream inputStream = response.bodyStream(); // 关键:返回原始 InputStream
String formDataStr = mainDO.getFormData(); String formDataStr = mainDO.getFormData();
JSONObject formData = JSONObject.parseObject(formDataStr); JSONObject formData = JSONObject.parseObject(formDataStr);
String entrustCode = ""; String entrustCode = "";
@@ -163,8 +173,6 @@ public class ReportDocumentAssistService {
filename = filename + "(" + sampleCategory + ")"; filename = filename + "(" + sampleCategory + ")";
} }
filename += ".pdf"; filename += ".pdf";
byte[] fileBytes = IOUtils.toByteArray(inputStream);
//上传到文件服务 //上传到文件服务
FileCreateReqDTO fileCreateReqDTO = new FileCreateReqDTO(); FileCreateReqDTO fileCreateReqDTO = new FileCreateReqDTO();
fileCreateReqDTO.setName(filename); fileCreateReqDTO.setName(filename);

View File

@@ -4,6 +4,7 @@ import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.zt.plat.framework.common.pojo.CommonResult; import com.zt.plat.framework.common.pojo.CommonResult;
import com.zt.plat.framework.common.pojo.PageResult; import com.zt.plat.framework.common.pojo.PageResult;
import com.zt.plat.module.qms.business.bus.dal.dataobject.BusinessAssayReportDataDO;
import com.zt.plat.module.qms.business.reportdoc.controller.vo.*; import com.zt.plat.module.qms.business.reportdoc.controller.vo.*;
import com.zt.plat.module.qms.business.reportdoc.dal.dataobject.ReportDocumentDataDO; import com.zt.plat.module.qms.business.reportdoc.dal.dataobject.ReportDocumentDataDO;
import com.zt.plat.module.qms.business.reportdoc.dal.dataobject.ReportDocumentMainDO; import com.zt.plat.module.qms.business.reportdoc.dal.dataobject.ReportDocumentMainDO;
@@ -21,6 +22,8 @@ public interface ReportDocumentDataService {
CommonResult<JSONArray> assembleDynamicData(ReportDocumentMainDO mainData, ReportDocumentTypeDO reportConfig, String pageFlag); CommonResult<JSONArray> assembleDynamicData(ReportDocumentMainDO mainData, ReportDocumentTypeDO reportConfig, String pageFlag);
CommonResult<JSONArray> assembleByReportData(List<BusinessAssayReportDataDO> assayReportDataList, List<String> itemNameList);
CommonResult<List<ReportDocumentDataDO>> listByMainDataId(Long mainDataId); CommonResult<List<ReportDocumentDataDO>> listByMainDataId(Long mainDataId);
CommonResult<Long> countMainDataId(Long mainDataId); CommonResult<Long> countMainDataId(Long mainDataId);
CommonResult<String> removeByMainIdAndDetailIds(Long mainDataId, List<Long> detailIds); CommonResult<String> removeByMainIdAndDetailIds(Long mainDataId, List<Long> detailIds);