huminmin
2026-04-24 35b564cd9f4656e3e42c15bf0889fe8b40bba9b8
入库管理按照原材料和成品来区分
已修改3个文件
44 ■■■■■ 文件已修改
src/main/java/com/ruoyi/stock/dto/StockInRecordDto.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/stock/service/impl/StockInRecordServiceImpl.java 11 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/stock/StockInRecordMapper.xml 29 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/stock/dto/StockInRecordDto.java
@@ -1,6 +1,7 @@
package com.ruoyi.stock.dto;
import com.ruoyi.stock.pojo.StockInRecord;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
@@ -35,4 +36,7 @@
    //工单
    private String workOrderNo;
    // 顶部父产品id
    private Long topParentProductId;
}
src/main/java/com/ruoyi/stock/service/impl/StockInRecordServiceImpl.java
@@ -85,7 +85,11 @@
        for (Long id : ids) {
            StockInRecord stockInRecord = stockInRecordMapper.selectById(id);
            if (stockInRecord.getType().equals("0")) {
                StockInventory stockInventory = stockInventoryMapper.selectOne(new LambdaQueryWrapper<StockInventory>().eq(StockInventory::getProductModelId, stockInRecord.getProductModelId()));
                StockInventory stockInventory = stockInventoryMapper.selectOne(
                        new LambdaQueryWrapper<StockInventory>()
                                .eq(StockInventory::getProductModelId, stockInRecord.getProductModelId())
                                .eq(StockInventory::getBatchNo, stockInRecord.getBatchNo())
                );
                if (stockInventory == null) {
                    throw new BaseException("库存记录中没有对应的产品,无法删除!!!");
                } else {
@@ -95,7 +99,10 @@
                    stockInventoryMapper.updateSubtractStockInventory(stockInRecordDto);
                }
            } else if (stockInRecord.getType().equals("1")) {
                StockUninventory stockUninventory = stockUninventoryMapper.selectOne(new LambdaQueryWrapper<StockUninventory>().eq(StockUninventory::getProductModelId, stockInRecord.getProductModelId()));
                StockUninventory stockUninventory = stockUninventoryMapper.selectOne(
                        new LambdaQueryWrapper<StockUninventory>()
                                .eq(StockUninventory::getProductModelId, stockInRecord.getProductModelId())
                                .eq(StockUninventory::getBatchNo, stockInRecord.getBatchNo()));
                if (stockUninventory == null) {
                    throw new BaseException("库存记录中没有对应的产品,无法删除!!!");
                } else {
src/main/resources/mapper/stock/StockInRecordMapper.xml
@@ -3,6 +3,17 @@
<mapper namespace="com.ruoyi.stock.mapper.StockInRecordMapper">
    <select id="listPage" resultType="com.ruoyi.stock.dto.StockInRecordDto">
        WITH RECURSIVE product_tree AS (
        SELECT id
        FROM product
        WHERE id = #{params.topParentProductId}
        UNION ALL
        SELECT p.id
        FROM product p
        INNER JOIN product_tree pt ON p.parent_id = pt.id
        )
        SELECT
        sir.*,
        p.product_name AS product_name,
@@ -17,7 +28,6 @@
        LEFT JOIN product p2 ON p.parent_id = p2.id
        LEFT JOIN sys_user AS u ON sir.create_user = u.user_id
        <where>
            AND p2.product_name != '半成品'
            <if test="params.timeStr != null and params.timeStr != ''">
                AND sir.create_time LIKE CONCAT('%', #{params.timeStr}, '%')
            </if>
@@ -30,11 +40,25 @@
            <if test="params.recordType != null and params.recordType != ''">
                AND sir.record_type = #{params.recordType}
            </if>
            <if test="params.topParentProductId != null and params.topParentProductId > 0">
                AND p.id in (select id from product_tree)
            </if>
        </where>
        ORDER BY
        sir.id DESC
    </select>
    <select id="listStockInRecordExportData" resultType="com.ruoyi.stock.execl.StockInRecordExportData">
        WITH RECURSIVE product_tree AS (
        SELECT id
        FROM product
        WHERE id = #{params.topParentProductId}
        UNION ALL
        SELECT p.id
        FROM product p
        INNER JOIN product_tree pt ON p.parent_id = pt.id
        )
        SELECT
        sir.*,
        p.product_name as product_name,
@@ -59,6 +83,9 @@
            <if test="params.recordType != null and params.recordType != ''">
                and sir.record_type = #{params.recordType}
            </if>
            <if test="params.topParentProductId != null and params.topParentProductId > 0">
                and p.id in (select id from product_tree)
            </if>
        </where>
        order by sir.id desc
    </select>