package com.gkhy.safePlatform.safeCheck.service.baseService.impl; import com.baomidou.mybatisplus.core.MybatisConfiguration; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.TableInfoHelper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.gkhy.safePlatform.commons.co.ContextCacheUser; import com.gkhy.safePlatform.commons.enums.E; import com.gkhy.safePlatform.commons.enums.ResultCodes; import com.gkhy.safePlatform.commons.exception.AusinessException; import com.gkhy.safePlatform.commons.exception.BusinessException; import com.gkhy.safePlatform.safeCheck.entity.*; import com.gkhy.safePlatform.safeCheck.enums.DelectStatusEnum; import com.gkhy.safePlatform.safeCheck.model.query.MobileTaskDataDBQuery; import com.gkhy.safePlatform.safeCheck.model.query.MobileUserTaskDBQuery; import com.gkhy.safePlatform.safeCheck.model.query.TaskUnitDBQuery; import com.gkhy.safePlatform.safeCheck.repository.SafeCheckTaskRepository; import com.gkhy.safePlatform.safeCheck.service.baseService.SafeCheckTaskService; import org.apache.commons.collections4.CollectionUtils; import org.apache.ibatis.builder.MapperBuilderAssistant; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.time.LocalDateTime; import java.util.Date; import java.util.HashMap; import java.util.List; @Service("SafeCheckTaskService") public class SafeCheckTaskServiceImpl extends ServiceImpl implements SafeCheckTaskService { @Autowired private SafeCheckTaskRepository safeCheckTaskRepository; /** * @description 向数据库中存入一个任务 */ @Override public void saveTask(SafeCheckTask task) { int insertResult = safeCheckTaskRepository.insert(task); if (insertResult == 0){ throw new AusinessException(E.ADD_FAIL,"任务新增失败!"); } } /** * @description 将巡检任务待巡检状态改为巡检中 */ @Override public int updateTaskStatus(Long taskId, Byte taskStatus,Byte oldTaskStatus) { int updateResult = safeCheckTaskRepository.updateTaskStatus(taskId,taskStatus,oldTaskStatus); return updateResult; } /** * @description 根据任务id查询任务 */ @Override public SafeCheckTask getTaskById(Long taskId) { SafeCheckTask task = safeCheckTaskRepository.getTaskById(taskId); if (task == null){ throw new AusinessException(E.DATA_DATABASE_NO_EXISTENT,"任务不存在"); } return task; } /** * @description 查询所有巡检任务数据并进行分页(包含条件查询) */ @Override public Page listTaskByPage(Page pageInfo, SafeCheckTask task,List depIds) { LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); queryWrapper.like(task.getTaskName() != null,SafeCheckTask::getTaskName,task.getTaskName()) .eq(task.getTaskType() != null,SafeCheckTask::getTaskType,task.getTaskType()) .in(CollectionUtils.isNotEmpty(depIds),SafeCheckTask::getExecDepId,depIds) .in(task.getExecDepId() != null,SafeCheckTask::getExecDepId,task.getExecDepId()) .eq(task.getResultStatus() != null,SafeCheckTask::getResultStatus,task.getResultStatus()) .eq(task.getTaskStatus() != null,SafeCheckTask::getTaskStatus,task.getTaskStatus()) .eq(task.getExecUserId() != null,SafeCheckTask::getExecUserId,task.getExecUserId()) .eq(task.getExecClassgroupId() != null,SafeCheckTask::getExecClassgroupId,task.getExecClassgroupId()) .ge(task.getStartTime() != null,SafeCheckTask::getStartTime,task.getStartTime()) .le(task.getValidTime() != null,SafeCheckTask::getValidTime,task.getValidTime()) .orderByDesc(SafeCheckTask::getStartTime) .eq(task.getReportTime() != null,SafeCheckTask::getReportTime,task.getReportTime()); Page page = safeCheckTaskRepository.selectPage(pageInfo,queryWrapper); return page; } /** * @description 查询用户所在班组在用户上班期间是否有任务 */ @Override public IPage listUserTaskByPage(Page pageInfo, MobileUserTaskDBQuery queryCondition) { LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); queryWrapper.in(queryCondition.getExecClassgroupId() != null,SafeCheckTask::getExecClassgroupId,queryCondition.getExecClassgroupId()) //.ge(queryCondition.getStartTime() != null,SafeCheckTask::getStartTime,queryCondition.getStartTime()) //.le(queryCondition.getEndTime() != null,SafeCheckTask::getValidTime,queryCondition.getEndTime()) .eq(queryCondition.getTaskStatus() != null,SafeCheckTask::getTaskStatus,queryCondition.getTaskStatus()) .eq(queryCondition.getTaskClaim() != null,SafeCheckTask::getTaskClaim,queryCondition.getTaskClaim()) .eq(queryCondition.getTaskType() != null,SafeCheckTask::getTaskType,queryCondition.getTaskType()) .eq(SafeCheckTask::getDeleteStatus,DelectStatusEnum.DELECT_NO.getStatus()) .orderByDesc(SafeCheckTask::getGmtCreate); IPage iPage = safeCheckTaskRepository.listUserTaskByPage(pageInfo,queryWrapper); return iPage; } /** * @description 查询所有巡检任务数据并进行分页(只查询已完成,巡检中) 对任务状态进行分组 对结束时间由近到远 */ @Override public IPage listTaskByPageGrByStatusOrByTime(Page pageInfo, List status,List depIds) { LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); queryWrapper.in(status != null,SafeCheckTask::getTaskStatus,status) .in(depIds != null,SafeCheckTask::getExecDepId,depIds) .eq(SafeCheckTask::getDeleteStatus, DelectStatusEnum.DELECT_NO.getStatus()); //queryWrapper.eq(status.get(0) != null,SafeCheckTask::getTaskStatus,status.get(0)). // or(). // eq(status.get(1) != null,SafeCheckTask::getTaskStatus,status.get(1)); IPage iPage = safeCheckTaskRepository.listTaskByPageGrByStatusOrByTime(pageInfo, queryWrapper); return iPage; } /** * @description 根据任务单元id、开始检查时间、删除状态 查询任务 */ @Override public SafeCheckTask getTaskByWorkIdAndTaskStartTime(Long workId, Date nextCheckTime, int deleteStatus) { SafeCheckTask safeCheckTask = safeCheckTaskRepository.getTaskByWorkIdAndTaskStartTime(workId,nextCheckTime,deleteStatus); return safeCheckTask; } /** * @description 根据任务id以及任务状态查询任务记录 */ @Override public SafeCheckTask getTaskByTaskIdAndTaskStatus(Long taskId, Byte taskStatus) { return safeCheckTaskRepository.getTaskByTaskIdAndTaskStatus(taskId,taskStatus); } /** * @description 当天0点-目前超时未巡检的任务 */ @Override public List listNoCheckTaskByValidTime(LocalDateTime zeroPointDateTime, LocalDateTime now, Byte taskStatus,List depIds) { return safeCheckTaskRepository.listNoCheckTaskByValidTime(zeroPointDateTime,now,taskStatus,depIds); } /** * @description 根据时间获取当天截至目前异常任务 */ @Override public List listAbnormalTaskByValidTime(LocalDateTime zeroPointDateTime, LocalDateTime nowTime, Byte taskStatus, Byte taskResultCode,List depIds) { return safeCheckTaskRepository.listAbnormalTaskByValidTime(zeroPointDateTime,nowTime,taskStatus,taskResultCode,depIds); } /** * @description 根据部门,班组和状态作为条件查询任务以及任务相关的巡检点 */ @Override public IPage listTaskDataByCondition(Page pageInfo, MobileTaskDataDBQuery taskDBQuery) { LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); queryWrapper.eq(taskDBQuery.getExecClassgroupId() != null,SafeCheckTask::getExecClassgroupId,taskDBQuery.getExecClassgroupId()) .eq(taskDBQuery.getTaskStatus() != null,SafeCheckTask::getTaskStatus,taskDBQuery.getTaskStatus()) .eq(taskDBQuery.getExcDepId() != null,SafeCheckTask::getExecDepId,taskDBQuery.getExcDepId()) .eq(SafeCheckTask::getDeleteStatus,DelectStatusEnum.DELECT_NO.getStatus()) .orderByDesc(SafeCheckTask::getStartTime); IPage iPage = safeCheckTaskRepository.listTaskDataByCondition(pageInfo,queryWrapper); return iPage; } /** * @description 将任务状态改为认领状态 */ @Override public void updateTaskClaimById(SafeCheckTask task) { int updateResult = safeCheckTaskRepository.updateTaskClaimById(task); if (updateResult == 0){ throw new AusinessException(E.UPDATE_FAIL,"任务认领状态更改失败"); } } /** * @description 更新巡检任务结果 */ @Override public void updateTaskCheckResultByTaskId(Long taskId,Byte taskStatus,Byte taskCheckResult, Date date) { int updateResult = safeCheckTaskRepository.updateTaskCheckResultByTaskId(taskId,taskStatus,taskCheckResult,date); if (updateResult == 0){ throw new AusinessException(E.UPDATE_FAIL,"巡检任务结果提交失败"); } } }