From 53fb21c0821d82b44f2e58a0917b1dc928d5255c Mon Sep 17 00:00:00 2001 From: FCL Date: Wed, 11 Mar 2026 15:53:10 +0800 Subject: [PATCH] =?UTF-8?q?fix:iwork=E7=94=A8=E5=8D=B0=E5=9B=9E=E8=B0=83?= =?UTF-8?q?=E8=B0=83=E8=AF=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../admin/ReportDocumentMainController.java | 21 +++++- .../listener/IWorkBizCallbackListener.java | 64 +++++++++++++++++++ .../listener/ReportDocListenerConstant.java | 9 +++ .../service/ReportDocumentAssistService.java | 2 + 4 files changed, 93 insertions(+), 3 deletions(-) create mode 100644 zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/reportdoc/listener/IWorkBizCallbackListener.java create mode 100644 zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/reportdoc/listener/ReportDocListenerConstant.java diff --git a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/reportdoc/controller/admin/ReportDocumentMainController.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/reportdoc/controller/admin/ReportDocumentMainController.java index 69949dd1..e41e961e 100644 --- a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/reportdoc/controller/admin/ReportDocumentMainController.java +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/reportdoc/controller/admin/ReportDocumentMainController.java @@ -15,11 +15,10 @@ import com.zt.plat.framework.excel.core.util.ExcelUtils; import com.zt.plat.module.qms.business.config.dal.dataobject.ConfigUserSignatureDO; import com.zt.plat.module.qms.business.config.service.ConfigUserSignatureService; import com.zt.plat.module.qms.business.reportdoc.controller.vo.*; +import com.zt.plat.module.qms.business.reportdoc.dal.dataobject.ReportDocumentFileDO; import com.zt.plat.module.qms.business.reportdoc.dal.dataobject.ReportDocumentMainDO; import com.zt.plat.module.qms.business.reportdoc.dal.dataobject.ReportDocumentTypeDO; -import com.zt.plat.module.qms.business.reportdoc.service.ReportDocumentDataService; -import com.zt.plat.module.qms.business.reportdoc.service.ReportDocumentMainService; -import com.zt.plat.module.qms.business.reportdoc.service.ReportDocumentTypeService; +import com.zt.plat.module.qms.business.reportdoc.service.*; import com.zt.plat.module.qms.common.data.dal.dataobject.DataTemplateDO; import com.zt.plat.module.qms.common.data.service.DataTemplateService; import com.zt.plat.module.qms.enums.QmsCommonConstant; @@ -29,6 +28,7 @@ import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Parameter; import io.swagger.v3.oas.annotations.tags.Tag; import jakarta.annotation.Resource; +import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletResponse; import jakarta.validation.Valid; import lombok.extern.slf4j.Slf4j; @@ -63,6 +63,9 @@ public class ReportDocumentMainController extends AbstractFileUploadController i @Resource private ReportDocumentMainService reportDocumentMainService; @Resource private ReportDocumentDataService reportDocumentDataService; @Resource private ReportDocumentTypeService reportDocumentTypeService; + @Resource private ReportDocumentFileService reportDocumentFileService; + @Resource private ReportDocumentAssistService reportDocumentAssistService; + @Resource private DataTemplateService dataTemplateService; @@ -228,4 +231,16 @@ public class ReportDocumentMainController extends AbstractFileUploadController i return null; } + + @GetMapping("/createIWorkflow") + @Operation(summary = "创建iwork流程-调试用") + //@PreAuthorize("@ss.hasPermission('qms:report-document-main:query')") + public CommonResult createIWorkflow(HttpServletRequest request) { + String mainId = request.getParameter("mainId"); + String fileId = request.getParameter("fileId"); + ReportDocumentMainDO mainDO = reportDocumentMainService.getReportDocumentMain(Long.valueOf(mainId)); + ReportDocumentFileDO fileDO = reportDocumentFileService.getReportDocumentFile(Long.valueOf(fileId)); + return reportDocumentAssistService.createIWorkflow(mainDO, fileDO); + } + } \ No newline at end of file diff --git a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/reportdoc/listener/IWorkBizCallbackListener.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/reportdoc/listener/IWorkBizCallbackListener.java new file mode 100644 index 00000000..24279fce --- /dev/null +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/reportdoc/listener/IWorkBizCallbackListener.java @@ -0,0 +1,64 @@ +package com.zt.plat.module.qms.business.reportdoc.listener; + +import com.alibaba.fastjson.JSONObject; +import com.zt.plat.module.system.mq.iwork.IWorkBizCallbackMessage; +import com.zt.plat.module.system.mq.iwork.IWorkBizCallbackResultMessage; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.apache.rocketmq.spring.annotation.RocketMQMessageListener; +import org.apache.rocketmq.spring.core.RocketMQListener; +import org.apache.rocketmq.spring.core.RocketMQTemplate; +import org.springframework.stereotype.Component; + +@Slf4j +@Component +@RequiredArgsConstructor +@RocketMQMessageListener( + topic = IWorkBizCallbackMessage.TOPIC, + consumerGroup = IWorkBizCallbackMessage.TOPIC + "_CONSUMER_local", + selectorExpression = ReportDocListenerConstant.IWORK_BIZ_CALL_BACK_KEY // 与 bizCallbackKey 一致 +) +public class IWorkBizCallbackListener implements RocketMQListener { + private final RocketMQTemplate rocketMQTemplate; + @Override + public void onMessage(IWorkBizCallbackMessage message) { + log.info("收到 iWork 回调: requestId={}", message.getRequestId()); + log.info("收到 iWork 回调: message={}", JSONObject.toJSONString(message)); + + IWorkBizCallbackResultMessage result; + try { + // 处理业务逻辑 + processCallback(message); + + result = IWorkBizCallbackResultMessage.builder() + .requestId(message.getRequestId()) + .bizCallbackKey(message.getBizCallbackKey()) + .success(true) + .attempt(message.getAttempt()) + .maxAttempts(message.getMaxAttempts()) + .payload(message.getPayload()) + .build(); + } catch (Exception e) { + log.error("处理回调失败", e); + result = IWorkBizCallbackResultMessage.builder() + .requestId(message.getRequestId()) + .bizCallbackKey(message.getBizCallbackKey()) + .success(false) + .errorMessage(e.getMessage()) + .attempt(message.getAttempt()) + .maxAttempts(message.getMaxAttempts()) + .payload(message.getPayload()) + .build(); + } + + // 发送处理结果 + rocketMQTemplate.syncSend(IWorkBizCallbackResultMessage.TOPIC, result); + } + + private void processCallback(IWorkBizCallbackMessage message) { + // 业务处理逻辑 + // 1. 解析 payload 获取回调数据 + // 2. 更新业务状态 + // 3. 保存签章文件等 + } +} diff --git a/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/reportdoc/listener/ReportDocListenerConstant.java b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/reportdoc/listener/ReportDocListenerConstant.java new file mode 100644 index 00000000..52464ddf --- /dev/null +++ b/zt-module-qms/zt-module-qms-server/src/main/java/com/zt/plat/module/qms/business/reportdoc/listener/ReportDocListenerConstant.java @@ -0,0 +1,9 @@ +package com.zt.plat.module.qms.business.reportdoc.listener; + +public class ReportDocListenerConstant { + + /** + * iwork回调key,用于消息队列接收消息 + * */ + public static final String IWORK_BIZ_CALL_BACK_KEY = "qms_report_document_seal_callback"; +} 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 4e3db6d5..d9de9d9b 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 @@ -16,6 +16,7 @@ import com.zt.plat.module.qms.business.reportdoc.controller.vo.ReportDocumentFil import com.zt.plat.module.qms.business.reportdoc.dal.dataobject.ReportDocumentFileDO; import com.zt.plat.module.qms.business.reportdoc.dal.dataobject.ReportDocumentMainDO; import com.zt.plat.module.qms.business.reportdoc.dal.dataobject.ReportDocumentTypeDO; +import com.zt.plat.module.qms.business.reportdoc.listener.ReportDocListenerConstant; import com.zt.plat.module.qms.common.data.dal.dataobject.DataTemplateDO; import com.zt.plat.module.qms.common.data.service.DataTemplateService; import com.zt.plat.module.qms.core.code.SequenceUtil; @@ -105,6 +106,7 @@ public class ReportDocumentAssistService { dto.setYysx("检测报告用印"); dto.setXyywjUrl(docFile.getUrl()); dto.setYwxtdjbh(sequenceUtil.genCode(sequenceKey)); + dto.setBizCallbackKey(ReportDocListenerConstant.IWORK_BIZ_CALL_BACK_KEY); //业务回调标识,回调分发使用 return iWorkIntegrationApi.createWorkflow(dto); }