| | |
| | | import cn.gistack.flow.core.constant.ProcessConstant; |
| | | import cn.gistack.flow.core.entity.BladeFlow; |
| | | import cn.gistack.flow.core.feign.IFlowClient; |
| | | import cn.gistack.flow.core.utils.FlowUtil; |
| | | import cn.gistack.flow.core.utils.TaskUtil; |
| | | import cn.gistack.nky.fegin.INkyClient; |
| | | import cn.gistack.sm.patrol.params.PersonHandleParams; |
| | | import cn.gistack.sm.patrol.dto.PatrolTaskDTO; |
| | | import cn.gistack.sm.patrol.entity.PatrolRecord; |
| | | import cn.gistack.sm.patrol.entity.PatrolReport; |
| | | import cn.gistack.sm.patrol.entity.PatrolTask; |
| | |
| | | import cn.gistack.sm.patrol.util.EnhancementServicesTool; |
| | | import cn.gistack.sm.patrol.util.IdWorker; |
| | | import cn.gistack.sm.patrol.vo.*; |
| | | import cn.gistack.sm.sjztmd.service.IAttResManagePersonService; |
| | | import cn.gistack.sm.sjztmd.service.IYwTermitesTaskService; |
| | | import cn.gistack.sm.sjztmd.vo.ChargePersonVO; |
| | | import com.baomidou.mybatisplus.core.metadata.IPage; |
| | | import lombok.AllArgsConstructor; |
| | | import org.springblade.core.log.exception.ServiceException; |
| | | import org.springblade.core.mp.base.BaseServiceImpl; |
| | | import org.springblade.core.mp.support.Condition; |
| | | import org.springblade.core.secure.utils.AuthUtil; |
| | | import org.springblade.core.tool.api.R; |
| | | import org.springblade.core.tool.support.Kv; |
| | | import org.springblade.core.tool.utils.Func; |
| | | import org.springblade.core.tool.utils.StringUtil; |
| | | import org.springframework.stereotype.Service; |
| | | import org.springframework.transaction.annotation.Transactional; |
| | | |
| | | import java.util.*; |
| | | |
| | | import static org.springblade.core.launch.constant.FlowConstant.TASK_USR_PREFIX; |
| | | import java.util.stream.Collectors; |
| | | |
| | | @Service |
| | | @AllArgsConstructor |
| | |
| | | private final IPatrolReportService patrolReportService; |
| | | private final INkyClient nkyClient; |
| | | private final IYwTermitesTaskService waterDataTermitesService; |
| | | private final IAttResManagePersonService attResManagePersonService; |
| | | |
| | | private final String PATROL_USER = "patrolUser"; |
| | | private final String TECH_USER = "techUser"; |
| | |
| | | */ |
| | | @Override |
| | | public IPage<PatrolTaskVO> selectPatrolTask(IPage<PatrolTaskVO> page, PatrolTaskVO patrolTask) { |
| | | // List<PatrolTaskVO> patrolTaskList = baseMapper.selectPatrolTask(page, patrolTask); |
| | | List<PatrolTaskVO> patrolTaskList = baseMapper.selectPatrolTask(page, patrolTask); |
| | | |
| | | List<PatrolTaskVO> patrolTaskList = baseMapper.selectPatrolTaskPage(page.getCurrent() - 1, page.getSize(), patrolTask); |
| | | long total = baseMapper.getPatrolTaskTotal(patrolTask); |
| | | page.setRecords(patrolTaskList); |
| | | page.setTotal(total); |
| | | // List<PatrolTaskVO> patrolTaskList = baseMapper.selectPatrolTaskPage(page.getCurrent() - 1, page.getSize(), patrolTask); |
| | | // long total = baseMapper.getPatrolTaskTotal(patrolTask); |
| | | // page.setRecords(patrolTaskList); |
| | | // page.setTotal(total); |
| | | |
| | | return page; |
| | | return page.setRecords(patrolTaskList); |
| | | } |
| | | |
| | | /** |
| | |
| | | @Override |
| | | @Transactional(rollbackFor = Exception.class) |
| | | public PatrolTask startProcess(PatrolTask patrolTask) { |
| | | String businessTable = FlowUtil.getBusinessTable(ProcessConstant.PATROL_KEY); |
| | | if (Func.isEmpty(patrolTask.getId())) { |
| | | save(patrolTask); |
| | | |
| | | |
| | | // 启动流程 |
| | | // String businessTable = FlowUtil.getBusinessTable(ProcessConstant.PATROL_KEY); |
| | | // if (Func.isEmpty(patrolTask.getId())) { |
| | | // save(patrolTask); |
| | | // |
| | | // |
| | | // // 启动流程 |
| | | //// Kv variables = Kv.create() |
| | | //// //设置创建人 |
| | | //// .set(ProcessConstant.TASK_VARIABLE_CREATE_USER, AuthUtil.getUserId()) |
| | | //// //指定任务处理人 |
| | | //// .set("taskUser", TaskUtil.getTaskUser(patrolTask.getToUserId())); |
| | | //// R<BladeFlow> result = flowClient.startProcessInstanceById(patrolTask.getProcessDefinitionId(), FlowUtil.getBusinessKey(businessTable, String.valueOf(patrolTask.getId())), variables); |
| | | // |
| | | // Kv variables = Kv.create() |
| | | // //设置创建人 |
| | | // .set(ProcessConstant.TASK_VARIABLE_CREATE_USER, AuthUtil.getUserId()) |
| | | // //指定任务处理人 |
| | | // //指定巡查责任人 |
| | | // .set(PATROL_USER, TaskUtil.getTaskUser(patrolTask.getToUserId())) |
| | | // .set("taskUser", TaskUtil.getTaskUser(patrolTask.getToUserId())); |
| | | // R<BladeFlow> result = flowClient.startProcessInstanceById(patrolTask.getProcessDefinitionId(), FlowUtil.getBusinessKey(businessTable, String.valueOf(patrolTask.getId())), variables); |
| | | |
| | | Kv variables = Kv.create() |
| | | //设置创建人 |
| | | .set(ProcessConstant.TASK_VARIABLE_CREATE_USER, AuthUtil.getUserId()) |
| | | //指定巡查责任人 |
| | | .set(PATROL_USER, TaskUtil.getTaskUser(patrolTask.getToUserId())) |
| | | .set("taskUser", TaskUtil.getTaskUser(patrolTask.getToUserId())); |
| | | R<BladeFlow> result = flowClient.startProcessInstanceById(patrolTask.getProcessDefinitionId(), FlowUtil.getBusinessKey(businessTable, String.valueOf(patrolTask.getId())), variables); |
| | | |
| | | if (result.isSuccess()) { |
| | | log.debug("流程已启动,流程ID:" + result.getData().getProcessInstanceId()); |
| | | // 返回流程id写入leave |
| | | patrolTask.setProcessInstanceId(result.getData().getProcessInstanceId()); |
| | | updateById(patrolTask); |
| | | } else { |
| | | throw new ServiceException("开启流程失败"); |
| | | } |
| | | } else { |
| | | updateById(patrolTask); |
| | | } |
| | | return patrolTask; |
| | | // |
| | | // if (result.isSuccess()) { |
| | | // log.debug("流程已启动,流程ID:" + result.getData().getProcessInstanceId()); |
| | | // // 返回流程id写入leave |
| | | // patrolTask.setProcessInstanceId(result.getData().getProcessInstanceId()); |
| | | // updateById(patrolTask); |
| | | // } else { |
| | | // throw new ServiceException("开启流程失败"); |
| | | // } |
| | | // } else { |
| | | // updateById(patrolTask); |
| | | // } |
| | | // return patrolTask; |
| | | return null; |
| | | } |
| | | |
| | | |
| | | @Override |
| | | public boolean personCompleteTask(PatrolTaskVO patrolTaskVO, String currentUserId, String taskUser) { |
| | | |
| | | String taskId = patrolTaskVO.getFlowTaskId(); |
| | | String processInstanceId = patrolTaskVO.getProcessInstanceId(); |
| | | String comment = patrolTaskVO.getComment(); |
| | | // String taskId = patrolTaskVO.getFlowTaskId(); |
| | | // String processInstanceId = patrolTaskVO.getProcessInstanceId(); |
| | | // String comment = patrolTaskVO.getComment(); |
| | | // |
| | | // //保存巡查记录 |
| | | // if (patrolTaskVO.getPatrolRecordList() != null && patrolTaskVO.getPatrolRecordList().size()>0){ |
| | | // patrolRecordService.saveBatch(patrolTaskVO.getPatrolRecordList()); |
| | | // } |
| | | // |
| | | // // 创建变量 |
| | | // Map<String, Object> variables = new HashMap<>(); |
| | | // if (variables == null) { |
| | | // variables = Kv.create(); |
| | | // } |
| | | // |
| | | // //指定了人就是上报,没指定就表示已经处理了 |
| | | // if (StringUtil.isNotBlank(taskUser)){ |
| | | // variables.put("taskUser",TaskUtil.getTaskUser(taskUser)); |
| | | // variables.put(ProcessConstant.REPORT_KEY,true); |
| | | // }else{ |
| | | // variables.put(ProcessConstant.REPORT_KEY,false); |
| | | // |
| | | // //查监测预警表,看是否有这个任务,有的话修改任务状态 |
| | | // Boolean finishDamTask = nkyClient.finishTask(patrolTaskVO.getId().toString()); |
| | | // if (!finishDamTask){ |
| | | // //查白蚁表,看是否有这个任务,有的话修改任务状态 |
| | | // Boolean finishTermitesTask = waterDataTermitesService.finishTask(patrolTaskVO.getId().toString()); |
| | | // } |
| | | // } |
| | | // |
| | | // |
| | | // |
| | | // |
| | | // flowClient.completeTask(taskId, processInstanceId, comment, variables); |
| | | // return updateById(patrolTaskVO); |
| | | return false; |
| | | } |
| | | |
| | | //保存巡查记录 |
| | | if (patrolTaskVO.getPatrolRecordList() != null && patrolTaskVO.getPatrolRecordList().size()>0){ |
| | | patrolRecordService.saveBatch(patrolTaskVO.getPatrolRecordList()); |
| | | @Override |
| | | public List<PatrolTask> deliverTask(PatrolTask patrolTask) { |
| | | |
| | | String projectIds = patrolTask.getProjectId(); |
| | | String patrolRole = patrolTask.getPatrolRole(); |
| | | String reservoirName = patrolTask.getReservoirName(); |
| | | |
| | | List<String> resList = Arrays.asList(projectIds.split(",")); |
| | | List<String> roleList = Arrays.asList(patrolRole.split(",")); |
| | | List<String> reservoirNameList = Arrays.asList(reservoirName.split(",")); |
| | | |
| | | List<PatrolTask> saveList = new ArrayList<>(); |
| | | //循环水库 |
| | | for (int i = 0; i < resList.size(); i++) { |
| | | String resId = resList.get(i); |
| | | |
| | | for (int j = 0; j < roleList.size(); j++) { |
| | | String role = roleList.get(j); |
| | | |
| | | //获取该类型责任人 |
| | | List<ChargePersonVO> managePersonList = attResManagePersonService.getManagePersonList(resId, role); |
| | | |
| | | PatrolTask saveTask = new PatrolTask(); |
| | | saveTask.setTitle(patrolTask.getTitle()); |
| | | saveTask.setStartTime(patrolTask.getStartTime()); |
| | | saveTask.setEndTime(patrolTask.getEndTime()); |
| | | saveTask.setContent(patrolTask.getContent()); |
| | | |
| | | List<String> collect = managePersonList.stream().map(p -> p.getUserId()).collect(Collectors.toList()); |
| | | |
| | | if (StringUtil.isBlank(patrolTask.getToUserId())) { |
| | | //没传就自己找 |
| | | //有几个就有几个 |
| | | saveTask.setToUserId(StringUtil.join(collect, ",")); |
| | | } else { |
| | | saveTask.setToUserId(patrolTask.getToUserId()); |
| | | } |
| | | saveTask.setProjectId(resId); |
| | | saveTask.setReservoirName(reservoirNameList.get(i)); |
| | | |
| | | saveTask.setTaskType(patrolTask.getTaskType()); |
| | | saveTask.setPatrolGroupItemId(patrolTask.getPatrolGroupItemId()); |
| | | saveTask.setPatrolRole(role); |
| | | |
| | | saveList.add(saveTask); |
| | | } |
| | | } |
| | | |
| | | boolean saveBatch = saveBatch(saveList); |
| | | return saveList; |
| | | } |
| | | |
| | | @Override |
| | | public PatrolTask saveTask(PatrolTask patrolTask) { |
| | | save(patrolTask); |
| | | return patrolTask; |
| | | } |
| | | |
| | | @Override |
| | | public PatrolTaskDTO getTaskDTO(String taskId) { |
| | | return baseMapper.getTaskDTO(taskId); |
| | | } |
| | | |
| | | @Override |
| | | public Object getMyTask(PatrolTaskVO patrolTask, IPage<PatrolTask> page) { |
| | | if (patrolTask.getIsPage()) { |
| | | return page.setRecords(baseMapper.getMyTask(patrolTask, page)); |
| | | } |
| | | |
| | | return baseMapper.getMyTask(patrolTask, null); |
| | | } |
| | | |
| | | @Override |
| | | public Boolean finishPatrolTask(PatrolTaskVO patrolTaskVO) { |
| | | |
| | | //更新任务信息 |
| | | boolean updateTask = updateById(patrolTaskVO); |
| | | |
| | | // 查监测预警表,看是否有这个任务,有的话修改任务状态 |
| | | Boolean finishDamTask = nkyClient.finishTask(patrolTaskVO.getId().toString()); |
| | | if (!finishDamTask) { |
| | | //查白蚁表,看是否有这个任务,有的话修改任务状态 |
| | | Boolean finishTermitesTask = waterDataTermitesService.finishTask(patrolTaskVO.getId().toString()); |
| | | } |
| | | |
| | | List<PatrolRecordVO> patrolRecordList = patrolTaskVO.getPatrolRecordList(); |
| | | |
| | | if (patrolRecordList != null && patrolRecordList.size() > 0) { |
| | | patrolRecordList.forEach(record -> { |
| | | patrolRecordService.startProcess(record, patrolTaskVO.getProjectId()); |
| | | }); |
| | | } |
| | | |
| | | return updateTask; |
| | | } |
| | | |
| | | @Override |
| | | public Boolean personHandle(PersonHandleParams personHandleParams) { |
| | | |
| | | PatrolRecord patrolRecord = personHandleParams.getPatrolRecord(); |
| | | String recordId = personHandleParams.getRecordId(); |
| | | String taskId = personHandleParams.getTaskId(); |
| | | String flowTaskId = personHandleParams.getFlowTaskId(); |
| | | String taskUser = personHandleParams.getTaskUser(); |
| | | String comment = personHandleParams.getComment(); |
| | | String processInstanceId = personHandleParams.getProcessInstanceId(); |
| | | |
| | | |
| | | if (StringUtil.isBlank(recordId)) { |
| | | throw new ServiceException("recordId为空"); |
| | | } |
| | | |
| | | if (StringUtil.isBlank(taskId)) { |
| | | throw new ServiceException("taskId为空"); |
| | | } |
| | | |
| | | if (StringUtil.isBlank(flowTaskId)) { |
| | | throw new ServiceException("flowTaskId为空"); |
| | | } |
| | | |
| | | if (StringUtil.isBlank(processInstanceId)) { |
| | | throw new ServiceException("processInstanceId为空"); |
| | | } |
| | | |
| | | |
| | | //说明处理了问题 |
| | | if (patrolRecord != null) { |
| | | //保存处理记录 |
| | | patrolRecordService.save(patrolRecord); |
| | | |
| | | //修改该任务的处理状态 |
| | | PatrolRecord upRecord = new PatrolRecord(); |
| | | upRecord.setId(Long.parseLong(recordId)); |
| | | upRecord.setState("1"); |
| | | patrolRecordService.updateById(upRecord); |
| | | |
| | | //修改任务的问题数量 |
| | | PatrolTask byId = getById(taskId); |
| | | |
| | | Integer problemCount = byId.getProblemCount(); |
| | | PatrolTask upTask = new PatrolTask(); |
| | | upTask.setId(byId.getId()); |
| | | upTask.setProblemCount(problemCount - 1); |
| | | updateById(upTask); |
| | | |
| | | } |
| | | |
| | | |
| | | // 创建变量 |
| | | Map<String, Object> variables = new HashMap<>(); |
| | |
| | | } |
| | | |
| | | //指定了人就是上报,没指定就表示已经处理了 |
| | | if (StringUtil.isNotBlank(taskUser)){ |
| | | variables.put("taskUser",TaskUtil.getTaskUser(taskUser)); |
| | | variables.put(ProcessConstant.REPORT_KEY,true); |
| | | }else{ |
| | | variables.put(ProcessConstant.REPORT_KEY,false); |
| | | |
| | | //查监测预警表,看是否有这个任务,有的话修改任务状态 |
| | | Boolean finishDamTask = nkyClient.finishTask(patrolTaskVO.getId().toString()); |
| | | if (!finishDamTask){ |
| | | //查白蚁表,看是否有这个任务,有的话修改任务状态 |
| | | Boolean finishTermitesTask = waterDataTermitesService.finishTask(patrolTaskVO.getId().toString()); |
| | | } |
| | | |
| | | |
| | | if (StringUtil.isNotBlank(taskUser)) { |
| | | variables.put("taskUser", TaskUtil.getTaskUser(taskUser)); |
| | | variables.put(ProcessConstant.REPORT_KEY, true); |
| | | } else { |
| | | variables.put(ProcessConstant.REPORT_KEY, false); |
| | | // //查监测预警表,看是否有这个任务,有的话修改任务状态 |
| | | // Boolean finishDamTask = nkyClient.finishTask(patrolTaskVO.getId().toString()); |
| | | // if (!finishDamTask){ |
| | | // //查白蚁表,看是否有这个任务,有的话修改任务状态 |
| | | // Boolean finishTermitesTask = waterDataTermitesService.finishTask(patrolTaskVO.getId().toString()); |
| | | // } |
| | | } |
| | | |
| | | flowClient.completeTask(flowTaskId, processInstanceId, comment, variables); |
| | | return true; |
| | | |
| | | |
| | | |
| | | flowClient.completeTask(taskId, processInstanceId, comment, variables); |
| | | return updateById(patrolTaskVO); |
| | | } |
| | | |
| | | |
| | | @Override |
| | | @Transactional(rollbackFor = Exception.class) |
| | | public boolean patrolCompleteTask(PatrolTaskVO patrolTask, String currentUserId, String taskUser) { |
| | | R<BladeFlow> res = flowClient.getBladeFlow(patrolTask.getId().toString(), currentUserId); |
| | | if (res.isSuccess()) { |
| | | BladeFlow flow = res.getData(); |
| | | String taskId = flow.getTaskId(); |
| | | String processInstanceId = patrolTask.getProcessInstanceId(); |
| | | // String comment = patrolTask.getReport() ? "巡查任务发现问题" : "巡查任务完成,未发现问题"; |
| | | String comment = patrolTask.getComment(); |
| | | // 创建变量 |
| | | Map<String, Object> variables = flow.getVariables(); |
| | | if (variables == null) { |
| | | variables = Kv.create(); |
| | | } |
| | | //设置是否上报标识 |
| | | variables.put(ProcessConstant.REPORT_KEY, patrolTask.getReport()); |
| | | // variables.put("taskUser",StringUtil.format("{}{}", TASK_USR_PREFIX, taskUser)); |
| | | variables.put(TECH_USER, TaskUtil.getTaskUser(taskUser)); |
| | | // 完成任务 |
| | | flowClient.completeTask(taskId, processInstanceId, comment, variables); |
| | | //保存巡查记录 |
| | | if (patrolTask.getPatrolRecordList() != null && patrolTask.getPatrolRecordList().size() > 0){ |
| | | patrolRecordService.saveBatch(patrolTask.getPatrolRecordList()); |
| | | } |
| | | |
| | | |
| | | |
| | | return baseMapper.updateById(patrolTask) > 0; |
| | | } else { |
| | | return false; |
| | | } |
| | | // R<BladeFlow> res = flowClient.getBladeFlow(patrolTask.getId().toString(), currentUserId); |
| | | // if (res.isSuccess()) { |
| | | // BladeFlow flow = res.getData(); |
| | | // String taskId = flow.getTaskId(); |
| | | // String processInstanceId = patrolTask.getProcessInstanceId(); |
| | | //// String comment = patrolTask.getReport() ? "巡查任务发现问题" : "巡查任务完成,未发现问题"; |
| | | // String comment = patrolTask.getComment(); |
| | | // // 创建变量 |
| | | // Map<String, Object> variables = flow.getVariables(); |
| | | // if (variables == null) { |
| | | // variables = Kv.create(); |
| | | // } |
| | | // //设置是否上报标识 |
| | | // variables.put(ProcessConstant.REPORT_KEY, patrolTask.getReport()); |
| | | //// variables.put("taskUser",StringUtil.format("{}{}", TASK_USR_PREFIX, taskUser)); |
| | | // variables.put(TECH_USER, TaskUtil.getTaskUser(taskUser)); |
| | | // // 完成任务 |
| | | // flowClient.completeTask(taskId, processInstanceId, comment, variables); |
| | | // //保存巡查记录 |
| | | // if (patrolTask.getPatrolRecordList() != null && patrolTask.getPatrolRecordList().size() > 0){ |
| | | // patrolRecordService.saveBatch(patrolTask.getPatrolRecordList()); |
| | | // } |
| | | // |
| | | // |
| | | // |
| | | // return baseMapper.updateById(patrolTask) > 0; |
| | | // } else { |
| | | // return false; |
| | | // } |
| | | return false; |
| | | } |
| | | |
| | | @Override |
| | |
| | | // return true; |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | String taskId = bladeFlowTask.getTaskId(); |
| | | String processInstanceId = bladeFlowTask.getProcessInstanceId(); |
| | | String comment = bladeFlowTask.getComment(); |
| | |
| | | |
| | | switch (currentNode.getHistoryActivityId()) { |
| | | case "techPerson": |
| | | variables.put(bladeFlowTask.getToDept()?DEPT_USER:SUPERVISOR_USER,TaskUtil.getTaskUser(bladeFlowTask.getTaskUser())); |
| | | variables.put(bladeFlowTask.getToDept() ? DEPT_USER : SUPERVISOR_USER, TaskUtil.getTaskUser(bladeFlowTask.getTaskUser())); |
| | | break; |
| | | case "supervisorPerson": |
| | | variables.put(bladeFlowTask.getToDept()?DEPT_USER:ADMIN_USER,TaskUtil.getTaskUser(bladeFlowTask.getTaskUser())); |
| | | variables.put(bladeFlowTask.getToDept() ? DEPT_USER : ADMIN_USER, TaskUtil.getTaskUser(bladeFlowTask.getTaskUser())); |
| | | break; |
| | | case "adminPerson": |
| | | variables.put(DEPT_USER,TaskUtil.getTaskUser(bladeFlowTask.getTaskUser())); |
| | | variables.put(DEPT_USER, TaskUtil.getTaskUser(bladeFlowTask.getTaskUser())); |
| | | break; |
| | | case "department": |
| | | //当前节点为水行政部门,需要指定回复给谁 |
| | |
| | | if (beforeId.equals("techPerson")) { |
| | | //前一个节点是技术责任人 |
| | | variables.put(ProcessConstant.TOTECH_KEY, true); |
| | | }else if (beforeId.equals("supervisorPerson")){ |
| | | } else if (beforeId.equals("supervisorPerson")) { |
| | | variables.put(ProcessConstant.TOSUPERVISOR_KEY, true); |
| | | }else if (beforeId.equals("adminPerson")){ |
| | | } else if (beforeId.equals("adminPerson")) { |
| | | variables.put(ProcessConstant.TOADMIN_KEY, true); |
| | | } |
| | | break; |