From 0ca70b916ced54bf402a2eb409aaaa52ecfb0e6a Mon Sep 17 00:00:00 2001
From: huminmin <mac@MacBook-Pro.local>
Date: 星期五, 03 四月 2026 13:24:23 +0800
Subject: [PATCH] 保养后生成领用记录,新增备件领用记录列表接口

---
 src/main/java/com/ruoyi/device/service/impl/DeviceRepairServiceImpl.java                                   |   48 ++++++
 src/main/java/com/ruoyi/measuringinstrumentledger/dto/SparePartsRequisitionRecordDto.java                  |   15 ++
 src/main/java/com/ruoyi/common/enums/SparePartsRequisitionRecordSourceTypeEnum.java                        |   27 +++
 src/main/java/com/ruoyi/device/pojo/DeviceRepair.java                                                      |   12 +
 src/main/java/com/ruoyi/measuringinstrumentledger/service/SparePartsRequisitionRecordService.java          |   19 ++
 src/main/java/com/ruoyi/measuringinstrumentledger/pojo/SparePartsRequisitionRecord.java                    |   67 +++++++++
 src/main/java/com/ruoyi/device/service/impl/DeviceMaintenanceServiceImpl.java                              |   46 ++++++
 src/main/java/com/ruoyi/measuringinstrumentledger/controller/SparePartsRequisitionRecordController.java    |   36 +++++
 src/main/java/com/ruoyi/measuringinstrumentledger/service/impl/SparePartsRequisitionRecordServiceImpl.java |   38 +++++
 src/main/java/com/ruoyi/measuringinstrumentledger/mapper/SparePartsRequisitionRecordMapper.java            |   23 +++
 src/main/resources/mapper/measuringinstrumentledger/SparePartsRequisitionRecordMapper.xml                  |   36 +++++
 src/main/java/com/ruoyi/device/pojo/DeviceMaintenance.java                                                 |   14 ++
 12 files changed, 381 insertions(+), 0 deletions(-)

diff --git a/src/main/java/com/ruoyi/common/enums/SparePartsRequisitionRecordSourceTypeEnum.java b/src/main/java/com/ruoyi/common/enums/SparePartsRequisitionRecordSourceTypeEnum.java
new file mode 100644
index 0000000..b9acc40
--- /dev/null
+++ b/src/main/java/com/ruoyi/common/enums/SparePartsRequisitionRecordSourceTypeEnum.java
@@ -0,0 +1,27 @@
+package com.ruoyi.common.enums;
+
+import lombok.Getter;
+
+@Getter
+public enum SparePartsRequisitionRecordSourceTypeEnum implements BaseEnum<Integer> {
+    SparePartsRequisitionRecordSourceTypeRepair(0, "缁翠慨"),
+    SparePartsRequisitionRecordSourceTypeMaintenance(1, "淇濆吇");
+
+    private final Integer code;
+    private final String value;
+
+    SparePartsRequisitionRecordSourceTypeEnum(Integer code, String value) {
+        this.code = code;
+        this.value = value;
+    }
+
+    public static SparePartsRequisitionRecordSourceTypeEnum getByCode(Integer code) {
+        for (SparePartsRequisitionRecordSourceTypeEnum type : SparePartsRequisitionRecordSourceTypeEnum.values()) {
+            if (type.getCode().equals(code)) {
+                return type;
+            }
+        }
+        return null;
+    }
+}
+
diff --git a/src/main/java/com/ruoyi/device/pojo/DeviceMaintenance.java b/src/main/java/com/ruoyi/device/pojo/DeviceMaintenance.java
index a9368b0..c3b73ad 100644
--- a/src/main/java/com/ruoyi/device/pojo/DeviceMaintenance.java
+++ b/src/main/java/com/ruoyi/device/pojo/DeviceMaintenance.java
@@ -10,6 +10,7 @@
 import org.springframework.format.annotation.DateTimeFormat;
 
 import java.time.LocalDateTime;
+import java.util.List;
 
 @Data
 @TableName("device_maintenance")
@@ -84,4 +85,17 @@
     @ApiModelProperty("绉熸埛id")
     @TableField(fill = FieldFill.INSERT)
     private Long tenantId;
+
+    @ApiModelProperty("棰嗙敤澶囦欢ids")
+    private String sparePartsIds;
+
+    @ApiModelProperty("浣跨敤澶囦欢鍒楄〃")
+    @TableField(exist = false)
+    private List<SparePartUse> sparePartsUseList;
+
+    @Data
+    public static class SparePartUse {
+        private Long id;
+        private Integer quantity;
+    }
 }
diff --git a/src/main/java/com/ruoyi/device/pojo/DeviceRepair.java b/src/main/java/com/ruoyi/device/pojo/DeviceRepair.java
index a567366..055a724 100644
--- a/src/main/java/com/ruoyi/device/pojo/DeviceRepair.java
+++ b/src/main/java/com/ruoyi/device/pojo/DeviceRepair.java
@@ -10,6 +10,7 @@
 
 import java.time.LocalDateTime;
 import java.util.Date;
+import java.util.List;
 
 @Data
 @TableName("device_repair")
@@ -72,5 +73,16 @@
     @TableField(fill = FieldFill.INSERT)
     private Long tenantId;
 
+    @ApiModelProperty("棰嗙敤澶囦欢ids")
+    private String sparePartsIds;
 
+    @ApiModelProperty("浣跨敤澶囦欢鍒楄〃")
+    @TableField(exist = false)
+    private List<SparePartUse> sparePartsUseList;
+
+    @Data
+    public static class SparePartUse {
+        private Long id;
+        private Integer quantity;
+    }
 }
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 6e90b28..a5005af 100644
--- a/src/main/java/com/ruoyi/device/service/impl/DeviceMaintenanceServiceImpl.java
+++ b/src/main/java/com/ruoyi/device/service/impl/DeviceMaintenanceServiceImpl.java
@@ -12,10 +12,17 @@
 import com.ruoyi.device.pojo.DeviceMaintenance;
 import com.ruoyi.device.service.IDeviceMaintenanceService;
 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 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;
 
@@ -27,6 +34,10 @@
 
     @Autowired
     private DeviceMaintenanceMapper deviceMaintenanceMapper;
+    @Autowired
+    private SparePartsMapper sparePartsMapper;
+    @Autowired
+    private SparePartsRequisitionRecordService sparePartsRequisitionRecordService;
 
     @Override
     public IPage<DeviceMaintenanceDto> queryPage(Page page, DeviceMaintenanceDto deviceMaintenanceDto) {
@@ -44,7 +55,42 @@
     }
 
     @Override
+    @Transactional(rollbackFor = Exception.class)
     public AjaxResult updateDeviceDeviceMaintenance(DeviceMaintenance deviceMaintenance) {
+        DeviceMaintenance oldDeviceMaintenance = this.getById(deviceMaintenance.getId());
+        // 澶勭悊澶囦欢浣跨敤鎯呭喌
+        if (com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(deviceMaintenance.getSparePartsUseList())) {
+            List<Long> sparePartIds = new ArrayList<>();
+            for (DeviceMaintenance.SparePartUse sparePartUse : deviceMaintenance.getSparePartsUseList()) {
+                // 鑾峰彇澶囦欢淇℃伅
+                SpareParts spareParts = sparePartsMapper.selectById(sparePartUse.getId());
+                if (spareParts != null) {
+                    // 妫�鏌ユ暟閲忔槸鍚﹁冻澶�
+                    if (spareParts.getQuantity().compareTo(new BigDecimal(sparePartUse.getQuantity())) >= 0) {
+                        // 鏇存柊鏁伴噺
+                        spareParts.setQuantity(spareParts.getQuantity().subtract(new BigDecimal(sparePartUse.getQuantity())));
+                        sparePartsMapper.updateById(spareParts);
+                        sparePartIds.add(sparePartUse.getId());
+
+                        // 鍒涘缓澶囦欢棰嗙敤璁板綍
+                        SparePartsRequisitionRecord record = new SparePartsRequisitionRecord();
+                        record.setSourceType(1); // 1 淇濆吇
+                        record.setSourceId(deviceMaintenance.getId());
+                        record.setDeviceLedgerId(oldDeviceMaintenance.getDeviceLedgerId());
+                        record.setSparePartsId(sparePartUse.getId());
+                        record.setQuantity(sparePartUse.getQuantity());
+                        sparePartsRequisitionRecordService.save(record);
+                    } else {
+                        return AjaxResult.error("澶囦欢 " + spareParts.getName() + " 鏁伴噺涓嶈冻");
+                    }
+                }
+            }
+            // 鏇存柊澶囦欢IDs瀛楁
+            if (!sparePartIds.isEmpty()) {
+                deviceMaintenance.setSparePartsIds(StringUtils.join(sparePartIds, ","));
+            }
+        }
+
         if (this.updateById(deviceMaintenance)) {
             return AjaxResult.success();
         }
diff --git a/src/main/java/com/ruoyi/device/service/impl/DeviceRepairServiceImpl.java b/src/main/java/com/ruoyi/device/service/impl/DeviceRepairServiceImpl.java
index feab01b..9d4c6b3 100644
--- a/src/main/java/com/ruoyi/device/service/impl/DeviceRepairServiceImpl.java
+++ b/src/main/java/com/ruoyi/device/service/impl/DeviceRepairServiceImpl.java
@@ -3,6 +3,7 @@
 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.github.xiaoymin.knife4j.core.util.CollectionUtils;
 import com.ruoyi.common.utils.bean.BeanUtils;
 import com.ruoyi.common.utils.poi.ExcelUtil;
 import com.ruoyi.device.dto.DeviceDefectRecordDto;
@@ -15,12 +16,19 @@
 import com.ruoyi.device.service.IDeviceLedgerService;
 import com.ruoyi.device.service.IDeviceRepairService;
 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 lombok.AllArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
+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.Arrays;
 import java.util.List;
@@ -36,6 +44,11 @@
     private DeviceRepairMapper deviceRepairMapper;
     @Autowired
     private IDeviceLedgerService deviceLedgerService;
+    @Autowired
+    private SparePartsMapper sparePartsMapper;
+    @Autowired
+    private SparePartsRequisitionRecordService sparePartsRequisitionRecordService;
+
     @Override
     public IPage<DeviceRepairDto> queryPage(Page page, DeviceRepairDto deviceRepairDto) {
 
@@ -55,7 +68,42 @@
     }
 
     @Override
+    @Transactional(rollbackFor = Exception.class)
     public AjaxResult updateDeviceRepair(DeviceRepair deviceRepair) {
+        DeviceRepair oldDeviceRepair = this.getById(deviceRepair.getId());
+        // 澶勭悊澶囦欢浣跨敤鎯呭喌
+        if (CollectionUtils.isNotEmpty(deviceRepair.getSparePartsUseList())) {
+            List<Long> sparePartIds = new ArrayList<>();
+            for (DeviceRepair.SparePartUse sparePartUse : deviceRepair.getSparePartsUseList()) {
+                // 鑾峰彇澶囦欢淇℃伅
+                SpareParts spareParts = sparePartsMapper.selectById(sparePartUse.getId());
+                if (spareParts != null) {
+                    // 妫�鏌ユ暟閲忔槸鍚﹁冻澶�
+                    if (spareParts.getQuantity().compareTo(new BigDecimal(sparePartUse.getQuantity())) >= 0) {
+                        // 鏇存柊鏁伴噺
+                        spareParts.setQuantity(spareParts.getQuantity().subtract(new BigDecimal(sparePartUse.getQuantity())));
+                        sparePartsMapper.updateById(spareParts);
+                        sparePartIds.add(sparePartUse.getId());
+
+                        // 鍒涘缓澶囦欢棰嗙敤璁板綍
+                        SparePartsRequisitionRecord record = new SparePartsRequisitionRecord();
+                        record.setSourceType(0); // 0 缁翠慨
+                        record.setSourceId(deviceRepair.getId());
+                        record.setDeviceLedgerId(oldDeviceRepair.getDeviceLedgerId());
+                        record.setSparePartsId(sparePartUse.getId());
+                        record.setQuantity(sparePartUse.getQuantity());
+                        sparePartsRequisitionRecordService.save(record);
+                    } else {
+                        return AjaxResult.error("澶囦欢 " + spareParts.getName() + " 鏁伴噺涓嶈冻");
+                    }
+                }
+            }
+            // 鏇存柊澶囦欢IDs瀛楁
+            if (!sparePartIds.isEmpty()) {
+                deviceRepair.setSparePartsIds(StringUtils.join(sparePartIds, ","));
+            }
+        }
+
         if (this.updateById(deviceRepair)) {
             Long id = deviceRepair.getId();
             //
diff --git a/src/main/java/com/ruoyi/measuringinstrumentledger/controller/SparePartsRequisitionRecordController.java b/src/main/java/com/ruoyi/measuringinstrumentledger/controller/SparePartsRequisitionRecordController.java
new file mode 100644
index 0000000..b0dac53
--- /dev/null
+++ b/src/main/java/com/ruoyi/measuringinstrumentledger/controller/SparePartsRequisitionRecordController.java
@@ -0,0 +1,36 @@
+package com.ruoyi.measuringinstrumentledger.controller;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ruoyi.framework.web.domain.AjaxResult;
+import com.ruoyi.measuringinstrumentledger.dto.SparePartsRequisitionRecordDto;
+import com.ruoyi.measuringinstrumentledger.service.SparePartsRequisitionRecordService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * <p>
+ *  鍓嶇鎺у埗鍣�
+ * </p>
+ *
+ * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃
+ * @since 2026-04-02 03:59:56
+ */
+@RestController
+@RequestMapping("/sparePartsRequisitionRecord")
+@Api(tags = "澶囦欢棰嗙敤璁板綍鎺ュ彛")
+public class SparePartsRequisitionRecordController {
+    @Autowired
+    private SparePartsRequisitionRecordService sparePartsRequisitionRecordService;
+
+    @GetMapping("/listPage")
+    @ApiOperation("澶囦欢鍒嗙被-鍒嗛〉鏌ヨ")
+    public AjaxResult listPage(Page page, SparePartsRequisitionRecordDto sparePartsRequisitionRecordDto){
+        IPage<SparePartsRequisitionRecordDto> listPage = sparePartsRequisitionRecordService.listPage(page, sparePartsRequisitionRecordDto);
+        return AjaxResult.success(listPage);
+    }
+}
diff --git a/src/main/java/com/ruoyi/measuringinstrumentledger/dto/SparePartsRequisitionRecordDto.java b/src/main/java/com/ruoyi/measuringinstrumentledger/dto/SparePartsRequisitionRecordDto.java
new file mode 100644
index 0000000..59b9517
--- /dev/null
+++ b/src/main/java/com/ruoyi/measuringinstrumentledger/dto/SparePartsRequisitionRecordDto.java
@@ -0,0 +1,15 @@
+package com.ruoyi.measuringinstrumentledger.dto;
+
+import com.ruoyi.measuringinstrumentledger.pojo.SparePartsRequisitionRecord;
+import lombok.Data;
+
+@Data
+public class SparePartsRequisitionRecordDto extends SparePartsRequisitionRecord {
+    private String sparePartsName;
+
+    private String deviceName;
+
+    private String sourceText;
+
+    private String operator;
+}
diff --git a/src/main/java/com/ruoyi/measuringinstrumentledger/mapper/SparePartsRequisitionRecordMapper.java b/src/main/java/com/ruoyi/measuringinstrumentledger/mapper/SparePartsRequisitionRecordMapper.java
new file mode 100644
index 0000000..3b67162
--- /dev/null
+++ b/src/main/java/com/ruoyi/measuringinstrumentledger/mapper/SparePartsRequisitionRecordMapper.java
@@ -0,0 +1,23 @@
+package com.ruoyi.measuringinstrumentledger.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ruoyi.measuringinstrumentledger.dto.SparePartsRequisitionRecordDto;
+import com.ruoyi.measuringinstrumentledger.pojo.SparePartsRequisitionRecord;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+
+/**
+ * <p>
+ *  Mapper 鎺ュ彛
+ * </p>
+ *
+ * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃
+ * @since 2026-04-02 03:59:56
+ */
+@Mapper
+public interface SparePartsRequisitionRecordMapper extends BaseMapper<SparePartsRequisitionRecord> {
+    IPage<SparePartsRequisitionRecordDto> listPage(Page page, @Param("params") SparePartsRequisitionRecordDto sparePartsRequisitionRecordDto);
+
+}
diff --git a/src/main/java/com/ruoyi/measuringinstrumentledger/pojo/SparePartsRequisitionRecord.java b/src/main/java/com/ruoyi/measuringinstrumentledger/pojo/SparePartsRequisitionRecord.java
new file mode 100644
index 0000000..ae0b114
--- /dev/null
+++ b/src/main/java/com/ruoyi/measuringinstrumentledger/pojo/SparePartsRequisitionRecord.java
@@ -0,0 +1,67 @@
+package com.ruoyi.measuringinstrumentledger.pojo;
+
+import com.baomidou.mybatisplus.annotation.*;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.io.Serializable;
+import java.time.LocalDateTime;
+
+/**
+ * <p>
+ * 
+ * </p>
+ *
+ * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃
+ * @since 2026-04-02 03:59:56
+ */
+@Getter
+@Setter
+@TableName("spare_parts_requisition_record")
+@ApiModel(value = "SparePartsRequisitionRecord瀵硅薄", description = "")
+public class SparePartsRequisitionRecord implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @TableId(value = "id", type = IdType.AUTO)
+    private Long id;
+
+    @ApiModelProperty("鏉ユ簮绫诲瀷(0 缁翠慨 1 淇濆吇)")
+    private Integer sourceType;
+
+    @ApiModelProperty("鏉ユ簮id")
+    private Long sourceId;
+
+    @ApiModelProperty("璁惧id")
+    private Long deviceLedgerId;
+
+    @ApiModelProperty("澶囦欢id")
+    private Long sparePartsId;
+
+    @ApiModelProperty("鏁伴噺")
+    private Integer quantity;
+
+    @ApiModelProperty("鍒涘缓浜�")
+    @TableField(fill = FieldFill.INSERT)
+    private Integer createUser;
+
+    @ApiModelProperty("绉熸埛id")
+    @TableField(fill = FieldFill.INSERT)
+    private Long tenantId;
+
+    @ApiModelProperty("褰曞叆鏃堕棿")
+    @TableField(fill = FieldFill.INSERT)
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private LocalDateTime createTime;
+
+    @ApiModelProperty("鏇存柊鏃堕棿")
+    @TableField(fill = FieldFill.INSERT_UPDATE)
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private LocalDateTime updateTime;
+}
diff --git a/src/main/java/com/ruoyi/measuringinstrumentledger/service/SparePartsRequisitionRecordService.java b/src/main/java/com/ruoyi/measuringinstrumentledger/service/SparePartsRequisitionRecordService.java
new file mode 100644
index 0000000..2306a3a
--- /dev/null
+++ b/src/main/java/com/ruoyi/measuringinstrumentledger/service/SparePartsRequisitionRecordService.java
@@ -0,0 +1,19 @@
+package com.ruoyi.measuringinstrumentledger.service;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.ruoyi.measuringinstrumentledger.dto.SparePartsRequisitionRecordDto;
+import com.ruoyi.measuringinstrumentledger.pojo.SparePartsRequisitionRecord;
+
+/**
+ * <p>
+ *  鏈嶅姟绫�
+ * </p>
+ *
+ * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃
+ * @since 2026-04-02 03:59:56
+ */
+public interface SparePartsRequisitionRecordService extends IService<SparePartsRequisitionRecord> {
+    IPage<SparePartsRequisitionRecordDto> listPage(Page page, SparePartsRequisitionRecordDto sparePartsRequisitionRecordDto);
+}
diff --git a/src/main/java/com/ruoyi/measuringinstrumentledger/service/impl/SparePartsRequisitionRecordServiceImpl.java b/src/main/java/com/ruoyi/measuringinstrumentledger/service/impl/SparePartsRequisitionRecordServiceImpl.java
new file mode 100644
index 0000000..46133c5
--- /dev/null
+++ b/src/main/java/com/ruoyi/measuringinstrumentledger/service/impl/SparePartsRequisitionRecordServiceImpl.java
@@ -0,0 +1,38 @@
+package com.ruoyi.measuringinstrumentledger.service.impl;
+
+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.common.enums.SparePartsRequisitionRecordSourceTypeEnum;
+import com.ruoyi.measuringinstrumentledger.dto.SparePartsRequisitionRecordDto;
+import com.ruoyi.measuringinstrumentledger.mapper.SparePartsRequisitionRecordMapper;
+import com.ruoyi.measuringinstrumentledger.pojo.SparePartsRequisitionRecord;
+import com.ruoyi.measuringinstrumentledger.service.SparePartsRequisitionRecordService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ *  鏈嶅姟瀹炵幇绫�
+ * </p>
+ *
+ * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃
+ * @since 2026-04-02 03:59:56
+ */
+@Service
+public class SparePartsRequisitionRecordServiceImpl extends ServiceImpl<SparePartsRequisitionRecordMapper, SparePartsRequisitionRecord> implements SparePartsRequisitionRecordService {
+    @Autowired
+    private SparePartsRequisitionRecordMapper sparePartsRequisitionRecordMapper;
+
+    @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());
+            }
+        });
+        return result;
+    }
+}
\ No newline at end of file
diff --git a/src/main/resources/mapper/measuringinstrumentledger/SparePartsRequisitionRecordMapper.xml b/src/main/resources/mapper/measuringinstrumentledger/SparePartsRequisitionRecordMapper.xml
new file mode 100644
index 0000000..9851e59
--- /dev/null
+++ b/src/main/resources/mapper/measuringinstrumentledger/SparePartsRequisitionRecordMapper.xml
@@ -0,0 +1,36 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.ruoyi.measuringinstrumentledger.mapper.SparePartsRequisitionRecordMapper">
+
+    <!-- 閫氱敤鏌ヨ鏄犲皠缁撴灉 -->
+    <resultMap id="BaseResultMap" type="com.ruoyi.measuringinstrumentledger.pojo.SparePartsRequisitionRecord">
+        <id column="id" property="id" />
+        <result column="source_type" property="sourceType" />
+        <result column="source_id" property="sourceId" />
+        <result column="device_ledger_id" property="deviceLedgerId" />
+        <result column="spare_parts_id" property="sparePartsId" />
+        <result column="quantity" property="quantity" />
+        <result column="create_user" property="createUser" />
+        <result column="tenant_id" property="tenantId" />
+        <result column="create_time" property="createTime" />
+        <result column="update_time" property="updateTime" />
+    </resultMap>
+
+
+    <select id="listPage" resultType="com.ruoyi.measuringinstrumentledger.dto.SparePartsRequisitionRecordDto">
+        select sprr.*,sp.name as sparePartsName, dl.device_name as deviceName, su.nick_name as operator
+        from spare_parts_requisition_record sprr
+        left join spare_parts sp on sp.id = sprr.spare_parts_id
+        left join device_ledger dl on dl.id = sprr.device_ledger_id
+        left join sys_user su on su.user_id = sprr.create_user
+        <where>
+            <if test="params.sparePartsName != null and params.sparePartsName != ''">
+                and sp.name like concat('%',#{params.sparePartsName},'%')
+            </if>
+
+            <if test="params.sourceType != null and params.sourceType != ''">
+                and sprr.source_type = #{params.sourceType}
+            </if>
+        </where>
+    </select>
+</mapper>

--
Gitblit v1.9.3