From a2d1636333fc785f84de829a096f0aa210560102 Mon Sep 17 00:00:00 2001
From: chenhj <1263187585@qq.com>
Date: 星期三, 21 一月 2026 17:54:01 +0800
Subject: [PATCH] 出库记录

---
 src/main/java/com/ruoyi/stock/dto/StockOutRecordDto.java                  |   18 ++++++
 src/main/java/com/ruoyi/stock/service/StockOutRecordService.java          |   13 ++++
 src/main/resources/mapper/stock/StockOutRecordMapper.xml                  |   16 +++++
 src/main/java/com/ruoyi/stock/controller/StockOutRecordController.java    |   45 ++++++++++++++
 src/main/java/com/ruoyi/stock/mapper/StockOutRecordMapper.java            |    7 ++
 src/main/java/com/ruoyi/stock/service/impl/StockOutRecordServiceImpl.java |   49 +++++++++++++++-
 src/main/java/com/ruoyi/stock/pojo/StockOutRecord.java                    |   13 +--
 7 files changed, 146 insertions(+), 15 deletions(-)

diff --git a/src/main/java/com/ruoyi/stock/controller/StockOutRecordController.java b/src/main/java/com/ruoyi/stock/controller/StockOutRecordController.java
index 8fff004..bf8a619 100644
--- a/src/main/java/com/ruoyi/stock/controller/StockOutRecordController.java
+++ b/src/main/java/com/ruoyi/stock/controller/StockOutRecordController.java
@@ -1,7 +1,18 @@
 package com.ruoyi.stock.controller;
 
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ruoyi.framework.aspectj.lang.annotation.Log;
+import com.ruoyi.framework.aspectj.lang.enums.BusinessType;
+import com.ruoyi.framework.web.domain.AjaxResult;
+import com.ruoyi.stock.dto.StockOutRecordDto;
+import com.ruoyi.stock.service.StockOutRecordService;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.util.CollectionUtils;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.List;
 
 /**
  * <p>
@@ -14,5 +25,35 @@
 @RestController
 @RequestMapping("/stockOutRecord")
 public class StockOutRecordController {
+    @Autowired
+    private StockOutRecordService stockOutRecordService;
 
+    @GetMapping("/listPageByProduction")
+    @Log(title = "鐢熶骇鍑哄簱-鍑哄簱绠$悊-鍒楄〃", businessType = BusinessType.OTHER)
+    @ApiOperation(value = "鍑哄簱绠$悊鍒楄〃")
+    public AjaxResult listPage(Page page, StockOutRecordDto stockOutRecordDto) {
+        IPage<StockOutRecordDto> result = stockOutRecordService.listPage(page, stockOutRecordDto);
+        return AjaxResult.success(result);
+    }
+
+    @PostMapping("")
+    @Log(title = "鍑哄簱绠$悊-鏂板鍑哄簱", businessType = BusinessType.INSERT)
+    public AjaxResult add(@RequestBody StockOutRecordDto stockOutRecordDto) {
+        return AjaxResult.success(stockOutRecordService.add(stockOutRecordDto));
+    }
+
+    @PutMapping("/{id}")
+    @Log(title = "鍑哄簱绠$悊-鏇存柊鍑哄簱", businessType = BusinessType.UPDATE)
+    public AjaxResult update(@PathVariable("id") Long id, @RequestBody StockOutRecordDto stockOutRecordDto) {
+        return AjaxResult.success(stockOutRecordService.update(id, stockOutRecordDto));
+    }
+
+    @DeleteMapping("")
+    @Log(title = "鍑哄簱绠$悊-鍒犻櫎鍑哄簱", businessType = BusinessType.DELETE)
+    public AjaxResult delete(@RequestBody List<Long> ids) {
+        if(CollectionUtils.isEmpty(ids)){
+            return AjaxResult.error("璇烽�夋嫨鑷冲皯涓�鏉℃暟鎹�");
+        }
+        return AjaxResult.success(stockOutRecordService.batchDelete(ids));
+    }
 }
diff --git a/src/main/java/com/ruoyi/stock/dto/StockOutRecordDto.java b/src/main/java/com/ruoyi/stock/dto/StockOutRecordDto.java
new file mode 100644
index 0000000..6c9d455
--- /dev/null
+++ b/src/main/java/com/ruoyi/stock/dto/StockOutRecordDto.java
@@ -0,0 +1,18 @@
+package com.ruoyi.stock.dto;
+
+import com.ruoyi.stock.pojo.StockOutRecord;
+
+public class StockOutRecordDto extends StockOutRecord {
+    /**
+     * 浜у搧鍚嶇О
+     */
+    private String productName;
+    /**
+     * 浜у搧瑙勬牸
+     */
+    private String model;
+    /**
+     * 浜у搧鍗曚綅
+     */
+    private String unit;
+}
diff --git a/src/main/java/com/ruoyi/stock/mapper/StockOutRecordMapper.java b/src/main/java/com/ruoyi/stock/mapper/StockOutRecordMapper.java
index e82aa5a..04aeb71 100644
--- a/src/main/java/com/ruoyi/stock/mapper/StockOutRecordMapper.java
+++ b/src/main/java/com/ruoyi/stock/mapper/StockOutRecordMapper.java
@@ -1,8 +1,12 @@
 package com.ruoyi.stock.mapper;
 
-import com.ruoyi.stock.pojo.StockOutRecord;
 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.stock.dto.StockOutRecordDto;
+import com.ruoyi.stock.pojo.StockOutRecord;
 import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
 
 /**
  * <p>
@@ -14,5 +18,6 @@
  */
 @Mapper
 public interface StockOutRecordMapper extends BaseMapper<StockOutRecord> {
+    IPage<StockOutRecordDto> listPage(Page page, @Param("params") StockOutRecordDto stockOutRecordDto);
 
 }
diff --git a/src/main/java/com/ruoyi/stock/pojo/StockOutRecord.java b/src/main/java/com/ruoyi/stock/pojo/StockOutRecord.java
index eb9b8b2..0511e37 100644
--- a/src/main/java/com/ruoyi/stock/pojo/StockOutRecord.java
+++ b/src/main/java/com/ruoyi/stock/pojo/StockOutRecord.java
@@ -1,18 +1,15 @@
 package com.ruoyi.stock.pojo;
 
-import com.baomidou.mybatisplus.annotation.FieldFill;
-import com.baomidou.mybatisplus.annotation.IdType;
-import com.baomidou.mybatisplus.annotation.TableField;
-import com.baomidou.mybatisplus.annotation.TableId;
-import com.baomidou.mybatisplus.annotation.TableName;
-import java.io.Serializable;
-import java.math.BigDecimal;
-import java.time.LocalDateTime;
+import com.baomidou.mybatisplus.annotation.*;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Getter;
 import lombok.Setter;
 
+import java.io.Serializable;
+import java.math.BigDecimal;
+import java.time.LocalDateTime;
+
 /**
  * <p>
  * 鍑哄簱璁板綍琛�
diff --git a/src/main/java/com/ruoyi/stock/service/StockOutRecordService.java b/src/main/java/com/ruoyi/stock/service/StockOutRecordService.java
index 9d5b9b1..6317e3a 100644
--- a/src/main/java/com/ruoyi/stock/service/StockOutRecordService.java
+++ b/src/main/java/com/ruoyi/stock/service/StockOutRecordService.java
@@ -1,7 +1,12 @@
 package com.ruoyi.stock.service;
 
-import com.ruoyi.stock.pojo.StockOutRecord;
+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.stock.dto.StockOutRecordDto;
+import com.ruoyi.stock.pojo.StockOutRecord;
+
+import java.util.List;
 
 /**
  * <p>
@@ -12,5 +17,11 @@
  * @since 2026-01-21 05:27:04
  */
 public interface StockOutRecordService extends IService<StockOutRecord> {
+    IPage<StockOutRecordDto> listPage(Page page, StockOutRecordDto stockOutRecordDto);
 
+    int add(StockOutRecordDto stockOutRecordDto);
+
+    int update(Long id, StockOutRecordDto stockOutRecordDto);
+
+    int batchDelete(List<Long> ids);
 }
diff --git a/src/main/java/com/ruoyi/stock/service/impl/StockOutRecordServiceImpl.java b/src/main/java/com/ruoyi/stock/service/impl/StockOutRecordServiceImpl.java
index 3e2d0f2..d5c9c44 100644
--- a/src/main/java/com/ruoyi/stock/service/impl/StockOutRecordServiceImpl.java
+++ b/src/main/java/com/ruoyi/stock/service/impl/StockOutRecordServiceImpl.java
@@ -1,10 +1,20 @@
 package com.ruoyi.stock.service.impl;
 
-import com.ruoyi.stock.pojo.StockOutRecord;
-import com.ruoyi.stock.mapper.StockOutRecordMapper;
-import com.ruoyi.stock.service.StockOutRecordService;
+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.exception.base.BaseException;
+import com.ruoyi.common.utils.OrderUtils;
+import com.ruoyi.common.utils.bean.BeanUtils;
+import com.ruoyi.stock.dto.StockOutRecordDto;
+import com.ruoyi.stock.mapper.StockOutRecordMapper;
+import com.ruoyi.stock.pojo.StockInRecord;
+import com.ruoyi.stock.pojo.StockOutRecord;
+import com.ruoyi.stock.service.StockOutRecordService;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
+
+import java.util.List;
 
 /**
  * <p>
@@ -16,5 +26,38 @@
  */
 @Service
 public class StockOutRecordServiceImpl extends ServiceImpl<StockOutRecordMapper, StockOutRecord> implements StockOutRecordService {
+    @Autowired
+    private StockOutRecordMapper stockOutRecordMapper;
 
+    @Override
+    public IPage<StockOutRecordDto> listPage(Page page, StockOutRecordDto stockOutRecordDto) {
+        return stockOutRecordMapper.listPage(page, stockOutRecordDto);
+    }
+
+    @Override
+    public int add(StockOutRecordDto stockOutRecordDto) {
+        String no = OrderUtils.countTodayByCreateTime(stockOutRecordMapper, "CK");
+        stockOutRecordDto.setOutboundBatches(no);
+        StockInRecord stockInRecord = new StockInRecord();
+        BeanUtils.copyProperties(stockOutRecordDto, stockInRecord);
+        return stockOutRecordMapper.insert(stockOutRecordDto);
+    }
+
+    @Override
+    public int update(Long id, StockOutRecordDto stockOutRecordDto) {
+        // 鍒ゆ柇瀵硅薄鏄惁瀛樺湪
+        StockOutRecord stockOutRecord = stockOutRecordMapper.selectById(id);
+        if (stockOutRecord == null){
+            throw new BaseException("璇ュ嚭搴撹褰曚笉瀛樺湪,鏃犳硶鏇存柊!!!");
+        }
+
+        String[] ignoreProperties = {"id", "inbound_batches"};//鎺掗櫎id灞炴��
+        BeanUtils.copyProperties(stockOutRecordDto, stockOutRecord, ignoreProperties);
+        return stockOutRecordMapper.updateById(stockOutRecord);
+    }
+
+    @Override
+    public int batchDelete(List<Long> ids) {
+        return stockOutRecordMapper.deleteBatchIds(ids);
+    }
 }
diff --git a/src/main/resources/mapper/stock/StockOutRecordMapper.xml b/src/main/resources/mapper/stock/StockOutRecordMapper.xml
index 182665c..ea8e9f9 100644
--- a/src/main/resources/mapper/stock/StockOutRecordMapper.xml
+++ b/src/main/resources/mapper/stock/StockOutRecordMapper.xml
@@ -18,4 +18,20 @@
         <result column="tenant_id" property="tenantId" />
     </resultMap>
 
+    <select id="listPage" resultType="com.ruoyi.stock.dto.StockOutRecordDto">
+        SELECT
+        sor.*
+        pm.product_name as productName,
+        pm.model,
+        pm.unit
+        FROM stock_out_record as sor
+        LEFT JOIN product_models as pm on sor.product_model_id = pm.id
+        <where>
+            <if test="params.timeStr != null and params.timeStr != ''">
+                and sor.create_time like concat('%',#{param.timeStr},'%')
+            </if>
+        </where>
+        order by sor.id desc
+    </select>
+
 </mapper>

--
Gitblit v1.9.3