5 天以前 92d8d06d8ae38c407715a5e9389691b446413e0a
src/main/resources/mapper/basic/ProductModelMapper.xml
@@ -19,17 +19,124 @@
        from product_model pm
        left join product p on pm.product_id = p.id
        <where>
            <if test="c.model != null || c.model != ''">
                and pm.model = like  concat('%',#{c.model},'%')
            <if test="c.model != null and c.model != ''">
                and pm.model  like  concat('%',#{c.model},'%')
            </if>
            <if test="c.productName != null || c.productName != ''">
                and p.product_name = like  concat('%',#{c.productName},'%')
            </if>
            <if test="c.speculativeTradingName != null || c.speculativeTradingName != ''">
                and pm.speculative_trading_name like  concat('%',#{c.speculativeTradingName},'%')
            <if test="c.productName != null and c.productName != ''">
                and p.product_name  like  concat('%',#{c.productName},'%')
            </if>
        </where>
        order by  pm.id
    </select>
    <select id="selectLatestRecord" resultType="com.ruoyi.basic.pojo.ProductModel">
            SELECT * FROM product_model
            ORDER BY create_time DESC, id DESC
            LIMIT 1
    </select>
    <select id="listPageProductionStock" resultType="com.ruoyi.basic.pojo.ProductModel">
        SELECT
        pm.id,
        pm.product_id,
        pm.model,
        pm.unit,
        p.product_name,
        GREATEST(s.last_in_time, o.last_out_time) AS create_time,
        COALESCE(s.inboundNum, 0) AS inboundNum,
        COALESCE(o.outboundNum, 0) AS outboundNum,
        COALESCE(s.inboundNum, 0) - COALESCE(o.outboundNum, 0) AS stockQuantity
        FROM product_model pm
        LEFT JOIN product p ON pm.product_id = p.id
        -- 入库汇总
        LEFT JOIN (
        SELECT
        product_model_id,
        SUM(inbound_num) AS inboundNum,
        MAX(create_time) AS last_in_time
        FROM procurement_record_storage
        <where>
            <if test="req.timeStr != null and req.timeStr != ''">
                AND create_time &gt;= #{req.timeStr}
                AND create_time &lt; DATE_ADD(#{req.timeStr}, INTERVAL 1 DAY)
            </if>
        </where>
        GROUP BY product_model_id
        ) s ON s.product_model_id = pm.id
        -- 出库汇总
        LEFT JOIN (
        SELECT
        product_model_id,
        SUM(inbound_num) AS outboundNum,
        MAX(create_time) AS last_out_time
        FROM procurement_record_out
        <where>
            <if test="req.timeStr != null and req.timeStr != ''">
                AND create_time &gt;= #{req.timeStr}
                AND create_time &lt; DATE_ADD(#{req.timeStr}, INTERVAL 1 DAY)
            </if>
        </where>
        GROUP BY product_model_id
        ) o ON o.product_model_id = pm.id
        <where>
            <if test="req.timeStr != null and req.timeStr != ''">
                AND (s.product_model_id IS NOT NULL OR o.product_model_id IS NOT NULL)
            </if>
            <if test="req.productCategory != null and req.productCategory != ''">
                AND EXISTS (
                SELECT 1
                FROM sales_ledger_product slp
                WHERE slp.product_id = p.id
                AND slp.product_category LIKE CONCAT('%', #{req.productCategory}, '%')
                )
            </if>
        </where>
        ORDER BY pm.id DESC
    </select>
    <select id="getProductAndModelList" resultType="java.util.Map">
        select p.id as id,
               pm.id as modelId,
               p.product_name as productName ,
               pm.model as  model
        from product_model pm
        left join product p on p.id = pm.product_id
        order by p.id,pm.id desc
    </select>
    <select id="listPage" resultType="com.ruoyi.basic.dto.ProductAndModelDto">
        select pm.id as id,
               p.id as productId,
               p.product_name as productName ,
               pm.model as  model,
               pm.unit as unit,
               pm.drawing_number as drawingNumber,
               pm.product_type as productType,
               pr.id as routeId,
               pr.process_route_name as routeName
        from product_model pm
                left join product p on p.id = pm.product_id
                left join process_route pr on pr.id = pm.route_id
        <where>
            <if test="req.productName != null and req.productName != ''">
                and p.product_name like concat('%',#{req.productName},'%')
            </if>
            <if test="req.model != null and req.model != ''">
                and pm.model like concat('%',#{req.model},'%')
            </if>
            <if test="req.unit != null and req.unit != ''">
                and pm.unit like concat('%',#{req.unit},'%')
            </if>
            <if test="req.drawingNumber != null and req.drawingNumber != ''">
                and pm.drawing_number like concat('%',#{req.drawingNumber},'%')
            </if>
            <if test="req.productType != null and req.productType != ''">
                and pm.product_type = #{req.productType}
            </if>
        </where>
        order by pm.id desc
    </select>
</mapper>