<?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.example.gajz.transferrelationship.dao.TransferRelationshipMapper">

    <!--查询全部转账卡号方法(中心点)-->
    <select id="selectTransferCard" resultType="com.example.gajz.transferrelationship.bean.vo.TransferCardVo">
        SELECT bank_card_no as bankCardNo,bank_account_name as name FROM abc_statement  where bank_card_no is not null and bank_card_no != '' group by bank_card_no
    </select>


    <!--查询转账关系-->
    <select id="edge" resultType="com.example.gajz.transferrelationship.bean.param.data">
      select bank_card_no as source,end_card_no as target,count(id) as transferTimes from abc_statement where end_card_no is  not null
      group by source ,target
    </select>


    <!--查询被转账人全部信息-->
    <select id="transferRelationship" resultType="com.example.gajz.transferrelationship.bean.param.data">
        select distinct end_account_name as name,end_card_no as target from abc_statement where bank_card_no=#{bankCardNo}
        HAVING end_card_no not in
        (select distinct bank_card_no from abc_statement where bank_card_no is not null and end_card_no is not null)
    </select>

    <!--关系图搜索接口  查询搜索人转账关系-->
    <select id="transferRecord" resultType="com.example.gajz.transferrelationship.bean.vo.SearchRelationshipVo">
        select "转账" as relationship,end_account_name as name,end_card_no as cardNumber from abc_statement
        where  1=1
        <if test="fullName!=null and fullName!=''">
          and  bank_account_name=#{fullName}
        </if>
        <if test="cardNumber!=null and cardNumber!=''">
          and   bank_card_no=#{cardNumber}
        </if>
         and  end_account_name is not null and end_card_no is not null  group by end_card_no
    </select>

    <!--查询搜索人被转账记录-->
    <select id="transferredRecord" resultType="com.example.gajz.transferrelationship.bean.vo.SearchRelationshipVo">
        select "被转账" as relationship,bank_card_no as cardNumber,bank_account_name as name from abc_statement
        where  1=1
        <if test="fullName!=null and fullName!=''">
            and  end_account_name=#{fullName}
        </if>
        <if test="cardNumber!=null and cardNumber!=''">
            and   end_card_no=#{cardNumber}
        </if>
        and  bank_card_no is not null and bank_account_name is not null group by bank_card_no
    </select>

    <!--查询搜索人信息   转账人-->
    <select id="personalInformationTransferor" resultType="com.example.gajz.transferrelationship.bean.vo.SearchRelationshipVo">
       select "个人" as relationship,bank_account_name as name,bank_card_no  as cardNumber
       from abc_statement where  bank_card_no=#{cardnumbe}
        and  bank_card_no is not null and bank_account_name is not null group by bank_card_no
    </select>

    <!--查询搜索人信息   被转账人-->
    <select id="personalInformationTransferredPerson" resultType="com.example.gajz.transferrelationship.bean.vo.SearchRelationshipVo">
        select  distinct end_account_name as name,end_card_no as cardNumber  from abc_statement
        where end_card_no=#{cardnumbe}
        HAVING end_card_no not in
        (select distinct bank_card_no from abc_statement where bank_card_no is not null and end_card_no is not null)
    </select>

    <!--清空关系图数据表-->
    <delete id="emptyTransferRelationship">
         truncate table abc_statement
    </delete>

    <!--excel数据导入数据库-->
    <insert id="insertTransferRelationship" parameterType="java.util.List">
        insert into abc_statement  (
        id_card,mobile,bank_account_name,bank_account_no,bank_card_no,temp_a,bank_name,is_capital_pool,
        trade_date,trade_time,
        payment_mark,temp_c,temp_d,pay_amount,balance,purpose,bonus,trade_nature,temp_f,temp_g,end_account_name,
        end_card_no,end_bank_name,remark,comment,treade_place)
        values
        <foreach collection="list" item="lists" index= "index" separator=",">
            (
            #{lists.id_card},#{lists.mobile},#{lists.bank_account_name},
            #{lists.bank_account_no},#{lists.bank_card_no},#{lists.temp_a},
            #{lists.bank_name},#{lists.is_capital_pool},
            #{lists.trade_date},#{lists.trade_time},
            #{lists.payment_mark},#{lists.temp_c},
            #{lists.temp_d},#{lists.pay_amount},#{lists.balance},
            #{lists.purpose},#{lists.bonus},#{lists.trade_nature},
            #{lists.temp_f},#{lists.temp_g},#{lists.end_account_name},
            #{lists.end_card_no},#{lists.end_bank_name},#{lists.remark},
            #{lists.comment},#{lists.treade_place}
            )
        </foreach>
    </insert>

    <!--查询搜索人关联下一级数据-->
    <select id="querySubordinate" resultType="com.example.gajz.transferrelationship.bean.vo.SearchRelationshipVo">
          select end_account_name as name,end_card_no  as cardNumber,count(end_card_no) as transferTimes
          from abc_statement
          where end_account_name is not null
          and end_card_no is not null
          and bank_card_no=#{cardNumber}  group by end_card_no
    </select>

    <!--查询转账人-->
    <select id="queryTransferor" resultType= "com.example.gajz.transferrelationship.bean.vo.SearchRelationshipVo">
        select "个人" as relationship,bank_account_name as name,bank_card_no  as cardNumber
        from abc_statement where 1=1
        <if test="fullName!=null and fullName!=''">
            and  bank_account_name=#{fullName}
        </if>
        <if test="cardNumber!=null and cardNumber!=''">
            and   bank_card_no=#{cardNumber}
        </if>
        and  bank_card_no is not null and bank_account_name is not null group by bank_card_no
    </select>


    <!--查询被转账人-->
    <select id="queryTheTransferredPerson"  resultType= "com.example.gajz.transferrelationship.bean.vo.SearchRelationshipVo">
        select "个人" as relationship,end_account_name as name,end_card_no  as cardNumber
        from abc_statement where 1=1
        <if test="fullName!=null and fullName!=''">
            and  end_account_name=#{fullName}
        </if>
        <if test="cardNumber!=null and cardNumber!=''">
            and   end_card_no=#{cardNumber}
        </if>
        and  end_account_name is not null and end_card_no is not null group by end_card_no
    </select>


    <!--查询单人转账关系-->
    <select id="personalTransferRelationship" resultType="com.example.gajz.transferrelationship.bean.vo.personalTransferRelationshipVo">
       select bank_card_no as source,end_card_no as target,count(id) as transferTimes from abc_statement where end_card_no is  not null
       and bank_card_no=#{cardnumbe}
       group by source ,target
    </select>


    <!--查询上级转账人方法-->
    <select id="querySuperior" resultType="com.example.gajz.transferrelationship.bean.vo.SearchRelationshipVo">
     select bank_account_name as name ,bank_card_no as cardNumber from abc_statement where end_card_no=#{cardNumbe}
     and bank_card_no is not null
     group by bank_card_no
    </select>

    <!--查询两人转账关系  关系  (关系图) 方法-->
    <select id="trBetweenTwoPersons" resultType="com.example.gajz.transferrelationship.bean.vo.personalTransferRelationshipVo">
     select  bank_card_no as source,end_card_no  as target,count(id) as transferTimes from abc_statement where end_card_no=#{cardNumbe}  and bank_card_no is not null
     group by bank_card_no
    </select>


</mapper>