From c8fbeff3b07f96ffb4624dd64344ac00ec0c8ef8 Mon Sep 17 00:00:00 2001
From: liding <756868258@qq.com>
Date: 星期五, 18 七月 2025 11:03:47 +0800
Subject: [PATCH] 1.优化正式库 2.yml设置

---
 main-business/src/main/java/com/ruoyi/business/service/impl/EquipmentUsageRecordServiceImpl.java |   95 +++++++++++++++++++++++++++++++++++++++++++++--
 1 files changed, 91 insertions(+), 4 deletions(-)

diff --git a/main-business/src/main/java/com/ruoyi/business/service/impl/EquipmentUsageRecordServiceImpl.java b/main-business/src/main/java/com/ruoyi/business/service/impl/EquipmentUsageRecordServiceImpl.java
index a1d8661..5c2366c 100644
--- a/main-business/src/main/java/com/ruoyi/business/service/impl/EquipmentUsageRecordServiceImpl.java
+++ b/main-business/src/main/java/com/ruoyi/business/service/impl/EquipmentUsageRecordServiceImpl.java
@@ -4,6 +4,7 @@
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.ruoyi.basic.entity.Supply;
+import com.ruoyi.basic.mapper.CoalInfoMapper;
 import com.ruoyi.business.dto.EquipmentManagementDto;
 import com.ruoyi.business.dto.EquipmentUsageRecordDto;
 import com.ruoyi.business.entity.EquipmentManagement;
@@ -12,10 +13,14 @@
 import com.ruoyi.business.mapper.EquipmentUsageRecordMapper;
 import com.ruoyi.business.service.EquipmentUsageRecordService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ruoyi.common.core.domain.entity.SysUser;
 import com.ruoyi.common.utils.bean.BeanUtils;
+import com.ruoyi.system.mapper.SysUserMapper;
 import org.springframework.stereotype.Service;
 import lombok.RequiredArgsConstructor;
+import org.springframework.transaction.annotation.Transactional;
 
+import java.time.LocalDate;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
@@ -37,7 +42,9 @@
 
     private final EquipmentUsageRecordMapper equipmentUsageRecordMapper;
 
-    private  final EquipmentManagementMapper equipmentManagementMapper;
+    private final EquipmentManagementMapper equipmentManagementMapper;
+
+    private final SysUserMapper sysUserMapper;
 
     @Override
     public IPage<EquipmentUsageRecordDto> selectUsageRecordList(Page<EquipmentUsageRecord> page, EquipmentUsageRecordDto equipmentUsageRecordDto) {
@@ -46,7 +53,8 @@
         BeanUtils.copyProperties(entityPage, dtoPage);
 
         List<Long> eqIds = entityPage.getRecords().stream().map(EquipmentUsageRecord::getEquipmentId).toList();
-        //鎵归噺鏌ヨ
+        List<Long> userIds = entityPage.getRecords().stream().map(EquipmentUsageRecord::getUserId).toList();
+        //鎵归噺鏌ヨ璁惧
         Map<Long, EquipmentManagement> equipmentManagementMap;
         if (!eqIds.isEmpty()) {
             List<EquipmentManagement> infos = equipmentManagementMapper.selectList(new LambdaQueryWrapper<EquipmentManagement>().in(EquipmentManagement::getId, eqIds));
@@ -54,15 +62,26 @@
         } else {
             equipmentManagementMap = new HashMap<>();
         }
+        //浜哄憳鏌ヨ
+        Map<Long, SysUser> userMap;
+        if (!userIds.isEmpty()) {
+            List<SysUser> sysUsers = sysUserMapper.selectList(userIds);
+            userMap = sysUsers.stream().collect(Collectors.toMap(SysUser::getUserId, Function.identity()));
+        } else {
+            userMap = new HashMap<>();
+        }
         //鍖归厤鏁版嵁
         List<EquipmentUsageRecordDto> dtoRecords = entityPage.getRecords().stream().map(entity -> {
             EquipmentUsageRecordDto dto = new EquipmentUsageRecordDto();
             BeanUtils.copyProperties(entity, dto);
-
             EquipmentManagement equipment = equipmentManagementMap.get(entity.getEquipmentId());
             if (equipment != null) {
                 dto.setEquipmentNo(equipment.getEquipmentNo());
                 dto.setEquipmentName(equipment.getEquipmentName());
+            }
+            SysUser sysUser = userMap.get(entity.getUserId());
+            if (sysUser != null) {
+                dto.setUserName(sysUser.getNickName());
             }
             return dto;
         }).toList();
@@ -72,12 +91,80 @@
     }
 
     @Override
+    @Transactional(rollbackFor = Exception.class)
     public int addOrEditUsageRecord(EquipmentUsageRecordDto equipmentUsageRecordDto) {
+        // 鍙傛暟鏍¢獙
+        if (equipmentUsageRecordDto == null) {
+            throw new IllegalArgumentException("璁惧浣跨敤璁板綍鍙傛暟涓嶈兘涓虹┖");
+        }
+
+        // 澶嶅埗灞炴�у埌瀹炰綋瀵硅薄
         EquipmentUsageRecord equipmentUsageRecord = new EquipmentUsageRecord();
         BeanUtils.copyProperties(equipmentUsageRecordDto, equipmentUsageRecord);
+
+        // 鑾峰彇璁惧ID鍜岄鐢ㄦ暟閲�
+        Long equipmentId = equipmentUsageRecordDto.getEquipmentId();
+        Integer newUsageQuantity = equipmentUsageRecordDto.getUsageQuantity();
+
+        // 鏌ヨ璁惧淇℃伅
+        EquipmentManagement equipment = equipmentManagementMapper.selectById(equipmentId);
+        if (equipment == null) {
+            throw new RuntimeException("璁惧涓嶅瓨鍦�");
+        }
+
+        // 鏂板璁板綍閫昏緫
         if (Objects.isNull(equipmentUsageRecordDto.getId())) {
+            // 妫�鏌ュ簱瀛樻槸鍚﹀厖瓒�
+            if (equipment.getQuantity() < newUsageQuantity) {
+                throw new RuntimeException("搴撳瓨涓嶈冻锛屽綋鍓嶅簱瀛橈細" + equipment.getQuantity());
+            }
+
+            // 鎵e噺搴撳瓨
+            equipment.setQuantity(equipment.getQuantity() - newUsageQuantity);
+            equipmentManagementMapper.updateById(equipment);
+
+            // 璁剧疆浣跨敤寮�濮嬫椂闂翠负褰撳墠鏃堕棿
+            equipmentUsageRecord.setUsageStartTime(LocalDate.now());
+
+            // 濡傛灉鐘舵�佷负1(宸插綊杩�)锛屽垯璁剧疆缁撴潫鏃堕棿
+            if ("1".equals(equipmentUsageRecordDto.getEquipmentStatus())) {
+                equipmentUsageRecord.setUsageEndTime(LocalDate.now());
+            }
+
             return equipmentUsageRecordMapper.insert(equipmentUsageRecord);
-        } else {
+        }
+        // 鏇存柊璁板綍閫昏緫
+        else {
+            // 1. 鏌ヨ鍘熼鐢ㄨ褰�
+            EquipmentUsageRecord originalRecord = equipmentUsageRecordMapper.selectById(equipmentUsageRecordDto.getId());
+            if (originalRecord == null) {
+                throw new RuntimeException("棰嗙敤璁板綍涓嶅瓨鍦�");
+            }
+
+            // 2. 璁$畻搴撳瓨鍙樺寲閲忥紙鏂版暟閲� - 鏃ф暟閲忥級
+            int quantityDelta = newUsageQuantity - originalRecord.getUsageQuantity();
+
+            if (quantityDelta != 0) {
+                // 3. 妫�鏌ヨ皟鏁村悗搴撳瓨鏄惁鍏呰冻
+                int newInventory = equipment.getQuantity() - quantityDelta;
+                if (newInventory < 0) {
+                    throw new RuntimeException("搴撳瓨涓嶈冻锛岃皟鏁村悗搴撳瓨灏嗕负锛�" + newInventory);
+                }
+
+                // 4. 璋冩暣搴撳瓨
+                equipment.setQuantity(newInventory);
+                if (equipmentManagementMapper.updateById(equipment) == 0) {
+                    throw new RuntimeException("搴撳瓨鏇存柊澶辫触锛屽彲鑳藉凡琚叾浠栨搷浣滀慨鏀�");
+                }
+            }
+
+            // 5. 濡傛灉鐘舵�佸彉涓�1(宸插綊杩�)锛屽垯璁剧疆缁撴潫鏃堕棿涓哄綋鍓嶆椂闂�
+            if ("1".equals(equipmentUsageRecordDto.getEquipmentStatus()) &&
+                    (originalRecord.getEquipmentStatus() == null || !"1".equals(originalRecord.getEquipmentStatus()))) {
+                equipmentUsageRecord.setUsageEndTime(LocalDate.now());
+            }
+
+            // 6. 鏇存柊棰嗙敤璁板綍
             return equipmentUsageRecordMapper.updateById(equipmentUsageRecord);
         }
     }

--
Gitblit v1.9.3