From 4e810e8947bd3b857cded77ce1b171ef06854052 Mon Sep 17 00:00:00 2001 From: FCL Date: Tue, 17 Mar 2026 15:17:56 +0800 Subject: [PATCH] =?UTF-8?q?fix:=E6=8A=A5=E5=91=8A=E9=BB=98=E8=AE=A4?= =?UTF-8?q?=E6=A0=87=E9=A2=98=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../listener/IWorkBizCallbackListener.java | 18 +++- .../service/ReportDocumentAssistService.java | 3 - .../service/ReportDocumentMainService.java | 4 + .../ReportDocumentMainServiceImpl.java | 92 ++++++++++++++++++- 4 files changed, 108 insertions(+), 9 deletions(-) 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 index 24279fce..de80fd80 100644 --- 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 @@ -1,8 +1,12 @@ package com.zt.plat.module.qms.business.reportdoc.listener; import com.alibaba.fastjson.JSONObject; +import com.zt.plat.module.qms.business.reportdoc.service.ReportDocumentAssistService; +import com.zt.plat.module.qms.business.reportdoc.service.ReportDocumentMainService; +import com.zt.plat.module.system.api.permission.RoleApi; import com.zt.plat.module.system.mq.iwork.IWorkBizCallbackMessage; import com.zt.plat.module.system.mq.iwork.IWorkBizCallbackResultMessage; +import jakarta.annotation.Resource; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.apache.rocketmq.spring.annotation.RocketMQMessageListener; @@ -20,6 +24,9 @@ import org.springframework.stereotype.Component; ) public class IWorkBizCallbackListener implements RocketMQListener { private final RocketMQTemplate rocketMQTemplate; + + @Resource private ReportDocumentAssistService reportDocumentAssistService; + @Resource private ReportDocumentMainService reportDocumentMainService; @Override public void onMessage(IWorkBizCallbackMessage message) { log.info("收到 iWork 回调: requestId={}", message.getRequestId()); @@ -55,10 +62,13 @@ public class IWorkBizCallbackListener implements RocketMQListener execCallBackByIwork(IWorkBizCallbackMessage message); } \ 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/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 80e66c40..9f815ab6 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 @@ -3,6 +3,7 @@ package com.zt.plat.module.qms.business.reportdoc.service; import cn.hutool.core.collection.CollUtil; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.zt.plat.framework.common.pojo.CommonResult; import com.zt.plat.framework.common.pojo.PageResult; import com.zt.plat.framework.common.util.object.BeanUtils; @@ -13,6 +14,11 @@ import com.zt.plat.module.bpm.api.task.BpmTaskApi; import com.zt.plat.module.bpm.api.task.dto.BpmProcessInstanceCreateReqDTO; import com.zt.plat.module.bpm.api.task.dto.BpmTaskApproveReqDTO; import com.zt.plat.module.bpm.api.task.dto.BpmTaskRespDTO; +import com.zt.plat.module.infra.api.businessfile.BusinessFileApi; +import com.zt.plat.module.infra.api.businessfile.dto.BusinessFilePageReqDTO; +import com.zt.plat.module.infra.api.businessfile.dto.BusinessFileRespDTO; +import com.zt.plat.module.infra.api.file.FileApi; +import com.zt.plat.module.infra.api.file.dto.FileRespDTO; import com.zt.plat.module.qms.api.task.BMPCallbackInterface; import com.zt.plat.module.qms.api.task.dto.QmsBpmDTO; import com.zt.plat.module.qms.business.bus.controller.vo.BusinessAssayReportDataPageReqVO; @@ -22,6 +28,7 @@ import com.zt.plat.module.qms.business.bus.service.BusinessAssayReportDataServic import com.zt.plat.module.qms.business.bus.service.BusinessSampleEntrustRegistrationService; 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.constant.ReportDocConstant; 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.ReportDocumentMainCorrelationDO; @@ -32,6 +39,7 @@ import com.zt.plat.module.qms.common.data.service.DataKeyCheckService; import com.zt.plat.module.qms.core.code.SequenceUtil; import com.zt.plat.module.qms.enums.QmsBpmConstant; import com.zt.plat.module.qms.enums.QmsCommonConstant; +import com.zt.plat.module.system.mq.iwork.IWorkBizCallbackMessage; import jakarta.annotation.Resource; import lombok.extern.slf4j.Slf4j; import org.springframework.scheduling.annotation.Async; @@ -65,6 +73,8 @@ public class ReportDocumentMainServiceImpl implements ReportDocumentMainService, @Resource private ReportDocumentDataService reportDocumentDataService; @Resource private BpmProcessInstanceApi bpmProcessInstanceApi; @Resource private BpmTaskApi bpmTaskApi; + @Resource private BusinessFileApi businessFileApi; + @Resource private FileApi fileApi; @Resource private ReportDocumentMainCorrelationService reportDocumentMainCorrelationService; @Resource private ReportDocumentTypeService reportDocumentTypeService; @Resource private ConfigUserSignatureService configUserSignatureService; @@ -218,7 +228,7 @@ public class ReportDocumentMainServiceImpl implements ReportDocumentMainService, //委托单号 String entrustCode = ""; String entrustId = ""; - + String sampleCategoryForTitle = ""; if(!ObjectUtils.isEmpty(entrustList)){ for(BusinessSampleEntrustRegistrationDO entrust : entrustList){ entrustCode += entrust.getEntrustNumber() + ","; @@ -227,8 +237,11 @@ public class ReportDocumentMainServiceImpl implements ReportDocumentMainService, if(!ObjectUtils.isEmpty(externalInfomation)){ JSONObject externalInfomationJson = JSONObject.parseObject(externalInfomation); String sampleCategory = externalInfomationJson.getString("sampleCategory"); - if(!ObjectUtils.isEmpty(sampleCategory)) + if(!ObjectUtils.isEmpty(sampleCategory)){ + sampleCategoryForTitle = sampleCategory; formDataJson.put("sampleCategory", sampleCategory); + } + } break; } @@ -240,6 +253,14 @@ public class ReportDocumentMainServiceImpl implements ReportDocumentMainService, formDataJson.put("entrustCode", entrustCode); formDataJson.put("entrustId", entrustId); + + String documentTitle = reportDocumentMainDO.getDocumentTitle(); + if(!ObjectUtils.isEmpty(sampleCategoryForTitle)) + documentTitle = sampleCategoryForTitle + "-" + documentTitle; + if(!ObjectUtils.isEmpty(entrustCode)) + documentTitle = entrustCode + "-" + documentTitle; + reportDocumentMainDO.setDocumentTitle(documentTitle); + reportDocumentMainDO.setFormData(formDataJson.toJSONString()); reportDocumentMainMapper.updateById(reportDocumentMainDO); return CommonResult.success("操作成功"); @@ -375,6 +396,15 @@ public class ReportDocumentMainServiceImpl implements ReportDocumentMainService, return reportDocumentMainMapper.selectById(id); } + @Override + public ReportDocumentMainDO getByCode(String code) { + LambdaQueryWrapper query = new LambdaQueryWrapper<>(); + query.eq(ReportDocumentMainDO::getDocumentCode, code); + query.orderByDesc(ReportDocumentMainDO::getCreateTime); + List list = reportDocumentMainMapper.selectList(query); + return list.isEmpty() ? null : list.get(0); + } + @Override public PageResult getReportDocumentMainPage(ReportDocumentMainPageReqVO pageReqVO) { return reportDocumentMainMapper.selectPage(pageReqVO); @@ -553,4 +583,62 @@ public class ReportDocumentMainServiceImpl implements ReportDocumentMainService, signObj.put(currentActivityId, obj); entity.setDocumentSignature(signObj.toJSONString()); } + + /** + * 处理报告用印iwork回调逻辑 + * 1. 解析 payload 获取回调数据 + * 2. 保存签章文件等 + * 3. 更新业务状态 + * */ + @Transactional(rollbackFor = Exception.class) + public CommonResult execCallBackByIwork(IWorkBizCallbackMessage message){ + JSONObject payload = new JSONObject(); + try{ + payload = JSONObject.parseObject((String) message.getPayload()); + }catch (Exception e){ + log.error("iwork用印回调,解析回调数据失败", e.getMessage()); + e.getMessage(); + throw new RuntimeException("iwork用印回调,解析回调数据失败"); + } + //获取附件对象 + String businessCode = payload.getString("businessCode"); + String fileName = payload.getString("fileName"); + String requestId = payload.getString("requestId"); + //获取主数据 + ReportDocumentMainDO entity = getByCode(businessCode); + + //查询附件对象 + BusinessFilePageReqDTO pageReqDTO = new BusinessFilePageReqDTO(); + pageReqDTO.setBusinessCode(businessCode); + pageReqDTO.setSource(ReportDocConstant.REPORT_DOCUMENT_BUSINESS_FILE_SOURCE_IWORK); + CommonResult> bisFileRet = businessFileApi.getBusinessFilePage(pageReqDTO); + if(!bisFileRet.isSuccess()){ + log.error("iwork用印回调,查询回调附件失败!" + bisFileRet.getMsg()); + throw new RuntimeException("iwork用印回调,查询回调附件失败!"); + } + PageResult bisFilePage = bisFileRet.getData(); + List bisFileList = bisFilePage.getList(); + if(bisFileList == null || bisFileList.isEmpty()){ + log.error("iwork用印回调,附件不存在!" + bisFileRet.getMsg()); + throw new RuntimeException("iwork用印回调,附件不存在!"); + } + BusinessFileRespDTO bisFile = bisFileList.get(0); + Long fileId = bisFile.getFileId(); + CommonResult fileRet = fileApi.getFile(fileId); + FileRespDTO file = fileRet.getData(); + //写入ReportDocumentFile + ReportDocumentFileSaveReqVO fileSaveReqVO = new ReportDocumentFileSaveReqVO(); +// fileSaveReqVO.setMainId(mainDO.getId()); +// fileSaveReqVO.setFileId(fileRespDTO.getId()); +// fileSaveReqVO.setName(filename); +// fileSaveReqVO.setPath(fileRespDTO.getDirectory()); +// fileSaveReqVO.setUrl(fileRespDTO.getUrl()); +// fileSaveReqVO.setVersion(mainDO.getDocumentVersion()); +// reportDocumentFileService.createReportDocumentFile(fileSaveReqVO); + + //触发流程提交 + + return null; + } + }