fix:【bpm 工作流】跨进程调用,无法回调 crm 的工作流结果的问题

pull/150/MERGE
YunaiV 2025-07-30 18:51:23 +08:00
parent 8eea97add4
commit 3c5c3ddc87
4 changed files with 45 additions and 5 deletions

View File

@ -0,0 +1,25 @@
package cn.iocoder.yudao.module.bpm.api.event;
import cn.iocoder.yudao.module.bpm.framework.flowable.core.util.BpmHttpRequestUtils;
import jakarta.validation.Valid;
import org.springframework.web.bind.annotation.RequestBody;
/**
*
*
* @author
*/
public class CrmContractStatusListener extends BpmProcessInstanceStatusEventListener {
@Override
public String getProcessDefinitionKey() {
return "crm-contract-audit";
}
@Override
public void onEvent(@RequestBody @Valid BpmProcessInstanceStatusEvent event) {
BpmHttpRequestUtils.executeBpmHttpRequest(event,
"http://crm-server/rpc-api/crm/contract/update-audit-status");
}
}

View File

@ -2,8 +2,6 @@ package cn.iocoder.yudao.module.bpm.api.event;
import cn.iocoder.yudao.module.bpm.framework.flowable.core.util.BpmHttpRequestUtils;
import jakarta.validation.Valid;
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
import org.springframework.stereotype.Component;
import org.springframework.web.bind.annotation.RequestBody;
/**

View File

@ -1,5 +1,6 @@
package cn.iocoder.yudao.module.bpm.framework.rpc.config;
import cn.iocoder.yudao.module.bpm.api.event.CrmContractStatusListener;
import cn.iocoder.yudao.module.bpm.api.event.CrmReceivableStatusListener;
import cn.iocoder.yudao.module.system.api.dept.DeptApi;
import cn.iocoder.yudao.module.system.api.dept.PostApi;
@ -26,4 +27,10 @@ public class RpcConfiguration {
return new CrmReceivableStatusListener();
}
@Bean
@ConditionalOnMissingBean(name = "crmContractStatusListener")
public CrmContractStatusListener crmContractStatusListener() {
return new CrmContractStatusListener();
}
}

View File

@ -2,19 +2,28 @@ package cn.iocoder.yudao.module.crm.service.contract.listener;
import cn.iocoder.yudao.module.bpm.api.event.BpmProcessInstanceStatusEvent;
import cn.iocoder.yudao.module.bpm.api.event.BpmProcessInstanceStatusEventListener;
import cn.iocoder.yudao.module.crm.enums.ApiConstants;
import cn.iocoder.yudao.module.crm.service.contract.CrmContractService;
import cn.iocoder.yudao.module.crm.service.contract.CrmContractServiceImpl;
import jakarta.annotation.Resource;
import org.springframework.stereotype.Component;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController;
/**
*
*
* @author HUIHUI
*/
@Component
@RestController
@Validated
@FeignClient(name = ApiConstants.NAME) // TODO 芋艿fallbackFactory =
public class CrmContractStatusListener extends BpmProcessInstanceStatusEventListener {
private static final String PREFIX = ApiConstants.PREFIX + "/contract";
@Resource
private CrmContractService contractService;
@ -24,7 +33,8 @@ public class CrmContractStatusListener extends BpmProcessInstanceStatusEventList
}
@Override
protected void onEvent(BpmProcessInstanceStatusEvent event) {
@PostMapping(PREFIX + "/update-audit-status") // 目的:提供给 bpm-server rpc 调用
protected void onEvent(@RequestBody BpmProcessInstanceStatusEvent event) {
contractService.updateContractAuditStatus(Long.parseLong(event.getBusinessKey()), event.getStatus());
}