From bbe9fb61a7e3fbad1745bc09dc3e3c100eacc8b6 Mon Sep 17 00:00:00 2001
From: gongchunyi <deslre0381@gmail.com>
Date: 星期六, 16 五月 2026 14:13:30 +0800
Subject: [PATCH] feat: 设备保养修改,新增保养人、详情

---
 src/main/java/com/ruoyi/device/service/impl/DeviceMaintenanceFileServiceImpl.java |  186 ++++++++++++++++++++++++++++++++++++
 src/main/java/com/ruoyi/device/service/impl/MaintenanceTaskServiceImpl.java       |    7 +
 src/main/resources/mapper/device/DeviceMaintenanceMapper.xml                      |    2 
 doc/maintenance_task_add_person_and_items.sql                                     |   19 +++
 src/main/java/com/ruoyi/device/dto/DeviceMaintenanceDto.java                      |    3 
 src/main/java/com/ruoyi/device/pojo/DeviceMaintenanceFile.java                    |    4 
 src/main/java/com/ruoyi/device/service/DeviceMaintenanceFileService.java          |   13 ++
 src/main/java/com/ruoyi/device/service/impl/DeviceMaintenanceServiceImpl.java     |    4 
 src/main/java/com/ruoyi/device/controller/DeviceMaintenanceFileController.java    |   34 ++++++
 src/main/java/com/ruoyi/device/service/impl/MaintenanceTaskJob.java               |    5 +
 src/main/java/com/ruoyi/device/pojo/DeviceMaintenance.java                        |    6 +
 src/main/java/com/ruoyi/device/pojo/MaintenanceTask.java                          |   11 ++
 12 files changed, 284 insertions(+), 10 deletions(-)

diff --git a/doc/maintenance_task_add_person_and_items.sql b/doc/maintenance_task_add_person_and_items.sql
new file mode 100644
index 0000000..d51f4ae
--- /dev/null
+++ b/doc/maintenance_task_add_person_and_items.sql
@@ -0,0 +1,19 @@
+-- ============================================================================
+-- 瀹氭椂淇濆吇浠诲姟 maintenance_task锛氫繚鍏讳汉銆佷繚鍏婚」鐩�
+-- 璁惧淇濆吇璁板綍 device_maintenance锛氳鍒掍繚鍏讳汉
+-- ============================================================================
+
+ALTER TABLE `maintenance_task`
+    ADD COLUMN `maintenance_person_id` bigint NULL DEFAULT NULL COMMENT '淇濆吇浜篿d' AFTER `registrant`;
+
+ALTER TABLE `maintenance_task`
+    ADD COLUMN `maintenance_person` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '淇濆吇浜�' AFTER `maintenance_person_id`;
+
+ALTER TABLE `maintenance_task`
+    ADD COLUMN `maintenance_items` text CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL COMMENT '淇濆吇椤圭洰' AFTER `maintenance_person`;
+
+ALTER TABLE `device_maintenance`
+    ADD COLUMN `maintenance_person_id` bigint NULL DEFAULT NULL COMMENT '璁″垝淇濆吇浜篿d' AFTER `maintenance_actually_name`;
+
+ALTER TABLE `device_maintenance`
+    ADD COLUMN `maintenance_person` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '璁″垝淇濆吇浜�' AFTER `maintenance_person_id`;
diff --git a/src/main/java/com/ruoyi/device/controller/DeviceMaintenanceFileController.java b/src/main/java/com/ruoyi/device/controller/DeviceMaintenanceFileController.java
index d7da280..cbb9cc3 100644
--- a/src/main/java/com/ruoyi/device/controller/DeviceMaintenanceFileController.java
+++ b/src/main/java/com/ruoyi/device/controller/DeviceMaintenanceFileController.java
@@ -8,6 +8,7 @@
 import io.swagger.annotations.Api;
 import org.springframework.util.CollectionUtils;
 import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
 
 import javax.annotation.Resource;
 import java.util.List;
@@ -31,22 +32,41 @@
 
     /**
      * 鏂板
+     *
      * @param deviceMaintenanceFile
      * @return
      */
     @PostMapping("/add")
     public AjaxResult add(@RequestBody DeviceMaintenanceFile deviceMaintenanceFile) {
-        return AjaxResult.success(deviceMaintenanceFileService.save(deviceMaintenanceFile));
+        try {
+            return AjaxResult.success(deviceMaintenanceFileService.saveRecord(deviceMaintenanceFile));
+        } catch (Exception e) {
+            return AjaxResult.error(e.getMessage());
+        }
+    }
+
+    /**
+     * 涓婁紶闄勪欢
+     */
+    @PostMapping("/upload")
+    public AjaxResult upload(@RequestParam("file") MultipartFile file,
+                             @RequestParam("deviceMaintenanceId") Integer deviceMaintenanceId) {
+        try {
+            return AjaxResult.success(deviceMaintenanceFileService.uploadFile(file, deviceMaintenanceId));
+        } catch (Exception e) {
+            return AjaxResult.error(e.getMessage());
+        }
     }
 
     /**
      * 鍒犻櫎
+     *
      * @param ids
      * @return
      */
     @DeleteMapping("/del")
     public AjaxResult delQualityUnqualified(@RequestBody List<Integer> ids) {
-        if(CollectionUtils.isEmpty(ids)){
+        if (CollectionUtils.isEmpty(ids)) {
             return AjaxResult.error("璇烽�夋嫨鑷冲皯涓�鏉℃暟鎹�");
         }
         //鍒犻櫎妫�楠岄檮浠�
@@ -54,14 +74,20 @@
     }
 
     /**
-     *鍒嗛〉鏌ヨ
+     * 鍒嗛〉鏌ヨ
+     *
      * @param page
      * @param deviceMaintenanceFile
      * @return
      */
     @GetMapping("/listPage")
     public AjaxResult qualityInspectFileListPage(Page page, DeviceMaintenanceFile deviceMaintenanceFile) {
-        return AjaxResult.success(deviceMaintenanceFileService.page(page, Wrappers.<DeviceMaintenanceFile>lambdaQuery().eq(DeviceMaintenanceFile::getDeviceMaintenanceId,deviceMaintenanceFile.getDeviceMaintenanceId())));
+        Page<DeviceMaintenanceFile> result = deviceMaintenanceFileService.page(page,
+                Wrappers.<DeviceMaintenanceFile>lambdaQuery()
+                        .eq(DeviceMaintenanceFile::getDeviceMaintenanceId, deviceMaintenanceFile.getDeviceMaintenanceId())
+                        .orderByDesc(DeviceMaintenanceFile::getCreateTime));
+        deviceMaintenanceFileService.enrichAccessUrl(result.getRecords());
+        return AjaxResult.success(result);
     }
 
 
diff --git a/src/main/java/com/ruoyi/device/dto/DeviceMaintenanceDto.java b/src/main/java/com/ruoyi/device/dto/DeviceMaintenanceDto.java
index 5ad0fc7..64f4011 100644
--- a/src/main/java/com/ruoyi/device/dto/DeviceMaintenanceDto.java
+++ b/src/main/java/com/ruoyi/device/dto/DeviceMaintenanceDto.java
@@ -32,6 +32,9 @@
     @ApiModelProperty("璁″垝淇濆吇鏃ユ湡")
     private String maintenancePlanTime;
 
+    @ApiModelProperty("璁″垝淇濆吇浜�")
+    private String maintenancePerson;
+
     @ApiModelProperty("瀹為檯淇濆吇浜�")
     private String maintenanceActuallyName;
 
diff --git a/src/main/java/com/ruoyi/device/pojo/DeviceMaintenance.java b/src/main/java/com/ruoyi/device/pojo/DeviceMaintenance.java
index 91f8df3..18f3e45 100644
--- a/src/main/java/com/ruoyi/device/pojo/DeviceMaintenance.java
+++ b/src/main/java/com/ruoyi/device/pojo/DeviceMaintenance.java
@@ -50,6 +50,12 @@
     @ApiModelProperty("瀹為檯淇濆吇浜�")
     private String maintenanceActuallyName;
 
+    @ApiModelProperty("璁″垝淇濆吇浜篿d")
+    private Long maintenancePersonId;
+
+    @ApiModelProperty("璁″垝淇濆吇浜�")
+    private String maintenancePerson;
+
     @ApiModelProperty("瀹為檯淇濆吇鏃ユ湡")
     @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
     @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
diff --git a/src/main/java/com/ruoyi/device/pojo/DeviceMaintenanceFile.java b/src/main/java/com/ruoyi/device/pojo/DeviceMaintenanceFile.java
index 59226e1..e14eff9 100644
--- a/src/main/java/com/ruoyi/device/pojo/DeviceMaintenanceFile.java
+++ b/src/main/java/com/ruoyi/device/pojo/DeviceMaintenanceFile.java
@@ -37,6 +37,10 @@
     @ApiModelProperty("鏂囦欢璺緞")
     private String url;
 
+    @ApiModelProperty("涓存椂鏂囦欢ID")
+    @TableField(exist = false)
+    private String tempId;
+
     @ApiModelProperty("鏂囦欢澶у皬")
     private Integer fileSize;
 
diff --git a/src/main/java/com/ruoyi/device/pojo/MaintenanceTask.java b/src/main/java/com/ruoyi/device/pojo/MaintenanceTask.java
index a6f4432..7c73f39 100644
--- a/src/main/java/com/ruoyi/device/pojo/MaintenanceTask.java
+++ b/src/main/java/com/ruoyi/device/pojo/MaintenanceTask.java
@@ -69,6 +69,17 @@
     @Excel(name = "褰曞叆浜�")
     private String registrant;
 
+    @ApiModelProperty(value = "淇濆吇浜篿d")
+    private Long maintenancePersonId;
+
+    @ApiModelProperty(value = "淇濆吇浜�")
+    @Excel(name = "淇濆吇浜�")
+    private String maintenancePerson;
+
+    @ApiModelProperty(value = "淇濆吇椤圭洰")
+    @Excel(name = "淇濆吇椤圭洰")
+    private String maintenanceItems;
+
     @ApiModelProperty(value = "褰曞叆鏃ユ湡")
     @Excel(name = "褰曞叆鏃ユ湡", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
     @JsonFormat(pattern = "yyyy-MM-dd")
diff --git a/src/main/java/com/ruoyi/device/service/DeviceMaintenanceFileService.java b/src/main/java/com/ruoyi/device/service/DeviceMaintenanceFileService.java
index 737ee2f..311ffad 100644
--- a/src/main/java/com/ruoyi/device/service/DeviceMaintenanceFileService.java
+++ b/src/main/java/com/ruoyi/device/service/DeviceMaintenanceFileService.java
@@ -1,7 +1,11 @@
 package com.ruoyi.device.service;
 
-import com.ruoyi.device.pojo.DeviceMaintenanceFile;
 import com.baomidou.mybatisplus.extension.service.IService;
+import com.ruoyi.device.pojo.DeviceMaintenanceFile;
+import org.springframework.web.multipart.MultipartFile;
+
+import java.io.IOException;
+import java.util.List;
 
 /**
  * <p>
@@ -13,4 +17,11 @@
  */
 public interface DeviceMaintenanceFileService extends IService<DeviceMaintenanceFile> {
 
+    DeviceMaintenanceFile uploadFile(MultipartFile file, Integer deviceMaintenanceId) throws IOException;
+
+    DeviceMaintenanceFile bindFromTemp(String tempId, Integer deviceMaintenanceId, String name) throws IOException;
+
+    DeviceMaintenanceFile saveRecord(DeviceMaintenanceFile deviceMaintenanceFile) throws IOException;
+
+    void enrichAccessUrl(List<DeviceMaintenanceFile> files);
 }
diff --git a/src/main/java/com/ruoyi/device/service/impl/DeviceMaintenanceFileServiceImpl.java b/src/main/java/com/ruoyi/device/service/impl/DeviceMaintenanceFileServiceImpl.java
index 09e8df1..ac5cd66 100644
--- a/src/main/java/com/ruoyi/device/service/impl/DeviceMaintenanceFileServiceImpl.java
+++ b/src/main/java/com/ruoyi/device/service/impl/DeviceMaintenanceFileServiceImpl.java
@@ -1,10 +1,31 @@
 package com.ruoyi.device.service.impl;
 
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ruoyi.common.constant.Constants;
+import com.ruoyi.common.exception.ServiceException;
+import com.ruoyi.common.utils.StringUtils;
 import com.ruoyi.device.mapper.DeviceMaintenanceFileMapper;
 import com.ruoyi.device.pojo.DeviceMaintenanceFile;
 import com.ruoyi.device.service.DeviceMaintenanceFileService;
-import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ruoyi.framework.config.RuoYiConfig;
+import com.ruoyi.other.mapper.TempFileMapper;
+import com.ruoyi.other.pojo.TempFile;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.io.FilenameUtils;
+import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Service;
+import org.springframework.web.multipart.MultipartFile;
+
+import javax.annotation.Resource;
+import java.io.IOException;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.nio.file.Paths;
+import java.nio.file.StandardCopyOption;
+import java.time.LocalDate;
+import java.time.format.DateTimeFormatter;
+import java.util.List;
+import java.util.UUID;
 
 /**
  * <p>
@@ -15,6 +36,167 @@
  * @since 2026-01-27 09:48:09
  */
 @Service
-public class DeviceMaintenanceFileServiceImpl extends ServiceImpl<DeviceMaintenanceFileMapper, DeviceMaintenanceFile> implements DeviceMaintenanceFileService {
+@Slf4j
+public class DeviceMaintenanceFileServiceImpl extends ServiceImpl<DeviceMaintenanceFileMapper, DeviceMaintenanceFile>
+        implements DeviceMaintenanceFileService {
 
+    @Resource
+    private TempFileMapper tempFileMapper;
+
+    @Value("${file.upload-dir}")
+    private String uploadDir;
+
+    @Value("${file.temp-dir}")
+    private String tempDir;
+
+    @Override
+    public DeviceMaintenanceFile uploadFile(MultipartFile file, Integer deviceMaintenanceId) throws IOException {
+        if (deviceMaintenanceId == null || deviceMaintenanceId <= 0) {
+            throw new ServiceException("璁惧淇濆吇璁板綍ID涓嶈兘涓虹┖");
+        }
+        if (file == null || file.isEmpty()) {
+            throw new ServiceException("涓婁紶澶辫触锛屾枃浠朵笉鑳戒负绌�");
+        }
+        Path formalPath = storeMultipartFile(file, deviceMaintenanceId);
+        return insertFileRecord(deviceMaintenanceId, file.getOriginalFilename(), formalPath, (int) file.getSize());
+    }
+
+    @Override
+    public DeviceMaintenanceFile bindFromTemp(String tempId, Integer deviceMaintenanceId, String name) throws IOException {
+        if (!StringUtils.hasText(tempId)) {
+            throw new ServiceException("涓存椂鏂囦欢ID涓嶈兘涓虹┖");
+        }
+        if (deviceMaintenanceId == null || deviceMaintenanceId <= 0) {
+            throw new ServiceException("璁惧淇濆吇璁板綍ID涓嶈兘涓虹┖");
+        }
+        TempFile tempFile = tempFileMapper.selectById(tempId);
+        if (tempFile == null) {
+            throw new ServiceException("涓存椂鏂囦欢涓嶅瓨鍦ㄦ垨宸茶繃鏈�");
+        }
+        Path source = Paths.get(tempFile.getTempPath());
+        if (!Files.exists(source)) {
+            tempFileMapper.deleteById(tempId);
+            throw new ServiceException("涓存椂鏂囦欢宸插け鏁堬紝璇烽噸鏂颁笂浼�");
+        }
+        Path formalPath = copyToFormalDir(source, deviceMaintenanceId, tempFile.getOriginalName());
+        Files.deleteIfExists(source);
+        tempFileMapper.deleteById(tempId);
+        String fileName = StringUtils.hasText(name) ? name : tempFile.getOriginalName();
+        return insertFileRecord(deviceMaintenanceId, fileName, formalPath, null);
+    }
+
+    @Override
+    public DeviceMaintenanceFile saveRecord(DeviceMaintenanceFile deviceMaintenanceFile) throws IOException {
+        if (deviceMaintenanceFile == null) {
+            throw new ServiceException("闄勪欢淇℃伅涓嶈兘涓虹┖");
+        }
+        if (StringUtils.hasText(deviceMaintenanceFile.getTempId())) {
+            return bindFromTemp(
+                    deviceMaintenanceFile.getTempId(),
+                    deviceMaintenanceFile.getDeviceMaintenanceId(),
+                    deviceMaintenanceFile.getName());
+        }
+        String url = deviceMaintenanceFile.getUrl();
+        if (isTempStoragePath(url)) {
+            throw new ServiceException("璇峰嬁鐩存帴淇濆瓨涓存椂鐩綍鏂囦欢锛岃浣跨敤涓婁紶鎺ュ彛鎴栦紶閫� tempId");
+        }
+        if (StringUtils.hasText(url) && !url.startsWith(Constants.RESOURCE_PREFIX)) {
+            deviceMaintenanceFile.setUrl(buildAccessLink(Paths.get(url)));
+        }
+        save(deviceMaintenanceFile);
+        enrichAccessUrl(deviceMaintenanceFile);
+        return deviceMaintenanceFile;
+    }
+
+    @Override
+    public void enrichAccessUrl(List<DeviceMaintenanceFile> files) {
+        if (files == null) {
+            return;
+        }
+        files.forEach(this::enrichAccessUrl);
+    }
+
+    private void enrichAccessUrl(DeviceMaintenanceFile file) {
+        if (file == null || !StringUtils.hasText(file.getUrl())) {
+            return;
+        }
+        String url = file.getUrl().trim();
+        if (url.startsWith(Constants.RESOURCE_PREFIX) || url.startsWith("http://") || url.startsWith("https://")) {
+            return;
+        }
+        try {
+            file.setUrl(buildAccessLink(Paths.get(url)));
+        } catch (Exception e) {
+            log.warn("闄勪欢URL杞崲澶辫触 id={} url={}", file.getId(), url);
+        }
+    }
+
+    private Path storeMultipartFile(MultipartFile file, Integer deviceMaintenanceId) throws IOException {
+        Path formalDirPath = resolveFormalDirPath();
+        Files.createDirectories(formalDirPath);
+        String originalFilename = file.getOriginalFilename();
+        if (!StringUtils.hasText(originalFilename)) {
+            throw new ServiceException("鏂囦欢鍚嶄笉鑳戒负绌�");
+        }
+        Path formalPath = formalDirPath.resolve(buildFormalFilename(deviceMaintenanceId, originalFilename));
+        file.transferTo(formalPath.toFile());
+        return formalPath;
+    }
+
+    private Path copyToFormalDir(Path source, Integer deviceMaintenanceId, String originalFilename) throws IOException {
+        Path formalDirPath = resolveFormalDirPath();
+        Files.createDirectories(formalDirPath);
+        String name = StringUtils.hasText(originalFilename) ? originalFilename : source.getFileName().toString();
+        Path formalPath = formalDirPath.resolve(buildFormalFilename(deviceMaintenanceId, name));
+        Files.copy(source, formalPath, StandardCopyOption.REPLACE_EXISTING);
+        return formalPath;
+    }
+
+    private Path resolveFormalDirPath() {
+        String dir = uploadDir;
+        if (!dir.endsWith("/") && !dir.endsWith("\\")) {
+            dir = dir + "/";
+        }
+        return Paths.get(dir + "deviceMaintenance/" + LocalDate.now().format(DateTimeFormatter.ISO_LOCAL_DATE));
+    }
+
+    private String buildFormalFilename(Integer deviceMaintenanceId, String originalFilename) {
+        String ext = FilenameUtils.getExtension(originalFilename);
+        String base = deviceMaintenanceId + "_" + System.currentTimeMillis() + "_"
+                + UUID.randomUUID().toString().substring(0, 8);
+        return StringUtils.hasText(ext) ? base + "." + ext : base;
+    }
+
+    private DeviceMaintenanceFile insertFileRecord(Integer deviceMaintenanceId, String name, Path formalPath, Integer fileSize) {
+        DeviceMaintenanceFile record = new DeviceMaintenanceFile();
+        record.setName(name);
+        record.setUrl(buildAccessLink(formalPath));
+        record.setFileSize(fileSize);
+        record.setDeviceMaintenanceId(deviceMaintenanceId);
+        save(record);
+        return record;
+    }
+
+    private boolean isTempStoragePath(String url) {
+        if (!StringUtils.hasText(url)) {
+            return false;
+        }
+        String normalized = url.replace("\\", "/").toLowerCase();
+        return normalized.contains("/temp/") || normalized.contains("temp/uploads");
+    }
+
+    private String buildAccessLink(Path formalFilePath) {
+        String normalizedPath = formalFilePath.toString().replace("\\", "/");
+        String profile = RuoYiConfig.getProfile();
+        String normalizedProfile = profile == null ? "" : profile.replace("\\", "/");
+
+        String relativePath = normalizedPath;
+        if (StringUtils.hasText(normalizedProfile) && normalizedPath.startsWith(normalizedProfile)) {
+            relativePath = normalizedPath.substring(normalizedProfile.length());
+        }
+        if (!relativePath.startsWith("/")) {
+            relativePath = "/" + relativePath;
+        }
+        return Constants.RESOURCE_PREFIX + relativePath;
+    }
 }
diff --git a/src/main/java/com/ruoyi/device/service/impl/DeviceMaintenanceServiceImpl.java b/src/main/java/com/ruoyi/device/service/impl/DeviceMaintenanceServiceImpl.java
index 6e90b28..23cc5cb 100644
--- a/src/main/java/com/ruoyi/device/service/impl/DeviceMaintenanceServiceImpl.java
+++ b/src/main/java/com/ruoyi/device/service/impl/DeviceMaintenanceServiceImpl.java
@@ -37,8 +37,8 @@
     @Override
     public AjaxResult saveDeviceRepair(DeviceMaintenance deviceMaintenance) {
         boolean save = this.save(deviceMaintenance);
-        if (save){
-            return AjaxResult.success();
+        if (save) {
+            return AjaxResult.success(deviceMaintenance);
         }
         return AjaxResult.error();
     }
diff --git a/src/main/java/com/ruoyi/device/service/impl/MaintenanceTaskJob.java b/src/main/java/com/ruoyi/device/service/impl/MaintenanceTaskJob.java
index fca829a..2acf270 100644
--- a/src/main/java/com/ruoyi/device/service/impl/MaintenanceTaskJob.java
+++ b/src/main/java/com/ruoyi/device/service/impl/MaintenanceTaskJob.java
@@ -97,6 +97,11 @@
         inspectionTask.setTenantId(timingTask.getTenantId());
         inspectionTask.setStatus(0);
         inspectionTask.setDeviceModel(timingTask.getDeviceModel());
+        inspectionTask.setMaintenanceLocation(timingTask.getMaintenanceItems());
+        if (timingTask.getMaintenancePersonId() != null) {
+            inspectionTask.setMaintenancePersonId(timingTask.getMaintenancePersonId());
+            inspectionTask.setMaintenancePerson(timingTask.getMaintenancePerson());
+        }
         inspectionTask.setCreateUser(Integer.parseInt(timingTask.getRegistrantId().toString()));
         inspectionTask.setUpdateTime(LocalDateTime.now());
         inspectionTask.setCreateTime(LocalDateTime.now());
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 7bbab8e..951b13b 100644
--- a/src/main/java/com/ruoyi/device/service/impl/MaintenanceTaskServiceImpl.java
+++ b/src/main/java/com/ruoyi/device/service/impl/MaintenanceTaskServiceImpl.java
@@ -66,6 +66,9 @@
             if (task.getRegistrantId() != null) {
                 userIds.add(task.getRegistrantId());
             }
+            if (task.getMaintenancePersonId() != null) {
+                userIds.add(task.getMaintenancePersonId());
+            }
         });
 
         // 4. 鎵归噺鏌ヨ鐢ㄦ埛淇℃伅
@@ -75,10 +78,12 @@
             users.forEach(user -> userNickNameMap.put(user.getUserId(), user.getNickName()));
         }
         taskPage.getRecords().forEach(task -> {
-            // 璁剧疆鐧昏浜烘樀绉�
             if (task.getRegistrantId() != null) {
                 task.setRegistrant(userNickNameMap.getOrDefault(task.getRegistrantId(), "鏈煡鐢ㄦ埛"));
             }
+            if (task.getMaintenancePersonId() != null) {
+                task.setMaintenancePerson(userNickNameMap.getOrDefault(task.getMaintenancePersonId(), "鏈煡鐢ㄦ埛"));
+            }
         });
         return AjaxResult.success(taskPage);
     }
diff --git a/src/main/resources/mapper/device/DeviceMaintenanceMapper.xml b/src/main/resources/mapper/device/DeviceMaintenanceMapper.xml
index 0943443..61a8781 100644
--- a/src/main/resources/mapper/device/DeviceMaintenanceMapper.xml
+++ b/src/main/resources/mapper/device/DeviceMaintenanceMapper.xml
@@ -18,6 +18,7 @@
         dm.update_user,
         dm.tenant_id,
         dm.maintenance_actually_name,
+        dm.maintenance_person,
         dm.maintenance_location,
         dl.device_name,
         dl.device_model,
@@ -67,6 +68,7 @@
                dm.update_user,
                dm.tenant_id,
                dm.maintenance_actually_name,
+               dm.maintenance_person,
                dm.maintenance_location,
                dl.device_name,
                dl.device_model,

--
Gitblit v1.9.3