diff --git a/yxt_supervise/supervise-flowable/supervise-flowable-api/pom.xml b/yxt_supervise/supervise-flowable/supervise-flowable-api/pom.xml index 219e7cd5..9cd6e36a 100644 --- a/yxt_supervise/supervise-flowable/supervise-flowable-api/pom.xml +++ b/yxt_supervise/supervise-flowable/supervise-flowable-api/pom.xml @@ -24,6 +24,7 @@ org.projectlombok lombok + 1.18.24 com.baomidou diff --git a/yxt_supervise/supervise-flowable/supervise-flowable-api/src/main/java/com/yxt/anrui/flowable/api/flow/FlowableFallback.java b/yxt_supervise/supervise-flowable/supervise-flowable-api/src/main/java/com/yxt/anrui/flowable/api/flow/FlowableFallback.java index 194c325b..a8feb1d3 100644 --- a/yxt_supervise/supervise-flowable/supervise-flowable-api/src/main/java/com/yxt/anrui/flowable/api/flow/FlowableFallback.java +++ b/yxt_supervise/supervise-flowable/supervise-flowable-api/src/main/java/com/yxt/anrui/flowable/api/flow/FlowableFallback.java @@ -49,6 +49,11 @@ public class FlowableFallback implements FlowableFeign { return null; } + @Override + public ResultBean startProcessNoOrgPath(BusinessVariables dto) { + return null; + } + @Override public ResultBean handleProsess(BusinessVariables bv) { diff --git a/yxt_supervise/supervise-flowable/supervise-flowable-api/src/main/java/com/yxt/anrui/flowable/api/flow/FlowableFeign.java b/yxt_supervise/supervise-flowable/supervise-flowable-api/src/main/java/com/yxt/anrui/flowable/api/flow/FlowableFeign.java index 9ae6ee48..50eb8b48 100644 --- a/yxt_supervise/supervise-flowable/supervise-flowable-api/src/main/java/com/yxt/anrui/flowable/api/flow/FlowableFeign.java +++ b/yxt_supervise/supervise-flowable/supervise-flowable-api/src/main/java/com/yxt/anrui/flowable/api/flow/FlowableFeign.java @@ -93,6 +93,10 @@ public interface FlowableFeign { @PostMapping(value = "/startProcess") @ResponseBody ResultBean startProcess(@RequestBody BusinessVariables dto); + @ApiOperation(value = "启动流程不涉及到组织架构") + @PostMapping(value = "/startProcessNoOrgPath") + @ResponseBody + ResultBean startProcessNoOrgPath(@RequestBody BusinessVariables dto); @ApiOperation(value = "处理流程") @PostMapping(value = "/handleProsess") diff --git a/yxt_supervise/supervise-flowable/supervise-flowable-biz/src/main/java/com/yxt/anrui/flowable/biz/flow/FlowableRest.java b/yxt_supervise/supervise-flowable/supervise-flowable-biz/src/main/java/com/yxt/anrui/flowable/biz/flow/FlowableRest.java index b9310365..805f7c31 100644 --- a/yxt_supervise/supervise-flowable/supervise-flowable-biz/src/main/java/com/yxt/anrui/flowable/biz/flow/FlowableRest.java +++ b/yxt_supervise/supervise-flowable/supervise-flowable-biz/src/main/java/com/yxt/anrui/flowable/biz/flow/FlowableRest.java @@ -166,7 +166,7 @@ public class FlowableRest implements FlowableFeign { dto.getFormVariables().put("businessSid",dto.getBusinessSid()); String nextNodeUserSids_ = dto.getNextNodeUserSids(); if(StringUtils.isBlank(nextNodeUserSids_)){ - ResultBean nextNodeUserSidsOfCreate = getNextNodeUserSidsOfCreate(dto); + ResultBean nextNodeUserSidsOfCreate = getNextNodeUserSidsOfCreateNoOrgPath(dto); boolean success = nextNodeUserSidsOfCreate.getSuccess(); if(!success){ return rb.setMsg(nextNodeUserSidsOfCreate.getMsg()); @@ -190,6 +190,55 @@ public class FlowableRest implements FlowableFeign { return rb.success().setData(vo); } + @Override + public ResultBean startProcessNoOrgPath(BusinessVariables dto) { + log.info("startProcess.dto:{}",dto); + ResultBean rb = ResultBean.fireFail(); + + if (StringUtils.isBlank(dto.getBusinessSid())) { + return rb.setMsg("businessSid 不能为空!"); + } + + if(dto.getFormVariables()==null) + dto.setFormVariables(new HashMap()); + Map formVariables = dto.getFormVariables(); + if(StringUtils.isNotBlank(dto.getOrgSidPath())){ + String orgPath=dto.getOrgSidPath(); + formVariables.put("createrOrgPath",orgPath);//发起人的组织结构sid + //dto.setFormVariables(formVariables); + } + + dto.getFormVariables().put("businessSid",dto.getBusinessSid()); + String nextNodeUserSids_ = dto.getNextNodeUserSids(); + if(StringUtils.isBlank(nextNodeUserSids_)){ + ResultBean nextNodeUserSidsOfCreate = getNextNodeUserSidsOfCreateNoOrgPath(dto); + boolean success = nextNodeUserSidsOfCreate.getSuccess(); + if(!success){ + return rb.setMsg(nextNodeUserSidsOfCreate.getMsg()); + } + nextNodeUserSids_=nextNodeUserSidsOfCreate.getData().getUserSid(); + dto.getFormVariables().put(BusinessVariables.ORGPATH,nextNodeUserSidsOfCreate.getData().getOrgPath()); + } + dto.setNextNodeUserSids(nextNodeUserSids_); + ResultBean resultBean1 = flowableService.businessStart(dto); + UpdateFlowFieldVo vo = new UpdateFlowFieldVo(); + if (resultBean1.getSuccess() && resultBean1.getData() != null) { + vo.setSid("" + dto.getBusinessSid()); + Map map = (Map) resultBean1.getData(); + vo.setProcDefId(dto.getModelId()); + vo.setNodeState(map.get("nodeState")); + vo.setProcInsId(map.get("procInsId")); + vo.setTaskDefKey(map.get("taskDefKey")); + vo.setTaskId(map.get("taskId")); + vo.setNextNodeUserSids(nextNodeUserSids_); + } + return rb.success().setData(vo); + } + + private ResultBean getNextNodeUserSidsOfCreateNoOrgPath(BusinessVariables dto) { + return flowtaskService.getNextNodeUserSidsOfCreateNoOrgPath(dto) ; + } + Logger log= LoggerFactory.getLogger(FlowableRest.class); @Override public ResultBean handleProsess(BusinessVariables dto) { @@ -226,7 +275,7 @@ public class FlowableRest implements FlowableFeign { String nextUserSid = dto.getNextNodeUserSids(); if(StringUtils.isBlank(nextUserSid)){ - ResultBean nextNodeUserSidsOfSubmit = getNextNodeUserSidsOfSubmit(dto); + ResultBean nextNodeUserSidsOfSubmit = getNextNodeUserSidsOfSubmitNoOrgPath(dto); if (!nextNodeUserSidsOfSubmit.getSuccess()) { return rb.setMsg("nextUserSid 不能为空!"); } @@ -353,6 +402,32 @@ public class FlowableRest implements FlowableFeign { vo.setNextNodeUserSids(nextUserSid); return rb.success().setData(vo); } + + private ResultBean getNextNodeUserSidsOfSubmitNoOrgPath(BusinessVariables bv) { + ResultBean rb = ResultBean.fireSuccess(); + String taskDefKey=bv.getTaskDefKey(); + //根据业务参数取流程流转的环节 信息 + List> list = (List>) + flowtaskService.getProcessCirculationNodesByMap(bv).getData(); + Map task_map=new HashMap<>(); + //取第二个环节的配置角色 + boolean endTask=true; + for (int i=0;i< list.size();i++){ + String id=list.get(i).get("id").toString(); + if(id.equals(taskDefKey)&&i+1 revokeProcess(com.yxt.anrui.flowable.api.flowtask.FlowTaskVo fl) { ResultBean rb = ResultBean.fireFail(); diff --git a/yxt_supervise/supervise-flowable/supervise-flowable-biz/src/main/java/com/yxt/anrui/flowable/biz/flowtask/FlowTaskService.java b/yxt_supervise/supervise-flowable/supervise-flowable-biz/src/main/java/com/yxt/anrui/flowable/biz/flowtask/FlowTaskService.java index b3a5f0d7..265125ec 100644 --- a/yxt_supervise/supervise-flowable/supervise-flowable-biz/src/main/java/com/yxt/anrui/flowable/biz/flowtask/FlowTaskService.java +++ b/yxt_supervise/supervise-flowable/supervise-flowable-biz/src/main/java/com/yxt/anrui/flowable/biz/flowtask/FlowTaskService.java @@ -207,7 +207,7 @@ public class FlowTaskService extends MybatisBaseService pathSidByUserSid = sysStaffOrgFeign.getPathSidByUserSid(sysUserVoResultBean.getData().getSid()); - if(pathSidByUserSid.getData()!=null){ + if(StringUtils.isNotBlank(pathSidByUserSid.getData())){ ResultBean sysOrganizationVoResultBean = sysOrganizationFeign.fetchBySid(pathSidByUserSid.getData()); if(sysOrganizationVoResultBean.getData() != null){ ogrName=sysOrganizationVoResultBean.getData().getName(); @@ -825,8 +825,9 @@ public class FlowTaskService extends MybatisBaseService> rb = new ResultBean>(); return rb.success().setData(page); } + + public ResultBean getNextNodeUserSidsOfCreateNoOrgPath(BusinessVariables dto) { + ResultBean rb = ResultBean.fireFail(); + log.info("getNextNodeUserSidsOfCreate1:{}",JSONObject.toJSONString(dto)); + //根据业务参数取流程流转的环节 信息 + List> list = (List>) getProcessCirculationNodesByMap(dto).getData(); + log.info("getNextNodeUserSidsOfCreate2:{}",JSONObject.toJSONString(list)); + if(list==null||list.size()<2){ + return rb.setMsg("流程设计问题"); + } + //取第二个环节的配置角色 + Object o = list.get(1).get("candidateGroups"); + if(o==null){ + return rb.setMsg("流程设计问题"); + } + log.info("getNextNodeUserSidsOfCreate3:{}",JSONObject.toJSONString(o)); + return getNextUserSidsNoOrgPath(rb, o); + } + + public ResultBean getNextUserSidsNoOrgPath(ResultBean rb, Object o) { + UserAndOrgPath mapParam=new UserAndOrgPath(); + JSONArray jsonArray = JSONArray.parseArray(JSON.toJSONString(o)); + String roleSid = jsonArray.get(0).toString(); + //根据组织架构、角色两个参数取相关符合条件的用户信息 + UserQuery userQuery = new UserQuery(); + userQuery.setRoleSid(roleSid); + log.info("getNextUserSids0:{}",JSONObject.toJSONString(userQuery)); + List sysUserVos = sysUserFeign.getUserByRoleNoOrgPath(userQuery).getData(); + log.info("getNextUserSids1:{}",JSONObject.toJSONString(sysUserVos)); + if(sysUserVos==null||sysUserVos.size()<1){ + return rb.fail().setMsg("环节没有用户"); + } + StringBuilder nextNodeUserSids = new StringBuilder(); + for (SysUserVo su : sysUserVos) { + nextNodeUserSids.append(su.getSid()).append(","); + } + //符合条件的用户的sid,拼接的字符串 + String nextNodeUserSids_ = nextNodeUserSids.toString(); + log.info("getNextUserSids2:{}",nextNodeUserSids_); + if(StringUtils.isBlank(nextNodeUserSids_)) + return rb.fail().setMsg("环节没有用户"); + nextNodeUserSids_ = nextNodeUserSids_.substring(0, nextNodeUserSids_.length() - 1); + mapParam.setUserSid(nextNodeUserSids_); + log.info("getNextUserSids3:{}",JSONObject.toJSONString(mapParam)); + return rb.success().setData(mapParam); + } } \ No newline at end of file