flowable退回

@Override
public boolean auditPayrollOrBack(ConstructCompanyUserEntity user,
                                  Map<Long, Integer> failDetails,
                                  String taskId,
                                  Long id) {
    ProjectPayrollEntity entity = projectPayrollService.selectById(id);
    if(MapUtils.isEmpty(failDetails)){
        //没有审核失败的,直接完成审核
        logger.info("完成审核");

        //判断是否是projectManager3,如果是就设置为已审核
        Task task = taskService.createTaskQuery().taskAssignee(user.getId().toString()).taskId(taskId).singleResult();
        String defKey = task.getTaskDefinitionKey();
        if("_8".equals(defKey)){
            logger.info("修改为已审核状态");
            entity.setPayrollStatus(PAYROLL_ALREADY_AUDIT);
        }else {
            logger.info("修改为待审核状态");
            entity.setPayrollStatus(PAYROLL_PENDING_AUDIT);
        }
        taskService.complete(taskId);
        //判断流程是否已结束
       /* boolean isEnd = FlowUtils.isEnd(runtimeService, entity.getProcessInstanceId());
        if(isEnd){
            entity.setPayrollStatus(PAYROLL_ALREADY_AUDIT);
        }else {
            entity.setPayrollStatus(PAYROLL_PENDING_AUDIT);
        }*/
        entity.setAuditUserId(user.getId());
        entity.setAuditRemark(user.getRealName() + "审核通过");
        boolean f = projectPayrollService.auditPayroll(entity, failDetails);
        if(!f){
            throw new RuntimeException("error");
        }
        return true;
    }else {
        //有审核失败的,保存失败数据,打回到班组长流程
        Task task = taskService.createTaskQuery().taskAssignee(user.getId().toString()).taskId(taskId).singleResult();
        if(task == null){
            logger.info("没有找到审核任务");
            return false;
        }
        //找到班组开始流程节点
        String firstTaskId = FlowUtils.findStartTaskId(repositoryService, task.getProcessDefinitionId());
        List<HistoricTaskInstance> firstTasks = historyService.createHistoricTaskInstanceQuery()
                .processInstanceId(entity.getProcessInstanceId())
                .taskDefinitionKey(firstTaskId).orderByHistoricTaskInstanceEndTime().desc().list();
        //将节点流程移动到fistTask
        runtimeService.createChangeActivityStateBuilder()
                .processInstanceId(task.getProcessInstanceId())
                .moveExecutionToActivityId(task.getExecutionId(), firstTasks.get(0).getTaskDefinitionKey())
                .changeState();

        //修改数据状态
        //已打回状态
        entity.setPayrollStatus(PAYROLL_BACK_AUDIT);
        entity.setAuditUserId(user.getId());
        entity.setAuditRemark(user.getRealName() + "审核不通过");
        boolean f = projectPayrollService.auditPayroll(entity, failDetails);
        if(!f){
            throw new RuntimeException("error");
        }
        logger.info("当前任务{}打回到开始的任务节点{}", task.getName(), firstTasks.get(0).getName());
        return true;
    }

}

转载于:https://my.oschina.net/u/178150/blog/1942499

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值