liding
7 天以前 53a8551e694f5ecaf41d3b94e43dd495abfe123c
src/main/resources/mapper/stock/StockInventoryMapper.xml
@@ -16,12 +16,16 @@
    <update id="updateAddStockInventory">
        update stock_inventory
        <set>
            <if test="ew.productId != null">
                product_id = #{ew.productId},
            </if>
            <if test="ew.qualitity != null">
                qualitity = qualitity + #{ew.qualitity},
            </if>
            <if test="ew.version != null">
                version = version + 1,
            </if>
            <if test="ew.remark != null and ew.remark !=''">
                remark = #{ew.remark},
            </if>
@@ -51,30 +55,57 @@
        </set>
        where product_model_id = #{ew.productModelId} and qualitity >= #{ew.qualitity}
    </update>
    <select id="pagestockInventory" resultType="com.ruoyi.stock.dto.StockInventoryDto">
        select si.id,
        si.qualitity,
        COALESCE(si.locked_quantity, 0) as locked_quantity,
        SELECT * FROM (
        SELECT
        si.id,
        si.qualitity as 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,
        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,
        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>
        p.product_name,
        p1.product_name AS parent_name,
        p1.id AS parent_id,
        si.product_id AS productId
        FROM stock_inventory si
        INNER JOIN product_model pm ON si.product_model_id = pm.id
        INNER JOIN product p ON pm.product_id = p.id
        INNER JOIN product p1 ON p.parent_id = p1.id AND p1.product_name != '半成品'
        LEFT JOIN (
        SELECT product_model_id, SUM(net_weight) AS total_net_weight
        FROM stock_in_record
        GROUP BY product_model_id
        ) sir ON si.product_model_id = sir.product_model_id
        LEFT JOIN (
        SELECT product_model_id, SUM(net_weight) AS total_net_weight
        FROM stock_out_record
        GROUP BY product_model_id
        ) sor ON si.product_model_id = sor.product_model_id
        <where>
            1=1
            <if test="ew.parentId != null and ew.parentId != ''">
                AND p.parent_id = #{ew.parentId}
            </if>
            <if test="ew.productName != null and ew.productName != ''">
                AND p.product_name LIKE CONCAT('%', #{ew.productName}, '%')
            </if>
        </where>
        ) temp
        WHERE qualitity != 0
    </select>
    <select id="listStockInventoryExportData" resultType="com.ruoyi.stock.execl.StockInventoryExportData">
        select si.qualitity,
        -- 当前净重 = 入库净重 - 出库净重
        (COALESCE(sir.total_net_weight, 0) - COALESCE(sor.total_net_weight, 0)) AS net_weight,
        pm.model,
        pm.unit,
        p.product_name,
@@ -85,24 +116,70 @@
        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 (
        SELECT product_model_id, SUM(net_weight) AS total_net_weight
        FROM stock_in_record
        GROUP BY product_model_id
        ) sir ON si.product_model_id = sir.product_model_id
        LEFT JOIN (
        SELECT product_model_id, SUM(net_weight) AS total_net_weight
        FROM stock_out_record
        GROUP BY product_model_id
        ) sor ON si.product_model_id = sor.product_model_id
        where 1 = 1
        <if test="ew.productName != null and ew.productName !=''">
            and p.product_name like concat('%',#{ew.productName},'%')
        </if>
    </select>
    <select id="stockInventoryPage" resultType="com.ruoyi.stock.dto.StockInRecordDto">
        select sir.*,si.qualitity as current_stock,
        select
        sir.*,
        si.qualitity as current_stock,
        pm.model,
        pm.unit,
        p.product_name,
        su.nick_name as create_by
        from
        stock_in_record sir
        left join stock_inventory si on sir.product_model_id = si.product_model_id
        left join product_model pm on sir.product_model_id = pm.id
        left join product p on pm.product_id = p.id
        left join sys_user su on sir.create_user = su.user_id
        su.nick_name as create_by,
        -- 当前净重 = 入库净重 - 出库净重
        IFNULL(inWeight.total_in_weight,0) - IFNULL(outWeight.total_out_weight,0) as current_weight
        from stock_in_record sir
        left join stock_inventory si
        on sir.product_model_id = si.product_model_id
        left join product_model pm
        on sir.product_model_id = pm.id
        left join product p
        on pm.product_id = p.id
        left join sys_user su
        on sir.create_user = su.user_id
        -- 入库净重统计
        left join (
        select
        product_model_id,
        sum(net_weight) as total_in_weight
        from stock_in_record
        group by product_model_id
        ) inWeight
        on sir.product_model_id = inWeight.product_model_id
        -- 出库净重统计
        left join (
        select
        product_model_id,
        sum(net_weight) as total_out_weight
        from stock_out_record
        group by product_model_id
        ) outWeight
        on sir.product_model_id = outWeight.product_model_id
        <where>
            1=1
            <if test="ew.reportDate != null">
                and sir.create_time >= #{ew.reportDate}
                and sir.create_time &lt; DATE_ADD(#{ew.reportDate}, INTERVAL 1 DAY)
@@ -123,7 +200,8 @@
        p.product_name,
        MAX(current_inventory) as current_stock,
        SUM(CASE WHEN record_type = 'in' THEN amount ELSE 0 END) as total_stock_in,
        SUM(CASE WHEN record_type = 'out' THEN amount ELSE 0 END) as total_stock_out
        SUM(CASE WHEN record_type = 'out' THEN amount ELSE 0 END) as total_stock_out,
        (COALESCE(in_weight.total_net_weight, 0) - COALESCE(out_weight.total_net_weight, 0)) AS current_weight
        FROM (
        SELECT
        product_model_id,
@@ -171,6 +249,42 @@
        </where>
        GROUP BY product_model_id
        ) combined_data
        -- 左连接入库净重合计
        LEFT JOIN (
        SELECT
        product_model_id,
        SUM(net_weight) AS total_net_weight
        FROM stock_in_record
        <where>
            type = 0
            <if test="ew.startMonth != null">
                and create_time &gt;= #{ew.startMonth}
            </if>
            <if test="ew.endMonth != null">
                and create_time &lt;= #{ew.endMonth}
            </if>
        </where>
        GROUP BY product_model_id
        ) in_weight ON combined_data.product_model_id = in_weight.product_model_id
        -- 左连接出库净重合计
        LEFT JOIN (
        SELECT
        product_model_id,
        SUM(net_weight) AS total_net_weight
        FROM stock_out_record
        <where>
            type = 0
            <if test="ew.startMonth != null">
                and create_time &gt;= #{ew.startMonth}
            </if>
            <if test="ew.endMonth != null">
                and create_time &lt;= #{ew.endMonth}
            </if>
        </where>
        GROUP BY product_model_id
        ) out_weight ON combined_data.product_model_id = out_weight.product_model_id
        LEFT JOIN product_model pm ON pm.id = combined_data.product_model_id
        LEFT JOIN product p ON p.id = pm.product_id
        <where>
@@ -184,7 +298,9 @@
        GROUP BY
        pm.model,
        pm.unit,
        p.product_name
        p.product_name,
        in_weight.total_net_weight,
        out_weight.total_net_weight
    </select>
    <select id="selectTotal" resultType="java.math.BigDecimal">
        select ifnull(sum(qualitity), 0)