StammkundePoolMapper.xml 14.3 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="cn.fw.valhalla.dao.mapper.StammkundePoolMapper">
    <select
            id="stammkundeList"
            resultType="cn.fw.valhalla.domain.dto.StammkundePoolDTO"
            parameterType="cn.fw.valhalla.domain.query.StammkundePoolQueryVO"
    >
        SELECT t2.id                                                                                    customer_id,
        t2.plate_no                                                                                     plate_no,
        t2.frame_no                                                                                     frame_no,
        concat_ws(' ', ifnull(t2.brand_name, ''), ifnull(t2.series_name, ''), ifnull(t2.spec_name, '')) car_name,
        t1.shop_id                                                                                      shop_id,
        t1.adviser_name                                                                                 adviser_name,
        t1.activation_time                                                                              activation_time,
        t1.sources                                                                                      sources,
        t1.reject_time                                                                                  defeat_time,
        t1.pool_status                                                                                  pool_status,
        t1.reason                                                                                       reason,
        t1.new_user_id                                                                                  new_user_id,
        t1.new_user_name                                                                                new_user_name,
        t1.new_shop_id                                                                                  new_shop_id,
        t1.new_shop_name                                                                                new_shop_name,
        t3.name                                                                                         customer_name,
        t3.address                                                                                      address,
        t3.city_name                                                                                    region_name,
        t2.cus_level                                                                                    customer_level,
        t2.tags                                                                                         tags,
        t4.expires                                                                                      loan_expires,
        t2.buy_date                                                                                     buy_date,
        t2.insurance_expires                                                                            insurance_expires,
        t2.arrival_time                                                                                 arrival_time,
        t2.arrival_count                                                                                times
        FROM stammkunde_pool t1
        left join customer t2 on t1.customer_id = t2.id
        left join customer_base_info t3 on t2.base_id = t3.id
        left join customer_loan_info t4 on t2.frame_no = t4.frame_no and t2.group_id = t4.group_id
        <where>
            <if test="condition.groupId !=null">
                and t1.group_id = #{condition.groupId}
            </if>
            <if test="condition.userId !=null">
                and t1.adviser_id = #{condition.userId}
            </if>
            <if test="condition.userName !=null and condition.userName != ''">
                and t1.adviser_name like concat('%', #{condition.userName}, '%')
            </if>
            <if test="condition.plateNo != null and condition.plateNo !=''">
                and t2.plate_no like concat('%', #{condition.plateNo}, '%')
            </if>
            <if test="condition.frameNo != null and condition.frameNo !=''">
                and t2.frame_no like concat('%', #{condition.frameNo}, '%')
            </if>
            <if test="condition.brandId !=null">
                and t2.brand_id = #{condition.brandId}
            </if>
            <if test="condition.seriesId !=null">
                and t2.series_id = #{condition.seriesId}
            </if>
            <if test="condition.specId !=null">
                and t2.spec_id = #{condition.specId}
            </if>
            <if test="condition.shopIds !=null">
                and  t1.shop_id in
                <foreach collection="condition.shopIds" item="id" index="index" open="(" close=")" separator=",">
                    #{id}
                </foreach>
            </if>
            <if test="condition.activationTime !=null">
                and t1.activation_time &lt;= #{condition.activationTime}
                and (t1.reject_time > #{condition.activationTime} or t1.reject_time is null)
            </if>
            <if test="condition.startTime1 !=null">
                and t1.activation_time >= #{condition.startTime1}
            </if>
            <if test="condition.startTime2 !=null">
                and t1.activation_time &lt;=  #{condition.startTime2}
            </if>
            <if test="condition.sources !=null">
                and t1.sources = #{condition.sources}
            </if>
            <if test="condition.loanCustomer !=null and condition.loanCustomer == 1">
                and t4.expires > now()
            </if>
            <if test="condition.loanCustomer !=null and condition.loanCustomer == 0">
                and t4.expires &lt;= now()
            </if>
            <if test="condition.defeatTime1 !=null">
                and DATE_FORMAT(t1.reject_time, '%Y-%m-%d') >= DATE_FORMAT(#{condition.defeatTime1}, '%Y-%m-%d')
            </if>
            <if test="condition.defeatTime2 !=null">
                and DATE_FORMAT(t1.reject_time, '%Y-%m-%d') &lt;= DATE_FORMAT(#{condition.defeatTime2}, '%Y-%m-%d')
            </if>
            <if test="condition.poolStatus !=null">
                and t1.pool_status = #{condition.poolStatus}
            </if>
            <if test="condition.customerName !=null and condition.customerName !=''">
                and t3.name like concat('%', #{condition.customerName}, '%')
            </if>
            <if test="condition.regionCode !=null and condition.regionCode !=''">
                and t3.city_code like concat(#{condition.regionCode}, '%')
            </if>
            <if test="condition.level !=null">
                and t2.cus_level = #{condition.level}
            </if>
            <if test="condition.reason != null">
                and  t1.reason in
                <foreach collection="condition.reason" item="id" index="index" open="(" close=")" separator=",">
                    #{id}
                </foreach>
            </if>
            <if test="condition.defeated !=null and condition.defeated == 1">
                and t1.aktiv = 0
                <if test="condition.reason == null">
                    and t1.reason not in (99, 10, 9)
                </if>
            </if>
            <if test="condition.defeated !=null and condition.defeated == 0">
                and t1.aktiv = 1
            </if>
            <if test="condition.warrantyCard !=null and condition.warrantyCard == 1">
                and FIND_IN_SET('qua_ass_card', t2.tags) != 0
            </if>
            <if test="condition.warrantyCard !=null and condition.warrantyCard == 0">
                and FIND_IN_SET('qua_ass_card', t2.tags) = 0
            </if>
            <if test="condition.maintainCard !=null and condition.maintainCard == 1">
                and FIND_IN_SET('maintain_card', t2.tags) != 0
            </if>
            <if test="condition.maintainCard !=null and condition.maintainCard == 0">
                and FIND_IN_SET('maintain_card', t2.tags) = 0
            </if>
        </where>
        <if test="condition.orderString != null and condition.orderString !='' ">
            ${condition.orderString}
        </if>
        limit #{startIndex},#{pageSize};
    </select>


    <select
            id="stammkundeListCount"
            resultType="java.lang.Long"
            parameterType="cn.fw.valhalla.domain.query.StammkundePoolQueryVO"
    >
        SELECT count(t1.id)
        FROM stammkunde_pool t1
        left join customer t2 on t1.customer_id = t2.id
        left join customer_base_info t3 on t2.base_id = t3.id
        left join customer_loan_info t4 on t2.frame_no = t4.frame_no and t2.group_id = t4.group_id
        <where>
            <if test="condition.groupId !=null">
                and t1.group_id = #{condition.groupId}
            </if>
            <if test="condition.userId !=null">
                and t1.adviser_id = #{condition.userId}
            </if>
            <if test="condition.userName !=null and condition.userName != ''">
                and t1.adviser_name like concat('%', #{condition.userName}, '%')
            </if>
            <if test="condition.plateNo != null and condition.plateNo !=''">
                and t2.plate_no like concat('%', #{condition.plateNo}, '%')
            </if>
            <if test="condition.frameNo != null and condition.frameNo !=''">
                and t2.frame_no like concat('%', #{condition.frameNo}, '%')
            </if>
            <if test="condition.brandId !=null">
                and t2.brand_id = #{condition.brandId}
            </if>
            <if test="condition.seriesId !=null">
                and t2.series_id = #{condition.seriesId}
            </if>
            <if test="condition.specId !=null">
                and t2.spec_id = #{condition.specId}
            </if>
            <if test="condition.shopIds !=null">
                and  t1.shop_id in
                <foreach collection="condition.shopIds" item="id" index="index" open="(" close=")" separator=",">
                    #{id}
                </foreach>
            </if>
            <if test="condition.activationTime !=null">
                and t1.activation_time &lt;= #{condition.activationTime}
                and (t1.reject_time > #{condition.activationTime} or t1.reject_time is null)
            </if>
            <if test="condition.startTime1 !=null">
                and t1.activation_time >= #{condition.startTime1}
            </if>
            <if test="condition.startTime2 !=null">
                and t1.activation_time &lt;=  #{condition.startTime2}
            </if>
            <if test="condition.sources !=null">
                and t1.sources = #{condition.sources}
            </if>
            <if test="condition.loanCustomer !=null and condition.loanCustomer == 1">
                and t4.expires > now()
            </if>
            <if test="condition.loanCustomer !=null and condition.loanCustomer == 0">
                and t4.expires &lt;= now()
            </if>
            <if test="condition.defeatTime1 !=null">
                and DATE_FORMAT(t1.reject_time, '%Y-%m-%d') >= DATE_FORMAT(#{condition.defeatTime1}, '%Y-%m-%d')
            </if>
            <if test="condition.defeatTime2 !=null">
                and DATE_FORMAT(t1.reject_time, '%Y-%m-%d') &lt;= DATE_FORMAT(#{condition.defeatTime2}, '%Y-%m-%d')
            </if>
            <if test="condition.poolStatus !=null">
                and t1.pool_status = #{condition.poolStatus}
            </if>
            <if test="condition.customerName !=null and condition.customerName !=''">
                and t3.name like concat('%', #{condition.customerName}, '%')
            </if>
            <if test="condition.regionCode !=null and condition.regionCode !=''">
                and t3.city_code like concat(#{condition.regionCode}, '%')
            </if>
            <if test="condition.level !=null">
                and t2.cus_level = #{condition.level}
            </if>
            <if test="condition.reason != null">
                and  t1.reason in
                <foreach collection="condition.reason" item="id" index="index" open="(" close=")" separator=",">
                    #{id}
                </foreach>
            </if>
            <if test="condition.defeated !=null and condition.defeated == 1">
                and t1.aktiv = 0
                <if test="condition.reason == null">
                    and t1.reason not in (99, 10, 9)
                </if>
            </if>
            <if test="condition.defeated !=null and condition.defeated == 0">
                and t1.aktiv = 1
            </if>
            <if test="condition.warrantyCard !=null and condition.warrantyCard == 1">
                and FIND_IN_SET('qua_ass_card', t2.tags) != 0
            </if>
            <if test="condition.warrantyCard !=null and condition.warrantyCard == 0">
                and FIND_IN_SET('qua_ass_card', t2.tags) = 0
            </if>
            <if test="condition.maintainCard !=null and condition.maintainCard == 1">
                and FIND_IN_SET('maintain_card', t2.tags) != 0
            </if>
            <if test="condition.maintainCard !=null and condition.maintainCard == 0">
                and FIND_IN_SET('maintain_card', t2.tags) = 0
            </if>
        </where>
    </select>


    <select id="countStammkundePoolList" resultType="cn.fw.valhalla.domain.dto.StammkundePoolReportDTO" parameterType="cn.fw.valhalla.domain.dto.StammkundePoolReportQueryDTO">
        SELECT
        shop_id,
        adviser_id,
        adviser_name,
        COUNT(*) total
        FROM
        stammkunde_pool
        <where>
            group_id = #{groupId}
            <if test="fromPublic != null">
                and from_public = #{fromPublic}
            </if>
            <if test="startDate != null">
                and create_time <![CDATA[ >= ]]> #{startDate}
            </if>
            <if test="endDate != null">
                and create_time <![CDATA[ <= ]]> #{endDate}
            </if>
            <if test="sourceSets != null and sourceSets.size > 0 ">
                AND sources IN
                <foreach collection="sourceSets" item="v" separator=" , " open="(" close=")">
                    #{v}
                </foreach>
            </if>
        </where>
        GROUP BY
        shop_id,
        adviser_id
    </select>


</mapper>