@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