From f0efc10af370936b4db47b8428eb1ca4686431f9 Mon Sep 17 00:00:00 2001
From: 云 <2163098428@qq.com>
Date: 星期四, 06 八月 2026 15:11:56 +0800
Subject: [PATCH] feat(home): 添加报表日期范围筛选功能并完善设备维护管理

---
 src/main/java/com/ruoyi/measuringinstrumentledger/service/impl/SparePartsRequisitionRecordServiceImpl.java |   29 +++++++++++++++++++++++++++++
 1 files changed, 29 insertions(+), 0 deletions(-)

diff --git a/src/main/java/com/ruoyi/measuringinstrumentledger/service/impl/SparePartsRequisitionRecordServiceImpl.java b/src/main/java/com/ruoyi/measuringinstrumentledger/service/impl/SparePartsRequisitionRecordServiceImpl.java
index 19746f5..10311a5 100644
--- a/src/main/java/com/ruoyi/measuringinstrumentledger/service/impl/SparePartsRequisitionRecordServiceImpl.java
+++ b/src/main/java/com/ruoyi/measuringinstrumentledger/service/impl/SparePartsRequisitionRecordServiceImpl.java
@@ -4,12 +4,18 @@
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.ruoyi.common.enums.SparePartsRequisitionRecordSourceTypeEnum;
+import com.ruoyi.measuringinstrumentledger.dto.SparePartsOutboundDto;
 import com.ruoyi.measuringinstrumentledger.dto.SparePartsRequisitionRecordDto;
+import com.ruoyi.measuringinstrumentledger.mapper.SparePartsMapper;
 import com.ruoyi.measuringinstrumentledger.mapper.SparePartsRequisitionRecordMapper;
+import com.ruoyi.measuringinstrumentledger.pojo.SpareParts;
 import com.ruoyi.measuringinstrumentledger.pojo.SparePartsRequisitionRecord;
 import com.ruoyi.measuringinstrumentledger.service.SparePartsRequisitionRecordService;
 import lombok.RequiredArgsConstructor;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.math.BigDecimal;
 
 /**
  * <p>
@@ -23,6 +29,7 @@
 @RequiredArgsConstructor
 public class SparePartsRequisitionRecordServiceImpl extends ServiceImpl<SparePartsRequisitionRecordMapper, SparePartsRequisitionRecord> implements SparePartsRequisitionRecordService {
     private final SparePartsRequisitionRecordMapper sparePartsRequisitionRecordMapper;
+    private final SparePartsMapper sparePartsMapper;
 
     @Override
     public IPage<SparePartsRequisitionRecordDto> listPage(Page page, SparePartsRequisitionRecordDto sparePartsRequisitionRecordDto) {
@@ -35,4 +42,26 @@
         });
         return result;
     }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void outbound(SparePartsOutboundDto dto) {
+        SpareParts spareParts = sparePartsMapper.selectById(dto.getSparePartsId());
+        if (spareParts == null) {
+            throw new IllegalArgumentException("澶囦欢涓嶅瓨鍦�");
+        }
+        if (spareParts.getQuantity().compareTo(new BigDecimal(dto.getQuantity())) < 0) {
+            throw new IllegalArgumentException("澶囦欢 " + spareParts.getName() + " 搴撳瓨涓嶈冻");
+        }
+        // 鎵e噺搴撳瓨
+        spareParts.setQuantity(spareParts.getQuantity().subtract(new BigDecimal(dto.getQuantity())));
+        sparePartsMapper.updateById(spareParts);
+        // 鍒涘缓棰嗙敤璁板綍
+        SparePartsRequisitionRecord record = new SparePartsRequisitionRecord();
+        record.setSourceType(SparePartsRequisitionRecordSourceTypeEnum.SparePartsRequisitionRecordSourceTypeDirectOutbound.getCode());
+        record.setSparePartsId(dto.getSparePartsId());
+        record.setQuantity(dto.getQuantity());
+        record.setDeviceLedgerId(dto.getDeviceLedgerId());
+        this.save(record);
+    }
 }
\ No newline at end of file

--
Gitblit v1.9.3