From d40d81aa421c7cdb959556fedffef71fc62cde80 Mon Sep 17 00:00:00 2001
From: zhuguifei <zhuguifei@zhuguifeideiMac.local>
Date: 星期三, 16 四月 2025 10:07:22 +0800
Subject: [PATCH] 完成备件模块

---
 eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/controller/EimsSpareController.java           |    8 
 eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/domain/bo/EimsSpareBo.java                    |    7 
 eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/domain/bo/EimsSpareInoutdtBo.java             |   77 +++++
 eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/service/impl/EimsSpareInoutServiceImpl.java   |  105 +++++++
 eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/service/impl/EimsSpareServiceImpl.java        |   21 +
 eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/domain/bo/EimsSpareInoutBo.java               |    7 
 eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/domain/vo/EimsSpareInoutdtVo.java             |   97 ++++++
 eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/mapper/EimsSpareMapper.java                   |    9 
 eims/ruoyi-modules/lb-eims/src/main/resources/mapper/eims/EimsSpareInoutdtMapper.xml                    |   15 +
 eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/domain/EimsSpareInoutdt.java                  |   72 +++++
 eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/domain/vo/EimsSpareVo.java                    |    5 
 eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/service/IEimsSpareInoutdtService.java         |   68 ++++
 eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/service/impl/EimsSpareInoutdtServiceImpl.java |  138 +++++++++
 eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/mapper/EimsSpareInoutdtMapper.java            |   24 +
 eims/ruoyi-modules/lb-eims/src/main/resources/mapper/eims/EimsSpareMapper.xml                           |   10 
 eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/domain/vo/EimsSpareInoutVo.java               |    6 
 eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/controller/EimsSpareInoutdtController.java    |  105 +++++++
 eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/controller/EimsSpareInoutController.java      |    1 
 eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/service/IEimsSpareInoutService.java           |    4 
 eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/mapper/EimsSpareInoutMapper.java              |    8 
 eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/service/IEimsSpareService.java                |   12 
 21 files changed, 789 insertions(+), 10 deletions(-)

diff --git a/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/controller/EimsSpareController.java b/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/controller/EimsSpareController.java
index e030bc3..24401fd 100644
--- a/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/controller/EimsSpareController.java
+++ b/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/controller/EimsSpareController.java
@@ -6,6 +6,8 @@
 import jakarta.servlet.http.HttpServletResponse;
 import jakarta.validation.constraints.*;
 import cn.dev33.satoken.annotation.SaCheckPermission;
+import org.dromara.eims.domain.vo.EimsSpareInoutVo;
+import org.dromara.eims.domain.vo.EimsSpareInoutdtVo;
 import org.springframework.web.bind.annotation.*;
 import org.springframework.validation.annotation.Validated;
 import org.dromara.common.idempotent.annotation.RepeatSubmit;
@@ -45,6 +47,12 @@
         return eimsSpareService.queryPageList(bo, pageQuery);
     }
 
+    @SaCheckPermission("eims:spare:list")
+    @GetMapping("/listInout")
+    public TableDataInfo<EimsSpareInoutdtVo> listInout(EimsSpareBo bo, PageQuery pageQuery) {
+        return eimsSpareService.querySpareInoutList(bo, pageQuery);
+    }
+
     /**
      * 瀵煎嚭澶囦欢鍙拌处鍒楄〃
      */
diff --git a/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/controller/EimsSpareInoutController.java b/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/controller/EimsSpareInoutController.java
index f0f8c34..aebd6ff 100644
--- a/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/controller/EimsSpareInoutController.java
+++ b/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/controller/EimsSpareInoutController.java
@@ -45,6 +45,7 @@
         return eimsSpareInoutService.queryPageList(bo, pageQuery);
     }
 
+
     /**
      * 瀵煎嚭澶囦欢鍑哄叆搴撳垪琛�
      */
diff --git a/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/controller/EimsSpareInoutdtController.java b/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/controller/EimsSpareInoutdtController.java
new file mode 100644
index 0000000..8bf9fb0
--- /dev/null
+++ b/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/controller/EimsSpareInoutdtController.java
@@ -0,0 +1,105 @@
+package org.dromara.eims.controller;
+
+import java.util.List;
+
+import lombok.RequiredArgsConstructor;
+import jakarta.servlet.http.HttpServletResponse;
+import jakarta.validation.constraints.*;
+import cn.dev33.satoken.annotation.SaCheckPermission;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.validation.annotation.Validated;
+import org.dromara.common.idempotent.annotation.RepeatSubmit;
+import org.dromara.common.log.annotation.Log;
+import org.dromara.common.web.core.BaseController;
+import org.dromara.common.mybatis.core.page.PageQuery;
+import org.dromara.common.core.domain.R;
+import org.dromara.common.core.validate.AddGroup;
+import org.dromara.common.core.validate.EditGroup;
+import org.dromara.common.log.enums.BusinessType;
+import org.dromara.common.excel.utils.ExcelUtil;
+import org.dromara.eims.domain.vo.EimsSpareInoutdtVo;
+import org.dromara.eims.domain.bo.EimsSpareInoutdtBo;
+import org.dromara.eims.service.IEimsSpareInoutdtService;
+import org.dromara.common.mybatis.core.page.TableDataInfo;
+
+/**
+ * 澶囦欢鍑哄叆搴撴槑缁�
+ *
+ * @author zhuguifei
+ * @date 2025-04-11
+ */
+@Validated
+@RequiredArgsConstructor
+@RestController
+@RequestMapping("/eims/spareInoutdt")
+public class EimsSpareInoutdtController extends BaseController {
+
+    private final IEimsSpareInoutdtService eimsSpareInoutdtService;
+
+    /**
+     * 鏌ヨ澶囦欢鍑哄叆搴撴槑缁嗗垪琛�
+     */
+    @SaCheckPermission("eims:spareInoutdt:list")
+    @GetMapping("/list")
+    public TableDataInfo<EimsSpareInoutdtVo> list(EimsSpareInoutdtBo bo, PageQuery pageQuery) {
+        return eimsSpareInoutdtService.queryPageList(bo, pageQuery);
+    }
+
+    /**
+     * 瀵煎嚭澶囦欢鍑哄叆搴撴槑缁嗗垪琛�
+     */
+    @SaCheckPermission("eims:spareInoutdt:export")
+    @Log(title = "澶囦欢鍑哄叆搴撴槑缁�", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    public void export(EimsSpareInoutdtBo bo, HttpServletResponse response) {
+        List<EimsSpareInoutdtVo> list = eimsSpareInoutdtService.queryList(bo);
+        ExcelUtil.exportExcel(list, "澶囦欢鍑哄叆搴撴槑缁�", EimsSpareInoutdtVo.class, response);
+    }
+
+    /**
+     * 鑾峰彇澶囦欢鍑哄叆搴撴槑缁嗚缁嗕俊鎭�
+     *
+     * @param id 涓婚敭
+     */
+    @SaCheckPermission("eims:spareInoutdt:query")
+    @GetMapping("/{id}")
+    public R<EimsSpareInoutdtVo> getInfo(@NotNull(message = "涓婚敭涓嶈兘涓虹┖")
+                                     @PathVariable Long id) {
+        return R.ok(eimsSpareInoutdtService.queryById(id));
+    }
+
+    /**
+     * 鏂板澶囦欢鍑哄叆搴撴槑缁�
+     */
+    @SaCheckPermission("eims:spareInoutdt:add")
+    @Log(title = "澶囦欢鍑哄叆搴撴槑缁�", businessType = BusinessType.INSERT)
+    @RepeatSubmit()
+    @PostMapping()
+    public R<Void> add(@Validated(AddGroup.class) @RequestBody EimsSpareInoutdtBo bo) {
+        return toAjax(eimsSpareInoutdtService.insertByBo(bo));
+    }
+
+    /**
+     * 淇敼澶囦欢鍑哄叆搴撴槑缁�
+     */
+    @SaCheckPermission("eims:spareInoutdt:edit")
+    @Log(title = "澶囦欢鍑哄叆搴撴槑缁�", businessType = BusinessType.UPDATE)
+    @RepeatSubmit()
+    @PutMapping()
+    public R<Void> edit(@Validated(EditGroup.class) @RequestBody EimsSpareInoutdtBo bo) {
+        return toAjax(eimsSpareInoutdtService.updateByBo(bo));
+    }
+
+    /**
+     * 鍒犻櫎澶囦欢鍑哄叆搴撴槑缁�
+     *
+     * @param ids 涓婚敭涓�
+     */
+    @SaCheckPermission("eims:spareInoutdt:remove")
+    @Log(title = "澶囦欢鍑哄叆搴撴槑缁�", businessType = BusinessType.DELETE)
+    @DeleteMapping("/{ids}")
+    public R<Void> remove(@NotEmpty(message = "涓婚敭涓嶈兘涓虹┖")
+                          @PathVariable Long[] ids) {
+        return toAjax(eimsSpareInoutdtService.deleteWithValidByIds(List.of(ids), true));
+    }
+}
diff --git a/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/domain/EimsSpareInoutdt.java b/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/domain/EimsSpareInoutdt.java
new file mode 100644
index 0000000..aa09db2
--- /dev/null
+++ b/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/domain/EimsSpareInoutdt.java
@@ -0,0 +1,72 @@
+package org.dromara.eims.domain;
+
+import org.dromara.common.mybatis.core.domain.BaseEntity;
+import com.baomidou.mybatisplus.annotation.*;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.io.Serial;
+import java.math.BigDecimal;
+
+/**
+ * 澶囦欢鍑哄叆搴撴槑缁嗗璞� eims_spare_inoutdt
+ *
+ * @author zhuguifei
+ * @date 2025-04-11
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@TableName("eims_spare_inoutdt")
+public class EimsSpareInoutdt extends BaseEntity {
+
+    @Serial
+    private static final long serialVersionUID = 1L;
+
+    /**
+     *
+     */
+    @TableId(value = "id")
+    private Long id;
+
+    /**
+     * 鍑哄簱鍗曟垨鍏ュ簱鍗昳d
+     */
+    private Long inoutId;
+
+    /**
+     * 澶囦欢id
+     */
+    private Long spareId;
+
+    /**
+     * 涔嬪墠搴撳瓨
+     */
+    private Long beforeStock;
+
+    /**
+     * 瀹為檯搴撳瓨
+     */
+    private Long actualStock;
+
+    /**
+     * 鏁伴噺
+     */
+    private Long quantity;
+
+    /**
+     * 鍗曚环
+     */
+    private BigDecimal unitPrice;
+
+    /**
+     * 閲戦
+     */
+    private BigDecimal amount;
+
+    /**
+     * 澶囨敞
+     */
+    private String remark;
+
+
+}
diff --git a/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/domain/bo/EimsSpareBo.java b/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/domain/bo/EimsSpareBo.java
index daed6f9..f46d491 100644
--- a/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/domain/bo/EimsSpareBo.java
+++ b/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/domain/bo/EimsSpareBo.java
@@ -114,4 +114,11 @@
     private String remark;
 
 
+
+    /**
+     * 鍑哄簱鍏ュ簱鏁伴噺
+     */
+    private Long quantity;
+
+
 }
diff --git a/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/domain/bo/EimsSpareInoutBo.java b/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/domain/bo/EimsSpareInoutBo.java
index 4af19e2..0ab9a03 100644
--- a/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/domain/bo/EimsSpareInoutBo.java
+++ b/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/domain/bo/EimsSpareInoutBo.java
@@ -9,7 +9,10 @@
 import lombok.EqualsAndHashCode;
 import jakarta.validation.constraints.*;
 import java.util.Date;
+import java.util.List;
+
 import com.fasterxml.jackson.annotation.JsonFormat;
+import org.dromara.eims.domain.vo.EimsSpareVo;
 
 /**
  * 澶囦欢鍑哄叆搴撲笟鍔″璞� eims_spare_inout
@@ -69,5 +72,9 @@
      */
     private String remark;
 
+    //鍑哄叆搴撻�夋嫨鐨勫浠舵槑缁�
+    private List<EimsSpareBo> spareList;
+
+
 
 }
diff --git a/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/domain/bo/EimsSpareInoutdtBo.java b/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/domain/bo/EimsSpareInoutdtBo.java
new file mode 100644
index 0000000..5f62b5a
--- /dev/null
+++ b/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/domain/bo/EimsSpareInoutdtBo.java
@@ -0,0 +1,77 @@
+package org.dromara.eims.domain.bo;
+
+import org.dromara.eims.domain.EimsSpareInoutdt;
+import org.dromara.common.mybatis.core.domain.BaseEntity;
+import org.dromara.common.core.validate.AddGroup;
+import org.dromara.common.core.validate.EditGroup;
+import io.github.linpeilie.annotations.AutoMapper;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import jakarta.validation.constraints.*;
+
+/**
+ * 澶囦欢鍑哄叆搴撴槑缁嗕笟鍔″璞� eims_spare_inoutdt
+ *
+ * @author zhuguifei
+ * @date 2025-04-11
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@AutoMapper(target = EimsSpareInoutdt.class, reverseConvertGenerate = false)
+public class EimsSpareInoutdtBo extends BaseEntity {
+
+    /**
+     * 
+     */
+    @NotNull(message = "涓嶈兘涓虹┖", groups = { EditGroup.class })
+    private Long id;
+
+    /**
+     * 鍑哄簱鍗曟垨鍏ュ簱鍗昳d
+     */
+    @NotNull(message = "鍑哄簱鍗曟垨鍏ュ簱鍗昳d涓嶈兘涓虹┖", groups = { AddGroup.class, EditGroup.class })
+    private Long inoutId;
+
+    /**
+     * 澶囦欢id
+     */
+    @NotNull(message = "澶囦欢id涓嶈兘涓虹┖", groups = { AddGroup.class, EditGroup.class })
+    private Long spareId;
+
+    /**
+     * 涔嬪墠搴撳瓨
+     */
+    @NotNull(message = "涔嬪墠搴撳瓨涓嶈兘涓虹┖", groups = { AddGroup.class, EditGroup.class })
+    private Long beforeStock;
+
+    /**
+     * 瀹為檯搴撳瓨
+     */
+    @NotNull(message = "瀹為檯搴撳瓨涓嶈兘涓虹┖", groups = { AddGroup.class, EditGroup.class })
+    private Long actualStock;
+
+    /**
+     * 鏁伴噺
+     */
+    @NotNull(message = "鏁伴噺涓嶈兘涓虹┖", groups = { AddGroup.class, EditGroup.class })
+    private Long quantity;
+
+    /**
+     * 鍗曚环
+     */
+    @NotNull(message = "鍗曚环涓嶈兘涓虹┖", groups = { AddGroup.class, EditGroup.class })
+    private Long unitPrice;
+
+    /**
+     * 閲戦
+     */
+    @NotNull(message = "閲戦涓嶈兘涓虹┖", groups = { AddGroup.class, EditGroup.class })
+    private Long amount;
+
+    /**
+     * 澶囨敞
+     */
+    private String remark;
+
+
+}
diff --git a/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/domain/vo/EimsSpareInoutVo.java b/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/domain/vo/EimsSpareInoutVo.java
index 12c8120..226eb4a 100644
--- a/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/domain/vo/EimsSpareInoutVo.java
+++ b/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/domain/vo/EimsSpareInoutVo.java
@@ -11,11 +11,12 @@
 import org.dromara.common.excel.convert.ExcelDictConvert;
 import io.github.linpeilie.annotations.AutoMapper;
 import lombok.Data;
+import org.dromara.eims.domain.bo.EimsSpareBo;
 
 import java.io.Serial;
 import java.io.Serializable;
 import java.util.Date;
-
+import java.util.List;
 
 
 /**
@@ -87,5 +88,6 @@
     @ExcelProperty(value = "澶囨敞")
     private String remark;
 
-
+    //鍑哄叆搴撻�夋嫨鐨勫浠舵槑缁�
+    private List<EimsSpareVo> spareList;
 }
diff --git a/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/domain/vo/EimsSpareInoutdtVo.java b/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/domain/vo/EimsSpareInoutdtVo.java
new file mode 100644
index 0000000..a4203cf
--- /dev/null
+++ b/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/domain/vo/EimsSpareInoutdtVo.java
@@ -0,0 +1,97 @@
+package org.dromara.eims.domain.vo;
+
+import org.dromara.eims.domain.EimsSpareInoutdt;
+import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
+import com.alibaba.excel.annotation.ExcelProperty;
+import org.dromara.common.excel.annotation.ExcelDictFormat;
+import org.dromara.common.excel.convert.ExcelDictConvert;
+import io.github.linpeilie.annotations.AutoMapper;
+import lombok.Data;
+
+import java.io.Serial;
+import java.io.Serializable;
+import java.math.BigDecimal;
+import java.util.Date;
+
+
+
+/**
+ * 澶囦欢鍑哄叆搴撴槑缁嗚鍥惧璞� eims_spare_inoutdt
+ *
+ * @author zhuguifei
+ * @date 2025-04-11
+ */
+@Data
+@ExcelIgnoreUnannotated
+@AutoMapper(target = EimsSpareInoutdt.class)
+public class EimsSpareInoutdtVo implements Serializable {
+
+    @Serial
+    private static final long serialVersionUID = 1L;
+
+    /**
+     *
+     */
+    @ExcelProperty(value = "")
+    private Long id;
+
+    /**
+     * 鍑哄簱鍗曟垨鍏ュ簱鍗昳d
+     */
+    @ExcelProperty(value = "鍑哄簱鍗曟垨鍏ュ簱鍗昳d")
+    private Long inoutId;
+
+    /**
+     * 澶囦欢id
+     */
+    @ExcelProperty(value = "澶囦欢id")
+    private Long spareId;
+
+    /**
+     * 涔嬪墠搴撳瓨
+     */
+    @ExcelProperty(value = "涔嬪墠搴撳瓨")
+    private Long beforeStock;
+
+    /**
+     * 瀹為檯搴撳瓨
+     */
+    @ExcelProperty(value = "瀹為檯搴撳瓨")
+    private Long actualStock;
+
+    /**
+     * 鏁伴噺
+     */
+    @ExcelProperty(value = "鏁伴噺")
+    private Long quantity;
+
+    /**
+     * 鍗曚环
+     */
+    @ExcelProperty(value = "鍗曚环")
+    private BigDecimal unitPrice;
+
+    /**
+     * 閲戦
+     */
+    @ExcelProperty(value = "閲戦")
+    private BigDecimal amount;
+
+    /**
+     * 澶囨敞
+     */
+    @ExcelProperty(value = "澶囨敞")
+    private String remark;
+
+    //澶囦欢
+    private String spareName;
+    private String spareCode;
+    private String modelNo;
+    //鍑哄叆搴撳崟
+    private String orderCode;
+    private Date orderTime;
+    private String type;
+    private String unit;
+
+
+}
diff --git a/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/domain/vo/EimsSpareVo.java b/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/domain/vo/EimsSpareVo.java
index 2a47785..81f9561 100644
--- a/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/domain/vo/EimsSpareVo.java
+++ b/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/domain/vo/EimsSpareVo.java
@@ -142,6 +142,9 @@
      */
     @ExcelProperty(value = "澶囨敞")
     private String remark;
-
+    /**
+     * 鍑哄簱鍏ュ簱鏁伴噺
+     */
+    private Long quantity;
 
 }
diff --git a/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/mapper/EimsSpareInoutMapper.java b/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/mapper/EimsSpareInoutMapper.java
index bffe366..b032996 100644
--- a/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/mapper/EimsSpareInoutMapper.java
+++ b/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/mapper/EimsSpareInoutMapper.java
@@ -1,8 +1,15 @@
 package org.dromara.eims.mapper;
 
+import com.baomidou.mybatisplus.core.conditions.Wrapper;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Constants;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import org.apache.ibatis.annotations.Param;
 import org.dromara.eims.domain.EimsSpareInout;
+import org.dromara.eims.domain.EimsSpareInoutdt;
 import org.dromara.eims.domain.vo.EimsSpareInoutVo;
 import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
+import org.dromara.eims.domain.vo.EimsSpareInoutdtVo;
 
 /**
  * 澶囦欢鍑哄叆搴揗apper鎺ュ彛
@@ -12,4 +19,5 @@
  */
 public interface EimsSpareInoutMapper extends BaseMapperPlus<EimsSpareInout, EimsSpareInoutVo> {
 
+
 }
diff --git a/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/mapper/EimsSpareInoutdtMapper.java b/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/mapper/EimsSpareInoutdtMapper.java
new file mode 100644
index 0000000..16b0e7e
--- /dev/null
+++ b/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/mapper/EimsSpareInoutdtMapper.java
@@ -0,0 +1,24 @@
+package org.dromara.eims.mapper;
+
+import com.baomidou.mybatisplus.core.conditions.Wrapper;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Constants;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import org.apache.ibatis.annotations.Param;
+import org.dromara.eims.domain.EimsMaintSt;
+import org.dromara.eims.domain.EimsSpareInoutdt;
+import org.dromara.eims.domain.vo.EimsMaintStVo;
+import org.dromara.eims.domain.vo.EimsSpareInoutdtVo;
+import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
+
+/**
+ * 澶囦欢鍑哄叆搴撴槑缁哅apper鎺ュ彛
+ *
+ * @author zhuguifei
+ * @date 2025-04-11
+ */
+public interface EimsSpareInoutdtMapper extends BaseMapperPlus<EimsSpareInoutdt, EimsSpareInoutdtVo> {
+
+    Page<EimsSpareInoutdtVo> selectSpareInoutdtList(@Param("page") Page<EimsSpareInoutdtVo> page, @Param(Constants.WRAPPER) Wrapper<EimsSpareInoutdt> queryWrapper);
+}
+
diff --git a/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/mapper/EimsSpareMapper.java b/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/mapper/EimsSpareMapper.java
index 23538f2..fe03121 100644
--- a/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/mapper/EimsSpareMapper.java
+++ b/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/mapper/EimsSpareMapper.java
@@ -1,6 +1,13 @@
 package org.dromara.eims.mapper;
 
+import com.baomidou.mybatisplus.core.conditions.Wrapper;
+import com.baomidou.mybatisplus.core.toolkit.Constants;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import org.apache.ibatis.annotations.Param;
 import org.dromara.eims.domain.EimsSpare;
+import org.dromara.eims.domain.EimsSpareInout;
+import org.dromara.eims.domain.vo.EimsSpareInoutVo;
+import org.dromara.eims.domain.vo.EimsSpareInoutdtVo;
 import org.dromara.eims.domain.vo.EimsSpareVo;
 import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
 
@@ -11,5 +18,5 @@
  * @date 2025-03-20
  */
 public interface EimsSpareMapper extends BaseMapperPlus<EimsSpare, EimsSpareVo> {
-
+    Page<EimsSpareInoutdtVo> selectSpareInoutList(@Param("page") Page<EimsSpareInoutdtVo> page, @Param(Constants.WRAPPER) Wrapper<EimsSpare> queryWrapper);
 }
diff --git a/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/service/IEimsSpareInoutService.java b/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/service/IEimsSpareInoutService.java
index f16e11a..9dd4ab4 100644
--- a/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/service/IEimsSpareInoutService.java
+++ b/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/service/IEimsSpareInoutService.java
@@ -65,4 +65,8 @@
      * @return 鏄惁鍒犻櫎鎴愬姛
      */
     Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
+
+
+
+
 }
diff --git a/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/service/IEimsSpareInoutdtService.java b/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/service/IEimsSpareInoutdtService.java
new file mode 100644
index 0000000..6b9b36d
--- /dev/null
+++ b/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/service/IEimsSpareInoutdtService.java
@@ -0,0 +1,68 @@
+package org.dromara.eims.service;
+
+import org.dromara.eims.domain.vo.EimsSpareInoutdtVo;
+import org.dromara.eims.domain.bo.EimsSpareInoutdtBo;
+import org.dromara.common.mybatis.core.page.TableDataInfo;
+import org.dromara.common.mybatis.core.page.PageQuery;
+
+import java.util.Collection;
+import java.util.List;
+
+/**
+ * 澶囦欢鍑哄叆搴撴槑缁哠ervice鎺ュ彛
+ *
+ * @author zhuguifei
+ * @date 2025-04-11
+ */
+public interface IEimsSpareInoutdtService {
+
+    /**
+     * 鏌ヨ澶囦欢鍑哄叆搴撴槑缁�
+     *
+     * @param id 涓婚敭
+     * @return 澶囦欢鍑哄叆搴撴槑缁�
+     */
+    EimsSpareInoutdtVo queryById(Long id);
+
+    /**
+     * 鍒嗛〉鏌ヨ澶囦欢鍑哄叆搴撴槑缁嗗垪琛�
+     *
+     * @param bo        鏌ヨ鏉′欢
+     * @param pageQuery 鍒嗛〉鍙傛暟
+     * @return 澶囦欢鍑哄叆搴撴槑缁嗗垎椤靛垪琛�
+     */
+    TableDataInfo<EimsSpareInoutdtVo> queryPageList(EimsSpareInoutdtBo bo, PageQuery pageQuery);
+
+    /**
+     * 鏌ヨ绗﹀悎鏉′欢鐨勫浠跺嚭鍏ュ簱鏄庣粏鍒楄〃
+     *
+     * @param bo 鏌ヨ鏉′欢
+     * @return 澶囦欢鍑哄叆搴撴槑缁嗗垪琛�
+     */
+    List<EimsSpareInoutdtVo> queryList(EimsSpareInoutdtBo bo);
+
+    /**
+     * 鏂板澶囦欢鍑哄叆搴撴槑缁�
+     *
+     * @param bo 澶囦欢鍑哄叆搴撴槑缁�
+     * @return 鏄惁鏂板鎴愬姛
+     */
+    Boolean insertByBo(EimsSpareInoutdtBo bo);
+
+    /**
+     * 淇敼澶囦欢鍑哄叆搴撴槑缁�
+     *
+     * @param bo 澶囦欢鍑哄叆搴撴槑缁�
+     * @return 鏄惁淇敼鎴愬姛
+     */
+    Boolean updateByBo(EimsSpareInoutdtBo bo);
+
+    /**
+     * 鏍¢獙骞舵壒閲忓垹闄ゅ浠跺嚭鍏ュ簱鏄庣粏淇℃伅
+     *
+     * @param ids     寰呭垹闄ょ殑涓婚敭闆嗗悎
+     * @param isValid 鏄惁杩涜鏈夋晥鎬ф牎楠�
+     * @return 鏄惁鍒犻櫎鎴愬姛
+     */
+    Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
+}
diff --git a/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/service/IEimsSpareService.java b/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/service/IEimsSpareService.java
index 0569fbf..e61c8db 100644
--- a/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/service/IEimsSpareService.java
+++ b/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/service/IEimsSpareService.java
@@ -1,5 +1,8 @@
 package org.dromara.eims.service;
 
+import org.dromara.eims.domain.bo.EimsSpareInoutBo;
+import org.dromara.eims.domain.vo.EimsSpareInoutVo;
+import org.dromara.eims.domain.vo.EimsSpareInoutdtVo;
 import org.dromara.eims.domain.vo.EimsSpareVo;
 import org.dromara.eims.domain.bo.EimsSpareBo;
 import org.dromara.common.mybatis.core.page.TableDataInfo;
@@ -65,4 +68,13 @@
      * @return 鏄惁鍒犻櫎鎴愬姛
      */
     Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
+
+
+    /**
+     * 鏍规嵁澶囦欢鏌ヨ鍑哄叆搴撴槑缁�
+     * @param bo
+     * @param pageQuery
+     * @return
+     */
+    TableDataInfo<EimsSpareInoutdtVo> querySpareInoutList(EimsSpareBo bo, PageQuery pageQuery);
 }
diff --git a/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/service/impl/EimsSpareInoutServiceImpl.java b/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/service/impl/EimsSpareInoutServiceImpl.java
index d58fa5b..334eb44 100644
--- a/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/service/impl/EimsSpareInoutServiceImpl.java
+++ b/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/service/impl/EimsSpareInoutServiceImpl.java
@@ -1,5 +1,7 @@
 package org.dromara.eims.service.impl;
 
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import org.dromara.common.core.constant.DictConstants;
 import org.dromara.common.core.utils.MapstructUtils;
 import org.dromara.common.core.utils.StringUtils;
 import org.dromara.common.mybatis.core.page.TableDataInfo;
@@ -8,16 +10,24 @@
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import lombok.RequiredArgsConstructor;
+import org.dromara.eims.domain.EimsSpare;
+import org.dromara.eims.domain.EimsSpareInoutdt;
+import org.dromara.eims.domain.bo.EimsSpareBo;
+import org.dromara.eims.domain.vo.EimsSpareInoutdtVo;
+import org.dromara.eims.domain.vo.EimsSpareVo;
+import org.dromara.eims.mapper.EimsSpareInoutdtMapper;
+import org.dromara.eims.mapper.EimsSpareMapper;
 import org.springframework.stereotype.Service;
 import org.dromara.eims.domain.bo.EimsSpareInoutBo;
 import org.dromara.eims.domain.vo.EimsSpareInoutVo;
 import org.dromara.eims.domain.EimsSpareInout;
 import org.dromara.eims.mapper.EimsSpareInoutMapper;
 import org.dromara.eims.service.IEimsSpareInoutService;
+import org.springframework.transaction.annotation.Transactional;
 
-import java.util.List;
-import java.util.Map;
-import java.util.Collection;
+import java.math.BigDecimal;
+import java.util.*;
+import java.util.stream.Collectors;
 
 /**
  * 澶囦欢鍑哄叆搴揝ervice涓氬姟灞傚鐞�
@@ -30,6 +40,8 @@
 public class EimsSpareInoutServiceImpl implements IEimsSpareInoutService {
 
     private final EimsSpareInoutMapper baseMapper;
+    private final EimsSpareInoutdtMapper inoutdtMapper;
+    private final EimsSpareMapper spareMapper;
 
     /**
      * 鏌ヨ澶囦欢鍑哄叆搴�
@@ -39,7 +51,33 @@
      */
     @Override
     public EimsSpareInoutVo queryById(Long id){
-        return baseMapper.selectVoById(id);
+        EimsSpareInoutVo eimsSpareInoutVo = baseMapper.selectVoById(id);
+        QueryWrapper<EimsSpareInoutdt> queryWrapper = new QueryWrapper<>();
+        queryWrapper.lambda().eq(EimsSpareInoutdt::getInoutId, id);
+        List<EimsSpareInoutdtVo> dtVos = inoutdtMapper.selectVoList(queryWrapper);
+        if(!dtVos.isEmpty()){
+            Map<Long, Long> map = dtVos.stream()
+                .collect(Collectors.toMap(
+                    EimsSpareInoutdtVo::getSpareId,
+                    EimsSpareInoutdtVo::getQuantity
+                ));
+            List<Long> spareIdList = dtVos.stream()
+                .map(EimsSpareInoutdtVo::getSpareId) // 鑾峰彇 spareId 瀛楁
+                .toList();
+
+            List<EimsSpareVo> eimsSpareListVos = spareMapper.selectVoBatchIds(spareIdList);
+
+            for (EimsSpareVo spareVo : eimsSpareListVos) {
+                // 鍋囪 quantity 鐨勫�兼槸涓�涓浐瀹氬�硷紙渚嬪 10锛�
+                spareVo.setQuantity(map.get(spareVo.getId()));
+            }
+
+            eimsSpareInoutVo.setSpareList(eimsSpareListVos);
+        }
+
+
+
+        return eimsSpareInoutVo;
     }
 
     /**
@@ -55,6 +93,7 @@
         Page<EimsSpareInoutVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
         return TableDataInfo.build(result);
     }
+
 
     /**
      * 鏌ヨ绗﹀悎鏉′欢鐨勫浠跺嚭鍏ュ簱鍒楄〃
@@ -81,19 +120,73 @@
         return lqw;
     }
 
+
     /**
      * 鏂板澶囦欢鍑哄叆搴�
      *
      * @param bo 澶囦欢鍑哄叆搴�
      * @return 鏄惁鏂板鎴愬姛
      */
+    @Transactional(rollbackFor = Exception.class)
     @Override
-    public Boolean insertByBo(EimsSpareInoutBo bo) {
+    public synchronized Boolean insertByBo(EimsSpareInoutBo bo) {
         EimsSpareInout add = MapstructUtils.convert(bo, EimsSpareInout.class);
         validEntityBeforeSave(add);
         boolean flag = baseMapper.insert(add) > 0;
         if (flag) {
             bo.setId(add.getId());
+        }
+        //鍏ュ簱锛嬪簱瀛�  鍑哄簱-搴撳瓨  锛堥粯璁ゅ叆搴擄級
+        int  OperationType;
+
+         //鍑哄簱
+         if(bo.getType().equals(DictConstants.SPARE_INOUT_TYPE_DETAIL.CK)){
+            OperationType =  -1;
+        } else {
+             OperationType = 1;
+         }
+
+        List<EimsSpareBo> spareList = Optional.ofNullable(bo.getSpareList()).orElse(new ArrayList<>());
+        // 鎻掑叆鍑哄簱鏄庣粏
+        List<EimsSpareInoutdt> dtList = spareList.stream()
+            .map(eimsSpareBo -> {
+                EimsSpareInoutdt dt = new EimsSpareInoutdt();
+                dt.setInoutId(add.getId());
+                dt.setSpareId(eimsSpareBo.getId());
+                dt.setBeforeStock(eimsSpareBo.getActualStock());
+                // 娉ㄦ剰鍏ュ簱鍑哄簱
+                dt.setActualStock(eimsSpareBo.getActualStock() + (eimsSpareBo.getQuantity() * OperationType));
+                dt.setQuantity(eimsSpareBo.getQuantity());
+
+                // 璁剧疆鍗曚环鍜岄噾棰�
+                Optional.ofNullable(eimsSpareBo.getReferPrice()).ifPresent(referPrice -> {
+                    dt.setUnitPrice(referPrice);
+                    dt.setAmount(referPrice.multiply(BigDecimal.valueOf(eimsSpareBo.getQuantity())));
+                });
+
+                return dt;
+            })
+            .toList();
+
+        // 鎵归噺鎻掑叆鏁版嵁
+        if (!dtList.isEmpty()) {
+            inoutdtMapper.insertBatch(dtList);
+        }
+
+        // 鏇存柊澶囦欢鐨勫簱瀛�
+        List<EimsSpare> updateSpareList = spareList.stream().map(spareBo -> {
+            EimsSpare spare = new EimsSpare();
+            spare.setId(spareBo.getId());
+            spare.setActualStock(spareBo.getActualStock() + (spareBo.getQuantity() * OperationType));
+            // 璁剧疆鍗曚环鍜岄噾棰�
+            Optional.ofNullable(spareBo.getReferPrice()).ifPresent(referPrice -> {
+                spare.setStockAmount(referPrice.multiply(BigDecimal.valueOf(spare.getActualStock())));
+            });
+            return spare;
+        }).toList();
+
+        if (!updateSpareList.isEmpty()) {
+            spareMapper.updateBatchById(updateSpareList);
         }
         return flag;
     }
@@ -132,4 +225,6 @@
         }
         return baseMapper.deleteByIds(ids) > 0;
     }
+
+
 }
diff --git a/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/service/impl/EimsSpareInoutdtServiceImpl.java b/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/service/impl/EimsSpareInoutdtServiceImpl.java
new file mode 100644
index 0000000..a9f1a04
--- /dev/null
+++ b/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/service/impl/EimsSpareInoutdtServiceImpl.java
@@ -0,0 +1,138 @@
+package org.dromara.eims.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import org.dromara.common.core.utils.MapstructUtils;
+import org.dromara.common.core.utils.StringUtils;
+import org.dromara.common.mybatis.core.page.TableDataInfo;
+import org.dromara.common.mybatis.core.page.PageQuery;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import lombok.RequiredArgsConstructor;
+import org.dromara.eims.domain.vo.EimsMaintStVo;
+import org.springframework.stereotype.Service;
+import org.dromara.eims.domain.bo.EimsSpareInoutdtBo;
+import org.dromara.eims.domain.vo.EimsSpareInoutdtVo;
+import org.dromara.eims.domain.EimsSpareInoutdt;
+import org.dromara.eims.mapper.EimsSpareInoutdtMapper;
+import org.dromara.eims.service.IEimsSpareInoutdtService;
+
+import java.util.List;
+import java.util.Map;
+import java.util.Collection;
+
+/**
+ * 澶囦欢鍑哄叆搴撴槑缁哠ervice涓氬姟灞傚鐞�
+ *
+ * @author zhuguifei
+ * @date 2025-04-11
+ */
+@RequiredArgsConstructor
+@Service
+public class EimsSpareInoutdtServiceImpl implements IEimsSpareInoutdtService {
+
+    private final EimsSpareInoutdtMapper baseMapper;
+
+    /**
+     * 鏌ヨ澶囦欢鍑哄叆搴撴槑缁�
+     *
+     * @param id 涓婚敭
+     * @return 澶囦欢鍑哄叆搴撴槑缁�
+     */
+    @Override
+    public EimsSpareInoutdtVo queryById(Long id){
+        return baseMapper.selectVoById(id);
+    }
+
+    /**
+     * 鍒嗛〉鏌ヨ澶囦欢鍑哄叆搴撴槑缁嗗垪琛�
+     *
+     * @param bo        鏌ヨ鏉′欢
+     * @param pageQuery 鍒嗛〉鍙傛暟
+     * @return 澶囦欢鍑哄叆搴撴槑缁嗗垎椤靛垪琛�
+     */
+    @Override
+    public TableDataInfo<EimsSpareInoutdtVo> queryPageList(EimsSpareInoutdtBo bo, PageQuery pageQuery) {
+        Page<EimsSpareInoutdtVo> result = baseMapper.selectSpareInoutdtList(pageQuery.build(), buildWrapper(bo));
+        return TableDataInfo.build(result);
+    }
+
+    /**
+     * 鏌ヨ绗﹀悎鏉′欢鐨勫浠跺嚭鍏ュ簱鏄庣粏鍒楄〃
+     *
+     * @param bo 鏌ヨ鏉′欢
+     * @return 澶囦欢鍑哄叆搴撴槑缁嗗垪琛�
+     */
+    @Override
+    public List<EimsSpareInoutdtVo> queryList(EimsSpareInoutdtBo bo) {
+        LambdaQueryWrapper<EimsSpareInoutdt> lqw = buildQueryWrapper(bo);
+        return baseMapper.selectVoList(lqw);
+    }
+
+    private LambdaQueryWrapper<EimsSpareInoutdt> buildQueryWrapper(EimsSpareInoutdtBo bo) {
+        Map<String, Object> params = bo.getParams();
+        LambdaQueryWrapper<EimsSpareInoutdt> lqw = Wrappers.lambdaQuery();
+        lqw.eq(bo.getInoutId() != null, EimsSpareInoutdt::getInoutId, bo.getInoutId());
+        lqw.eq(bo.getSpareId() != null, EimsSpareInoutdt::getSpareId, bo.getSpareId());
+        return lqw;
+    }
+
+    private QueryWrapper<EimsSpareInoutdt> buildWrapper(EimsSpareInoutdtBo bo) {
+        Map<String, Object> params = bo.getParams();
+        QueryWrapper<EimsSpareInoutdt> qw = Wrappers.query();
+        qw.eq("io.id",bo.getInoutId());
+        return qw;
+    }
+
+    /**
+     * 鏂板澶囦欢鍑哄叆搴撴槑缁�
+     *
+     * @param bo 澶囦欢鍑哄叆搴撴槑缁�
+     * @return 鏄惁鏂板鎴愬姛
+     */
+    @Override
+    public Boolean insertByBo(EimsSpareInoutdtBo bo) {
+        EimsSpareInoutdt add = MapstructUtils.convert(bo, EimsSpareInoutdt.class);
+        validEntityBeforeSave(add);
+        boolean flag = baseMapper.insert(add) > 0;
+        if (flag) {
+            bo.setId(add.getId());
+        }
+        return flag;
+    }
+
+    /**
+     * 淇敼澶囦欢鍑哄叆搴撴槑缁�
+     *
+     * @param bo 澶囦欢鍑哄叆搴撴槑缁�
+     * @return 鏄惁淇敼鎴愬姛
+     */
+    @Override
+    public Boolean updateByBo(EimsSpareInoutdtBo bo) {
+        EimsSpareInoutdt update = MapstructUtils.convert(bo, EimsSpareInoutdt.class);
+        validEntityBeforeSave(update);
+        return baseMapper.updateById(update) > 0;
+    }
+
+    /**
+     * 淇濆瓨鍓嶇殑鏁版嵁鏍¢獙
+     */
+    private void validEntityBeforeSave(EimsSpareInoutdt entity){
+        //TODO 鍋氫竴浜涙暟鎹牎楠�,濡傚敮涓�绾︽潫
+    }
+
+    /**
+     * 鏍¢獙骞舵壒閲忓垹闄ゅ浠跺嚭鍏ュ簱鏄庣粏淇℃伅
+     *
+     * @param ids     寰呭垹闄ょ殑涓婚敭闆嗗悎
+     * @param isValid 鏄惁杩涜鏈夋晥鎬ф牎楠�
+     * @return 鏄惁鍒犻櫎鎴愬姛
+     */
+    @Override
+    public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
+        if(isValid){
+            //TODO 鍋氫竴浜涗笟鍔′笂鐨勬牎楠�,鍒ゆ柇鏄惁闇�瑕佹牎楠�
+        }
+        return baseMapper.deleteByIds(ids) > 0;
+    }
+}
diff --git a/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/service/impl/EimsSpareServiceImpl.java b/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/service/impl/EimsSpareServiceImpl.java
index 1c8619a..4cdd95b 100644
--- a/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/service/impl/EimsSpareServiceImpl.java
+++ b/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/service/impl/EimsSpareServiceImpl.java
@@ -1,5 +1,6 @@
 package org.dromara.eims.service.impl;
 
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import org.dromara.common.core.utils.MapstructUtils;
 import org.dromara.common.core.utils.StringUtils;
 import org.dromara.common.mybatis.core.page.TableDataInfo;
@@ -8,6 +9,10 @@
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import lombok.RequiredArgsConstructor;
+import org.dromara.eims.domain.EimsSpareInout;
+import org.dromara.eims.domain.bo.EimsSpareInoutBo;
+import org.dromara.eims.domain.vo.EimsSpareInoutVo;
+import org.dromara.eims.domain.vo.EimsSpareInoutdtVo;
 import org.springframework.stereotype.Service;
 import org.dromara.eims.domain.bo.EimsSpareBo;
 import org.dromara.eims.domain.vo.EimsSpareVo;
@@ -56,6 +61,13 @@
         return TableDataInfo.build(result);
     }
 
+
+    @Override
+    public TableDataInfo<EimsSpareInoutdtVo> querySpareInoutList(EimsSpareBo bo, PageQuery pageQuery) {
+        Page<EimsSpareInoutdtVo> result = baseMapper.selectSpareInoutList(pageQuery.build(), buildWrapper(bo));
+        return TableDataInfo.build(result);
+    }
+
     /**
      * 鏌ヨ绗﹀悎鏉′欢鐨勫浠跺彴璐﹀垪琛�
      *
@@ -79,6 +91,13 @@
         lqw.like(StringUtils.isNotBlank(bo.getSupplier()), EimsSpare::getSupplier, bo.getSupplier());
         lqw.eq(StringUtils.isNotBlank(bo.getUnit()), EimsSpare::getUnit, bo.getUnit());
         return lqw;
+    }
+
+    private QueryWrapper<EimsSpare> buildWrapper(EimsSpareBo bo) {
+        Map<String, Object> params = bo.getParams();
+        QueryWrapper<EimsSpare> qw = Wrappers.query();
+        qw.eq( "sp.id", bo.getId());
+        return qw;
     }
 
     /**
@@ -132,4 +151,6 @@
         }
         return baseMapper.deleteByIds(ids) > 0;
     }
+
+
 }
diff --git a/eims/ruoyi-modules/lb-eims/src/main/resources/mapper/eims/EimsSpareInoutdtMapper.xml b/eims/ruoyi-modules/lb-eims/src/main/resources/mapper/eims/EimsSpareInoutdtMapper.xml
new file mode 100644
index 0000000..af3b48d
--- /dev/null
+++ b/eims/ruoyi-modules/lb-eims/src/main/resources/mapper/eims/EimsSpareInoutdtMapper.xml
@@ -0,0 +1,15 @@
+<?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="org.dromara.eims.mapper.EimsSpareInoutdtMapper">
+    <resultMap type="org.dromara.eims.domain.vo.EimsSpareInoutdtVo" id="SpareInoutdtVoResult">
+    </resultMap>
+    <select id="selectSpareInoutdtList" resultMap="SpareInoutdtVoResult">
+        SELECT dt.*, sp.name spareName, sp.code spareCode, sp.model_no modelNo, sp.unit unit, io.order_code orderCode
+        FROM eims_spare_inoutdt dt
+                 LEFT JOIN eims_spare_inout io on dt.inout_id = io.id
+                 LEFT JOIN eims_spare sp on dt.spare_id = sp.id
+            ${ew.getCustomSqlSegment}
+    </select>
+</mapper>
diff --git a/eims/ruoyi-modules/lb-eims/src/main/resources/mapper/eims/EimsSpareMapper.xml b/eims/ruoyi-modules/lb-eims/src/main/resources/mapper/eims/EimsSpareMapper.xml
index 8384ab3..f41d665 100644
--- a/eims/ruoyi-modules/lb-eims/src/main/resources/mapper/eims/EimsSpareMapper.xml
+++ b/eims/ruoyi-modules/lb-eims/src/main/resources/mapper/eims/EimsSpareMapper.xml
@@ -3,5 +3,13 @@
 PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
 "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="org.dromara.eims.mapper.EimsSpareMapper">
-
+    <resultMap type="org.dromara.eims.domain.vo.EimsSpareInoutdtVo" id="SpareInoutdtVoResult">
+    </resultMap>
+    <select id="selectSpareInoutList" resultMap="SpareInoutdtVoResult">
+        SELECT io.*, dt.quantity, dt.actual_stock, dt.unit_price, dt.amount
+        FROM eims_spare_inout io
+                 JOIN eims_spare_inoutdt dt on io.id = dt.inout_id
+                 JOIN eims_spare sp on dt.spare_id = sp.id
+            ${ew.getCustomSqlSegment}
+    </select>
 </mapper>

--
Gitblit v1.9.3