ContractDistributorStandardMapper.xml 10.9 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.mappers.ContractDistributorStandardMapper">

    <resultMap id="ContractDistributorStandard" type="com.lframework.xingyun.sc.entity.ContractDistributorStandard">
        <id column="id" property="id"/>
        <result column="code" property="code"/>
        <result column="supplier" property="supplier"/>
        <result column="buyer" property="buyer"/>
        <result column="dept_id" property="deptId"/>
        <result column="order_date" property="orderDate"/>
        <result column="unit" property="unit"/>
        <result column="workshop_id" property="workshopId"/>
        <result column="total_amount_capital" property="totalAmountCapital"/>
        <result column="deposit_info" property="depositInfo"/>
        <result column="packaging_requirements" property="packagingRequirements"/>
        <result column="payment_terms" property="paymentTerms"/>
        <result column="execution_standard" property="executionStandard"/>
        <result column="execution_standard_remarks" property="executionStandardRemarks"/>
        <result column="transport_mode" property="transportMode"/>
        <result column="destination" property="destination"/>
        <result column="includes_packaging_fee" property="includesPackagingFee"/>
        <result column="includes_transport_fee" property="includesTransportFee"/>
        <result column="piece_weight_head" property="pieceWeightHead"/>
        <result column="surface" property="surface"/>
        <result column="tolerance" property="tolerance"/>
        <result column="performance" property="performance"/>
        <result column="component" property="component"/>
        <result column="packaging" property="packaging"/>
        <result column="special_terms" property="specialTerms"/>
        <result column="designated_consignee" property="designatedConsignee"/>
        <result column="special_instructions" property="specialInstructions"/>
        <result column="remarks" property="remarks"/>
        <result column="status" property="status"/>
        <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"/>
        <result column="total_quantity" property="totalQuantity"/>
        <result column="total_amount_excluding_tax" property="totalAmountExcludingTax"/>
        <result column="total_amount_including_tax" property="totalAmountIncludingTax"/>
        <result column="type" property="type"/>
        <result column="parent_id" property="parentId"/>
        <result column="formal_file_id" property="formalFileId"/>
        <result column="formal_file_name" property="formalFileName"/>
        <result column="formal_standardized" property="formalStandardized"/>
        <result column="formal_approved" property="formalApproved"/>
        <result column="formal_approver_id" property="formalApproverId"/>
        <result column="formal_time" property="formalTime"/>
        <result column="standard_file_id" property="standardFileId"/>
        <result column="standard_file_name" property="standardFileName"/>
        <result column="standard_standardized" property="standardStandardized"/>
        <result column="standard_approved" property="standardApproved"/>
        <result column="standard_approver_id" property="standardApproverId"/>
        <result column="standard_time" property="standardTime"/>
        <result column="price_spec_locked" property="priceSpecLocked"/>
        <result column="signed_contract_file_id" property="signedContractFileId"/>
        <result column="signed_contract_file_name" property="signedContractFileName"/>
        <result column="formalized_at" property="formalizedAt"/>
        <result column="standardized_at" property="standardizedAt"/>
    </resultMap>

    <sql id="ContractDistributorStandard_sql">
        SELECT tb.id,
               tb.code,
               tb.supplier,
               tb.buyer,
               tb.dept_id,
               tb.order_date,
               tb.unit,
               tb.workshop_id,
               tb.total_amount_capital,
               tb.deposit_info,
               tb.packaging_requirements,
               tb.payment_terms,
               tb.execution_standard,
               tb.execution_standard_remarks,
               tb.transport_mode,
               tb.destination,
               tb.includes_packaging_fee,
               tb.includes_transport_fee,
               tb.piece_weight_head,
               tb.surface,
               tb.tolerance,
               tb.performance,
               tb.component,
               tb.packaging,
               tb.special_terms,
               tb.designated_consignee,
               tb.special_instructions,
               tb.remarks,
               tb.status,
               tb.create_by_id,
               tb.create_by,
               tb.update_by_id,
               tb.update_by,
               tb.create_time,
               tb.update_time,
               tb.total_quantity,
               tb.total_amount_excluding_tax,
               tb.total_amount_including_tax,
               tb.type,
               tb.parent_id,
               tb.formal_file_id,
               tb.formal_file_name,
               tb.formal_standardized,
               tb.formal_approved,
               tb.formal_approver_id,
               tb.formal_time,
               tb.standard_file_id,
               tb.standard_file_name,
               tb.standard_standardized,
               tb.standard_approved,
               tb.standard_approver_id,
               tb.standard_time,
               tb.price_spec_locked,
               tb.signed_contract_file_id,
               tb.signed_contract_file_name,
               tb.formalized_at,
               tb.standardized_at
        FROM tbl_contract_distributor_standard AS tb
    </sql>

    <select id="query" resultMap="ContractDistributorStandard">
        <include refid="ContractDistributorStandard_sql"/>
        <where>
            <if test="vo.code != null and vo.code != ''">
                AND code like CONCAT('%', #{vo.code}, '%')
            </if>
            <choose>
                <when test="vo.keyword  != null and vo.keyword != ''">
                    AND (code like CONCAT('%', #{vo.keyword}, '%')
                    <if test="vo.buyerList != null and vo.buyerList.size() > 0">
                        OR tb.buyer IN
                        <foreach collection="vo.buyerList" open="(" separator="," close=")" item="item">
                            #{item}
                        </foreach>
                    </if>
                    <if test="vo.deptIdList != null and vo.deptIdList.size() > 0">
                        OR tb.dept_id IN
                        <foreach collection="vo.deptIdList" open="(" separator="," close=")" item="item">
                            #{item}
                        </foreach>
                    </if>
                    )
                </when>
                <otherwise>
                    <if test="vo.buyerList != null and vo.buyerList.size() > 0">
                        AND tb.buyer IN
                        <foreach collection="vo.buyerList" open="(" separator="," close=")" item="item">
                            #{item}
                        </foreach>
                    </if>
                    <if test="vo.deptIdList != null and vo.deptIdList.size() > 0">
                        AND tb.dept_id IN
                        <foreach collection="vo.deptIdList" open="(" separator="," close=")" item="item">
                            #{item}
                        </foreach>
                    </if>
                </otherwise>
            </choose>
            <if test="vo.orderDate != null">
                AND tb.order_date IN (#{vo.orderDate})
            </if>
            <if test="vo.orderDateStart != null">
                AND tb.order_date &gt;= #{vo.orderDateStart}
            </if>
            <if test="vo.orderDateEnd != null">
                AND tb.order_date &lt;= #{vo.orderDateEnd}
            </if>
            <if test="vo.status != null">
                AND tb.status LIKE CONCAT(#{vo.status}, '%')
            </if>
            <if test="vo.createById != null and vo.createById != ''">
                AND tb.create_by_id = #{vo.createById}
            </if>
            <if test="vo.type != null">
                AND tb.type = #{vo.type}
            </if>
            <if test="vo.formalApproved != null">
                AND tb.formal_approved = #{vo.formalApproved}
            </if>
            <if test="vo.standardApproved != null">
                AND tb.standard_approved = #{vo.standardApproved}
            </if>
        </where>
        order by tb.create_time desc
    </select>

    <select id="getCustomerSpecificQualityRequirements" resultMap="ContractDistributorStandard">
        WITH LatestContracts AS (SELECT cdl.product_id,
        cdl.contract_id,
        cds.*,
        ROW_NUMBER() OVER (PARTITION BY cdl.product_id ORDER BY cds.create_time DESC, cds.id DESC) as rn
        FROM tbl_contract_distributor_line cdl
        INNER JOIN tbl_contract_distributor_standard cds ON cdl.contract_id = cds.id
        WHERE cds.STATUS != 'DELETED'
        and cds.buyer = #{customerId}
        and cdl.product_id IN
        <foreach collection="productIdList" open="(" separator="," close=")" item="item">
            #{item}
        </foreach>
        )
        SELECT *
        FROM LatestContracts
        WHERE rn = 1
        ORDER BY create_time;
    </select>

    <select id="getNoContractSigned" resultType="java.lang.String">
        SELECT DISTINCT buyer
        FROM (
        SELECT
        buyer,
        formalized_at,
        ROW_NUMBER() OVER (PARTITION BY buyer ORDER BY formalized_at DESC) AS rn
        FROM tbl_contract_distributor_standard
        WHERE formalized_at is not null
        and buyer in
        <foreach collection="buyerList" open="(" separator="," close=")" item="item">
            #{item}
        </foreach>
        ) t
        WHERE rn = 1
        AND DATE(formalized_at) &lt; DATE_SUB(CURDATE(), INTERVAL 1 YEAR);
    </select>

    <select id="getContractSigned" resultType="java.lang.String">
        SELECT DISTINCT buyer
        FROM (
        SELECT
        buyer,
        formalized_at,
        ROW_NUMBER() OVER (PARTITION BY buyer ORDER BY formalized_at DESC) AS rn
        FROM tbl_contract_distributor_standard
        WHERE formalized_at is not null
        and buyer in
        <foreach collection="buyerList" open="(" separator="," close=")" item="item">
            #{item}
        </foreach>
        ) t
        WHERE rn = 1
        AND DATE(formalized_at) >= DATE_SUB(CURDATE(), INTERVAL 1 YEAR);
    </select>
</mapper>