From a8e4132c3e2e9c3b3fcb0360901b35571b6464ea Mon Sep 17 00:00:00 2001
From: hsy <1029150275@qq.com>
Date: 星期五, 28 八月 2026 10:13:01 +0800
Subject: [PATCH] feat: 综合业务模块功能补充与实体拓展

---
 src/main/java/com/ruoyi/device/service/impl/DeviceMaintenanceServiceImpl.java |   58 +++++++++++++++++++++++++++++++++++++++++++---------------
 1 files changed, 43 insertions(+), 15 deletions(-)

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 a5005af..4ee147b 100644
--- a/src/main/java/com/ruoyi/device/service/impl/DeviceMaintenanceServiceImpl.java
+++ b/src/main/java/com/ruoyi/device/service/impl/DeviceMaintenanceServiceImpl.java
@@ -4,6 +4,8 @@
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ruoyi.basic.enums.RecordTypeEnum;
+import com.ruoyi.basic.utils.FileUtil;
 import com.ruoyi.common.utils.bean.BeanUtils;
 import com.ruoyi.common.utils.poi.ExcelUtil;
 import com.ruoyi.device.dto.DeviceMaintenanceDto;
@@ -11,33 +13,37 @@
 import com.ruoyi.device.mapper.DeviceMaintenanceMapper;
 import com.ruoyi.device.pojo.DeviceMaintenance;
 import com.ruoyi.device.service.IDeviceMaintenanceService;
+import com.ruoyi.device.vo.DeviceMaintenanceVo;
+import com.ruoyi.device.vo.DeviceRepairVo;
 import com.ruoyi.framework.web.domain.AjaxResult;
 import com.ruoyi.measuringinstrumentledger.mapper.SparePartsMapper;
 import com.ruoyi.measuringinstrumentledger.pojo.SpareParts;
 import com.ruoyi.measuringinstrumentledger.pojo.SparePartsRequisitionRecord;
 import com.ruoyi.measuringinstrumentledger.service.SparePartsRequisitionRecordService;
+import jakarta.servlet.http.HttpServletResponse;
+import jakarta.servlet.http.HttpServletResponse;
+import lombok.RequiredArgsConstructor;
+import com.ruoyi.device.service.IDeviceRepairSparePartService;
+import com.ruoyi.device.pojo.DeviceRepairSparePart;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import org.apache.commons.lang3.StringUtils;
-import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
-import javax.servlet.http.HttpServletResponse;
 import java.math.BigDecimal;
 import java.util.ArrayList;
 import java.util.List;
 
 
 @Service
+@RequiredArgsConstructor
 public class DeviceMaintenanceServiceImpl extends ServiceImpl<DeviceMaintenanceMapper, DeviceMaintenance> implements IDeviceMaintenanceService {
 
-
-
-    @Autowired
-    private DeviceMaintenanceMapper deviceMaintenanceMapper;
-    @Autowired
-    private SparePartsMapper sparePartsMapper;
-    @Autowired
-    private SparePartsRequisitionRecordService sparePartsRequisitionRecordService;
+    private final DeviceMaintenanceMapper deviceMaintenanceMapper;
+    private final SparePartsMapper sparePartsMapper;
+    private final SparePartsRequisitionRecordService sparePartsRequisitionRecordService;
+    private final IDeviceRepairSparePartService deviceRepairSparePartService;
+    private final FileUtil fileUtil;
 
     @Override
     public IPage<DeviceMaintenanceDto> queryPage(Page page, DeviceMaintenanceDto deviceMaintenanceDto) {
@@ -46,9 +52,12 @@
     }
 
     @Override
-    public AjaxResult saveDeviceRepair(DeviceMaintenance deviceMaintenance) {
+    @Transactional(rollbackFor = Exception.class)
+    public AjaxResult saveDeviceRepair(DeviceMaintenanceDto deviceMaintenance) {
         boolean save = this.save(deviceMaintenance);
         if (save){
+            // 澶勭悊鍥剧墖涓婁紶
+            fileUtil.saveStorageAttachmentByRecordTypeAndRecordId("file", RecordTypeEnum.DEVICE_MAINTENANCE, deviceMaintenance.getId(), deviceMaintenance.getStorageBlobDTOs());
             return AjaxResult.success();
         }
         return AjaxResult.error();
@@ -56,8 +65,14 @@
 
     @Override
     @Transactional(rollbackFor = Exception.class)
-    public AjaxResult updateDeviceDeviceMaintenance(DeviceMaintenance deviceMaintenance) {
+    public AjaxResult updateDeviceDeviceMaintenance(DeviceMaintenanceDto deviceMaintenance) {
         DeviceMaintenance oldDeviceMaintenance = this.getById(deviceMaintenance.getId());
+        
+        // 娓呯悊鏃х殑澶囦欢浣跨敤璁板綍锛岄槻姝㈤噸澶嶇疮璁�
+        deviceRepairSparePartService.remove(new QueryWrapper<DeviceRepairSparePart>()
+                .eq("source_id", deviceMaintenance.getId())
+                .eq("source_type", 2));
+
         // 澶勭悊澶囦欢浣跨敤鎯呭喌
         if (com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(deviceMaintenance.getSparePartsUseList())) {
             List<Long> sparePartIds = new ArrayList<>();
@@ -80,6 +95,14 @@
                         record.setSparePartsId(sparePartUse.getId());
                         record.setQuantity(sparePartUse.getQuantity());
                         sparePartsRequisitionRecordService.save(record);
+
+                        // 鎻掑叆璁板綍鍒� device_repair_spare_part
+                        DeviceRepairSparePart partRecord = new DeviceRepairSparePart();
+                        partRecord.setSourceId(deviceMaintenance.getId());
+                        partRecord.setSourceType(2); // 2 淇濆吇
+                        partRecord.setSparePartId(sparePartUse.getId());
+                        partRecord.setQuantity(sparePartUse.getQuantity());
+                        deviceRepairSparePartService.save(partRecord);
                     } else {
                         return AjaxResult.error("澶囦欢 " + spareParts.getName() + " 鏁伴噺涓嶈冻");
                     }
@@ -92,6 +115,8 @@
         }
 
         if (this.updateById(deviceMaintenance)) {
+            // 澶勭悊鍥剧墖涓婁紶
+            fileUtil.saveStorageAttachmentByRecordTypeAndRecordId("file", RecordTypeEnum.DEVICE_MAINTENANCE, deviceMaintenance.getId(), deviceMaintenance.getStorageBlobDTOs());
             return AjaxResult.success();
         }
         return AjaxResult.error();
@@ -113,8 +138,11 @@
     }
 
     @Override
-    public DeviceMaintenanceDto detailById(Long id) {
-
-        return deviceMaintenanceMapper.detailById(id);
+    public DeviceMaintenanceVo detailById(Long id) {
+        DeviceMaintenanceVo vo = deviceMaintenanceMapper.detailById(id);
+        vo.setStorageBlobVOs(fileUtil.getStorageBlobVOsByRecordTypeAndRecordId(RecordTypeEnum.DEVICE_MAINTENANCE, id));
+        List<DeviceRepairSparePart> parts = deviceRepairSparePartService.getListWithPartName(id, 2);
+        vo.setSparePartsUseListDetails(parts);
+        return vo;
     }
 }

--
Gitblit v1.9.3