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