<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.ruoyi.quote.mapper.QuoteMapper">

    <resultMap type="MaterialDto" id="MaterialResult">
        <result property="uid"    column="uid"    />
        <result property="model"    column="model"    />
        <result property="specification"    column="specification"    />
        <result property="voltLevel"    column="voltLevel"    />
        <result property="measureUnit"    column="measureUnit"    />
        <result property="prodCategory"    column="prodCategory"    />
        <result property="matCostPrice"    column="matCostPrice"    />
        <result property="manuCost"    column="manuCost"    />
        <result property="wdFSurcharge"    column="wdFSurcharge"    />
        <result property="redBookPrice"    column="redBookPrice"    />
        <result property="rbFacPrice"    column="rbFacPrice"    />
        <result property="redBookCost"    column="redBookCost"    />
    </resultMap>

    <!--<select id="selectMaterialListByParam" resultType="com.ruoyi.quote.domain.MaterialDto">
        select a.material_id AS uid,a.material_xingh AS model,a.material_guig AS specification,
               a.material_diany AS voltLevel,a.material_dw AS measureUnit,c.type_name As prodCategory,
               b.price matCostPrice, d.factory_total_ratio/100 manuCost,d.factory_pj_ratio/100 wdFSurcharge
        from c_material a
        left join
            (select a.cost_material_id,sum((isnull(a.cost_cl_qty,0)+isnull(a.cost_cl_qty_2,0))*b.material_price) price
            from c_material_cost a
            left join c_yl_material b on a.cost_cl_id=b.material_no
            where b.material_state='0'
            group by a.cost_material_id
            )b on a.material_id=b.cost_material_id
        left join c_material_type_factory c on a.material_type_id = c.type_no
        left join c_material_type e on e.type_no = c.type_no
        left join c_factory d on d.factory_no = c.factory_id
        <where>
            and a.material_state='0' and e.type_state ='0'
            <if test="precMaterialName != null  and precMaterialName != ''"> and a.material_xingh like concat('', #{precMaterialName}, '%')</if>
            <if test="vagueMaterialName != null  and vagueMaterialName != ''"> and a.material_xingh like concat('%', #{vagueMaterialName}, '%')</if>
            <if test="vagueModel != null  and vagueModel != ''"> and a.material_guig like concat('%', #{vagueModel}, '%')</if>

        </where>

    </select>-->

    <select id="selectMaterialListByParam" resultType="com.ruoyi.quote.domain.MaterialDto">
        select a.material_id AS uid, a.material_xingh AS model,a.material_guig AS specification,a.material_diany AS voltLevel,
        a.material_dw AS measureUnit,c.type_name AS prodCategory,
        b.price matCostPrice, d.factory_total_ratio/100 manuCost,d.factory_pj_ratio/100 wdFSurcharge,
        cc.material_rb_price AS redBookPrice,cc.material_rb_price*0.8 rbFacPrice, dd.material_cb_price AS redBookCost
        from c_material a
        left join
        (select a.cost_material_id,sum((isnull(a.cost_cl_qty,0)+isnull(a.cost_cl_qty_2,0))*b.material_price) price from c_material_cost a
        left join c_yl_material b on a.cost_cl_id=b.material_no
        where b.material_state='0'
        group by a.cost_material_id
        )b on a.material_id=b.cost_material_id
        left join c_material_type_factory c on a.material_type_id = c.type_no
        left join c_material_type e on e.type_no = c.type_no
        left join c_factory d on d.factory_no = c.factory_id
        left join(select material_xingh,material_guig,material_diany,convert(decimal(18,2),material_rb_price ) material_rb_price from c_rb_product_price
        )as cc on cc.material_xingh=a.material_xingh and cc.material_guig = a.material_guig
        and  cc.material_diany = a.material_diany
        left join(select material_xingh,material_guig,material_diany,convert(decimal(18,2),material_cb_price) material_cb_price from c_rb_productbase_price
        )as dd on dd.material_xingh=a.material_xingh and dd.material_guig = a.material_guig
        and  dd.material_diany= a.material_diany
        <where>
            a.material_state='0' and e.type_state ='0'
            <if test="precMaterialName != null  and precMaterialName != ''"> and a.material_xingh like concat('', #{precMaterialName}, '%')</if>
            <if test="vagueMaterialName != null  and vagueMaterialName != ''"> and a.material_xingh like concat('%', #{vagueMaterialName}, '%')</if>
            <if test="vagueModel != null  and vagueModel != ''"> and a.material_guig like concat('%', #{vagueModel}, '%')</if>
        </where>
        ORDER BY a.material_id

    </select>

    <select id="queryRedBCostByParams" resultType="com.ruoyi.quote.domain.CalculateRBParamDto">
        SELECT a.成本价格 AS redBookCost, a.型号 AS model, a.规格 AS specification, a.电压等级 AS voltLevel
        FROM [REDBOOK].[RedBook].[dbo].rb_productbase_price a
        JOIN (VALUES
        <foreach collection="params" item="param" open="(" separator="),(" close=")">
            #{param.redBookVer}, #{param.model}, #{param.specification}, #{param.voltLevel}
        </foreach>
        ) AS v(version_uid_0, 型号, 规格, 电压等级)
        ON a.version_uid_0 = v.version_uid_0
        AND a.型号 = v.型号
        AND a.规格 = v.规格
        AND a.电压等级 = v.电压等级;
    </select>

    <select id="queryRedBPriceByParams" resultType="com.ruoyi.quote.domain.CalculateRBParamDto">
        select a.红本价格 AS redBookPrice, a.型号 AS model, a.规格 AS specification, a.电压等级 AS voltLevel
        from [REDBOOK].[RedBook].[dbo].rb_product_price  a
        JOIN (VALUES
        <foreach collection="params" item="param" open="(" separator="),(" close=")">
            #{param.redBookVer}, #{param.model}, #{param.specification}, #{param.voltLevel}
        </foreach>
        ) AS v(version_uid_0, 型号, 规格, 电压等级)
        ON a.version_uid_0 = v.version_uid_0
        AND a.型号 = v.型号
        AND a.规格 = v.规格
        AND a.电压等级 = v.电压等级;
    </select>

    <select id="queryRedBookVer" resultType="String">
        SELECT MAX([uid_0]) AS redBookVer
        FROM [RedBook].[dbo].[rb_productVersion]
        WHERE [sta_0] IN ('0', '1');
    </select>

</mapper>
