基于若依的ruoyi-nbcio流程管理系统修正自定义业务表单的回写bug
创始人
2025-01-07 16:06:13
0次

更多ruoyi-nbcio功能请看演示系统

gitee源代码地址

前后端代码: https://gitee.com/nbacheng/ruoyi-nbcio

演示地址:RuoYi-Nbcio后台管理系统 http://218.75.87.38:9666/

更多nbcio-boot功能请看演示系统 

gitee源代码地址

后端代码: https://gitee.com/nbacheng/nbcio-boot

前端代码:https://gitee.com/nbacheng/nbcio-vue.git

在线演示(包括H5) : http://218.75.87.38:9888

1、后端,在获取tod流程的时候加上dataId

// 流程发起人信息             HistoricProcessInstance historicProcessInstance = historyService.createHistoricProcessInstanceQuery()                 .processInstanceId(task.getProcessInstanceId())                 .singleResult();             String userId = historicProcessInstance.getStartUserId();             String nickName = sysUserService.selectUserByUserName(userId).getNickName();             flowTask.setStartUserId(userId);             flowTask.setStartUserName(nickName);             flowTask.setDataId(historicProcessInstance.getBusinessKey());

2、前端处理的时候加上dataId

// 跳转到处理页面     handleProcess(row) {       this.$router.push({         path: '/workflow/process/detail/' + row.procInsId,         query: {           taskId: row.taskId,           dataId: row.dataId,           processed: true         }       })     },

已经detail.vue里增加获取这个dataId

initData() {       this.taskForm.procInsId = this.$route.params && this.$route.params.procInsId;       this.taskForm.taskId  = this.$route.query && this.$route.query.taskId;       this.taskForm.dataId  = this.$route.query && this.$route.query.dataId;       this.processed = this.$route.query && eval(this.$route.query.processed || false);

3、后端对dataId的自自定义业务做回写处理

//处理自定义业务表单回写状态,节点与处理人信息         if (StringUtils.isNotBlank(taskBo.getDataId())) {         	//业务数据id             String dataId = taskBo.getDataId();             //如果保存数据前未调用必调的FlowCommonService.initActBusiness方法,就会有问题             WfMyBusiness business = wfMyBusinessService.getByDataId(dataId);             //spring容器类名             String serviceImplName = business.getServiceImplName();             WfCallBackServiceI flowCallBackService = (WfCallBackServiceI) SpringContextUtils.getBean(serviceImplName);                          FlowNextDto flowNextDto = this.getNextFlowNode(taskBo.getTaskId(), taskBo.getVariables());             if(flowNextDto != null) {             	//**有下一个节点                 UserTask nextUserTask = flowNextDto.getUserTask();                 //能够处理下个节点的候选人                 List nextFlowNodeUserList = flowNextDto.getUserList();                 List newusername = new ArrayList();                 if(nextFlowNodeUserList != null &&  nextFlowNodeUserList.get(0) != null ) {     	            List collect_username = nextFlowNodeUserList.stream().filter(Objects::nonNull).filter(item->item.getUserName()!=null).map(SysUser::getUserName).collect(Collectors.toList());     	            //collect_username转换成realname     	            // 流程发起人     	            ProcessInstance processInstance = runtimeService.createProcessInstanceQuery().processInstanceId(taskBo.getProcInsId()).singleResult();     	            String startUserId = processInstance.getStartUserId();     	            if(taskBo.getVariables() !=null && taskBo.getVariables().containsKey("approval")) {//前端传回的变量值     	            	SysUser sysUser = commonService.getSysUserByUserName(taskBo.getVariables().get("approval").toString());     	            	newusername.add(sysUser.getNickName());     	            }     	            else {     	            	for (String oldUser : collect_username) {     	                  if(StrUtil.equalsAnyIgnoreCase(oldUser,"${INITIATOR}")) {     	                	  SysUser sysUser = commonService.getSysUserByUserName(startUserId);     	                      newusername.add(sysUser.getNickName());     	                  }     	                  else {     	                	 SysUser sysUser = commonService.getSysUserByUserName(oldUser);     	                     newusername.add(sysUser.getNickName());     	                  }     	                }     	            }                 }                                  //下一个实例节点                 List listtask = taskService.createTaskQuery().processInstanceId(business.getProcessInstanceId()).active().list();                 Task nexttask = null;                 if(listtask.size()==1) {                 	nexttask = taskService.createTaskQuery().processInstanceId(business.getProcessInstanceId()).active().singleResult();                 }                 else {                 	nexttask = taskService.createTaskQuery().processInstanceId(business.getProcessInstanceId()).active().list().get(0);                 }                  if(nextFlowNodeUserList !=null) {                 	business.setActStatus(ActStatus.doing);                 	business.setTaskId(nexttask.getId());                 	business.setTaskNameId(nextUserTask.getId());                 	business.setTaskName(nextUserTask.getName());                 	business.setPriority(nextUserTask.getPriority());                     business.setTodoUsers(JSON.toJSONString(newusername));                 }                 else {                 	business.setActStatus(ActStatus.doing);                 	business.setTaskId(nexttask.getId());                 	business.setTaskNameId("");                 	business.setTaskName("");                 	business.setPriority("");                     business.setTodoUsers("");                 }                 if(ObjectUtil.isNotEmpty(taskBo.getNextApproval())) {                 	business.setActStatus(ActStatus.doing);                 	business.setTaskId(nexttask.getId());                 	business.setTaskNameId(nextUserTask.getId());                 	business.setTaskName(nextUserTask.getName());                 	business.setPriority(nextUserTask.getPriority());                     business.setTodoUsers(taskBo.getNextApproval());                 }             }             else {//**没有下一个节点,流程已经结束了             	business.setActStatus(ActStatus.pass);             	business.setTaskId("");             	business.setTaskNameId("");             	business.setTaskName("");                 business.setTodoUsers("");             }             // 流程处理完后,进行回调业务层             wfMyBusinessService.updateById(business);             if (flowCallBackService!=null)flowCallBackService.afterFlowHandle(business);         }

5、效果图

相关内容

热门资讯

实测交流透视挂!宝玛大厅ai智... 实测交流透视挂!宝玛大厅ai智能透视挂教程,宝玛大厅破解软件经验(本来有挂辅助)1、每一步都需要思考...
总算了解辅助器!朱雀吴江三缺一... 总算了解辅助器!朱雀吴江三缺一ai智能透视辅助挂技巧,朱雀吴江三缺一好像是有挂(有辅助挂细节)朱雀吴...
今日公布透视!九五至尊大厅ai... 今日公布透视!九五至尊大厅ai智能透视插件,九五至尊大厅有没有透视挂窍门(切实有挂技术)1、在九五至...
玩家必看科普开挂!聚闲麻将ai... 玩家必看科普开挂!聚闲麻将ai智能透视辅助挂软件,聚闲麻将总是真的有挂(有辅助挂方式)聚闲麻将能透视...
据报道开挂!旅游娱乐ai智能开... 据报道开挂!旅游娱乐ai智能开挂工具,旅游娱乐辅助工具演示(一直有挂教学)1、全新机制【旅游娱乐ai...
一分钟揭秘开挂!决胜朋来麻将a... 一分钟揭秘开挂!决胜朋来麻将ai智能透视辅助挂教程,决胜朋来麻将真是真的是有挂(有辅助挂总结)1、首...
如何分辨真伪透视!红牛ai智能... 如何分辨真伪透视!红牛ai智能透视攻略,红牛是不是有挂经验(真是有挂技术)1、操作简单,无需红牛手机...
2分钟细说辅助器!江湖大庆麻将... 2分钟细说辅助器!江湖大庆麻将ai智能透视辅助挂攻略,江湖大庆麻将竟然是真的有挂(有辅助挂头条)1、...
总算清楚透视挂!老夫子厅ai智... 总算清楚透视挂!老夫子厅ai智能透视挂技巧,老夫子厅怎么开挂课程(好像发现有挂)老夫子厅破解侠是真的...
解密关于辅助!菜鸟麻将ai智能... 解密关于辅助!菜鸟麻将ai智能透视辅助挂脚本,菜鸟麻将总是存在有挂(有辅助挂存在)1、用户打开应用后...