SupplierQuotationDealMapper.xml 4.45 KB
<?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.lframework.xingyun.sc.procurement.mappers.quotation.SupplierQuotationDealMapper">

    <resultMap id="SupplierQuotationDeal" type="com.lframework.xingyun.sc.procurement.entity.SupplierQuotationDeal">
        <id column="id" property="id"/>
        <result column="project_id" property="projectId"/>
        <result column="project_code" property="projectCode"/>
        <result column="project_name" property="projectName"/>
        <result column="quote_time" property="quoteTime"/>
        <result column="supplier_id" property="supplierId"/>
        <result column="supplier_name" property="supplierName"/>
        <result column="product_id" property="productId"/>
        <result column="product_name" property="productName"/>
        <result column="product_code" property="productCode"/>
        <result column="quantity" property="quantity"/>
        <result column="price" property="price"/>
        <result column="purchase_department" property="purchaseDepartment"/>
        <result column="purchase_department_name" property="purchaseDepartmentName"/>
        <result column="principal_id" property="principalId"/>
        <result column="principal_name" property="principalName"/>
        <result column="assign_time" property="assignTime"/>
        <result column="create_by_id" property="createById"/>
        <result column="create_by" property="createBy"/>
        <result column="update_by_id" property="updateById"/>
        <result column="update_by" property="updateBy"/>
        <result column="create_time" property="createTime"/>
        <result column="update_time" property="updateTime"/>
    </resultMap>

    <sql id="SupplierQuotationDealSql">
        SELECT
            tb.id,
            tb.project_id,
            tb.project_code,
            tb.project_name,
            tb.quote_time,
            tb.supplier_id,
            tb.supplier_name,
            tb.product_id,
            br.product_name,
            br.code AS product_code,
            tb.quantity,
            tb.price,
            tb.purchase_department,
            sd.name AS purchase_department_name,
            tb.principal_id,
            tb.principal_name,
            tb.assign_time,
            tb.create_by_id,
            tb.create_by,
            tb.update_by_id,
            tb.update_by,
            tb.create_time,
            tb.update_time
        FROM procurement_supplier_quotation_deal tb
        LEFT JOIN base_data_breed_relationship br ON br.id = tb.product_id
        LEFT JOIN sys_dept sd ON sd.id = tb.purchase_department
    </sql>

    <select id="findById" resultMap="SupplierQuotationDeal">
        <include refid="SupplierQuotationDealSql"/>
        WHERE tb.id = #{id}
    </select>

    <select id="findByProjectAndSupplier" resultMap="SupplierQuotationDeal">
        <include refid="SupplierQuotationDealSql"/>
        WHERE tb.project_id = #{projectId}
          AND tb.supplier_id = #{supplierId}
    </select>

    <select id="query" resultMap="SupplierQuotationDeal">
        <include refid="SupplierQuotationDealSql"/>
        <where>
            <if test="vo.projectName != null and vo.projectName != ''">
                AND tb.project_name LIKE CONCAT('%', #{vo.projectName}, '%')
            </if>
            <if test="vo.projectCode != null and vo.projectCode != ''">
                AND tb.project_code LIKE CONCAT('%', #{vo.projectCode}, '%')
            </if>
            <if test="vo.supplierName != null and vo.supplierName != ''">
                AND tb.supplier_name LIKE CONCAT('%', #{vo.supplierName}, '%')
            </if>
            <if test="vo.principalId != null and vo.principalId != ''">
                AND tb.principal_id = #{vo.principalId}
            </if>
            <if test="(purchaseDepartmentList != null and purchaseDepartmentList.size() > 0) or userId != null">
                AND (
                <if test="purchaseDepartmentList != null and purchaseDepartmentList.size() > 0">
                    tb.purchase_department IN
                    <foreach collection="purchaseDepartmentList" item="item" open="(" separator="," close=")">
                        #{item}
                    </foreach>
                    OR
                </if>
                tb.principal_id = #{userId}
                )
            </if>
        </where>
        ORDER BY tb.create_time DESC, tb.id DESC
    </select>
</mapper>