From 5a5df7b6529a62233bd2541a9abbb7bd588e9a4d Mon Sep 17 00:00:00 2001
From: maven <2163098428@qq.com>
Date: 星期一, 22 十二月 2025 17:54:27 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/hckx' into hckx

---
 src/main/java/com/ruoyi/device/service/impl/MaintenanceTaskServiceImpl.java |  119 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 119 insertions(+), 0 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
new file mode 100644
index 0000000..5269c31
--- /dev/null
+++ b/src/main/java/com/ruoyi/device/service/impl/MaintenanceTaskServiceImpl.java
@@ -0,0 +1,119 @@
+package com.ruoyi.device.service.impl;
+
+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.MaintenanceTaskMapper;
+import com.ruoyi.device.pojo.DeviceMaintenance;
+import com.ruoyi.device.pojo.MaintenanceTask;
+import com.ruoyi.device.service.MaintenanceTaskService;
+import com.ruoyi.framework.web.domain.AjaxResult;
+import com.ruoyi.inspectiontask.dto.TimingTaskDto;
+import com.ruoyi.inspectiontask.pojo.TimingTask;
+import com.ruoyi.inspectiontask.service.impl.TimingTaskServiceImpl;
+import com.ruoyi.project.system.domain.SysUser;
+import com.ruoyi.project.system.mapper.SysUserMapper;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.time.LocalDateTime;
+import java.time.format.DateTimeFormatter;
+import java.util.*;
+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;
+
+    @Override
+    public AjaxResult listPage(Page page, MaintenanceTask maintenanceTask) {
+        Page<MaintenanceTask> taskPage = maintenanceTaskMapper.selectPage(page, null);
+        // 2. 濡傛灉娌℃湁鏁版嵁锛岀洿鎺ヨ繑鍥炵┖鍒嗛〉
+        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)));
+            users.forEach(user -> userNickNameMap.put(user.getUserId(), user.getNickName()));
+        }
+        taskPage.getRecords().forEach(task -> {
+            // 璁剧疆鐧昏浜烘樀绉�
+            if (task.getRegistrantId() != null) {
+                task.setRegistrant(userNickNameMap.getOrDefault(task.getRegistrantId(), "鏈煡鐢ㄦ埛"));
+            }
+        });
+        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);
+        int insert = maintenanceTaskMapper.insert(maintenanceTask);
+        if (insert > 0) {
+            maintenanceTaskScheduler.scheduleMaintenanceTask(maintenanceTask);
+        }
+        return AjaxResult.success("娣诲姞鎴愬姛");
+    }
+
+    @Override
+    public AjaxResult updateByMaintenanceTaskId(MaintenanceTask maintenanceTask) {
+        MaintenanceTask maintenanceTask1 = maintenanceTaskMapper.selectById(maintenanceTask.getId());
+        if (maintenanceTask1 == null) {
+            return AjaxResult.warn("娌℃湁姝ゆ暟鎹�");
+        }
+        BeanUtils.copyProperties(maintenanceTask, maintenanceTask1);
+        int update = maintenanceTaskMapper.updateById(maintenanceTask1);
+        if (update > 0) {
+            maintenanceTaskScheduler.rescheduleMaintenanceTask(maintenanceTask1);
+        }
+        return AjaxResult.success("鏇存柊鎴愬姛");
+    }
+
+    @Override
+    public AjaxResult delete(List<Long> ids) {
+        int delete = maintenanceTaskMapper.deleteBatchIds(ids);
+        if (delete > 0) {
+            ids.forEach(id -> {
+                maintenanceTaskScheduler.unscheduleMaintenanceTask(id);
+            });
+        }
+        return AjaxResult.success("鍒犻櫎鎴愬姛");
+    }
+}

--
Gitblit v1.9.3