From ad45ebdf25cae54a3950bba33aa767fc7a8a43d8 Mon Sep 17 00:00:00 2001
From: gongchunyi <deslre0381@gmail.com>
Date: 星期五, 22 五月 2026 21:26:13 +0800
Subject: [PATCH] feat: 设备台账新增附件图片上传

---
 src/main/java/com/ruoyi/device/controller/DeviceLedgerController.java    |   29 +++++++-------
 src/main/java/com/ruoyi/device/service/impl/DeviceLedgerServiceImpl.java |   50 ++++++++++++++++++++++---
 src/main/java/com/ruoyi/device/dto/DeviceLedgerDto.java                  |   17 ++++++++
 src/main/java/com/ruoyi/device/service/IDeviceLedgerService.java         |    6 ++-
 4 files changed, 79 insertions(+), 23 deletions(-)

diff --git a/src/main/java/com/ruoyi/device/controller/DeviceLedgerController.java b/src/main/java/com/ruoyi/device/controller/DeviceLedgerController.java
index f4b807d..298980e 100644
--- a/src/main/java/com/ruoyi/device/controller/DeviceLedgerController.java
+++ b/src/main/java/com/ruoyi/device/controller/DeviceLedgerController.java
@@ -35,30 +35,29 @@
     private DeviceMaintenanceMapper deviceMaintenanceMapper;
 
 
-
     @Operation(summary = "璁惧鍙拌处鍒楄〃")
     @GetMapping("/page")
-    public AjaxResult page(Page page , DeviceLedgerDto deviceLedger) {
-        return AjaxResult.success(deviceLedgerService.queryPage(page,deviceLedger));
+    public AjaxResult page(Page page, DeviceLedgerDto deviceLedger) {
+        return AjaxResult.success(deviceLedgerService.queryPage(page, deviceLedger));
     }
 
     @PostMapping()
     @Operation(summary = "娣诲姞璁惧鍙拌处")
-    public AjaxResult add(@RequestBody DeviceLedger deviceLedger) {
-
-        return deviceLedgerService.saveDeviceLedger(deviceLedger);
+    public AjaxResult add(@RequestBody DeviceLedgerDto deviceLedgerDto) {
+        return deviceLedgerService.saveDeviceLedger(deviceLedgerDto);
     }
 
     @Operation(summary = "鏍规嵁id鏌ヨ璁惧鍙拌处")
     @GetMapping("/{id}")
     public AjaxResult detail(@PathVariable Long id) {
-        return AjaxResult.success(deviceLedgerService.getById(id));
+        DeviceLedgerDto deviceLedgerDto = deviceLedgerService.getDeviceLedgerDetail(id);
+        return AjaxResult.success(deviceLedgerDto);
     }
 
-    @PutMapping ()
+    @PutMapping()
     @Operation(summary = "淇敼璁惧鍙拌处")
-    public AjaxResult update(@RequestBody DeviceLedger deviceLedger) {
-        return deviceLedgerService.updateDeviceLedger(deviceLedger);
+    public AjaxResult update(@RequestBody DeviceLedgerDto deviceLedgerDto) {
+        return deviceLedgerService.updateDeviceLedger(deviceLedgerDto);
     }
 
     @DeleteMapping("/{ids}")
@@ -74,7 +73,7 @@
     @PostMapping("export")
     @Operation(summary = "瀵煎嚭璁惧鍙拌处")
     public void export(HttpServletResponse response, Long[] ids) {
-         deviceLedgerService.export(response, ids);
+        deviceLedgerService.export(response, ids);
     }
 
     @Operation(summary = "涓嬭浇妯℃澘")
@@ -97,9 +96,9 @@
 
     @GetMapping("getDeviceLedger")
     @Operation(summary = "鑾峰彇璁惧鍙拌处")
-    public AjaxResult getDeviceLedger( ) {
+    public AjaxResult getDeviceLedger() {
         return AjaxResult.success(deviceLedgerService.list(new QueryWrapper<DeviceLedger>().lambda()
-                .select(DeviceLedger::getId, DeviceLedger::getDeviceName,DeviceLedger::getDeviceModel)));
+                .select(DeviceLedger::getId, DeviceLedger::getDeviceName, DeviceLedger::getDeviceModel)));
     }
 
     @GetMapping("scanDevice")
@@ -108,8 +107,8 @@
     public AjaxResult scanDevice(Long id) {
         List<DeviceMaintenance> list = deviceMaintenanceMapper.list1(id);
         DeviceLedger deviceLedger = deviceLedgerMapper.selectById1(id);
-        if (list.size()>0){
-            deviceLedger.setUpdateTime(list.get(0).getMaintenanceActuallyTime());//鏈�鍚庣淮鎶ゆ椂闂�
+        if (!list.isEmpty()) {
+            deviceLedger.setUpdateTime(list.getFirst().getMaintenanceActuallyTime());//鏈�鍚庣淮鎶ゆ椂闂�
         }
         deviceLedger.setCreateTime(deviceLedger.getUpdateTime().plusMonths(1));//涓嬫缁存姢鏃堕棿
         return AjaxResult.success(deviceLedger);
diff --git a/src/main/java/com/ruoyi/device/dto/DeviceLedgerDto.java b/src/main/java/com/ruoyi/device/dto/DeviceLedgerDto.java
index 79e0aff..8ceb915 100644
--- a/src/main/java/com/ruoyi/device/dto/DeviceLedgerDto.java
+++ b/src/main/java/com/ruoyi/device/dto/DeviceLedgerDto.java
@@ -12,6 +12,9 @@
 import java.math.BigDecimal;
 import java.time.LocalDate;
 import java.time.LocalDateTime;
+import java.util.List;
+import com.ruoyi.basic.dto.StorageBlobDTO;
+import com.ruoyi.basic.dto.StorageBlobVO;
 
 /**
  * 璁惧鍙拌处瀹炰綋绫�
@@ -55,6 +58,20 @@
     private String supplierName;
 
     /**
+     * 璁惧闄勪欢(鐢ㄤ簬鎺ユ敹)
+     */
+    @TableField(exist = false)
+    @Schema(description = "璁惧闄勪欢鎺ユ敹鍒楄〃")
+    private List<StorageBlobDTO> storageBlobDTOs;
+
+    /**
+     * 璁惧闄勪欢(鐢ㄤ簬杩斿洖)
+     */
+    @TableField(exist = false)
+    @Schema(description = "璁惧闄勪欢灞曠ず鍒楄〃")
+    private List<StorageBlobVO> storageBlobVOs;
+
+    /**
      * 鍗曚綅
      */
     private String unit;
diff --git a/src/main/java/com/ruoyi/device/service/IDeviceLedgerService.java b/src/main/java/com/ruoyi/device/service/IDeviceLedgerService.java
index d34ea65..78dfcac 100644
--- a/src/main/java/com/ruoyi/device/service/IDeviceLedgerService.java
+++ b/src/main/java/com/ruoyi/device/service/IDeviceLedgerService.java
@@ -14,9 +14,11 @@
 public interface IDeviceLedgerService  extends IService<DeviceLedger> {
     IPage<DeviceLedgerDto> queryPage(Page page, DeviceLedgerDto deviceLedger);
 
-    AjaxResult saveDeviceLedger(DeviceLedger deviceLedger);
+    AjaxResult saveDeviceLedger(DeviceLedgerDto deviceLedgerDto);
 
-    AjaxResult updateDeviceLedger(DeviceLedger deviceLedger);
+    AjaxResult updateDeviceLedger(DeviceLedgerDto deviceLedgerDto);
+
+    DeviceLedgerDto getDeviceLedgerDetail(Long id);
 
     void export(HttpServletResponse response, Long[] ids);
 
diff --git a/src/main/java/com/ruoyi/device/service/impl/DeviceLedgerServiceImpl.java b/src/main/java/com/ruoyi/device/service/impl/DeviceLedgerServiceImpl.java
index 4f6ebd6..154923d 100644
--- a/src/main/java/com/ruoyi/device/service/impl/DeviceLedgerServiceImpl.java
+++ b/src/main/java/com/ruoyi/device/service/impl/DeviceLedgerServiceImpl.java
@@ -12,6 +12,9 @@
 import com.ruoyi.device.execl.DeviceLedgerExeclDto;
 import com.ruoyi.device.mapper.DeviceLedgerMapper;
 import com.ruoyi.device.pojo.DeviceLedger;
+import com.ruoyi.basic.dto.StorageAttachmentDTO;
+import com.ruoyi.basic.enums.RecordTypeEnum;
+import com.ruoyi.basic.service.StorageAttachmentService;
 import com.ruoyi.device.service.IDeviceLedgerService;
 import com.ruoyi.framework.web.domain.AjaxResult;
 import com.ruoyi.project.system.domain.SysUser;
@@ -36,6 +39,7 @@
 
     private final DeviceLedgerMapper deviceLedgerMapper;
     private final SysUserMapper sysUserMapper;
+    private final StorageAttachmentService storageAttachmentService;
 
     @Override
     public IPage<DeviceLedgerDto> queryPage(Page page, DeviceLedgerDto deviceLedger) {
@@ -44,25 +48,61 @@
     }
 
     @Override
-    public AjaxResult saveDeviceLedger(DeviceLedger deviceLedger) {
+    public AjaxResult saveDeviceLedger(DeviceLedgerDto deviceLedgerDto) {
         LambdaQueryWrapper<DeviceLedger> deviceLedgerLambdaQueryWrapper = new LambdaQueryWrapper<>();
-        deviceLedgerLambdaQueryWrapper.eq(DeviceLedger::getDeviceName,deviceLedger.getDeviceName());
+        deviceLedgerLambdaQueryWrapper.eq(DeviceLedger::getDeviceName,deviceLedgerDto.getDeviceName());
         if (this.count(deviceLedgerLambdaQueryWrapper) > 0) {
             return AjaxResult.error("璁惧鍚嶇О宸插瓨鍦�");
         }
+        DeviceLedger deviceLedger = new DeviceLedger();
+        BeanUtils.copyProperties(deviceLedgerDto, deviceLedger);
         boolean save = this.save(deviceLedger);
         if (save){
+            if (deviceLedgerDto.getStorageBlobDTOs() != null) {
+                StorageAttachmentDTO attachmentDTO = new StorageAttachmentDTO();
+                attachmentDTO.setApplication("image");
+                attachmentDTO.setRecordType(RecordTypeEnum.DEVICE_LEDGER.getType());
+                attachmentDTO.setRecordId(deviceLedger.getId());
+                attachmentDTO.setStorageBlobDTOs(deviceLedgerDto.getStorageBlobDTOs());
+                storageAttachmentService.saveStorageAttachment(attachmentDTO);
+            }
             return AjaxResult.success();
         }
         return AjaxResult.error();
     }
 
     @Override
-    public AjaxResult updateDeviceLedger(DeviceLedger deviceLedger) {
+    public AjaxResult updateDeviceLedger(DeviceLedgerDto deviceLedgerDto) {
+        DeviceLedger deviceLedger = new DeviceLedger();
+        BeanUtils.copyProperties(deviceLedgerDto, deviceLedger);
         if (this.updateById(deviceLedger)) {
+            if (deviceLedgerDto.getStorageBlobDTOs() != null) {
+                StorageAttachmentDTO attachmentDTO = new StorageAttachmentDTO();
+                attachmentDTO.setApplication("image");
+                attachmentDTO.setRecordType(RecordTypeEnum.DEVICE_LEDGER.getType());
+                attachmentDTO.setRecordId(deviceLedger.getId());
+                attachmentDTO.setStorageBlobDTOs(deviceLedgerDto.getStorageBlobDTOs());
+                storageAttachmentService.saveStorageAttachment(attachmentDTO);
+            }
             return AjaxResult.success();
         }
         return AjaxResult.error();
+    }
+
+    @Override
+    public DeviceLedgerDto getDeviceLedgerDetail(Long id) {
+        DeviceLedger deviceLedger = this.getById(id);
+        if (deviceLedger != null) {
+            DeviceLedgerDto deviceLedgerDto = new DeviceLedgerDto();
+            BeanUtils.copyProperties(deviceLedger, deviceLedgerDto);
+            StorageAttachmentDTO dto = new StorageAttachmentDTO();
+            dto.setRecordType(RecordTypeEnum.DEVICE_LEDGER.getType());
+            dto.setRecordId(id);
+            dto.setApplication("image");
+            deviceLedgerDto.setStorageBlobVOs(storageAttachmentService.list(dto));
+            return deviceLedgerDto;
+        }
+        return null;
     }
 
     @Override
@@ -82,9 +122,7 @@
             util.exportExcel(response, deviceLedgerExeclDtos, "璁惧鍙拌处瀵煎嚭");
         }else  {
             ArrayList<Long> arrayList = new ArrayList<>();
-            Arrays.stream(ids).map(id -> {
-                return arrayList.add( id);
-            });
+            Arrays.stream(ids).map(arrayList::add);
             List<DeviceLedger> supplierManageList = deviceLedgerMapper.selectBatchIds(arrayList);
             ArrayList<DeviceLedgerExeclDto> deviceLedgerExeclDtos = new ArrayList<>();
             supplierManageList.stream().forEach(deviceLedger -> {

--
Gitblit v1.9.3