| | |
| | | @Service |
| | | @AllArgsConstructor |
| | | public class ReportFloodRecordServiceImpl extends BaseServiceImpl<ReportFloodRecordMapper, ReportFloodRecord> implements IReportFloodRecordService { |
| | | private final IFlowClient flowClient; |
| | | private final IAttResManagePersonService attResManagePersonService; |
| | | private final IUserClient userClient; |
| | | |
| | |
| | | } |
| | | |
| | | @Override |
| | | @Transactional(rollbackFor = Exception.class) |
| | | public boolean startProcess(ReportFloodRecord 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())); |
| | | } |
| | | } |
| | | } |
| | | R<BladeFlow> result = flowClient.startProcessInstanceById(reportFloodRecord.getProcessDefinitionId(), FlowUtil.getBusinessKey(businessTable, String.valueOf(reportFloodRecord.getId())), variables); |
| | | if (result.isSuccess()) { |
| | | log.debug("流程已启动,流程ID:" + result.getData().getProcessInstanceId()); |
| | | // 返回流程id写入 |
| | | 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("完成报汛失败"); |
| | | } |
| | | } |
| | | |
| | | } else { |
| | | throw new ServiceException("开启流程失败"); |
| | | } |
| | | } else { |
| | | updateById(reportFloodRecord); |
| | | } |
| | | return true; |
| | | } |
| | | |
| | | @Override |
| | | public boolean completeTask(ReportFloodRecordVO reportFloodRecord, String taskUser, String currentUser) { |
| | | BladeFlow flow = reportFloodRecord.getFlow(); |
| | | String taskId = flow.getTaskId(); |
| | | String processInstanceId = reportFloodRecord.getProcessInstanceId(); |
| | | String comment = "完成"; |
| | | // 创建变量 |
| | | Map<String, Object> variables = flow.getVariables(); |
| | | if (variables == null) { |
| | | variables = Kv.create(); |
| | | } |
| | | //指定是否上报 |
| | | 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; |
| | | } |
| | | |
| | | @Override |
| | | public ReportFloodRecordVO customizeGetDetail(String businessId) { |
| | | return baseMapper.customizeGetDetail(businessId); |
| | | public ReportFloodRecordVO customizeGetDetail(ReportFloodRecordVO reportFloodRecordVO) { |
| | | return baseMapper.customizeGetDetail(reportFloodRecordVO); |
| | | } |
| | | |
| | | /** |