基于jeecg-boot的flowable流程审批时增加下一个审批人设置

简介: 基于jeecg-boot的flowable流程审批时增加下一个审批人设置

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

      gitee源代码地址

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

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

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

 

     因为有时候需要审批时指定下一个审批人,所以增加这个功能

     1、前端

      这个比较简单,增加选择人员就可以了,如下:

<el-form-item label="附件"  prop="commentFileDto.fileurl">
          <j-upload v-model="taskForm.commentFileDto.fileurl"   ></j-upload>
        </el-form-item>
        <el-form-item label="选择抄送人" prop="ccUsers">
          <j-select-user-by-dep v-model="taskForm.ccUsers" />
        </el-form-item>
        <el-form-item label="选择下一审批人" prop="nextUsers">
          <j-select-user-by-dep v-model="taskForm.nextUsers" />
          <el-tag type="danger">注意: 多实例目前仅支持选择下一个审批人数要与原先设置的人数一致</el-tag>
        </el-form-item>
      </el-form>

 

2、后端

     下面对下个节点是多实例的会签要做特殊处理,包括并发与循序流转,对于循序流转需要递归传递下去参数,以便一个一个审批都能把人工设置的人员设置进去。

/**
     * 人工设置下一个审批人
     *
     * @param task,taskVo, nextFlowNode
     * @return 
     */
    private void setNextUsersAndComplete(Task task, FlowTaskVo taskVo, FlowNextDto nextFlowNode, List<String> manualSetNextUser) {
        if(Objects.nonNull(nextFlowNode)) {
          taskFormComplete(taskVo); 
          manualSetAssignee(task, taskVo, nextFlowNode, manualSetNextUser);    
        }
        else { //下一个节点是空
          taskFormComplete(taskVo);
        }
    
  }
    
    /**
     * 人工设置审批人
     *
     * @param task,taskVo, nextFlowNode
     * @return 
     */
   private void manualSetAssignee(Task task, FlowTaskVo taskVo, FlowNextDto nextFlowNode, List<String> manualSetNextUser) {
     List<String> nextusers = new ArrayList<String>();
     if (StringUtils.isNotBlank(taskVo.getNextUsers())){
       nextusers = CollUtil.newLinkedList(taskVo.getNextUsers().split(","));
     }
     if(nextusers.size() == 0 && ObjectUtil.isNotEmpty(manualSetNextUser)) {//若是人工串行会签传递过来参数
       Task nexttask = taskService.createTaskQuery().processInstanceId(taskVo.getInstanceId()).active().singleResult();
       taskService.setAssignee(nexttask.getId(),manualSetNextUser.get(0));
       manualSetNextUser.remove(0);
       if(manualSetNextUser.size()>0) {
         taskService.setVariable(nexttask.getId(), "ManualSetNextUser", manualSetNextUser);
       }
       return;
     }
     List<SysUser> sysuserlist = nextFlowNode.getUserList();
     if(nextusers.size() > 0) { 
       if(nextFlowNode.getType().equals(ProcessConstants.PROCESS_MULTI_INSTANCE) 
        && sysuserlist.size() == nextusers.size()) {//若下个节点是会签节点,且指定审核人数与原先设置的人数相同
        List<Task> nexttasklist = taskService.createTaskQuery().processInstanceId(taskVo.getInstanceId()).active().list();
        if(!nextFlowNode.isBisSequential()){//对并发会签进行assignee单独赋值
          int i = 0;
          for (Task nexttask : nexttasklist) {
            String assignee = nextusers.get(i).toString();  
            taskService.setAssignee(nexttask.getId(), assignee);
            i++;
          }
        }
        else {//串行的话,第一个也直接赋值,后面也需要带上参数值,以便传递下去
          Task nexttask = taskService.createTaskQuery().processInstanceId(taskVo.getInstanceId()).active().singleResult();
          taskService.setAssignee(nexttask.getId(), nextusers.get(0));
          if(nextusers.size()>1) {
            nextusers.remove(0);
            taskService.setVariable(nexttask.getId(), "ManualSetNextUser", nextusers);//设置人工设置串行会签人员
          }
         
        }   
       }
       else {
         Task nexttask = taskService.createTaskQuery().processInstanceId(taskVo.getInstanceId()).active().singleResult();
         taskService.setAssignee(nexttask.getId(), nextusers.get(0));
       }
       
     }
   }

3、效果图


相关文章
|
5天前
|
前端开发
基于若依ruoyi-nbcio支持flowable流程增加自定义业务表单(二)
基于若依ruoyi-nbcio支持flowable流程增加自定义业务表单(二)
23 1
|
12月前
|
SQL XML 存储
Flowable 流程部署与删除
Flowable 流程部署与删除
|
5天前
|
前端开发
基于jeecg-boot的flowable流程增加部门经理审批功能
基于jeecg-boot的flowable流程增加部门经理审批功能
14 0
|
5天前
|
前端开发
基于jeecg-boot的flowable流程自定义业务驳回到发起人的一种处理方式
基于jeecg-boot的flowable流程自定义业务驳回到发起人的一种处理方式
13 0
|
5天前
|
移动开发 前端开发 Java
基于jeecg-boot的flowable流程提供一种动态设置发起人部门负责人的方式
基于jeecg-boot的flowable流程提供一种动态设置发起人部门负责人的方式
13 0
|
5天前
|
移动开发 前端开发
基于Jeecg-boot的flowable流程支持拒绝同意流程操作
基于Jeecg-boot的flowable流程支持拒绝同意流程操作
19 0
|
5天前
|
移动开发 前端开发
基于Jeecg-boot的flowable流程支持拒绝同意流程操作(二)
基于Jeecg-boot的flowable流程支持拒绝同意流程操作(二)
18 0
|
5天前
|
移动开发 前端开发
基于jeecg-boot的flowable流程自定义业务退回撤回或驳回到发起人后的再次流程提交
基于jeecg-boot的flowable流程自定义业务退回撤回或驳回到发起人后的再次流程提交
18 0
|
5天前
基于若依ruoyi-nbcio支持flowable流程角色,同时修改流转用户为username,流程启动做大调整(一)
基于若依ruoyi-nbcio支持flowable流程角色,同时修改流转用户为username,流程启动做大调整(一)
21 1
|
5天前
基于若依ruoyi-nbcio支持flowable流程角色,同时修改流转用户为username,流程启动做大调整(二)
基于若依ruoyi-nbcio支持flowable流程角色,同时修改流转用户为username,流程启动做大调整(二)
15 0