From bb1d7eeda426e66393cf4403cb3ef082db696bd9 Mon Sep 17 00:00:00 2001
From: 云 <2163098428@qq.com>
Date: 星期五, 07 八月 2026 15:42:19 +0800
Subject: [PATCH] feat(report): 新增会计报表功能并完善设备维护和首页统计

---
 src/main/java/com/ruoyi/measuringinstrumentledger/service/impl/SparePartsRequisitionRecordServiceImpl.java |   45 ++++++++++++++++++++++++++++++++++-----------
 1 files changed, 34 insertions(+), 11 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..4942ef9 100644
--- a/src/main/java/com/ruoyi/measuringinstrumentledger/service/impl/SparePartsRequisitionRecordServiceImpl.java
+++ b/src/main/java/com/ruoyi/measuringinstrumentledger/service/impl/SparePartsRequisitionRecordServiceImpl.java
@@ -4,35 +4,58 @@
 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;
 
-/**
- * <p>
- * 鏈嶅姟瀹炵幇绫�
- * </p>
- *
- * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃
- * @since 2026-04-02 03:59:56
- */
+import java.math.BigDecimal;
+
 @Service
 @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) {
         IPage<SparePartsRequisitionRecordDto> result = sparePartsRequisitionRecordMapper.listPage(page, sparePartsRequisitionRecordDto);
-        // 澶勭悊鏉ユ簮绫诲瀷鏂囨湰
         result.getRecords().forEach(record -> {
             if (record.getSourceType() != null) {
-                record.setSourceText(SparePartsRequisitionRecordSourceTypeEnum.getByCode(record.getSourceType()).getValue());
+                SparePartsRequisitionRecordSourceTypeEnum typeEnum = SparePartsRequisitionRecordSourceTypeEnum.getByCode(record.getSourceType());
+                if (typeEnum != null) {
+                    record.setSourceText(typeEnum.getValue());
+                }
             }
         });
         return result;
     }
-}
\ No newline at end of file
+
+    @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);
+    }
+}

--
Gitblit v1.9.3