Merge branch 'test' of https://git.will-way.cn/zgty/zt-qms into test

This commit is contained in:
2026-03-12 16:26:30 +08:00
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.datapermission.core.annotation.DeptDataPermissionIgnore;
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.ReportDocumentDataRespVO;
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 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")

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 jakarta.annotation.Resource;
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.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@@ -124,6 +124,27 @@ public class ReportDocumentAssistService {
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文件
* 在reportDocumentFile创建新pdf文件
@@ -133,22 +154,11 @@ public class ReportDocumentAssistService {
String pageFlag = "1"; //分页处理
Long typeId = mainDO.getReportDocumentTypeId();
ReportDocumentTypeDO typeDO = reportDocumentTypeService.getReportDocumentType(typeId);
DataTemplateDO templateDO = dataTemplateService.getDataTemplate(mainDO.getDataTemplateId());
Long templateId = mainDO.getDataTemplateId();
CommonResult<JSONArray> result = reportDocumentDataService.assembleDynamicData(mainDO, typeDO, pageFlag);
JSONArray data = result.getData();
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(); // 关键:返回原始 InputStream
byte[] fileBytes = generateReportPDF(data, templateId);
String formDataStr = mainDO.getFormData();
JSONObject formData = JSONObject.parseObject(formDataStr);
String entrustCode = "";
@@ -163,8 +173,6 @@ public class ReportDocumentAssistService {
filename = filename + "(" + sampleCategory + ")";
}
filename += ".pdf";
byte[] fileBytes = IOUtils.toByteArray(inputStream);
//上传到文件服务
FileCreateReqDTO fileCreateReqDTO = new FileCreateReqDTO();
fileCreateReqDTO.setName(filename);

View File

@@ -4,6 +4,7 @@ import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.zt.plat.framework.common.pojo.CommonResult;
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.dal.dataobject.ReportDocumentDataDO;
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> assembleByReportData(List<BusinessAssayReportDataDO> assayReportDataList, List<String> itemNameList);
CommonResult<List<ReportDocumentDataDO>> listByMainDataId(Long mainDataId);
CommonResult<Long> countMainDataId(Long mainDataId);
CommonResult<String> removeByMainIdAndDetailIds(Long mainDataId, List<Long> detailIds);