| | |
| | | package cn.gistack.sm.patrol.service.impl; |
| | | |
| | | 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.sm.patrol.entity.PatrolRecord; |
| | | import cn.gistack.sm.patrol.entity.PatrolReport; |
| | | import cn.gistack.sm.patrol.entity.PatrolTask; |
| | | import cn.gistack.sm.patrol.mapper.PatrolTaskMapper; |
| | | import cn.gistack.sm.patrol.service.IPatrolRecordService; |
| | | import cn.gistack.sm.patrol.service.IPatrolReportService; |
| | | import cn.gistack.sm.patrol.service.IPatrolTaskService; |
| | | import cn.gistack.sm.patrol.util.EnhancementServicesTool; |
| | | import cn.gistack.sm.patrol.util.IdWorker; |
| | | import cn.gistack.sm.patrol.vo.BladeFlowTask; |
| | | import cn.gistack.sm.patrol.vo.PatrolTaskVO; |
| | | 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.DateUtil; |
| | | import org.springblade.core.tool.utils.Func; |
| | | import org.springblade.core.tool.utils.StringUtil; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.stereotype.Service; |
| | | import org.springframework.transaction.annotation.Transactional; |
| | | |
| | | import java.net.http.HttpRequest; |
| | | import java.util.Date; |
| | | import java.util.HashMap; |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | import java.util.stream.Collectors; |
| | | |
| | | import static org.springblade.core.launch.constant.FlowConstant.TASK_USR_PREFIX; |
| | | |
| | | @Service |
| | | @AllArgsConstructor |
| | | public class PatrolTaskServiceImpl extends BaseServiceImpl<PatrolTaskMapper, PatrolTask> implements IPatrolTaskService { |
| | | private final IFlowClient flowClient; |
| | | private final IPatrolRecordService patrolRecordService; |
| | | private final IPatrolReportService patrolReportService; |
| | | |
| | | /** |
| | | * 自定义分页查询 |
| | |
| | | */ |
| | | @Override |
| | | public IPage<PatrolTaskVO> selectPatrolTask(IPage<PatrolTaskVO> page, PatrolTaskVO patrolTask) { |
| | | return page.setRecords(baseMapper.selectPatrolTask(patrolTask)); |
| | | List<PatrolTaskVO> patrolTaskList = baseMapper.selectPatrolTask(page, patrolTask); |
| | | return page.setRecords(patrolTaskList); |
| | | } |
| | | |
| | | /** |
| | |
| | | public Object getPatrolTaskStatistic(PatrolTaskVO patrolTask) { |
| | | return baseMapper.getPatrolTaskStatistic(patrolTask); |
| | | } |
| | | |
| | | /** |
| | | * 自定义编辑(空间坐标编辑) |
| | | * @param patrolTask |
| | | * @return |
| | | */ |
| | | @Override |
| | | public Boolean updatePatrolTask(PatrolTask patrolTask) { |
| | | // 设置基础信息 |
| | | EnhancementServicesTool enhancementServicesTool = new EnhancementServicesTool(); |
| | | enhancementServicesTool.resolveEntity(patrolTask); |
| | | Integer update = baseMapper.updatePatrolTask(patrolTask); |
| | | //返回 |
| | | return update>0?true:false; |
| | | } |
| | | |
| | | /** |
| | | * 自定义添加 |
| | | * @param patrolTask |
| | | * @return |
| | | */ |
| | | @Override |
| | | public Boolean savePatrolTask(PatrolTask patrolTask) { |
| | | // 设置基础信息 |
| | | EnhancementServicesTool enhancementServicesTool = new EnhancementServicesTool(); |
| | | enhancementServicesTool.resolveEntity(patrolTask); |
| | | patrolTask.setId(IdWorker.getId()); |
| | | // 新增 |
| | | Integer save = baseMapper.savePatrolTask(patrolTask); |
| | | //返回 |
| | | return save>0?true:false; |
| | | } |
| | | |
| | | /** |
| | | * 自定义通过id查询 |
| | | * @param id |
| | | * @return |
| | | */ |
| | | @Override |
| | | public PatrolTask getPatrolTaskById(String id) { |
| | | return baseMapper.getPatrolTaskById(id); |
| | | } |
| | | |
| | | @Override |
| | | @Transactional(rollbackFor = Exception.class) |
| | | public boolean startProcess(PatrolTask 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); |
| | | 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 true; |
| | | } |
| | | |
| | | @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 = Func.toStr(flow.getComment(), ProcessConstant.PASS_COMMENT); |
| | | String comment = "完成"; |
| | | // 创建变量 |
| | | 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)); |
| | | // 完成任务 |
| | | flowClient.completeTask(taskId,processInstanceId,comment,variables); |
| | | saveReport(patrolTask); |
| | | patrolRecordService.saveBatch(patrolTask.getPatrolRecordList()); |
| | | return baseMapper.updateById(patrolTask) >0; |
| | | }else { |
| | | return false; |
| | | } |
| | | } |
| | | |
| | | @Override |
| | | public boolean chargeCompletePerson(BladeFlowTask bladeFlowTask) { |
| | | //判断是否上报 |
| | | // boolean isReport = false; |
| | | // List<PatrolReport> collect = bladeFlowTask.getPatrolReportList().stream().filter(report -> Func.equals(report.getStatus(), 2)).collect(Collectors.toList()); |
| | | // if (collect.size()>0){ |
| | | // isReport = true; |
| | | // } |
| | | // //更新report表 |
| | | // boolean update = patrolReportService.updateBatchById(bladeFlowTask.getPatrolReportList()); |
| | | |
| | | boolean isReport = false; |
| | | if (StringUtil.isNoneBlank(bladeFlowTask.getTaskUser())){ |
| | | isReport = true; |
| | | } |
| | | |
| | | String taskId = bladeFlowTask.getTaskId(); |
| | | String processInstanceId = bladeFlowTask.getProcessInstanceId(); |
| | | String comment = "完成"; |
| | | // 创建变量 |
| | | Map<String, Object> variables = new HashMap<>(); |
| | | if (variables == null) { |
| | | variables = Kv.create(); |
| | | } |
| | | //指定下一个人 |
| | | variables.put("taskUser",StringUtil.format("{}{}", TASK_USR_PREFIX, bladeFlowTask.getTaskUser())); |
| | | //指定是否上报 |
| | | variables.put(ProcessConstant.REPORT_KEY,isReport); |
| | | //指定是否上报给部门 |
| | | variables.put(ProcessConstant.TODEPT_KEY,bladeFlowTask.getToDept()); |
| | | //指定是否转交 |
| | | variables.put(ProcessConstant.TOTECH_KEY,bladeFlowTask.getToTech()); |
| | | //完成任务 |
| | | flowClient.completeTask(taskId, processInstanceId, comment, variables); |
| | | return true; |
| | | } |
| | | |
| | | @Override |
| | | public PatrolTask customizeGetById(String businessId) { |
| | | return baseMapper.customizeGetById(businessId); |
| | | } |
| | | |
| | | @Override |
| | | public List<PatrolTask> getAll(PatrolTaskVO patrolTaskVO) { |
| | | return baseMapper.getAll(patrolTaskVO); |
| | | } |
| | | |
| | | public void saveReport(PatrolTask patrolTask){ |
| | | //拿到当前任务下的异常巡查记录 |
| | | PatrolRecord patrolRecord = new PatrolRecord(); |
| | | patrolRecord.setTaskId(patrolTask.getId().toString()); |
| | | patrolRecord.setStatus(2); |
| | | patrolRecord.setSolution("2"); |
| | | List<PatrolRecord> list = patrolRecordService.list(Condition.getQueryWrapper(patrolRecord)); |
| | | |
| | | //向上报表中添加数据 |
| | | list.forEach(record->{ |
| | | PatrolReport patrolReport = new PatrolReport(); |
| | | patrolReport.setContent(record.getContent()); |
| | | patrolReport.setImages(record.getImages()); |
| | | patrolReport.setVideos(record.getVideos()); |
| | | patrolReport.setItemId(record.getItemId()); |
| | | patrolReport.setSolution(record.getSolution()); |
| | | patrolReport.setTaskId(record.getTaskId()); |
| | | patrolReport.setRecordId(record.getId().toString()); |
| | | patrolReport.setStatus(record.getStatus()); |
| | | |
| | | patrolReportService.save(patrolReport); |
| | | }); |
| | | } |
| | | |
| | | |
| | | } |