From 77778093987e9be057e783fd5b59c8b4582b9519 Mon Sep 17 00:00:00 2001 From: yanglin Date: Mon, 21 Apr 2025 16:16:01 +0800 Subject: [PATCH] REQ-3982: fix bugs --- .../nanopart/doc/file/index/IndexManager.java | 2 +- .../visa/api/request/UpdateVisaChangeReq.java | 2 + .../api/response/VisaDetailByIdResponse.java | 10 ++ .../mq/listener/ess/EssAllEventHandler.java | 5 + .../CompleteVisaChangeStampHandler.java | 1 + .../ProcessInstanceOfVisaAllEventHandler.java | 56 ++++---- .../server/service/OperateLogService.java | 6 + .../impl/ChangeRecordRelationServiceImpl.java | 31 +++-- .../service/impl/ChangeRecordServiceImpl.java | 130 +++++++++--------- .../service/impl/OperateLogServiceImpl.java | 50 ++++++- 10 files changed, 180 insertions(+), 113 deletions(-) diff --git a/doc/doc-server/src/main/java/cn/axzo/nanopart/doc/file/index/IndexManager.java b/doc/doc-server/src/main/java/cn/axzo/nanopart/doc/file/index/IndexManager.java index 3e048a08..b8d9120f 100644 --- a/doc/doc-server/src/main/java/cn/axzo/nanopart/doc/file/index/IndexManager.java +++ b/doc/doc-server/src/main/java/cn/axzo/nanopart/doc/file/index/IndexManager.java @@ -239,7 +239,7 @@ public class IndexManager { // resolve the name issue if (!indexSupport.childrenNameDuplicatable(rootNode)) indexSupport.incrNameIfDuplicate(rootNode); - // get the coped root with full props + // get the copied root with full props return indexNodeDao.findOrNull(rootNode.getCode()); } diff --git a/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/request/UpdateVisaChangeReq.java b/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/request/UpdateVisaChangeReq.java index 55da6958..a18ce971 100644 --- a/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/request/UpdateVisaChangeReq.java +++ b/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/request/UpdateVisaChangeReq.java @@ -47,6 +47,8 @@ public class UpdateVisaChangeReq { @NotNull(message = "phase不能为空") private VisaProcessPhase phase = VisaProcessPhase.PROJECT; + private String context; + @Getter @AllArgsConstructor(access = AccessLevel.PRIVATE) public enum VisaStampAction { diff --git a/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/response/VisaDetailByIdResponse.java b/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/response/VisaDetailByIdResponse.java index 1bc77659..864eebc6 100644 --- a/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/response/VisaDetailByIdResponse.java +++ b/visa/visa-api/src/main/java/cn/axzo/nanopart/visa/api/response/VisaDetailByIdResponse.java @@ -218,6 +218,11 @@ public class VisaDetailByIdResponse { */ private String approvalId; + /** + * 最终审批ID + */ + private String approvalIdPay; + /** * 立项审批状态 */ @@ -238,6 +243,11 @@ public class VisaDetailByIdResponse { */ private String contractId; + /** + * 合同 ID + */ + private String contractIdPay; + /** * 用印状态 */ diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/mq/listener/ess/EssAllEventHandler.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/mq/listener/ess/EssAllEventHandler.java index 0f65025d..fcd53a48 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/mq/listener/ess/EssAllEventHandler.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/mq/listener/ess/EssAllEventHandler.java @@ -43,6 +43,7 @@ import cn.axzo.nanopart.visa.server.rpc.WorkflowGateway; import cn.axzo.nanopart.visa.server.rpc.WorkspaceGateway; import cn.axzo.nanopart.visa.server.service.ChangeRecordRelationService; import cn.axzo.nanopart.visa.server.service.ChangeRecordService; +import cn.axzo.nanopart.visa.server.service.OperateLogService; import cn.axzo.workflow.common.enums.BpmnProcessInstanceResultEnum; import cn.axzo.workflow.common.model.request.bpmn.process.BpmnProcessInstanceAbortDTO; import cn.axzo.workflow.common.model.request.bpmn.task.BpmnTaskAuditDTO; @@ -72,6 +73,8 @@ public class EssAllEventHandler implements EventHandler, InitializingBean { private ChangeRecordService changeRecordService; @Resource private ChangeRecordRelationService changeRecordRelationService; + @Resource + private OperateLogService operateLogService; @Override public void onEvent(Event event, EventConsumer.Context context) { @@ -83,6 +86,7 @@ public class EssAllEventHandler implements EventHandler, InitializingBean { EssContractStateChangeMessage essContractStateChangeMessage = event.normalizedData(EssContractStateChangeMessage.class); EssContractInfo contract = essContractStateChangeMessage.getContract(); AssertUtil.isTrue(Objects.nonNull(contract), "腾讯电子签事件对象异常"); + operateLogService.save("essMQ", contract.getEssContractId(), "message", essContractStateChangeMessage); // 取消用印会清空合同 id,这里兼容该情况 Optional optVisa = changeRecordService.lambdaQuery() @@ -192,6 +196,7 @@ public class EssAllEventHandler implements EventHandler, InitializingBean { .operatorId(0L) .operatorName("腾讯撤销合同") .scene("取消用印") + .context("stamp:cancelOfEssCancelContract") .build(); changeRecordService.update(updateVisaChangeReq); } diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/mq/listener/workflow/process/CompleteVisaChangeStampHandler.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/mq/listener/workflow/process/CompleteVisaChangeStampHandler.java index 0666370b..4d250e9a 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/mq/listener/workflow/process/CompleteVisaChangeStampHandler.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/mq/listener/workflow/process/CompleteVisaChangeStampHandler.java @@ -116,6 +116,7 @@ public class CompleteVisaChangeStampHandler implements ProcessInstanceEventHandl .operatorName(operatorName) .visaStampAction(UpdateVisaChangeReq.VisaStampAction.AUTO_COMPLETE) .scene("用印审批完成,自动完成用印申请") + .context("stamp:autoComplete") .build()); } } diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/mq/listener/workflow/process/ProcessInstanceOfVisaAllEventHandler.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/mq/listener/workflow/process/ProcessInstanceOfVisaAllEventHandler.java index 74d76a1b..7196a6a6 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/mq/listener/workflow/process/ProcessInstanceOfVisaAllEventHandler.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/mq/listener/workflow/process/ProcessInstanceOfVisaAllEventHandler.java @@ -1,5 +1,34 @@ package cn.axzo.nanopart.visa.server.mq.listener.workflow.process; +import static cn.axzo.nanopart.visa.api.constant.VisaConstant.FORM_FIELD_TOPIC; +import static cn.axzo.nanopart.visa.api.constant.VisaConstant.FORM_FIELD_WORKSPACE_NAME; +import static cn.axzo.nanopart.visa.api.constant.VisaConstant.IM_GROUP_BIZ_INFO_INITIATOR_OU_ID; +import static cn.axzo.nanopart.visa.api.constant.VisaConstant.IM_GROUP_BIZ_INFO_INITIATOR_WORKSPACE_ID; +import static cn.axzo.nanopart.visa.api.constant.VisaConstant.WORKFLOW_VAR_VISA_TYPE_KEY; +import static cn.axzo.nanopart.visa.api.enums.VisaLogTypeEnum.APPROVE_ABORT; +import static cn.axzo.nanopart.visa.api.enums.VisaLogTypeEnum.REJECT_APPROVE; +import static cn.axzo.nanopart.visa.api.enums.VisaLogTypeEnum.REVERT_APPROVE; +import static cn.axzo.nanopart.visa.api.enums.VisaRelationFieldEnum.PROCESS_INSTANCE_OF_PAY; +import static cn.axzo.nanopart.visa.api.enums.VisaRelationFieldEnum.PROCESS_INSTANCE_OF_VISA; +import static cn.axzo.nanopart.visa.api.enums.VisaTypeEnum.DESIGN_CHANGE; +import static cn.axzo.nanopart.visa.api.enums.VisaTypeEnum.PAY_CONFIRM; +import static cn.axzo.nanopart.visa.api.enums.VisaTypeEnum.PROJECT_VISA; +import static cn.axzo.nanopart.visa.api.enums.VisaTypeEnum.TECHNOLOGY_APPROVED; + +import java.text.SimpleDateFormat; +import java.util.Date; +import java.util.List; +import java.util.Map; +import java.util.Objects; +import java.util.stream.Collectors; + +import org.apache.groovy.util.Maps; +import org.springframework.stereotype.Component; +import org.springframework.util.StringUtils; + +import com.alibaba.fastjson.JSONObject; +import com.google.common.collect.Lists; + import cn.axzo.framework.jackson.utility.JSON; import cn.axzo.framework.rocketmq.Event; import cn.axzo.framework.rocketmq.EventConsumer; @@ -31,34 +60,7 @@ import cn.axzo.workflow.common.model.response.bpmn.process.BpmnProcessDefinition import cn.axzo.workflow.common.model.response.mq.ProcessInstanceDTO; import cn.axzo.workflow.starter.handler.ProcessInstanceEventHandler; import cn.azxo.framework.common.model.CommonResponse; -import com.alibaba.fastjson.JSONObject; -import com.google.common.collect.Lists; import lombok.extern.slf4j.Slf4j; -import org.apache.groovy.util.Maps; -import org.springframework.stereotype.Component; -import org.springframework.util.StringUtils; - -import java.text.SimpleDateFormat; -import java.util.Date; -import java.util.List; -import java.util.Map; -import java.util.Objects; -import java.util.stream.Collectors; - -import static cn.axzo.nanopart.visa.api.constant.VisaConstant.FORM_FIELD_TOPIC; -import static cn.axzo.nanopart.visa.api.constant.VisaConstant.FORM_FIELD_WORKSPACE_NAME; -import static cn.axzo.nanopart.visa.api.constant.VisaConstant.IM_GROUP_BIZ_INFO_INITIATOR_OU_ID; -import static cn.axzo.nanopart.visa.api.constant.VisaConstant.IM_GROUP_BIZ_INFO_INITIATOR_WORKSPACE_ID; -import static cn.axzo.nanopart.visa.api.constant.VisaConstant.WORKFLOW_VAR_VISA_TYPE_KEY; -import static cn.axzo.nanopart.visa.api.enums.VisaLogTypeEnum.APPROVE_ABORT; -import static cn.axzo.nanopart.visa.api.enums.VisaLogTypeEnum.REJECT_APPROVE; -import static cn.axzo.nanopart.visa.api.enums.VisaLogTypeEnum.REVERT_APPROVE; -import static cn.axzo.nanopart.visa.api.enums.VisaRelationFieldEnum.PROCESS_INSTANCE_OF_PAY; -import static cn.axzo.nanopart.visa.api.enums.VisaRelationFieldEnum.PROCESS_INSTANCE_OF_VISA; -import static cn.axzo.nanopart.visa.api.enums.VisaTypeEnum.DESIGN_CHANGE; -import static cn.axzo.nanopart.visa.api.enums.VisaTypeEnum.PAY_CONFIRM; -import static cn.axzo.nanopart.visa.api.enums.VisaTypeEnum.PROJECT_VISA; -import static cn.axzo.nanopart.visa.api.enums.VisaTypeEnum.TECHNOLOGY_APPROVED; /** * 工作流广播的实例维度的所有事件类型 diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/OperateLogService.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/OperateLogService.java index dda06f47..419971f2 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/OperateLogService.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/OperateLogService.java @@ -4,5 +4,11 @@ import cn.axzo.log.platform.client.model.req.LogAddReq; public interface OperateLogService { + void saveRequest(String scene, Long tag, Object request); + + void save(String scene, Long tag, Object... messages); + + void save(String scene, String tag, Object... messages); + void save(LogAddReq param); } diff --git a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordRelationServiceImpl.java b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordRelationServiceImpl.java index 726630dd..0d4ca325 100644 --- a/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordRelationServiceImpl.java +++ b/visa/visa-server/src/main/java/cn/axzo/nanopart/visa/server/service/impl/ChangeRecordRelationServiceImpl.java @@ -118,6 +118,7 @@ import cn.axzo.nanopart.visa.server.rpc.WorkspaceGateway; import cn.axzo.nanopart.visa.server.service.ChangeRecordLogService; import cn.axzo.nanopart.visa.server.service.ChangeRecordRelationService; import cn.axzo.nanopart.visa.server.service.ChangeRecordService; +import cn.axzo.nanopart.visa.server.service.OperateLogService; import cn.axzo.nanopart.visa.server.service.VisaHelper; import cn.axzo.nanopart.visa.server.utils.Constants; import cn.axzo.workflow.common.model.dto.CooperationOrgDTO; @@ -152,6 +153,7 @@ public class ChangeRecordRelationServiceImpl extends ServiceImpl types = phase == VisaProcessPhase.PROJECT - ? Lists.newArrayList(PRINT_PDF_FILE, PROCESS_INSTANCE_OF_ESS, ESS_RECIPIENT_ID_MAP) - : Lists.newArrayList(PRINT_PDF_FILE_PAY, PROCESS_INSTANCE_OF_ESS_PAY, ESS_RECIPIENT_ID_MAP_PAY); - deleteByVisaId(visa.getId(), types); } private Map listCooperateShipTypes(VisaRequestStampReq req, ChangeRecord visa) { @@ -677,11 +679,13 @@ public class ChangeRecordRelationServiceImpl extends ServiceImpl createContract(VisaRequestStampReq req, ChangeRecord visa, Map> stampUserMap) { - if (StringUtils.hasText(visa.getContractId())) { - VisaRelationFieldEnum filedType = req.getPhase() == VisaProcessPhase.PROJECT // - ? ESS_RECIPIENT_ID_MAP // - : ESS_RECIPIENT_ID_MAP_PAY; - List recipientIds = findByVisaAndVarName(visa.getId(), filedType.name()); + if (req.getPhase() == VisaProcessPhase.PROJECT && StringUtils.hasText(visa.getContractId())) { + List recipientIds = findByVisaAndVarName(visa.getId(), ESS_RECIPIENT_ID_MAP.name()); + AssertUtil.notEmpty(recipientIds, "未找到签章位置信息"); + return JSON.parseObject(recipientIds.get(0).getContent(), Map.class); + } + if (req.getPhase() == VisaProcessPhase.PAYMENT && StringUtils.hasText(visa.getContractIdPay())) { + List recipientIds = findByVisaAndVarName(visa.getId(), ESS_RECIPIENT_ID_MAP_PAY.name()); AssertUtil.notEmpty(recipientIds, "未找到签章位置信息"); return JSON.parseObject(recipientIds.get(0).getContent(), Map.class); } @@ -715,10 +719,11 @@ public class ChangeRecordRelationServiceImpl extends ServiceImpl tags = param.getTags(); + if (tags == null) + tags = new ArrayList<>(); + else + tags = new ArrayList<>(tags); + tags.add("nanopart"); + tags.add("visa"); try { // 目前操作日志的记录,不是核心流程,这个方法,不抛出异常,以免影响正常业务流程。 // 异步处理