2 天以前 684e4306a08feeae188070f264148e6765da8dcf
src/main/resources/mapper/stock/StockInventoryMapper.xml
@@ -86,6 +86,48 @@
        </if>
    </select>
    <!-- 报废品选料:只查产品树「危废处置次生危废」大类(含其所有子节点)下的合格库存,带批号。
         大类名按业务口径写死在这里,改口径只需改这一处。
         该查询以 WITH 开头,而数据权限拦截器只处理 select 开头的 SQL,因此不会追加 dept_id/create_user,
         与「库存是共用基础数据、选料不应受建单人限制」的口径一致;保留 /*data_scope*/ 标记让这个意图显式可读。
         不影响原 pagestockInventory -->
    <select id="selectScrapStockPage" resultType="com.ruoyi.stock.dto.StockInventoryDto">
        WITH RECURSIVE scrap_product_tree AS (
            SELECT id
            FROM product
            WHERE product_name = '危废处置次生危废'
            UNION ALL
            SELECT p.id
            FROM product p
            INNER JOIN scrap_product_tree t ON p.parent_id = t.id
        )
        select /*data_scope*/ si.id,
        si.product_model_id,
        si.batch_no,
        si.qualitity,
        COALESCE(si.locked_quantity, 0) as locked_quantity,
        (si.qualitity - COALESCE(si.locked_quantity, 0)) as un_locked_quantity,
        si.remark,
        si.version,
        pm.model,
        pm.unit,
        p.product_name
        from stock_inventory si
        left join product_model pm on si.product_model_id = pm.id
        left join product p on pm.product_id = p.id
        where pm.product_id in (select id from scrap_product_tree)
        <if test="ew.productModelId != null">
            and si.product_model_id = #{ew.productModelId}
        </if>
        <if test="ew.batchNo != null and ew.batchNo != ''">
            and si.batch_no like concat('%',#{ew.batchNo},'%')
        </if>
        <if test="ew.productName != null and ew.productName != ''">
            and p.product_name like concat('%',#{ew.productName},'%')
        </if>
        order by si.update_time desc
    </select>
    <select id="pageListCombinedStockInventory" resultType="com.ruoyi.stock.dto.StockInventoryDto">
        WITH RECURSIVE product_tree AS (
        SELECT id