activiti6 任务委派

我理解的是 :一个流程 当到了一个节点 是张三审批 张三有事顾不上 张三直接委派给李四。 然后这个待办任务就去到李四用户上 当李四给审批通过后 这个待办任务会变成已办任务 这个已办任务会跑到张三的已办表中 所以说李四待办已办都不会有记录

下面所有代码 根据我自己的需求

DelegateTaskVO
@Data
public class DelegateTaskVO {
    /**
     * activiti代办节点号
     **/
    private String taskId;
    /**
     * 委托人id
     **/
    private String userId;
    /**
     * 被委托人id
     **/
    private String consignee;
    /**
     * 委托说明
     **/
    private String description;

}
Controller
@PostMapping("/delegateTask")
    @ApiOperation(value = "任务委派", httpMethod = "POST", notes = "任务委派")
    public ResponseVo delegateTask(@RequestBody DelegateTaskVO delegateTaskVO){
        jbpmProcessinstanceService.delegateTask(delegateTaskVO);
        return ResponseVo.ok();
    }
Service
 @Transactional(rollbackFor = Exception.class)
    public void delegateTask(DelegateTaskVO delegateTaskVO) {
        activitiInstanceService.claimTask(BaseContextHandler.getUserId(), delegateTaskVO.getTaskId());
        //获取用户id
        String userId = delegateTaskVO.getUserId();
        JbpmUserInfo jbpmUserInfo = null;
        if (null != userId && 0 < userId.trim().length()) {
            // 先查userId
            jbpmUserInfo = jbpmUserService.getUserByUserId(userId.trim());
        }
        //查找task任务
        Task task = activitiInstanceService.getTaskByTaskId(delegateTaskVO.getTaskId());
        QueryWrapper<JbpmProcessinstance> queryWrapper = new QueryWrapper<>();
        queryWrapper.eq("process_instance_id", task.getProcessInstanceId());
        //查找实例
        JbpmProcessinstance jbpmProcessinstance = this.getOne(queryWrapper, true);

        if (null == task) {
            throw new JbpmProcessinstanceException(
                    JbpmProcessinstanceErrorCode.JbpmProcessinstance_NOT_EXIST_ERROR.getCode());
        }
        // 保存审批记录
        JbpmWfApprove jbpmWfApprove = new JbpmWfApprove();
        jbpmWfApprove.setApproveDate(new Date());
        jbpmWfApprove.setApproverId(userId);
        if (null != jbpmUserInfo) {
            jbpmWfApprove.setApproverLoginname(jbpmUserInfo.getLoginName());
            jbpmWfApprove.setApproverName(jbpmUserInfo.getName());
        }
        jbpmWfApprove.setInstanceId(jbpmProcessinstance.getId());
        jbpmWfApprove.setActivitiInstanceId(jbpmProcessinstance.getProcessInstanceId());
        jbpmWfApprove.setTaskId(delegateTaskVO.getTaskId());
        jbpmWfApprove.setNodeId(task.getTaskDefinitionKey());
        jbpmWfApprove.setResult("委派");
        jbpmWfApprove.setOption(delegateTaskVO.getDescription());
        jbpmWfApproveService.save(jbpmWfApprove);

        taskService.delegateTask(delegateTaskVO.getTaskId(), delegateTaskVO.getConsignee());
    }