| | |
| | | package com.ruoyi.device.service.impl; |
| | | |
| | | import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; |
| | | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; |
| | | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; |
| | | import com.ruoyi.common.utils.bean.BeanUtils; |
| | | import com.ruoyi.device.mapper.DeviceAreaMapper; |
| | | import com.ruoyi.device.mapper.DeviceLedgerMapper; |
| | | import com.ruoyi.device.mapper.MaintenanceTaskMapper; |
| | | import com.ruoyi.device.pojo.DeviceArea; |
| | | import com.ruoyi.device.pojo.DeviceLedger; |
| | | import com.ruoyi.device.pojo.MaintenanceTask; |
| | | import com.ruoyi.device.service.MaintenanceTaskService; |
| | | import com.ruoyi.common.constant.HttpStatus; |
| | | import com.ruoyi.framework.web.domain.R; |
| | | import com.ruoyi.framework.web.domain.AjaxResult; |
| | | import com.ruoyi.inspectiontask.pojo.TimingTask; |
| | | import com.ruoyi.inspectiontask.service.impl.TimingTaskServiceImpl; |
| | | import com.ruoyi.project.system.domain.SysUser; |
| | |
| | | private final SysUserMapper sysUserMapper; |
| | | private final TimingTaskServiceImpl timingTaskService; |
| | | private final MaintenanceTaskScheduler maintenanceTaskScheduler; |
| | | private final DeviceLedgerMapper deviceLedgerMapper; |
| | | private final DeviceAreaMapper deviceAreaMapper; |
| | | |
| | | @Override |
| | | public R<?> listPage(Page page, MaintenanceTask maintenanceTask) { |
| | | Page<MaintenanceTask> taskPage = maintenanceTaskMapper.selectPage(page, null); |
| | | public AjaxResult listPage(Page page, MaintenanceTask maintenanceTask) { |
| | | QueryWrapper<MaintenanceTask> queryWrapper = new QueryWrapper<MaintenanceTask>().orderByDesc("create_time"); |
| | | if (maintenanceTask.getAreaId() != null) { |
| | | queryWrapper.eq("area_id", maintenanceTask.getAreaId()); |
| | | } |
| | | Page<MaintenanceTask> taskPage = maintenanceTaskMapper.selectPage(page, queryWrapper); |
| | | // 2. 如果没有数据,直接返回空分页 |
| | | if (taskPage.getRecords().isEmpty()) { |
| | | return R.ok(taskPage); |
| | | return AjaxResult.success(taskPage); |
| | | } |
| | | |
| | | // 3. 收集所有需要查询的用户ID |
| | |
| | | List<SysUser> users = sysUserMapper.selectUserByIds((new ArrayList<>(userIds))); |
| | | users.forEach(user -> userNickNameMap.put(user.getUserId(), user.getNickName())); |
| | | } |
| | | Map<Long, DeviceLedger> ledgerMap = new HashMap<>(); |
| | | Set<Long> areaIds = new HashSet<>(); |
| | | taskPage.getRecords().forEach(task -> { |
| | | // 设置登记人昵称 |
| | | if (task.getRegistrantId() != null) { |
| | | task.setRegistrant(userNickNameMap.getOrDefault(task.getRegistrantId(), "未知用户")); |
| | | if (task.getTaskId() != null) { |
| | | DeviceLedger deviceLedger = deviceLedgerMapper.selectById(task.getTaskId()); |
| | | if (deviceLedger != null) { |
| | | ledgerMap.put(task.getTaskId(), deviceLedger); |
| | | if (deviceLedger.getAreaId() != null) { |
| | | areaIds.add(deviceLedger.getAreaId()); |
| | | } |
| | | } |
| | | } |
| | | }); |
| | | return R.ok(taskPage); |
| | | Map<Long, String> areaNameMap = new HashMap<>(); |
| | | if (!areaIds.isEmpty()) { |
| | | List<DeviceArea> areas = deviceAreaMapper.selectBatchIds(new ArrayList<>(areaIds)); |
| | | areas.forEach(area -> areaNameMap.put(area.getId(), area.getAreaName())); |
| | | } |
| | | taskPage.getRecords().forEach(task -> { |
| | | // 璁剧疆鐧昏浜烘樀绉? |
| | | if (task.getRegistrantId() != null) { |
| | | task.setRegistrant(userNickNameMap.getOrDefault(task.getRegistrantId(), "鏈煡鐢ㄦ埛")); |
| | | } |
| | | DeviceLedger deviceLedger = ledgerMap.get(task.getTaskId()); |
| | | if (deviceLedger != null) { |
| | | task.setAreaId(deviceLedger.getAreaId()); |
| | | task.setAreaName(areaNameMap.getOrDefault(deviceLedger.getAreaId(), "")); |
| | | } |
| | | }); |
| | | return AjaxResult.success(taskPage); |
| | | } |
| | | |
| | | @Override |
| | | public R<?> add(MaintenanceTask maintenanceTask) { |
| | | public AjaxResult add(MaintenanceTask maintenanceTask) { |
| | | DeviceLedger deviceLedger = deviceLedgerMapper.selectById(maintenanceTask.getTaskId()); |
| | | if (deviceLedger != null) { |
| | | maintenanceTask.setAreaId(deviceLedger.getAreaId()); |
| | | } |
| | | maintenanceTask.setActive(true); |
| | | // 计算首次执行时间 |
| | | TimingTask task = new TimingTask(); |
| | |
| | | if (insert > 0) { |
| | | maintenanceTaskScheduler.scheduleMaintenanceTask(maintenanceTask); |
| | | } |
| | | return R.ok(null, "添加成功"); |
| | | return AjaxResult.success("添加成功"); |
| | | } |
| | | |
| | | @Override |
| | | public R<?> updateByMaintenanceTaskId(MaintenanceTask maintenanceTask) { |
| | | public AjaxResult updateByMaintenanceTaskId(MaintenanceTask maintenanceTask) { |
| | | MaintenanceTask maintenanceTask1 = maintenanceTaskMapper.selectById(maintenanceTask.getId()); |
| | | DeviceLedger deviceLedger = deviceLedgerMapper.selectById(maintenanceTask.getTaskId()); |
| | | if (deviceLedger != null) { |
| | | maintenanceTask.setAreaId(deviceLedger.getAreaId()); |
| | | } |
| | | if (maintenanceTask1 == null) { |
| | | return R.fail(HttpStatus.WARN, "没有此数据"); |
| | | return AjaxResult.warn("没有此数据"); |
| | | } |
| | | BeanUtils.copyProperties(maintenanceTask, maintenanceTask1); |
| | | int update = maintenanceTaskMapper.updateById(maintenanceTask1); |
| | | if (update > 0) { |
| | | maintenanceTaskScheduler.rescheduleMaintenanceTask(maintenanceTask1); |
| | | } |
| | | return R.ok(null, "更新成功"); |
| | | return AjaxResult.success("更新成功"); |
| | | } |
| | | |
| | | @Override |
| | | public R<?> delete(List<Long> ids) { |
| | | public AjaxResult delete(List<Long> ids) { |
| | | int delete = maintenanceTaskMapper.deleteBatchIds(ids); |
| | | if (delete > 0) { |
| | | ids.forEach(id -> { |
| | | maintenanceTaskScheduler.unscheduleMaintenanceTask(id); |
| | | }); |
| | | } |
| | | return R.ok(null, "删除成功"); |
| | | return AjaxResult.success("删除成功"); |
| | | } |
| | | } |