From d17d4d1ac98865d2a71b4f24771b7b76e0839ed3 Mon Sep 17 00:00:00 2001
From: 云 <2163098428@qq.com>
Date: 星期五, 10 四月 2026 14:08:41 +0800
Subject: [PATCH] yys 1.设备区域 2.设备巡检,维保,保养多选 3.数采
---
src/main/java/com/ruoyi/device/service/impl/MaintenanceTaskServiceImpl.java | 95 +++++++++++++++++++++++++++++++++++++----------
1 files changed, 75 insertions(+), 20 deletions(-)
diff --git a/src/main/java/com/ruoyi/device/service/impl/MaintenanceTaskServiceImpl.java b/src/main/java/com/ruoyi/device/service/impl/MaintenanceTaskServiceImpl.java
index 0c00da7..5c84b2e 100644
--- a/src/main/java/com/ruoyi/device/service/impl/MaintenanceTaskServiceImpl.java
+++ b/src/main/java/com/ruoyi/device/service/impl/MaintenanceTaskServiceImpl.java
@@ -2,9 +2,14 @@
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.common.utils.bean.BeanUtils;
+import com.ruoyi.device.mapper.DeviceAreaMapper;
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.IDeviceLedgerService;
import com.ruoyi.device.service.MaintenanceTaskService;
import com.ruoyi.framework.web.domain.AjaxResult;
import com.ruoyi.inspectiontask.pojo.TimingTask;
@@ -16,65 +21,81 @@
import org.springframework.stereotype.Service;
import java.time.LocalDateTime;
-import java.util.*;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import java.util.stream.Collectors;
-/**
- * @author :yys
- * @date : 2025/12/22 14:57
- */
@Service
@Slf4j
public class MaintenanceTaskServiceImpl extends ServiceImpl<MaintenanceTaskMapper, MaintenanceTask> implements MaintenanceTaskService {
@Autowired
private MaintenanceTaskMapper maintenanceTaskMapper;
-
@Autowired
private SysUserMapper sysUserMapper;
-
@Autowired
private TimingTaskServiceImpl timingTaskService;
-
@Autowired
private MaintenanceTaskScheduler maintenanceTaskScheduler;
+ @Autowired
+ private IDeviceLedgerService deviceLedgerService;
+ @Autowired
+ private DeviceAreaMapper deviceAreaMapper;
@Override
public AjaxResult listPage(Page page, MaintenanceTask maintenanceTask) {
- Page<MaintenanceTask> taskPage = maintenanceTaskMapper.selectPage(page, null);
- // 2. 濡傛灉娌℃湁鏁版嵁锛岀洿鎺ヨ繑鍥炵┖鍒嗛〉
+ com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper<MaintenanceTask> queryWrapper =
+ new com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper<>();
+ if (StringUtils.isNotEmpty(maintenanceTask.getTaskName())) {
+ queryWrapper.like(MaintenanceTask::getTaskName, maintenanceTask.getTaskName());
+ }
+ if (maintenanceTask.getAreaId() != null) {
+ queryWrapper.eq(MaintenanceTask::getAreaId, maintenanceTask.getAreaId());
+ }
+ Page<MaintenanceTask> taskPage = maintenanceTaskMapper.selectPage(page, queryWrapper);
if (taskPage.getRecords().isEmpty()) {
return AjaxResult.success(taskPage);
}
- // 3. 鏀堕泦鎵�鏈夐渶瑕佹煡璇㈢殑鐢ㄦ埛ID
Set<Long> userIds = new HashSet<>();
-
- // 鏀堕泦鐧昏浜篒D
taskPage.getRecords().forEach(task -> {
if (task.getRegistrantId() != null) {
userIds.add(task.getRegistrantId());
}
});
- // 4. 鎵归噺鏌ヨ鐢ㄦ埛淇℃伅
Map<Long, String> userNickNameMap = new HashMap<>();
if (!userIds.isEmpty()) {
- List<SysUser> users = sysUserMapper.selectUserByIds((new ArrayList<>(userIds)));
+ List<SysUser> users = sysUserMapper.selectUserByIds(new ArrayList<>(userIds));
users.forEach(user -> userNickNameMap.put(user.getUserId(), user.getNickName()));
}
+ Map<Long, String> areaNameMap = deviceAreaMapper.selectBatchIds(taskPage.getRecords().stream()
+ .map(MaintenanceTask::getAreaId)
+ .filter(java.util.Objects::nonNull)
+ .distinct()
+ .collect(Collectors.toList()))
+ .stream()
+ .collect(Collectors.toMap(DeviceArea::getId, DeviceArea::getAreaName, (left, right) -> left, HashMap::new));
taskPage.getRecords().forEach(task -> {
- // 璁剧疆鐧昏浜烘樀绉�
if (task.getRegistrantId() != null) {
task.setRegistrant(userNickNameMap.getOrDefault(task.getRegistrantId(), "鏈煡鐢ㄦ埛"));
}
+ task.setAreaName(areaNameMap.get(task.getAreaId()));
});
return AjaxResult.success(taskPage);
}
@Override
public AjaxResult add(MaintenanceTask maintenanceTask) {
+ if (!prepareMaintenanceTask(maintenanceTask)) {
+ return AjaxResult.error("璇烽�夋嫨璁惧");
+ }
maintenanceTask.setActive(true);
- // 璁$畻棣栨鎵ц鏃堕棿
TimingTask task = new TimingTask();
task.setFrequencyType(maintenanceTask.getFrequencyType());
task.setFrequencyDetail(maintenanceTask.getFrequencyDetail());
@@ -94,6 +115,10 @@
return AjaxResult.warn("娌℃湁姝ゆ暟鎹�");
}
BeanUtils.copyProperties(maintenanceTask, maintenanceTask1);
+ if (!prepareMaintenanceTask(maintenanceTask1)) {
+ return AjaxResult.error("璇烽�夋嫨璁惧");
+ }
+ maintenanceTask1.setDeviceLedgerIds(null);
int update = maintenanceTaskMapper.updateById(maintenanceTask1);
if (update > 0) {
maintenanceTaskScheduler.rescheduleMaintenanceTask(maintenanceTask1);
@@ -105,10 +130,40 @@
public AjaxResult delete(List<Long> ids) {
int delete = maintenanceTaskMapper.deleteBatchIds(ids);
if (delete > 0) {
- ids.forEach(id -> {
- maintenanceTaskScheduler.unscheduleMaintenanceTask(id);
- });
+ ids.forEach(id -> maintenanceTaskScheduler.unscheduleMaintenanceTask(id));
}
return AjaxResult.success("鍒犻櫎鎴愬姛");
}
+
+ private boolean prepareMaintenanceTask(MaintenanceTask task) {
+ Long[] deviceIds = task.getDeviceLedgerIds();
+ if ((deviceIds == null || deviceIds.length == 0) && StringUtils.isNotEmpty(task.getDeviceLedgerIdsStr())) {
+ deviceIds = Arrays.stream(task.getDeviceLedgerIdsStr().split(","))
+ .filter(StringUtils::isNotEmpty)
+ .map(Long::valueOf)
+ .toArray(Long[]::new);
+ }
+ if (deviceIds == null || deviceIds.length == 0) {
+ deviceIds = task.getTaskId() == null ? new Long[0] : new Long[]{task.getTaskId()};
+ }
+ List<Long> validIds = Arrays.stream(deviceIds).distinct().collect(Collectors.toList());
+ if (validIds.isEmpty()) {
+ return false;
+ }
+ List<DeviceLedger> devices = validIds.stream()
+ .map(deviceLedgerService::getById)
+ .filter(device -> device != null)
+ .collect(Collectors.toList());
+ if (devices.isEmpty()) {
+ return false;
+ }
+ task.setTaskId(devices.get(0).getId());
+ if (task.getAreaId() == null) {
+ task.setAreaId(devices.get(0).getAreaId());
+ }
+ task.setDeviceLedgerIdsStr(devices.stream().map(item -> String.valueOf(item.getId())).collect(Collectors.joining(",")));
+ task.setTaskName(devices.stream().map(DeviceLedger::getDeviceName).filter(StringUtils::isNotEmpty).distinct().collect(Collectors.joining(",")));
+ task.setDeviceModel(devices.stream().map(DeviceLedger::getDeviceModel).filter(StringUtils::isNotEmpty).distinct().collect(Collectors.joining(",")));
+ return true;
+ }
}
--
Gitblit v1.9.3