From 0c5e6cf17f98bfd797fa622b44de094b34755b47 Mon Sep 17 00:00:00 2001 From: hongawen <83944980@qq.com> Date: Mon, 13 May 2024 10:19:18 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B5=81=E7=A8=8B=E7=8A=B6=E6=80=81=E5=8F=98?= =?UTF-8?q?=E5=8C=96=EF=BC=8C=E6=9B=B4=E6=96=B0=E4=B8=9A=E5=8A=A1=E8=A1=A8?= =?UTF-8?q?=E6=93=8D=E4=BD=9C=E5=AE=9E=E7=8E=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pqs-bpm/bpm-boot/pom.xml | 6 +++ .../bpm/controller/BpmTaskController.java | 2 +- .../BpmProcessInstanceEventPublisher.java | 1 + .../BpmProcessInstanceStatusEvent.java | 2 +- ...BpmProcessInstanceStatusEventListener.java | 34 +++++++++++++++++ .../business/BpmUserReportStatusListener.java | 27 ++++++++++++++ .../bpm/utils/BpmProcessInstanceConvert.java | 3 +- .../api/UserReportFeignClient.java | 22 +++++++++++ .../UserReportFeignClientFallbackFactory.java | 37 +++++++++++++++++++ .../user/UserReportManageController.java | 9 +++++ .../service/user/UserReportPOService.java | 2 + .../user/impl/UserReportPOServiceImpl.java | 9 +++++ 12 files changed, 150 insertions(+), 4 deletions(-) rename pqs-bpm/bpm-boot/src/main/java/com/njcn/bpm/{event => listener}/BpmProcessInstanceStatusEvent.java (96%) create mode 100644 pqs-bpm/bpm-boot/src/main/java/com/njcn/bpm/listener/BpmProcessInstanceStatusEventListener.java create mode 100644 pqs-bpm/bpm-boot/src/main/java/com/njcn/bpm/listener/business/BpmUserReportStatusListener.java create mode 100644 pqs-supervision/supervision-api/src/main/java/com/njcn/supervision/api/UserReportFeignClient.java create mode 100644 pqs-supervision/supervision-api/src/main/java/com/njcn/supervision/api/fallback/UserReportFeignClientFallbackFactory.java diff --git a/pqs-bpm/bpm-boot/pom.xml b/pqs-bpm/bpm-boot/pom.xml index 71258ea2f..99ae65816 100644 --- a/pqs-bpm/bpm-boot/pom.xml +++ b/pqs-bpm/bpm-boot/pom.xml @@ -32,6 +32,12 @@ ${project.version} + + com.njcn + supervision-api + ${project.version} + + com.njcn user-api diff --git a/pqs-bpm/bpm-boot/src/main/java/com/njcn/bpm/controller/BpmTaskController.java b/pqs-bpm/bpm-boot/src/main/java/com/njcn/bpm/controller/BpmTaskController.java index b7e82e675..391ec305f 100644 --- a/pqs-bpm/bpm-boot/src/main/java/com/njcn/bpm/controller/BpmTaskController.java +++ b/pqs-bpm/bpm-boot/src/main/java/com/njcn/bpm/controller/BpmTaskController.java @@ -229,7 +229,7 @@ public class BpmTaskController extends BaseController { @OperateInfo(info = LogEnum.BUSINESS_COMMON) - @GetMapping("/return") + @PostMapping("/return") @ApiOperation("回退任务") @ApiImplicitParam(name = "bpmTaskReturnParam", value = "查询参数", required = true) public HttpResult returnTask(@Validated @RequestBody BpmTaskReturnParam bpmTaskReturnParam) { diff --git a/pqs-bpm/bpm-boot/src/main/java/com/njcn/bpm/event/BpmProcessInstanceEventPublisher.java b/pqs-bpm/bpm-boot/src/main/java/com/njcn/bpm/event/BpmProcessInstanceEventPublisher.java index 71edf0212..5ba4491ac 100644 --- a/pqs-bpm/bpm-boot/src/main/java/com/njcn/bpm/event/BpmProcessInstanceEventPublisher.java +++ b/pqs-bpm/bpm-boot/src/main/java/com/njcn/bpm/event/BpmProcessInstanceEventPublisher.java @@ -1,5 +1,6 @@ package com.njcn.bpm.event; +import com.njcn.bpm.listener.BpmProcessInstanceStatusEvent; import lombok.AllArgsConstructor; import org.springframework.context.ApplicationEventPublisher; import org.springframework.validation.annotation.Validated; diff --git a/pqs-bpm/bpm-boot/src/main/java/com/njcn/bpm/event/BpmProcessInstanceStatusEvent.java b/pqs-bpm/bpm-boot/src/main/java/com/njcn/bpm/listener/BpmProcessInstanceStatusEvent.java similarity index 96% rename from pqs-bpm/bpm-boot/src/main/java/com/njcn/bpm/event/BpmProcessInstanceStatusEvent.java rename to pqs-bpm/bpm-boot/src/main/java/com/njcn/bpm/listener/BpmProcessInstanceStatusEvent.java index ce90b861e..505eab476 100644 --- a/pqs-bpm/bpm-boot/src/main/java/com/njcn/bpm/event/BpmProcessInstanceStatusEvent.java +++ b/pqs-bpm/bpm-boot/src/main/java/com/njcn/bpm/listener/BpmProcessInstanceStatusEvent.java @@ -1,4 +1,4 @@ -package com.njcn.bpm.event; +package com.njcn.bpm.listener; import lombok.Data; import org.springframework.context.ApplicationEvent; diff --git a/pqs-bpm/bpm-boot/src/main/java/com/njcn/bpm/listener/BpmProcessInstanceStatusEventListener.java b/pqs-bpm/bpm-boot/src/main/java/com/njcn/bpm/listener/BpmProcessInstanceStatusEventListener.java new file mode 100644 index 000000000..d16b08c5c --- /dev/null +++ b/pqs-bpm/bpm-boot/src/main/java/com/njcn/bpm/listener/BpmProcessInstanceStatusEventListener.java @@ -0,0 +1,34 @@ +package com.njcn.bpm.listener; + +import cn.hutool.core.util.StrUtil; +import org.springframework.context.ApplicationListener; + +/** + * {@link BpmProcessInstanceStatusEvent} 的监听器 + * + * @author 芋道源码 + */ +public abstract class BpmProcessInstanceStatusEventListener + implements ApplicationListener { + + @Override + public final void onApplicationEvent(BpmProcessInstanceStatusEvent event) { + if (!StrUtil.equals(event.getProcessDefinitionKey(), getProcessDefinitionKey())) { + return; + } + onEvent(event); + } + + /** + * @return 返回监听的流程定义 Key + */ + protected abstract String getProcessDefinitionKey(); + + /** + * 处理事件 + * + * @param event 事件 + */ + protected abstract void onEvent(BpmProcessInstanceStatusEvent event); + +} diff --git a/pqs-bpm/bpm-boot/src/main/java/com/njcn/bpm/listener/business/BpmUserReportStatusListener.java b/pqs-bpm/bpm-boot/src/main/java/com/njcn/bpm/listener/business/BpmUserReportStatusListener.java new file mode 100644 index 000000000..e1082b64e --- /dev/null +++ b/pqs-bpm/bpm-boot/src/main/java/com/njcn/bpm/listener/business/BpmUserReportStatusListener.java @@ -0,0 +1,27 @@ +package com.njcn.bpm.listener.business; + +import com.njcn.bpm.listener.BpmProcessInstanceStatusEvent; +import com.njcn.bpm.listener.BpmProcessInstanceStatusEventListener; +import com.njcn.supervision.api.UserReportFeignClient; +import org.springframework.stereotype.Component; + +import javax.annotation.Resource; + + +@Component +public class BpmUserReportStatusListener extends BpmProcessInstanceStatusEventListener { + + @Resource + private UserReportFeignClient userReportFeignClient; + + @Override + protected String getProcessDefinitionKey() { + return "build_user_info"; + } + + @Override + protected void onEvent(BpmProcessInstanceStatusEvent event) { + userReportFeignClient.updateUserReportStatus(event.getBusinessKey(), event.getStatus()); + } + +} diff --git a/pqs-bpm/bpm-boot/src/main/java/com/njcn/bpm/utils/BpmProcessInstanceConvert.java b/pqs-bpm/bpm-boot/src/main/java/com/njcn/bpm/utils/BpmProcessInstanceConvert.java index 65c20c817..7fff0b295 100644 --- a/pqs-bpm/bpm-boot/src/main/java/com/njcn/bpm/utils/BpmProcessInstanceConvert.java +++ b/pqs-bpm/bpm-boot/src/main/java/com/njcn/bpm/utils/BpmProcessInstanceConvert.java @@ -1,6 +1,6 @@ package com.njcn.bpm.utils; -import com.njcn.bpm.event.BpmProcessInstanceStatusEvent; +import com.njcn.bpm.listener.BpmProcessInstanceStatusEvent; import com.njcn.bpm.pojo.dto.BpmMessageSendWhenProcessInstanceApproveReqDTO; import com.njcn.bpm.pojo.dto.BpmMessageSendWhenProcessInstanceRejectReqDTO; import com.njcn.bpm.pojo.dto.PageResult; @@ -9,7 +9,6 @@ import com.njcn.bpm.pojo.po.BpmProcessDefinitionInfo; import com.njcn.bpm.pojo.vo.BpmProcessDefinitionInfoVO; import com.njcn.bpm.pojo.vo.instance.BpmProcessInstanceVO; import com.njcn.user.pojo.po.Dept; -import com.njcn.user.pojo.po.User; import com.njcn.user.pojo.vo.UserVO; import org.flowable.engine.history.HistoricProcessInstance; import org.flowable.engine.repository.ProcessDefinition; diff --git a/pqs-supervision/supervision-api/src/main/java/com/njcn/supervision/api/UserReportFeignClient.java b/pqs-supervision/supervision-api/src/main/java/com/njcn/supervision/api/UserReportFeignClient.java new file mode 100644 index 000000000..d8e19b348 --- /dev/null +++ b/pqs-supervision/supervision-api/src/main/java/com/njcn/supervision/api/UserReportFeignClient.java @@ -0,0 +1,22 @@ +package com.njcn.supervision.api; + +import com.njcn.common.pojo.constant.ServerInfo; +import com.njcn.common.pojo.response.HttpResult; +import com.njcn.supervision.api.fallback.UserReportFeignClientFallbackFactory; +import org.springframework.cloud.openfeign.FeignClient; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestParam; + + +/** + * 流程实例 Api 接口 + * + * @author 芋道源码 + */ +@FeignClient(value = ServerInfo.SUPERVISION, path = "/userReport", fallbackFactory = UserReportFeignClientFallbackFactory.class) +public interface UserReportFeignClient { + + @GetMapping("/updateUserReportStatus") + HttpResult updateUserReportStatus(@RequestParam("businessKey") String businessKey, @RequestParam("status")Integer status); + +} diff --git a/pqs-supervision/supervision-api/src/main/java/com/njcn/supervision/api/fallback/UserReportFeignClientFallbackFactory.java b/pqs-supervision/supervision-api/src/main/java/com/njcn/supervision/api/fallback/UserReportFeignClientFallbackFactory.java new file mode 100644 index 000000000..4fe6f0bc5 --- /dev/null +++ b/pqs-supervision/supervision-api/src/main/java/com/njcn/supervision/api/fallback/UserReportFeignClientFallbackFactory.java @@ -0,0 +1,37 @@ +package com.njcn.supervision.api.fallback; + +import com.njcn.common.pojo.enums.response.CommonResponseEnum; +import com.njcn.common.pojo.exception.BusinessException; +import com.njcn.common.pojo.response.HttpResult; +import com.njcn.supervision.api.UserReportFeignClient; +import com.njcn.supervision.utils.SupervisionEnumUtil; +import feign.hystrix.FallbackFactory; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Component; + +/** + * @author denghuajun + * @version 1.0.0 + * @date 2022/3/16 + */ +@Slf4j +@Component +public class UserReportFeignClientFallbackFactory implements FallbackFactory { + @Override + public UserReportFeignClient create(Throwable throwable) { + //判断抛出异常是否为解码器抛出的业务异常 + Enum exceptionEnum = CommonResponseEnum.SERVICE_FALLBACK; + if (throwable.getCause() instanceof BusinessException) { + BusinessException businessException = (BusinessException) throwable.getCause(); + exceptionEnum = SupervisionEnumUtil.getExceptionEnum(businessException.getResult()); + } + Enum finalExceptionEnum = exceptionEnum; + return new UserReportFeignClient() { + @Override + public HttpResult updateUserReportStatus(String businessKey, Integer status) { + log.error("{}异常,降级处理,异常为:{}", "更新用户数据流程状态", throwable.toString()); + throw new BusinessException(finalExceptionEnum); + } + }; + } +} diff --git a/pqs-supervision/supervision-boot/src/main/java/com/njcn/supervision/controller/user/UserReportManageController.java b/pqs-supervision/supervision-boot/src/main/java/com/njcn/supervision/controller/user/UserReportManageController.java index 8f90b976f..900661589 100644 --- a/pqs-supervision/supervision-boot/src/main/java/com/njcn/supervision/controller/user/UserReportManageController.java +++ b/pqs-supervision/supervision-boot/src/main/java/com/njcn/supervision/controller/user/UserReportManageController.java @@ -92,4 +92,13 @@ public class UserReportManageController extends BaseController { return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, userReportVO, methodDescribe); } + @GetMapping("/updateUserReportStatus") + @OperateInfo(info = LogEnum.BUSINESS_COMMON) + @Operation(summary = "根据id获取用户档案录入的详细数据") + public HttpResult updateUserReportStatus(String businessKey,Integer status) { + String methodDescribe = getMethodDescribe("updateUserReportStatus"); + userReportPOService.updateUserReportStatus(businessKey,status); + return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, null, methodDescribe); + } + } diff --git a/pqs-supervision/supervision-boot/src/main/java/com/njcn/supervision/service/user/UserReportPOService.java b/pqs-supervision/supervision-boot/src/main/java/com/njcn/supervision/service/user/UserReportPOService.java index 44dc7ee25..e022e9166 100644 --- a/pqs-supervision/supervision-boot/src/main/java/com/njcn/supervision/service/user/UserReportPOService.java +++ b/pqs-supervision/supervision-boot/src/main/java/com/njcn/supervision/service/user/UserReportPOService.java @@ -27,4 +27,6 @@ public interface UserReportPOService extends IService { Boolean removeUserReport(List ids); UserReportVO getVOById(String id); + + void updateUserReportStatus(String businessKey, Integer status); } diff --git a/pqs-supervision/supervision-boot/src/main/java/com/njcn/supervision/service/user/impl/UserReportPOServiceImpl.java b/pqs-supervision/supervision-boot/src/main/java/com/njcn/supervision/service/user/impl/UserReportPOServiceImpl.java index d57c7e751..eb3ea78a9 100644 --- a/pqs-supervision/supervision-boot/src/main/java/com/njcn/supervision/service/user/impl/UserReportPOServiceImpl.java +++ b/pqs-supervision/supervision-boot/src/main/java/com/njcn/supervision/service/user/impl/UserReportPOServiceImpl.java @@ -8,6 +8,7 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.njcn.bpm.api.BpmProcessFeignClient; +import com.njcn.bpm.enums.BpmTaskStatusEnum; import com.njcn.bpm.pojo.dto.BpmProcessInstanceCreateReqDTO; import com.njcn.common.pojo.enums.common.DataStateEnum; import com.njcn.common.pojo.exception.BusinessException; @@ -72,6 +73,7 @@ public class UserReportPOServiceImpl extends ServiceImpl