buhuazhen
5 小时以前 b5c3050f32742a060b970c1390239434a70e2a44
feat(stock): 添加rootName字段支持产品树根名称查询

- 在多个DTO中新增rootName字段用于存储根产品名称
- 修改StockInRecordMapper、StockInventoryMapper、StockOutRecordMapper和StockUninventoryMapper
- 使用递归CTE查询构建产品树,获取根产品信息
- 在相关SQL查询中关联root_map实现rootName字段的数据填充
- 支持通过rootName参数进行根产品名称过滤查询
已修改8个文件
102 ■■■■■ 文件已修改
src/main/java/com/ruoyi/stock/dto/StockInRecordDto.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/stock/dto/StockInventoryDto.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/stock/dto/StockOutRecordDto.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/stock/dto/StockUninventoryDto.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/stock/StockInRecordMapper.xml 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/stock/StockInventoryMapper.xml 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/stock/StockOutRecordMapper.xml 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/stock/StockUninventoryMapper.xml 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/stock/dto/StockInRecordDto.java
@@ -26,4 +26,6 @@
    //现存量
    private String currentStock;
    private String rootName;
}
src/main/java/com/ruoyi/stock/dto/StockInventoryDto.java
@@ -39,4 +39,6 @@
    private BigDecimal currentStock;
    private BigDecimal  unLockedQuantity;
    private String rootName;
}
src/main/java/com/ruoyi/stock/dto/StockOutRecordDto.java
@@ -25,4 +25,6 @@
    private String timeStr;
    private String createBy;
    private String rootName;
}
src/main/java/com/ruoyi/stock/dto/StockUninventoryDto.java
@@ -19,4 +19,6 @@
    private Long recordId;
    private BigDecimal unLockedQuantity;
    private String rootName;
}
src/main/resources/mapper/stock/StockInRecordMapper.xml
@@ -3,15 +3,36 @@
<mapper namespace="com.ruoyi.stock.mapper.StockInRecordMapper">
    <select id="listPage" resultType="com.ruoyi.stock.dto.StockInRecordDto">
        WITH RECURSIVE cte AS (
        SELECT id, product_name, parent_id, id AS current_id
        FROM product
        UNION ALL
        SELECT c.id, c.product_name, p.parent_id, p.id
        FROM cte c
        JOIN product p ON c.parent_id = p.id
        ),
        root_map AS (
        SELECT
        c.id,
        p.id AS root_id,
        p.product_name AS root_name
        FROM cte c
        JOIN product p ON c.current_id = p.id
        WHERE p.parent_id IS NULL
        )
        SELECT
        sir.*,
        p.product_name as product_name,
        pm.model,
        pm.unit,
        rm.root_name as root_name,
        u.nick_name as createBy
        FROM stock_in_record as sir
        LEFT JOIN product_model as pm on sir.product_model_id = pm.id
        LEFT JOIN product as p on pm.product_id = p.id
        LEFT JOIN root_map rm ON pm.product_id = rm.id
        LEFT JOIN sys_user as u on sir.create_user = u.user_id
        <where>
            <if test="params.timeStr != null and params.timeStr != ''">
@@ -26,6 +47,9 @@
            <if test="params.recordType != null and params.recordType != ''">
                and sir.record_type = #{params.recordType}
            </if>
            <if test="params.rootName != null and params.rootName != ''">
                and rm.root_name = #{params.rootName}
            </if>
        </where>
        order by sir.id desc
    </select>
src/main/resources/mapper/stock/StockInventoryMapper.xml
@@ -52,6 +52,25 @@
        where product_model_id = #{ew.productModelId} and qualitity >= #{ew.qualitity}
    </update>
    <select id="pagestockInventory" resultType="com.ruoyi.stock.dto.StockInventoryDto">
        WITH RECURSIVE cte AS (
        SELECT id, product_name, parent_id, id AS current_id
        FROM product
        UNION ALL
        SELECT c.id, c.product_name, p.parent_id, p.id
        FROM cte c
        JOIN product p ON c.parent_id = p.id
        ),
        root_map AS (
        SELECT
        c.id,
        p.id AS root_id,
        p.product_name AS root_name
        FROM cte c
        JOIN product p ON c.current_id = p.id
        WHERE p.parent_id IS NULL
        )
        select si.id,
        si.qualitity,
        COALESCE(si.locked_quantity, 0) as locked_quantity,
@@ -67,11 +86,15 @@
        p.product_name
        from stock_inventory si
        left join product_model pm on si.product_model_id = pm.id
        LEFT JOIN root_map rm ON pm.product_id = rm.id
        left join product p on pm.product_id = p.id
        where 1 = 1
        <if test="ew.productName != null and ew.productName !=''">
            and p.product_name like concat('%',#{ew.productName},'%')
        </if>
        <if test="ew.rootName != null and ew.rootName != ''">
            and rm.root_name = #{ew.rootName}
        </if>
    </select>
    <select id="listStockInventoryExportData" resultType="com.ruoyi.stock.execl.StockInventoryExportData">
        select si.qualitity,
src/main/resources/mapper/stock/StockOutRecordMapper.xml
@@ -18,15 +18,36 @@
    </resultMap>
    <select id="listPage" resultType="com.ruoyi.stock.dto.StockOutRecordDto">
        WITH RECURSIVE cte AS (
        SELECT id, product_name, parent_id, id AS current_id
        FROM product
        UNION ALL
        SELECT c.id, c.product_name, p.parent_id, p.id
        FROM cte c
        JOIN product p ON c.parent_id = p.id
        ),
        root_map AS (
        SELECT
        c.id,
        p.id AS root_id,
        p.product_name AS root_name
        FROM cte c
        JOIN product p ON c.current_id = p.id
        WHERE p.parent_id IS NULL
        )
        SELECT
        sor.*,
        p.product_name as productName,
        pm.model,
        pm.unit,
        rm.root_name as rootName,
        u.nick_name as createBy
        FROM stock_out_record as sor
        LEFT JOIN product_model as pm on sor.product_model_id = pm.id
        LEFT JOIN product as p on pm.product_id = p.id
        LEFT JOIN root_map rm ON pm.product_id = rm.id
        LEFT JOIN sys_user as u on sor.create_user = u.user_id
        <where>
            <if test="params.timeStr != null and params.timeStr != ''">
@@ -41,6 +62,9 @@
            <if test="params.recordType != null and params.recordType != ''">
                and sor.record_type = #{params.recordType}
            </if>
            <if test="params.rootName != null and params.rootName != ''">
                and rm.root_name = #{params.rootName}
            </if>
        </where>
        order by sor.id desc
    </select>
src/main/resources/mapper/stock/StockUninventoryMapper.xml
@@ -44,6 +44,25 @@
        where product_model_id = #{ew.productModelId}
    </update>
    <select id="pageStockUninventory" resultType="com.ruoyi.stock.dto.StockUninventoryDto">
        WITH RECURSIVE cte AS (
        SELECT id, product_name, parent_id, id AS current_id
        FROM product
        UNION ALL
        SELECT c.id, c.product_name, p.parent_id, p.id
        FROM cte c
        JOIN product p ON c.parent_id = p.id
        ),
        root_map AS (
        SELECT
        c.id,
        p.id AS root_id,
        p.product_name AS root_name
        FROM cte c
        JOIN product p ON c.current_id = p.id
        WHERE p.parent_id IS NULL
        )
        select su.id,
        su.qualitity,
        COALESCE(su.locked_quantity, 0) as locked_quantity,
@@ -58,11 +77,15 @@
        p.product_name
        from stock_uninventory su
        left join product_model pm on su.product_model_id = pm.id
        LEFT JOIN root_map rm ON pm.product_id = rm.id
        left join product p on pm.product_id = p.id
        where 1 = 1
        <if test="ew.productName != null and ew.productName !=''">
            and p.product_name like concat('%',#{ew.productName},'%')
        </if>
        <if test="ew.rootName != null and ew.rootName != ''">
            and rm.root_name = #{ew.rootName}
        </if>
    </select>
    <select id="listStockInventoryExportData" resultType="com.ruoyi.stock.execl.StockUnInventoryExportData">
        select su.*,