diff --git a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/reportdoc/constant/ReportDocConstant.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/reportdoc/constant/ReportDocConstant.java new file mode 100644 index 00000000..03eaaf54 --- /dev/null +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/reportdoc/constant/ReportDocConstant.java @@ -0,0 +1,8 @@ +package com.zt.plat.module.qms.business.reportdoc.constant; + +public class ReportDocConstant { + + public static final String REPORT_DOCUMENT_BUSINESS_FILE_SOURCE_QMS = "qms.reportdoc"; + public static final String REPORT_DOCUMENT_BUSINESS_FILE_SOURCE_IWORK = "iwork"; + +} diff --git a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/reportdoc/service/ReportDocumentAssistService.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/reportdoc/service/ReportDocumentAssistService.java index 87592bbe..c5b485c0 100644 --- a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/reportdoc/service/ReportDocumentAssistService.java +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/reportdoc/service/ReportDocumentAssistService.java @@ -9,9 +9,12 @@ import com.zt.plat.framework.common.pojo.CommonResult; import com.zt.plat.framework.common.util.object.BeanUtils; import com.zt.plat.framework.security.core.LoginUser; import com.zt.plat.framework.security.core.util.SecurityFrameworkUtils; +import com.zt.plat.module.infra.api.businessfile.BusinessFileApi; +import com.zt.plat.module.infra.api.businessfile.dto.BusinessFileSaveReqDTO; import com.zt.plat.module.infra.api.file.FileApi; import com.zt.plat.module.infra.api.file.dto.FileCreateReqDTO; import com.zt.plat.module.infra.api.file.dto.FileRespDTO; +import com.zt.plat.module.qms.business.reportdoc.constant.ReportDocConstant; import com.zt.plat.module.qms.business.reportdoc.controller.vo.ReportDocumentFileSaveReqVO; import com.zt.plat.module.qms.business.reportdoc.dal.dataobject.ReportDocumentFileDO; import com.zt.plat.module.qms.business.reportdoc.dal.dataobject.ReportDocumentMainDO; @@ -28,6 +31,8 @@ import lombok.extern.slf4j.Slf4j; import org.apache.commons.compress.utils.IOUtils; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.util.ObjectUtils; import java.io.IOException; import java.io.InputStream; @@ -57,6 +62,7 @@ public class ReportDocumentAssistService { @Resource private ReportDocumentFileService reportDocumentFileService; @Resource private DataTemplateService dataTemplateService; @Resource private FileApi fileApi; + @Resource private BusinessFileApi businessFileApi; // private String sequenceKey = "QMS_REPORT_IWORK_CODE"; @@ -77,6 +83,8 @@ public class ReportDocumentAssistService { JSONObject extension = bpmFieldExtensions.getJSONObject(i); String fieldName = extension.getString("fieldName"); String stringValue = extension.getString("stringValue"); + if(ObjectUtils.isEmpty(stringValue)) + stringValue = ""; if(fieldName.equalsIgnoreCase("createiworkflow") && stringValue.equals("1")){ createIworkWorkflowFlag = true; break; @@ -95,10 +103,17 @@ public class ReportDocumentAssistService { LoginUser loginUser = SecurityFrameworkUtils.getLoginUser(); SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); IWorkWorkflowCreateReqDTO dto = new IWorkWorkflowCreateReqDTO(); - dto.setOperatorUserId(String.valueOf(loginUser.getId())); - dto.setJbr(String.valueOf(loginUser.getId())); - dto.setYybm(String.valueOf(loginUser.getVisitDeptId())); - dto.setFb(String.valueOf(loginUser.getVisitCompanyId())); + + String operatorUserId = "455"; //iWork 操作人用户编号 + String jbr = "455"; //用印申请人 + String yybm = "1055"; //用印部门 + String fb = "170"; //用印单位 + + + dto.setOperatorUserId(operatorUserId); + dto.setJbr(jbr); + dto.setYybm(yybm); + dto.setFb(fb); dto.setSqsj(sdf.format(new Date())); dto.setYyqx("检测报告用印"); dto.setYysy("检测报告用印"); @@ -113,6 +128,7 @@ public class ReportDocumentAssistService { * 生成新版pdf文件 * 在reportDocumentFile创建新pdf文件 * */ + @Transactional(rollbackFor = Exception.class) public ReportDocumentFileDO generatePdf(ReportDocumentMainDO mainDO) throws IOException { String pageFlag = "1"; //分页处理 Long typeId = mainDO.getReportDocumentTypeId(); @@ -133,11 +149,20 @@ public class ReportDocumentAssistService { .execute(); log.info("html2pdf--end at {}", LocalDateTime.now()); InputStream inputStream = response.bodyStream(); // 关键:返回原始 InputStream - - //尝试从响应头中提取文件名 - String documentCode = mainDO.getDocumentCode(); - if(documentCode == null) documentCode = ""; - String filename = documentCode + "检测报告.pdf"; + String formDataStr = mainDO.getFormData(); + JSONObject formData = JSONObject.parseObject(formDataStr); + String entrustCode = ""; + String sampleCategory = ""; + String filename = "检测报告"; + if(!ObjectUtils.isEmpty(formData)){ + entrustCode = formData.getString("entrustCode"); + sampleCategory = formData.getString("sampleCategory"); + if(!ObjectUtils.isEmpty(entrustCode)) + filename = entrustCode; + if(!ObjectUtils.isEmpty(sampleCategory)) + filename = filename + "(" + sampleCategory + ")"; + } + filename += ".pdf"; byte[] fileBytes = IOUtils.toByteArray(inputStream); //上传到文件服务 @@ -151,6 +176,17 @@ public class ReportDocumentAssistService { throw new ServiceException(REPORT_DOCUMENT_FILE_NOT_EXISTS.getCode(), "通过文件服务创建附件失败: " + Optional.ofNullable(fileResult).map(CommonResult::getMsg).orElse("未知错误")); } FileRespDTO fileRespDTO = fileResult.getData(); + //创建businessFile + BusinessFileSaveReqDTO businessFileSaveReqDTO = BusinessFileSaveReqDTO.builder() + .businessId(mainDO.getId()) + .businessCode(mainDO.getDocumentCode()) + .fileName(filename) + .fileId(fileRespDTO.getId()) + .source(ReportDocConstant.REPORT_DOCUMENT_BUSINESS_FILE_SOURCE_QMS) + .status(1) + .build(); + businessFileApi.createBusinessFile(businessFileSaveReqDTO); + //写入ReportDocumentFile ReportDocumentFileSaveReqVO fileSaveReqVO = new ReportDocumentFileSaveReqVO(); fileSaveReqVO.setMainId(mainDO.getId()); diff --git a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/reportdoc/service/ReportDocumentMainServiceImpl.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/reportdoc/service/ReportDocumentMainServiceImpl.java index 2b5818c7..81c2c5a7 100644 --- a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/reportdoc/service/ReportDocumentMainServiceImpl.java +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/reportdoc/service/ReportDocumentMainServiceImpl.java @@ -471,11 +471,15 @@ public class ReportDocumentMainServiceImpl implements ReportDocumentMainService, String firstActivityFlag = "0"; if(!fieldExtensions.isEmpty()){ for(int i = 0; i < fieldExtensions.size(); i++){ - JSONObject fieldExtension = fieldExtensions.getJSONObject(i); - if(fieldExtension.getString("fieldName").equalsIgnoreCase(QmsBpmConstant.BPM_LAST_ACTIVITY_FLAG)){ + JSONObject extension = fieldExtensions.getJSONObject(i); + String fieldName = extension.getString("fieldName"); + String stringValue = extension.getString("stringValue"); + if(ObjectUtils.isEmpty(stringValue)) + stringValue = ""; + if(fieldName.equalsIgnoreCase(QmsBpmConstant.BPM_LAST_ACTIVITY_FLAG) && stringValue.equals("1")){ lastActivityFlag = "1"; } - if(fieldExtension.getString("fieldName").equalsIgnoreCase(QmsBpmConstant.BPM_FIRST_ACTIVITY_FLAG)){ + if(fieldName.equalsIgnoreCase(QmsBpmConstant.BPM_FIRST_ACTIVITY_FLAG) && stringValue.equals("1")){ firstActivityFlag = "1"; } } diff --git a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/framework/rpc/config/RpcConfiguration.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/framework/rpc/config/RpcConfiguration.java index 85e35704..486a931a 100644 --- a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/framework/rpc/config/RpcConfiguration.java +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/framework/rpc/config/RpcConfiguration.java @@ -2,6 +2,7 @@ package com.zt.plat.module.qms.framework.rpc.config; import com.zt.plat.module.bpm.api.task.BpmProcessInstanceApi; import com.zt.plat.module.bpm.api.task.BpmTaskApi; +import com.zt.plat.module.infra.api.businessfile.BusinessFileApi; import com.zt.plat.module.infra.api.file.FileApi; import com.zt.plat.module.system.api.dept.DeptApi; import com.zt.plat.module.system.api.iwork.IWorkIntegrationApi; @@ -13,6 +14,6 @@ import org.springframework.cloud.openfeign.EnableFeignClients; import org.springframework.context.annotation.Configuration; @Configuration(value = "qmsRpcConfiguration", proxyBeanMethods = false) -@EnableFeignClients(clients = {FileApi.class, SequenceApi.class, AdminUserApi.class, DeptApi.class, BpmProcessInstanceApi.class, BpmTaskApi.class, PermissionApi.class, IWorkIntegrationApi.class}) +@EnableFeignClients(clients = {FileApi.class, BusinessFileApi.class, SequenceApi.class, AdminUserApi.class, DeptApi.class, BpmProcessInstanceApi.class, BpmTaskApi.class, PermissionApi.class, IWorkIntegrationApi.class}) public class RpcConfiguration { }