liding
2 天以前 9bad4cfca9b9f51f433bf0caf5b5d166d1fc55a7
src/main/resources/mapper/stock/StockInventoryMapper.xml
@@ -52,32 +52,79 @@
        where product_model_id = #{ew.productModelId} and qualitity >= #{ew.qualitity}
    </update>
    <select id="pagestockInventory" resultType="com.ruoyi.stock.dto.StockInventoryDto">
        select si.id,
        WITH RECURSIVE get_root AS (
        SELECT
        id,
        parent_id,
        id AS root_id
        FROM product
        WHERE parent_id IS NULL  -- 根节点
        UNION ALL
        SELECT
        p.id,
        p.parent_id,
        gr.root_id
        FROM product p
        INNER JOIN get_root gr ON p.parent_id = gr.id
        )
        SELECT
        si.id,
        si.qualitity,
        COALESCE(si.locked_quantity, 0) as locked_quantity,
        COALESCE(si.locked_quantity, 0) AS locked_quantity,
        si.product_model_id,
        si.create_time,
        si.update_time,
        COALESCE(si.warn_num, 0) as warn_num,
        COALESCE(si.warn_num, 0) AS warn_num,
        si.version,
        (si.qualitity - COALESCE(si.locked_quantity, 0)) as un_locked_quantity,
        (si.qualitity - COALESCE(si.locked_quantity, 0)) AS un_locked_quantity,
        pm.model,
        si.remark,
        pm.unit,
        pm.uid_no as uidNo,
        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 1 = 1
        <if test="ew.productName != null and ew.productName !=''">
            and p.product_name like concat('%',#{ew.productName},'%')
        </if>
        pm.uid_no AS uidNo,
        p.product_name,
        si.batch_no,
        si.customer,
        rp.product_name AS root_product_name,
        si.production_date
        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
        LEFT JOIN get_root gr ON gr.id = p.id
        LEFT JOIN product rp ON rp.id = gr.root_id
        <where>
            <if test="ew.productName != null and ew.productName != ''">
                AND p.product_name LIKE CONCAT('%', #{ew.productName}, '%')
            </if>
            <if test="ew.model != null and ew.model != ''">
                AND pm.model LIKE CONCAT('%', #{ew.model}, '%')
            </if>
            <if test="ew.uidNo != null and ew.uidNo != ''">
                AND pm.uid_no LIKE CONCAT('%', #{ew.uidNo}, '%')
            </if>
            <if test="ew.batchNo != null and ew.batchNo != ''">
                AND si.batch_no LIKE CONCAT('%', #{ew.batchNo}, '%')
            </if>
            <if test="ew.productScope != null and ew.productScope != ''">
                <choose>
                    <when test="ew.productScope == '成品'">
                        AND rp.product_name = '成品'
                    </when>
                    <otherwise>
                        AND rp.product_name != '成品'
                    </otherwise>
                </choose>
            </if>
        </where>
    </select>
    <select id="listStockInventoryExportData" resultType="com.ruoyi.stock.execl.StockInventoryExportData">
        select si.qualitity,
        pm.model,
        pm.unit,
        si.batchNo,
        pm.uid_no,
        si.production_date,
        si.customer,
        p.product_name,
        coalesce(si.warn_num, 0) as warn_num,
        coalesce(si.locked_quantity, 0) as locked_quantity,
@@ -257,4 +304,75 @@
        ORDER BY pm.id
    </select>
    <select id="getMaterials" resultType="com.ruoyi.stock.dto.StockInventoryDto">
        SELECT
        si.id,
        si.qualitity,
        COALESCE(si.locked_quantity, 0) AS locked_quantity,
        si.product_model_id,
        si.create_time,
        si.update_time,
        COALESCE(si.warn_num, 0) AS warn_num,
        si.version,
        (si.qualitity - COALESCE(si.locked_quantity, 0)) AS un_locked_quantity,
        pm.model,
        si.remark,
        pm.unit,
        pm.uid_no AS uidNo,
        p.product_name,
        p1.product_name AS parentName,
        si.batch_no,
        si.customer
        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
        LEFT JOIN product p1 ON p1.id = p.parent_id
        <where>
            <if test="ew.batchNo != null and ew.batchNo !=''">
                and si.batch_no like concat('%',#{ew.batchNo},'%')
            </if>
            <if test="ew.customer != null and ew.customer !=''">
                and si.customer like concat('%',#{ew.customer},'%')
            </if>
        </where>
    </select>
    <select id="getStockInventoryAll" resultType="com.ruoyi.stock.dto.StockInventoryDto">
        SELECT
            si.id,
            si.qualitity,
            COALESCE(si.locked_quantity, 0) AS locked_quantity,
            si.product_model_id,
            si.create_time,
            si.update_time,
            COALESCE(si.warn_num, 0) AS warn_num,
            si.version,
            (si.qualitity - COALESCE(si.locked_quantity, 0)) AS un_locked_quantity,
            pm.id as productModelId,
            pm.model,
            si.remark,
            pm.unit,
            pm.uid_no AS uidNo,
            p.id AS product_id,
            p.product_name,
            p.parent_id AS parent_id,
            p1.product_name AS parentName,
            si.batch_no,
            si.customer,
            si.production_date,
            pm.validity_period
            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
            LEFT JOIN product p1 ON p1.id = p.parent_id
        <where>
            <if test="ew.productName != null and ew.productName != ''">
                AND p.product_name LIKE CONCAT('%', #{ew.productName}, '%')
            </if>
        </where>
    </select>
</mapper>