From 1fb9069acd396eb8bdbd65252f6eb10d3e8362b7 Mon Sep 17 00:00:00 2001
From: 云 <2163098428@qq.com>
Date: 星期二, 02 六月 2026 13:56:57 +0800
Subject: [PATCH] feat(staff): 修改员工入职服务接口增加用户添加标识参数

---
 src/main/java/com/ruoyi/device/service/impl/MaintenanceTaskServiceImpl.java |  116 ++++++++++++++++++++++++++++++++++++++++++++++++++--------
 1 files changed, 100 insertions(+), 16 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 8d0caee..8aa02aa 100644
--- a/src/main/java/com/ruoyi/device/service/impl/MaintenanceTaskServiceImpl.java
+++ b/src/main/java/com/ruoyi/device/service/impl/MaintenanceTaskServiceImpl.java
@@ -1,13 +1,17 @@
 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;
@@ -32,13 +36,19 @@
     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
@@ -57,17 +67,44 @@
             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();
@@ -79,31 +116,78 @@
         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("鍒犻櫎鎴愬姛");
+    }
+
+    @Override
+    public AjaxResult changeEnable(Long id, Integer isEnabled) {
+        MaintenanceTask oldTask = maintenanceTaskMapper.selectById(id);
+        if (oldTask == null) {
+            return AjaxResult.error("淇濆吇浠诲姟涓嶅瓨鍦�");
+        }
+
+        MaintenanceTask update = new MaintenanceTask();
+        update.setId(id);
+        update.setIsEnabled(isEnabled);
+        update.setActive(isEnabled != null && isEnabled == 1);
+
+        int result = maintenanceTaskMapper.updateById(update);
+        if (result > 0) {
+            try {
+                if (isEnabled != null && isEnabled == 1) {
+                    // 鍚敤锛氭仮澶嶆垨閲嶆柊璋冨害
+                    if (oldTask.getIsEnabled() != null && oldTask.getIsEnabled() == 0) {
+                        // 浠庣鐢ㄦ敼涓哄惎鐢紝閲嶆柊璁$畻涓嬫鎵ц鏃堕棿锛堝鏋滄病鏈夛級
+                        if (oldTask.getNextExecutionTime() == null || oldTask.getNextExecutionTime().isBefore(LocalDateTime.now())) {
+                            TimingTask tempTask = new TimingTask();
+                            tempTask.setFrequencyType(oldTask.getFrequencyType());
+                            tempTask.setFrequencyDetail(oldTask.getFrequencyDetail());
+                            LocalDateTime nextTime = timingTaskService.calculateFirstExecutionTime(tempTask);
+                            update.setNextExecutionTime(nextTime);
+                            maintenanceTaskMapper.updateById(update);
+                        }
+                        maintenanceTaskScheduler.scheduleMaintenanceTask(oldTask);
+                    } else {
+                        maintenanceTaskScheduler.resumeMaintenanceTask(id);
+                    }
+                } else {
+                    // 绂佺敤锛氭殏鍋滆皟搴�
+                    maintenanceTaskScheduler.pauseMaintenanceTask(id);
+                }
+            } catch (Exception e) {
+                log.error("璋冩暣淇濆吇浠诲姟璋冨害鐘舵�佸け璐�", e);
+            }
+            return AjaxResult.success("鏇存柊鎴愬姛");
+        }
+        return AjaxResult.error("鏇存柊澶辫触");
     }
 }

--
Gitblit v1.9.3