From aa2aea8c8159c94188f9a97599840f6e015ba137 Mon Sep 17 00:00:00 2001 From: yxt_djz <313618925@qq.com> Date: Tue, 28 Jun 2022 10:34:44 +0800 Subject: [PATCH] =?UTF-8?q?=E8=BD=A6=E8=BE=86=E5=A4=96=E9=87=87=E6=B5=81?= =?UTF-8?q?=E7=A8=8B=E5=8A=9E=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../BaseOutsourcingApplicationFeign.java | 9 +-- ...seOutsourcingApplicationFeignFallback.java | 8 +-- .../BusinessVariablesDto.java | 58 +++++++++++++++++++ .../GetNextNodeDto.java | 29 ++++++++++ .../BaseOutsourcingApplicationRest.java | 32 +++++----- .../BaseOutsourcingApplicationService.java | 24 ++++---- .../anrui/flowable/biz/flow/FlowableRest.java | 13 ++++- 7 files changed, 136 insertions(+), 37 deletions(-) create mode 100644 anrui-base/anrui-base-api/src/main/java/com/yxt/anrui/base/api/baseoutsourcingapplication/BusinessVariablesDto.java create mode 100644 anrui-base/anrui-base-api/src/main/java/com/yxt/anrui/base/api/baseoutsourcingapplication/GetNextNodeDto.java diff --git a/anrui-base/anrui-base-api/src/main/java/com/yxt/anrui/base/api/baseoutsourcingapplication/BaseOutsourcingApplicationFeign.java b/anrui-base/anrui-base-api/src/main/java/com/yxt/anrui/base/api/baseoutsourcingapplication/BaseOutsourcingApplicationFeign.java index 0baa7ff844..1c13f8e01c 100644 --- a/anrui-base/anrui-base-api/src/main/java/com/yxt/anrui/base/api/baseoutsourcingapplication/BaseOutsourcingApplicationFeign.java +++ b/anrui-base/anrui-base-api/src/main/java/com/yxt/anrui/base/api/baseoutsourcingapplication/BaseOutsourcingApplicationFeign.java @@ -113,18 +113,19 @@ public interface BaseOutsourcingApplicationFeign { @ApiOperation(value = "办理(同意)") @PostMapping("/complete") - public ResultBean complete(@ApiParam(value = "变量集合,json对象") @RequestBody Map variables); + public ResultBean complete(@ApiParam(value = "变量集合,json对象") @RequestBody BusinessVariablesDto bvd); @ApiOperation(value = "根据流程实例的id获取最新待办环节") @PostMapping(value = "/getProcessCirculationNodesByMap") - ResultBean getProcessCirculationNodesByMap(@ApiParam(value = "变量集合,json对象") @RequestBody Map variables); + ResultBean getProcessCirculationNodesByMap(@ApiParam(value = "变量集合,json对象") @RequestBody BaseOutsourcingApplicationDto dto); + @ApiOperation(value = "获取下一个环节") @PostMapping(value = "/getNextNodesForSubmit") - ResultBean getNextNodesForSubmit(@ApiParam(value = "变量集合,json对象") @RequestBody Map variables); + ResultBean getNextNodesForSubmit(@ApiParam(value = "变量集合,json对象") @RequestBody GetNextNodeDto gnnd); @ApiOperation(value = "获取上一个环节") @PostMapping(value = "/getPreviousNodesForReject") - ResultBean getPreviousNodesForReject(@ApiParam(value = "变量集合,json对象") @RequestBody Map variables); + ResultBean getPreviousNodesForReject(@ApiParam(value = "变量集合,json对象") @RequestBody GetNextNodeDto gnnd); @ApiOperation(value = "撤回流程") @PostMapping(value = "/revokeProcess/{userSid}/{businessSid}") diff --git a/anrui-base/anrui-base-api/src/main/java/com/yxt/anrui/base/api/baseoutsourcingapplication/BaseOutsourcingApplicationFeignFallback.java b/anrui-base/anrui-base-api/src/main/java/com/yxt/anrui/base/api/baseoutsourcingapplication/BaseOutsourcingApplicationFeignFallback.java index 3a0ffea697..67be839499 100644 --- a/anrui-base/anrui-base-api/src/main/java/com/yxt/anrui/base/api/baseoutsourcingapplication/BaseOutsourcingApplicationFeignFallback.java +++ b/anrui-base/anrui-base-api/src/main/java/com/yxt/anrui/base/api/baseoutsourcingapplication/BaseOutsourcingApplicationFeignFallback.java @@ -103,7 +103,7 @@ public class BaseOutsourcingApplicationFeignFallback implements BaseOutsourcingA } @Override - public ResultBean complete(Map variables) { + public ResultBean complete(BusinessVariablesDto bvd) { return null; } @@ -133,17 +133,17 @@ public class BaseOutsourcingApplicationFeignFallback implements BaseOutsourcingA } @Override - public ResultBean getProcessCirculationNodesByMap(Map variables) { + public ResultBean getProcessCirculationNodesByMap(BaseOutsourcingApplicationDto dto) { return null; } @Override - public ResultBean getNextNodesForSubmit(Map variables) { + public ResultBean getNextNodesForSubmit(GetNextNodeDto gnnd) { return null; } @Override - public ResultBean getPreviousNodesForReject(Map variables) { + public ResultBean getPreviousNodesForReject(GetNextNodeDto gnnd) { return null; } diff --git a/anrui-base/anrui-base-api/src/main/java/com/yxt/anrui/base/api/baseoutsourcingapplication/BusinessVariablesDto.java b/anrui-base/anrui-base-api/src/main/java/com/yxt/anrui/base/api/baseoutsourcingapplication/BusinessVariablesDto.java new file mode 100644 index 0000000000..f8e4716b18 --- /dev/null +++ b/anrui-base/anrui-base-api/src/main/java/com/yxt/anrui/base/api/baseoutsourcingapplication/BusinessVariablesDto.java @@ -0,0 +1,58 @@ +package com.yxt.anrui.base.api.baseoutsourcingapplication; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.Map; + +/** + * 业务系统调用flowable流程传递参数的格式 + */ +@Data +@Builder +@AllArgsConstructor +@NoArgsConstructor +public class BusinessVariablesDto { + /** + * 流程定义的id + */ + private String modelId; + /** + * 审批意见 + */ + private String comment; + /** + * 流程实例的id + */ + private String instanceId; + /** + * taskId + */ + private String taskId; + /** + * 当前用户的id + */ + private String userSid; + /** + * 当前用户部门的全路径 + */ + private String orgSidPath; + /** + * 业务sid + */ + private String businessSid; + /** + * 环节定义的ID + */ + private String taskDefKey; + /** + * nextNodeUserSids 下一环节的用户sid + */ + private String nextNodeUserSids; + /** + * 业务参数,按需传递 + */ + private Map formVariables; +} diff --git a/anrui-base/anrui-base-api/src/main/java/com/yxt/anrui/base/api/baseoutsourcingapplication/GetNextNodeDto.java b/anrui-base/anrui-base-api/src/main/java/com/yxt/anrui/base/api/baseoutsourcingapplication/GetNextNodeDto.java new file mode 100644 index 0000000000..10b410d00c --- /dev/null +++ b/anrui-base/anrui-base-api/src/main/java/com/yxt/anrui/base/api/baseoutsourcingapplication/GetNextNodeDto.java @@ -0,0 +1,29 @@ +package com.yxt.anrui.base.api.baseoutsourcingapplication; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.Map; + +/** + * 业务系统调用flowable流程传递参数的格式 + */ +@Data +@Builder +@AllArgsConstructor +@NoArgsConstructor +public class GetNextNodeDto { + + + /** + * 环节定义的ID + */ + private String taskDefKey; + + /** + * 业务参数,按需传递 + */ + private Map formVariables; +} diff --git a/anrui-base/anrui-base-biz/src/main/java/com/yxt/anrui/base/biz/baseoutsourcingapplication/BaseOutsourcingApplicationRest.java b/anrui-base/anrui-base-biz/src/main/java/com/yxt/anrui/base/biz/baseoutsourcingapplication/BaseOutsourcingApplicationRest.java index 9bfc9eebb8..be2502c253 100644 --- a/anrui-base/anrui-base-biz/src/main/java/com/yxt/anrui/base/biz/baseoutsourcingapplication/BaseOutsourcingApplicationRest.java +++ b/anrui-base/anrui-base-biz/src/main/java/com/yxt/anrui/base/biz/baseoutsourcingapplication/BaseOutsourcingApplicationRest.java @@ -25,6 +25,7 @@ *********************************************************/ package com.yxt.anrui.base.biz.baseoutsourcingapplication; +import cn.hutool.core.bean.BeanUtil; import com.yxt.anrui.base.api.baseoutsourcingapplication.*; import com.yxt.anrui.base.api.basevehicle.BaseVehicleVo; import com.yxt.anrui.base.api.flow.FlowTaskVo; @@ -128,15 +129,16 @@ public class BaseOutsourcingApplicationRest implements BaseOutsourcingApplicatio } @Override - public ResultBean complete(Map variables) { - BusinessVariables bv= BusinessVariables.builder().build(); - bv.setUserSid(variables.get("userSid").toString()); - bv.setOrgSidPath(variables.get("orgSidPath").toString()); - bv.setTaskDefKey(variables.get("taskDefKey").toString()); - bv.setTaskId(variables.get("taskId").toString()); - bv.setInstanceId(variables.get("instanceId").toString()); - bv.setComment(variables.get("comment").toString()); - bv.setBusinessSid(variables.get("businessSid").toString()); + public ResultBean complete( BusinessVariablesDto bvd) { + BusinessVariables bv=new BusinessVariables(); + BeanUtil.copyProperties(bvd,bv); + /*bv.setUserSid(bvd.getUserSid()); + bv.setOrgSidPath(bvd.getOrgSidPath()); + bv.setTaskDefKey(bvd.getTaskDefKey()); + bv.setTaskId(bvd.getTaskId()); + bv.setInstanceId(bvd.getInstanceId()); + bv.setComment(bvd.getComment()); + bv.setBusinessSid(bvd.getBusinessSid());*/ bv.setModelId(ProcDefEnum.BASEOUTSOURCINGAPPLICATION.getProDefId()); return baseOutsourcingApplicationService.complete(bv); } @@ -167,17 +169,17 @@ public class BaseOutsourcingApplicationRest implements BaseOutsourcingApplicatio } @Override - public ResultBean getProcessCirculationNodesByMap(Map variables) { - return baseOutsourcingApplicationService.getProcessCirculationNodesByMap(variables); + public ResultBean getProcessCirculationNodesByMap(BaseOutsourcingApplicationDto dto) { + return baseOutsourcingApplicationService.getProcessCirculationNodesByMap(dto); } @Override - public ResultBean getNextNodesForSubmit(Map variables) { - return baseOutsourcingApplicationService.getNextNodesForSubmit(variables); + public ResultBean getNextNodesForSubmit(GetNextNodeDto gnnd) { + return baseOutsourcingApplicationService.getNextNodesForSubmit(gnnd); } @Override - public ResultBean getPreviousNodesForReject(Map variables) { - return baseOutsourcingApplicationService.getPreviousNodesForReject(variables); + public ResultBean getPreviousNodesForReject(GetNextNodeDto gnnd) { + return baseOutsourcingApplicationService.getPreviousNodesForReject(gnnd); } } diff --git a/anrui-base/anrui-base-biz/src/main/java/com/yxt/anrui/base/biz/baseoutsourcingapplication/BaseOutsourcingApplicationService.java b/anrui-base/anrui-base-biz/src/main/java/com/yxt/anrui/base/biz/baseoutsourcingapplication/BaseOutsourcingApplicationService.java index 376f291430..728e169dc8 100644 --- a/anrui-base/anrui-base-biz/src/main/java/com/yxt/anrui/base/biz/baseoutsourcingapplication/BaseOutsourcingApplicationService.java +++ b/anrui-base/anrui-base-biz/src/main/java/com/yxt/anrui/base/biz/baseoutsourcingapplication/BaseOutsourcingApplicationService.java @@ -290,7 +290,7 @@ public class BaseOutsourcingApplicationService extends MybatisBaseService variables=BeanUtil.beanToMap(dto); ResultBean resultBean = saveOrUpdateDto(dto); String businessSid = resultBean.getData().toString(); - BusinessVariables bv= BusinessVariables.builder().build(); + BusinessVariables bv= new BusinessVariables(); bv.setOrgSidPath(orgSidPath); bv.setBusinessSid(businessSid); bv.setUserSid(dto.getUserSid()); @@ -480,32 +480,32 @@ public class BaseOutsourcingApplicationService extends MybatisBaseService variables) { - BusinessVariables bv= BusinessVariables.builder().build(); + public ResultBean getProcessCirculationNodesByMap(BaseOutsourcingApplicationDto dto) { + BusinessVariables bv=new BusinessVariables(); bv.setModelId(ProcDefEnum.BASEOUTSOURCINGAPPLICATION.getProDefId()); - bv.setFormVariables(variables); + bv.setFormVariables(BeanUtil.beanToMap(dto)); ResultBean processCirculationNodesByMap =flowTaskFeign.getProcessCirculationNodesByMap(bv); processCirculationNodesByMap.setCode("200"); processCirculationNodesByMap.setSuccess(true); return processCirculationNodesByMap; } - public ResultBean getNextNodesForSubmit(Map variables) { - BusinessVariables bv= BusinessVariables.builder().build(); + public ResultBean getNextNodesForSubmit(GetNextNodeDto gnnd) { + BusinessVariables bv=new BusinessVariables(); bv.setModelId(ProcDefEnum.BASEOUTSOURCINGAPPLICATION.getProDefId()); - bv.setTaskDefKey(variables.get("taskDefKey").toString()); - bv.setFormVariables(variables); + bv.setTaskDefKey(gnnd.getTaskDefKey()); + bv.setFormVariables(gnnd.getFormVariables()); ResultBean processCirculationNodesByMap =flowTaskFeign.getNextNodesForSubmit(bv); processCirculationNodesByMap.setCode("200"); processCirculationNodesByMap.setSuccess(true); return processCirculationNodesByMap; } - public ResultBean getPreviousNodesForReject(Map variables) { - BusinessVariables bv= BusinessVariables.builder().build(); - bv.setTaskDefKey(variables.get("taskDefKey").toString()); + public ResultBean getPreviousNodesForReject(GetNextNodeDto gnnd) { + BusinessVariables bv=new BusinessVariables(); + bv.setTaskDefKey(gnnd.getTaskDefKey()); bv.setModelId(ProcDefEnum.BASEOUTSOURCINGAPPLICATION.getProDefId()); - bv.setFormVariables(variables); + bv.setFormVariables(gnnd.getFormVariables()); ResultBean processCirculationNodesByMap =flowTaskFeign.getPreviousNodesForReject(bv); processCirculationNodesByMap.setCode("200"); processCirculationNodesByMap.setSuccess(true); diff --git a/anrui-flowable/anrui-flowable-biz/src/main/java/com/yxt/anrui/flowable/biz/flow/FlowableRest.java b/anrui-flowable/anrui-flowable-biz/src/main/java/com/yxt/anrui/flowable/biz/flow/FlowableRest.java index b2513d5399..9b411643ce 100644 --- a/anrui-flowable/anrui-flowable-biz/src/main/java/com/yxt/anrui/flowable/biz/flow/FlowableRest.java +++ b/anrui-flowable/anrui-flowable-biz/src/main/java/com/yxt/anrui/flowable/biz/flow/FlowableRest.java @@ -114,11 +114,18 @@ public class FlowableRest implements FlowableFeign { @Override public ResultBean getNextNodeUserSidsOfCreate(BusinessVariables bv) { + ResultBean rb = ResultBean.fireFail(); String orgSidPath=bv.getOrgSidPath(); //根据业务参数取流程流转的环节 信息 List> list = (List>) flowtaskService.getProcessCirculationNodesByMap(bv).getData(); + if(list==null||list.size()<2){ + return rb.setMsg("流程设计问题"); + } //取第二个环节的配置角色 Object o = list.get(1).get("candidateGroups"); + if(o==null){ + return rb.setMsg("流程设计问题"); + } JSONArray jsonArray = JSONArray.parseArray(JSON.toJSONString(o)); String roleSid = jsonArray.get(0).toString(); //根据组织架构、角色两个参数取相关符合条件的用户信息 @@ -126,6 +133,9 @@ public class FlowableRest implements FlowableFeign { userQuery.setRoleSid(roleSid); userQuery.setOrgSidPath(orgSidPath); List sysUserVos = sysUserFeign.getUserByRole(userQuery).getData(); + if(sysUserVos==null||sysUserVos.size()<1){ + return rb.setMsg("环节没有用户"); + } StringBuilder nextNodeUserSids = new StringBuilder(); for (SysUserVo su : sysUserVos) { nextNodeUserSids.append(su.getSid()).append(","); @@ -133,8 +143,7 @@ public class FlowableRest implements FlowableFeign { //符合条件的用户的sid,拼接的字符串 String nextNodeUserSids_ = nextNodeUserSids.toString(); nextNodeUserSids_ = nextNodeUserSids_.substring(0, nextNodeUserSids_.length() - 1); - ResultBean rb = ResultBean.fireSuccess(); - return rb.setData(nextNodeUserSids_); + return rb.success().setData(nextNodeUserSids_); } @Override