| | |
| | | package com.ruoyi.device.service.impl; |
| | | |
| | | import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; |
| | | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; |
| | | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; |
| | | import com.ruoyi.common.exception.ServiceException; |
| | | import com.ruoyi.common.utils.StringUtils; |
| | | import com.ruoyi.common.utils.bean.BeanUtils; |
| | | import com.ruoyi.device.mapper.MaintenanceTaskMapper; |
| | | import com.ruoyi.device.pojo.MaintenanceTask; |
| | |
| | | private MaintenanceTaskScheduler maintenanceTaskScheduler; |
| | | |
| | | @Override |
| | | public AjaxResult listPage(Page page, MaintenanceTask maintenanceTask) { |
| | | Page<MaintenanceTask> taskPage = maintenanceTaskMapper.selectPage(page, null); |
| | | public AjaxResult listPage(Page<MaintenanceTask> page, MaintenanceTask maintenanceTask) { |
| | | LambdaQueryWrapper<MaintenanceTask> queryWrapper = new LambdaQueryWrapper<>(); |
| | | if (maintenanceTask != null) { |
| | | if (StringUtils.isNotEmpty(maintenanceTask.getTaskName())) { |
| | | queryWrapper.like(MaintenanceTask::getTaskName, maintenanceTask.getTaskName()); |
| | | } |
| | | if (maintenanceTask.getIsActive() != null) { |
| | | queryWrapper.eq(MaintenanceTask::getIsActive, maintenanceTask.getIsActive()); |
| | | } |
| | | } |
| | | queryWrapper.orderByDesc(MaintenanceTask::getCreateTime); |
| | | Page<MaintenanceTask> taskPage = maintenanceTaskMapper.selectPage(page, queryWrapper); |
| | | // 2. 如果没有数据,直接返回空分页 |
| | | if (taskPage.getRecords().isEmpty()) { |
| | | return AjaxResult.success(taskPage); |
| | |
| | | if (task.getRegistrantId() != null) { |
| | | userIds.add(task.getRegistrantId()); |
| | | } |
| | | if (task.getMaintenancePersonId() != null) { |
| | | userIds.add(task.getMaintenancePersonId()); |
| | | } |
| | | }); |
| | | |
| | | // 4. 批量查询用户信息 |
| | |
| | | users.forEach(user -> userNickNameMap.put(user.getUserId(), user.getNickName())); |
| | | } |
| | | taskPage.getRecords().forEach(task -> { |
| | | // 设置登记人昵称 |
| | | if (task.getRegistrantId() != null) { |
| | | task.setRegistrant(userNickNameMap.getOrDefault(task.getRegistrantId(), "未知用户")); |
| | | } |
| | | if (task.getMaintenancePersonId() != null) { |
| | | task.setMaintenancePerson(userNickNameMap.getOrDefault(task.getMaintenancePersonId(), "未知用户")); |
| | | } |
| | | }); |
| | | return AjaxResult.success(taskPage); |
| | |
| | | |
| | | @Override |
| | | public AjaxResult add(MaintenanceTask maintenanceTask) { |
| | | maintenanceTask.setActive(true); |
| | | // 计算首次执行时间 |
| | | TimingTask task = new TimingTask(); |
| | | task.setFrequencyType(maintenanceTask.getFrequencyType()); |
| | | task.setFrequencyDetail(maintenanceTask.getFrequencyDetail()); |
| | | LocalDateTime firstExecutionTime = timingTaskService.calculateFirstExecutionTime(task); |
| | | maintenanceTask.setNextExecutionTime(firstExecutionTime); |
| | | if (maintenanceTask == null){ |
| | | throw new ServiceException("新增失败,数据不能为空"); |
| | | } |
| | | // 只有启用状态才添加 |
| | | if (maintenanceTask.getIsActive() != null && maintenanceTask.getIsActive() == 1) { |
| | | // 计算首次执行时间 |
| | | TimingTask task = new TimingTask(); |
| | | task.setFrequencyType(maintenanceTask.getFrequencyType()); |
| | | task.setFrequencyDetail(maintenanceTask.getFrequencyDetail()); |
| | | LocalDateTime firstExecutionTime = timingTaskService.calculateFirstExecutionTime(task); |
| | | maintenanceTask.setNextExecutionTime(firstExecutionTime); |
| | | } |
| | | int insert = maintenanceTaskMapper.insert(maintenanceTask); |
| | | if (insert > 0) { |
| | | if (insert > 0 && maintenanceTask.getIsActive() != null && maintenanceTask.getIsActive() == 1) { |
| | | maintenanceTaskScheduler.scheduleMaintenanceTask(maintenanceTask); |
| | | } |
| | | return AjaxResult.success("添加成功"); |
| | |
| | | if (maintenanceTask1 == null) { |
| | | return AjaxResult.warn("没有此数据"); |
| | | } |
| | | |
| | | Integer oldIsActive = maintenanceTask1.getIsActive(); |
| | | Integer newIsActive = maintenanceTask.getIsActive(); |
| | | |
| | | BeanUtils.copyProperties(maintenanceTask, maintenanceTask1); |
| | | int update = maintenanceTaskMapper.updateById(maintenanceTask1); |
| | | if (update > 0) { |
| | | maintenanceTaskScheduler.rescheduleMaintenanceTask(maintenanceTask1); |
| | | // 根据isActive状态变化来处理任务 |
| | | if (oldIsActive != null && oldIsActive == 1 && newIsActive != null && newIsActive == 0) { |
| | | // 从启用变为停用,移除任务 |
| | | maintenanceTaskScheduler.unscheduleMaintenanceTask(maintenanceTask.getId()); |
| | | } else if ((oldIsActive == null || oldIsActive == 0) && newIsActive != null && newIsActive == 1) { |
| | | // 从停用变为启用,添加 |
| | | maintenanceTaskScheduler.scheduleMaintenanceTask(maintenanceTask1); |
| | | } else { |
| | | maintenanceTaskScheduler.rescheduleMaintenanceTask(maintenanceTask1); |
| | | } |
| | | } |
| | | return AjaxResult.success("更新成功"); |
| | | } |