From a34e2b9e407f5f6b8c5b8229cb51d24233c78ce7 Mon Sep 17 00:00:00 2001
From: huminmin <mac@MacBook-Pro.local>
Date: 星期三, 21 一月 2026 16:43:55 +0800
Subject: [PATCH] 入库增删改查

---
 src/main/java/com/ruoyi/stock/controller/StockInRecordController.java    |   54 ++++++++++
 src/main/java/com/ruoyi/stock/pojo/StockInRecord.java                    |   64 ++++++++++++
 src/main/java/com/ruoyi/stock/mapper/StockInRecordMapper.java            |   12 ++
 src/main/resources/mapper/stock/StockInRecordMapper.xml                  |   20 ++++
 src/main/java/com/ruoyi/stock/service/StockInRecordService.java          |   19 +++
 src/main/java/com/ruoyi/stock/service/impl/StockInRecordServiceImpl.java |   60 ++++++++++++
 src/main/java/com/ruoyi/stock/dto/StockInRecordDto.java                  |   18 +++
 7 files changed, 247 insertions(+), 0 deletions(-)

diff --git a/src/main/java/com/ruoyi/stock/controller/StockInRecordController.java b/src/main/java/com/ruoyi/stock/controller/StockInRecordController.java
new file mode 100644
index 0000000..0c6fa02
--- /dev/null
+++ b/src/main/java/com/ruoyi/stock/controller/StockInRecordController.java
@@ -0,0 +1,54 @@
+package com.ruoyi.stock.controller;
+
+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.StockInRecordDto;
+import com.ruoyi.stock.service.StockInRecordService;
+import io.swagger.annotations.Api;
+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;
+
+@RestController
+@Api(tags = "閲囪喘鍏ュ簱")
+@RequestMapping("/stockInRecord")
+public class StockInRecordController {
+    @Autowired
+    private StockInRecordService stockInRecordService;
+
+    @GetMapping("/listPageByProduction")
+    @Log(title = "鐢熶骇鍏ュ簱-鍏ュ簱绠$悊-鍒楄〃", businessType = BusinessType.OTHER)
+    @ApiOperation(value = "鍏ュ簱绠$悊鍒楄〃")
+    public AjaxResult listPage(Page page, StockInRecordDto stockInRecordDto) {
+        IPage<StockInRecordDto> result = stockInRecordService.listPage(page, stockInRecordDto);
+        return AjaxResult.success(result);
+    }
+
+    @PostMapping("")
+    @Log(title = "鍏ュ簱绠$悊-鏂板鍏ュ簱", businessType = BusinessType.INSERT)
+    public AjaxResult add(@RequestBody StockInRecordDto stockInRecordDto) {
+        return AjaxResult.success(stockInRecordService.add(stockInRecordDto));
+    }
+
+    @PutMapping("/{id}")
+    @Log(title = "鍏ュ簱绠$悊-鏇存柊鍏ュ簱", businessType = BusinessType.UPDATE)
+    public AjaxResult update(@PathVariable("id") Long id, @RequestBody StockInRecordDto stockInRecordDto) {
+        return AjaxResult.success(stockInRecordService.update(id, stockInRecordDto));
+    }
+
+    @DeleteMapping("")
+    @Log(title = "鍏ュ簱绠$悊-鍒犻櫎鍏ュ簱", businessType = BusinessType.DELETE)
+    public AjaxResult delete(@RequestBody List<Long> ids) {
+        if(CollectionUtils.isEmpty(ids)){
+            return AjaxResult.error("璇烽�夋嫨鑷冲皯涓�鏉℃暟鎹�");
+        }
+        return AjaxResult.success(stockInRecordService.batchDelete(ids));
+    }
+
+}
diff --git a/src/main/java/com/ruoyi/stock/dto/StockInRecordDto.java b/src/main/java/com/ruoyi/stock/dto/StockInRecordDto.java
new file mode 100644
index 0000000..312eec9
--- /dev/null
+++ b/src/main/java/com/ruoyi/stock/dto/StockInRecordDto.java
@@ -0,0 +1,18 @@
+package com.ruoyi.stock.dto;
+
+import com.ruoyi.stock.pojo.StockInRecord;
+
+public class StockInRecordDto extends StockInRecord {
+    /**
+     * 浜у搧鍚嶇О
+     */
+    private String productName;
+    /**
+     * 浜у搧瑙勬牸
+     */
+    private String model;
+    /**
+     * 浜у搧鍗曚綅
+     */
+    private String unit;
+}
diff --git a/src/main/java/com/ruoyi/stock/mapper/StockInRecordMapper.java b/src/main/java/com/ruoyi/stock/mapper/StockInRecordMapper.java
new file mode 100644
index 0000000..8b7b543
--- /dev/null
+++ b/src/main/java/com/ruoyi/stock/mapper/StockInRecordMapper.java
@@ -0,0 +1,12 @@
+package com.ruoyi.stock.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.stock.dto.StockInRecordDto;
+import com.ruoyi.stock.pojo.StockInRecord;
+import org.apache.ibatis.annotations.Param;
+
+public interface StockInRecordMapper extends BaseMapper<StockInRecord> {
+    IPage<StockInRecordDto> listPage(Page page, @Param("params") StockInRecordDto stockInRecordDto);
+}
diff --git a/src/main/java/com/ruoyi/stock/pojo/StockInRecord.java b/src/main/java/com/ruoyi/stock/pojo/StockInRecord.java
new file mode 100644
index 0000000..1ac862a
--- /dev/null
+++ b/src/main/java/com/ruoyi/stock/pojo/StockInRecord.java
@@ -0,0 +1,64 @@
+package com.ruoyi.stock.pojo;
+
+import com.baomidou.mybatisplus.annotation.*;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.math.BigDecimal;
+import java.time.LocalDateTime;
+
+@Data
+@TableName("stock_in_record")
+@ApiModel("鍏ュ簱绠$悊")
+public class StockInRecord {
+
+    private static final long serialVersionUID = 1L;
+    /**
+     * 搴忓彿
+     */
+    @TableId(type = IdType.AUTO)
+    private Long id;
+
+    @ApiModelProperty(value = "鍏ュ簱鎵规")
+    private String inboundBatches;
+
+    @ApiModelProperty(value = "鍏ュ簱鏁伴噺")
+    private BigDecimal stockInNum;
+
+    @ApiModelProperty(value = "璁板綍绫诲瀷")
+    private String recordType;
+
+    @ApiModelProperty(value = "璁板綍ID")
+    private Long recordId;
+
+    @ApiModelProperty(value = "浜у搧瑙勬牸ID")
+    private Long productModelId;
+
+    @ApiModelProperty(value = "澶囨敞")
+    private String remark;
+
+    @ApiModelProperty(value = "鍒涘缓鏃堕棿")
+    @TableField(fill = FieldFill.INSERT)
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private LocalDateTime createTime;
+
+    @ApiModelProperty(value = "鍒涘缓鐢ㄦ埛")
+    @TableField(fill = FieldFill.INSERT)
+    private Integer createUser;
+
+    @ApiModelProperty(value = "淇敼鏃堕棿")
+    @TableField(fill = FieldFill.INSERT_UPDATE)
+    private LocalDateTime updateTime;
+
+    @ApiModelProperty(value = "淇敼鐢ㄦ埛")
+    @TableField(fill = FieldFill.INSERT_UPDATE)
+    private Integer updateUser;
+
+    @ApiModelProperty(value = "绉熸埛ID")
+    @TableField(fill = FieldFill.INSERT)
+    private Long tenantId;
+}
diff --git a/src/main/java/com/ruoyi/stock/service/StockInRecordService.java b/src/main/java/com/ruoyi/stock/service/StockInRecordService.java
new file mode 100644
index 0000000..19ad7ea
--- /dev/null
+++ b/src/main/java/com/ruoyi/stock/service/StockInRecordService.java
@@ -0,0 +1,19 @@
+package com.ruoyi.stock.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.stock.dto.StockInRecordDto;
+import com.ruoyi.stock.pojo.StockInRecord;
+
+import java.util.List;
+
+public interface StockInRecordService extends IService<StockInRecord> {
+    IPage<StockInRecordDto> listPage(Page page, StockInRecordDto stockInRecordDto);
+
+    int add(StockInRecordDto stockInRecordDto);
+
+    int update(Long id, StockInRecordDto stockInRecordDto);
+
+    int batchDelete(List<Long> ids);
+}
diff --git a/src/main/java/com/ruoyi/stock/service/impl/StockInRecordServiceImpl.java b/src/main/java/com/ruoyi/stock/service/impl/StockInRecordServiceImpl.java
new file mode 100644
index 0000000..894cab1
--- /dev/null
+++ b/src/main/java/com/ruoyi/stock/service/impl/StockInRecordServiceImpl.java
@@ -0,0 +1,60 @@
+package com.ruoyi.stock.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.exception.base.BaseException;
+import com.ruoyi.common.utils.OrderUtils;
+import com.ruoyi.common.utils.bean.BeanUtils;
+import com.ruoyi.staff.pojo.StaffOnJob;
+import com.ruoyi.stock.dto.StockInRecordDto;
+import com.ruoyi.stock.mapper.StockInRecordMapper;
+import com.ruoyi.stock.pojo.StockInRecord;
+import com.ruoyi.stock.service.StockInRecordService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.List;
+
+@Service
+public class StockInRecordServiceImpl extends ServiceImpl<StockInRecordMapper, StockInRecord> implements StockInRecordService {
+    @Autowired
+    private StockInRecordMapper stockInRecordMapper;
+
+    @Override
+    public IPage<StockInRecordDto> listPage(Page page, StockInRecordDto stockInRecordDto) {
+        return stockInRecordMapper.listPage(page, stockInRecordDto);
+    }
+
+    // 鏂板鍏ュ簱
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public int add(StockInRecordDto stockInRecordDto) {
+        String no = OrderUtils.countTodayByCreateTime(stockInRecordMapper, "RK");
+        stockInRecordDto.setInboundBatches(no);
+        StockInRecord stockInRecord = new StockInRecord();
+        BeanUtils.copyProperties(stockInRecordDto, stockInRecord);
+        return stockInRecordMapper.insert(stockInRecord);
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public int update(Long id, StockInRecordDto stockInRecordDto) {
+        // 鍒ゆ柇瀵硅薄鏄惁瀛樺湪
+        StockInRecord stockInRecord = stockInRecordMapper.selectById(id);
+        if (stockInRecord == null){
+            throw new BaseException("璇ュ叆搴撹褰曚笉瀛樺湪,鏃犳硶鏇存柊!!!");
+        }
+
+        String[] ignoreProperties = {"id", "inbound_batches"};//鎺掗櫎id灞炴��
+        BeanUtils.copyProperties(stockInRecordDto, stockInRecord, ignoreProperties);
+        return stockInRecordMapper.updateById(stockInRecord);
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public int batchDelete(List<Long> ids) {
+        return stockInRecordMapper.deleteBatchIds(ids);
+    }
+}
diff --git a/src/main/resources/mapper/stock/StockInRecordMapper.xml b/src/main/resources/mapper/stock/StockInRecordMapper.xml
new file mode 100644
index 0000000..b4f31dc
--- /dev/null
+++ b/src/main/resources/mapper/stock/StockInRecordMapper.xml
@@ -0,0 +1,20 @@
+<?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.stock.mapper.StockInRecordMapper">
+
+    <select id="listPage" resultType="com.ruoyi.stock.dto.StockInRecordDto">
+        SELECT
+        sir.*
+        pm.product_name as productName,
+        pm.model,
+        pm.unit
+        FROM stock_in_record as sir
+        LEFT JOIN product_models as pm on sir.product_model_id = pm.id
+        <where>
+            <if test="params.timeStr != null and params.timeStr != ''">
+                and sir.create_time like concat('%',#{param.timeStr},'%')
+            </if>
+        </where>
+        order by sir.id desc
+    </select>
+</mapper>
\ No newline at end of file

--
Gitblit v1.9.3