diff --git a/yudao-module-bpm/yudao-module-bpm-server/src/main/java/cn/iocoder/yudao/module/bpm/api/event/CrmContractStatusListener.java b/yudao-module-bpm/yudao-module-bpm-server/src/main/java/cn/iocoder/yudao/module/bpm/api/event/CrmContractStatusListener.java new file mode 100644 index 000000000..12eb9cf17 --- /dev/null +++ b/yudao-module-bpm/yudao-module-bpm-server/src/main/java/cn/iocoder/yudao/module/bpm/api/event/CrmContractStatusListener.java @@ -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"); + } + +} diff --git a/yudao-module-bpm/yudao-module-bpm-server/src/main/java/cn/iocoder/yudao/module/bpm/api/event/CrmReceivableStatusListener.java b/yudao-module-bpm/yudao-module-bpm-server/src/main/java/cn/iocoder/yudao/module/bpm/api/event/CrmReceivableStatusListener.java index 69769058d..a780a5be7 100644 --- a/yudao-module-bpm/yudao-module-bpm-server/src/main/java/cn/iocoder/yudao/module/bpm/api/event/CrmReceivableStatusListener.java +++ b/yudao-module-bpm/yudao-module-bpm-server/src/main/java/cn/iocoder/yudao/module/bpm/api/event/CrmReceivableStatusListener.java @@ -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; /** diff --git a/yudao-module-bpm/yudao-module-bpm-server/src/main/java/cn/iocoder/yudao/module/bpm/framework/rpc/config/RpcConfiguration.java b/yudao-module-bpm/yudao-module-bpm-server/src/main/java/cn/iocoder/yudao/module/bpm/framework/rpc/config/RpcConfiguration.java index 90ffa4eca..fac52b41e 100644 --- a/yudao-module-bpm/yudao-module-bpm-server/src/main/java/cn/iocoder/yudao/module/bpm/framework/rpc/config/RpcConfiguration.java +++ b/yudao-module-bpm/yudao-module-bpm-server/src/main/java/cn/iocoder/yudao/module/bpm/framework/rpc/config/RpcConfiguration.java @@ -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(); + } + } diff --git a/yudao-module-crm/yudao-module-crm-server/src/main/java/cn/iocoder/yudao/module/crm/service/contract/listener/CrmContractStatusListener.java b/yudao-module-crm/yudao-module-crm-server/src/main/java/cn/iocoder/yudao/module/crm/service/contract/listener/CrmContractStatusListener.java index ce82858b2..64caa3749 100644 --- a/yudao-module-crm/yudao-module-crm-server/src/main/java/cn/iocoder/yudao/module/crm/service/contract/listener/CrmContractStatusListener.java +++ b/yudao-module-crm/yudao-module-crm-server/src/main/java/cn/iocoder/yudao/module/crm/service/contract/listener/CrmContractStatusListener.java @@ -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()); }