From 2656ae9bce8544d81da66c07aaede5386d6fbebb Mon Sep 17 00:00:00 2001
From: liding <756868258@qq.com>
Date: 星期五, 25 七月 2025 15:41:01 +0800
Subject: [PATCH] 1.序列化问题 2.设备领用逻辑优化

---
 main-business/src/main/java/com/ruoyi/business/service/impl/EquipmentManagementServiceImpl.java |   24 ++++++++++++++++++++----
 1 files changed, 20 insertions(+), 4 deletions(-)

diff --git a/main-business/src/main/java/com/ruoyi/business/service/impl/EquipmentManagementServiceImpl.java b/main-business/src/main/java/com/ruoyi/business/service/impl/EquipmentManagementServiceImpl.java
index 863d663..9c88381 100644
--- a/main-business/src/main/java/com/ruoyi/business/service/impl/EquipmentManagementServiceImpl.java
+++ b/main-business/src/main/java/com/ruoyi/business/service/impl/EquipmentManagementServiceImpl.java
@@ -3,18 +3,21 @@
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 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.business.dto.EquipmentManagementDto;
 import com.ruoyi.business.entity.EquipmentManagement;
 import com.ruoyi.business.entity.EquipmentUsageRecord;
 import com.ruoyi.business.mapper.EquipmentManagementMapper;
 import com.ruoyi.business.mapper.EquipmentUsageRecordMapper;
 import com.ruoyi.business.service.EquipmentManagementService;
-import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.ruoyi.business.vo.EquipmentManagementVo;
+import com.ruoyi.common.exception.base.BaseException;
 import com.ruoyi.common.utils.StringUtils;
 import com.ruoyi.common.utils.bean.BeanUtils;
-import org.springframework.stereotype.Service;
 import lombok.RequiredArgsConstructor;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Isolation;
+import org.springframework.transaction.annotation.Transactional;
 
 import java.util.Arrays;
 import java.util.List;
@@ -66,7 +69,8 @@
 
                     // 鏌ヨ璇ヨ澶囩殑浣跨敤鎬婚噺锛坲sageQuantity锛�
                     LambdaQueryWrapper<EquipmentUsageRecord> usageQueryWrapper = new LambdaQueryWrapper<>();
-                    usageQueryWrapper.eq(EquipmentUsageRecord::getEquipmentId, entity.getId());
+                    usageQueryWrapper.eq(EquipmentUsageRecord::getEquipmentId, entity.getId())
+                            .eq(EquipmentUsageRecord::getEquipmentStatus, 1);
 
                     // 璁$畻鎬讳娇鐢ㄩ噺
                     Integer totalUsage = equipmentUsageRecordMapper.selectList(usageQueryWrapper).stream()
@@ -103,13 +107,25 @@
                     vo.setId(equipment.getId());               // 璁惧id
                     vo.setEquipmentName(equipment.getEquipmentName()); // 璁惧鍚嶇О
                     vo.setQuantity(equipment.getQuantity());    // 鏁伴噺
+                    vo.setConsumables(equipment.isConsumables());    // 鏄惁鑰楁潗绫�
                     return vo;
                 })
                 .toList();
     }
 
     @Override
+    @Transactional(isolation = Isolation.REPEATABLE_READ)
     public int delByIds(Long[] ids) {
-        return equipmentManagementMapper.deleteByIds(Arrays.asList(ids));
+        // 1. 妫�鏌ヨ澶囨槸鍚︽鍦ㄤ娇鐢紙娣诲姞琛岄攣 for update锛�
+        List<EquipmentUsageRecord> records = equipmentUsageRecordMapper.selectList(
+                new LambdaQueryWrapper<EquipmentUsageRecord>()
+                        .in(EquipmentUsageRecord::getEquipmentId, Arrays.asList(ids))
+                        .last("FOR UPDATE") // 娣诲姞琛岄攣锛岄攣瀹氭煡璇㈢粨鏋�
+        );
+        if (!records.isEmpty()) {
+            throw new BaseException("璁惧姝e湪浣跨敤涓紝璇锋牳瀵�!");
+        } else {
+            return equipmentManagementMapper.deleteByIds(Arrays.asList(ids));
+        }
     }
 }

--
Gitblit v1.9.3