| | |
| | | |
| | | @Override |
| | | @Transactional(rollbackFor = Exception.class) |
| | | public boolean startProcess(ReportFloodRecord reportFloodRecord) { |
| | | public boolean startProcess(ReportFloodRecordVO reportFloodRecord) { |
| | | String businessTable = FlowUtil.getBusinessTable(ProcessConstant.REPORT_FLOOD_KEY); |
| | | if (Func.isEmpty(reportFloodRecord.getId())) { |
| | | save(reportFloodRecord); |
| | | // 启动流程 |
| | | Kv variables = Kv.create() |
| | | .set(ProcessConstant.TASK_VARIABLE_CREATE_USER, reportFloodRecord.getCreateUser()); |
| | | //无异常/自行解决,把任务指定给自己 |
| | | if (Func.equals(1,reportFloodRecord.getStatus())){ |
| | | //无异常 |
| | | variables.set("taskUser", TaskUtil.getTaskUser(reportFloodRecord.getCreateUser().toString())); |
| | | }else { |
| | | //异常 |
| | | if (reportFloodRecord.getSolution().equals("1")) { |
| | | //自行解决 |
| | | variables.set("taskUser", TaskUtil.getTaskUser(reportFloodRecord.getCreateUser().toString())); |
| | | }else{ |
| | | //上报给技术责任人处理 |
| | | User user = getUser(PersonType.TECH_PERSON, reportFloodRecord.getReservoirId()); |
| | | if (ObjectUtil.isNotEmpty(user)){ |
| | | variables.set("taskUser", TaskUtil.getTaskUser(user.getId().toString())); |
| | | } |
| | | } |
| | | } |
| | | .set(ProcessConstant.TASK_VARIABLE_CREATE_USER, reportFloodRecord.getCreateUser()) |
| | | .set("taskUser", StringUtil.format("{}{}", TASK_USR_PREFIX, reportFloodRecord.getTaskUser())); |
| | | R<BladeFlow> result = flowClient.startProcessInstanceById(reportFloodRecord.getProcessDefinitionId(), FlowUtil.getBusinessKey(businessTable, String.valueOf(reportFloodRecord.getId())), variables); |
| | | if (result.isSuccess()) { |
| | | log.debug("流程已启动,流程ID:" + result.getData().getProcessInstanceId()); |
| | |
| | | reportFloodRecord.setProcessInstanceId(result.getData().getProcessInstanceId()); |
| | | updateById(reportFloodRecord); |
| | | |
| | | if (Func.equals(1,reportFloodRecord.getStatus())){ |
| | | //状态正常直接结束任务 |
| | | ReportFloodRecordVO reportFloodRecordVO = new ReportFloodRecordVO(); |
| | | reportFloodRecordVO.setReport(false); |
| | | reportFloodRecordVO.setToDept(false); |
| | | reportFloodRecordVO.setProcessInstanceId(reportFloodRecord.getProcessInstanceId()); |
| | | R<BladeFlow> res = flowClient.getBladeFlow(reportFloodRecord.getId().toString(),reportFloodRecord.getCreateUser().toString()); |
| | | if (res.isSuccess()){ |
| | | reportFloodRecordVO.setFlow(res.getData()); |
| | | completeTask(reportFloodRecordVO,reportFloodRecord.getCreateUser().toString(),reportFloodRecord.getCreateUser().toString()); |
| | | }else { |
| | | throw new ServiceException("完成报汛失败"); |
| | | // //状态正常直接结束任务 |
| | | ReportFloodRecordVO reportFloodRecordVO = new ReportFloodRecordVO(); |
| | | reportFloodRecordVO.setProcessInstanceId(reportFloodRecord.getProcessInstanceId()); |
| | | //业务id |
| | | String businessId = reportFloodRecord.getId().toString(); |
| | | //当前用户id |
| | | String currentUserId = reportFloodRecord.getCreateUser().toString(); |
| | | //指定下一人 |
| | | String taskUser = reportFloodRecord.getTaskUser(); |
| | | R<BladeFlow> res = flowClient.getBladeFlow(businessId,currentUserId); |
| | | //参数设置 |
| | | if (res.isSuccess()){ |
| | | reportFloodRecordVO.setFlow(res.getData()); |
| | | if (Func.equals(reportFloodRecord.getStatus(),1)){ |
| | | //状态正常结束任务 |
| | | reportFloodRecordVO.setReport(false); |
| | | }else{ |
| | | //异常 |
| | | if (Func.equals(reportFloodRecord.getSolution(),"1")){ |
| | | //自行处理 |
| | | return true; |
| | | }else { |
| | | //上报给技术责任人 |
| | | reportFloodRecordVO.setReport(true); |
| | | } |
| | | } |
| | | } |
| | | |
| | | completeTask(reportFloodRecordVO,taskUser,currentUserId); |
| | | } else { |
| | | throw new ServiceException("开启流程失败"); |
| | | } |
| | |
| | | variables.put(ProcessConstant.REPORT_KEY,reportFloodRecord.isReport()); |
| | | //指定转交人 |
| | | variables.put("taskUser", StringUtil.format("{}{}", TASK_USR_PREFIX, taskUser)); |
| | | //指定是否上报给部门 |
| | | variables.put(ProcessConstant.TODEPT_KEY,reportFloodRecord.isToDept()); |
| | | // 完成任务 |
| | | flowClient.completeTask(taskId,processInstanceId,comment,variables); |
| | | return true; |