| <?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.dy.pipIrrGlobal.daoSe.SeClientMapper"> | 
|   <resultMap id="BaseResultMap" type="com.dy.pipIrrGlobal.pojoSe.SeClient"> | 
|     <!--@mbg.generated--> | 
|     <!--@Table se_client--> | 
|     <id column="id" jdbcType="BIGINT" property="id" /> | 
|     <result column="countyId" jdbcType="BIGINT" property="countyid" /> | 
|     <result column="townId" jdbcType="BIGINT" property="townid" /> | 
|     <result column="villageId" jdbcType="BIGINT" property="villageid" /> | 
|     <result column="blockId" jdbcType="BIGINT" property="blockid" /> | 
|     <result column="divideId" jdbcType="BIGINT" property="divideid" /> | 
|     <result column="name" jdbcType="VARCHAR" property="name" /> | 
|     <result column="virtualId" jdbcType="BIGINT" property="virtualid" /> | 
|     <result column="clientNum" jdbcType="VARCHAR" property="clientnum" /> | 
|     <result column="districtNum" jdbcType="BIGINT" property="districtnum" /> | 
|     <result column="districtTitle" jdbcType="VARCHAR" property="districttitle" /> | 
|     <result column="phone" jdbcType="VARCHAR" property="phone" /> | 
|     <result column="idCard" jdbcType="VARCHAR" property="idcard" /> | 
|     <result column="area" jdbcType="DOUBLE" property="area" /> | 
|     <result column="typeId" jdbcType="BIGINT" property="typeid" /> | 
|     <result column="address" jdbcType="VARCHAR" property="address" /> | 
|     <result column="remarks" jdbcType="VARCHAR" property="remarks" /> | 
|     <result column="operator" jdbcType="BIGINT" property="operator" /> | 
|     <result column="operateDt" jdbcType="TIMESTAMP" property="operatedt" /> | 
|     <result column="disabled" jdbcType="TINYINT" property="disabled" /> | 
|     <result column="deleted" jdbcType="TINYINT" property="deleted" /> | 
|   </resultMap> | 
|   <sql id="Base_Column_List"> | 
|     <!--@mbg.generated--> | 
|     id, countyId, townId, villageId, blockid, divideId, `name`, virtualId, clientNum, | 
|     districtNum, districtTitle, phone, idCard, area, typeId, address, remarks, `operator`,  | 
|     operateDt, disabled, deleted | 
|   </sql> | 
|   <select id="selectByPrimaryKey" parameterType="java.lang.Long" resultMap="BaseResultMap"> | 
|     <!--@mbg.generated--> | 
|     select  | 
|     <include refid="Base_Column_List" /> | 
|     from se_client | 
|     where id = #{id,jdbcType=BIGINT} | 
|   </select> | 
|   <delete id="deleteByPrimaryKey" parameterType="java.lang.Long"> | 
|     <!--@mbg.generated--> | 
|     delete from se_client | 
|     where id = #{id,jdbcType=BIGINT} | 
|   </delete> | 
|   | 
|   <insert id="insert" parameterType="com.dy.pipIrrGlobal.pojoSe.SeClient"> | 
|     <!--@mbg.generated--> | 
|     insert into se_client (id, countyId, townId,  | 
|       villageId, blockId, divideId,  | 
|       `name`, virtualId, clientNum,  | 
|       districtNum, districtTitle, phone,  | 
|       idCard, area, typeId,  | 
|       address, remarks, `operator`,  | 
|       operateDt, disabled, deleted | 
|       ) | 
|     values (#{id,jdbcType=BIGINT}, #{countyid,jdbcType=BIGINT}, #{townid,jdbcType=BIGINT},  | 
|       #{villageid,jdbcType=BIGINT}, #{blockid,jdbcType=BIGINT}, #{divideid,jdbcType=BIGINT}, | 
|       #{name,jdbcType=VARCHAR}, #{virtualid,jdbcType=BIGINT}, #{clientnum,jdbcType=VARCHAR},  | 
|       #{districtnum,jdbcType=BIGINT}, #{districttitle,jdbcType=VARCHAR}, #{phone,jdbcType=VARCHAR},  | 
|       #{idcard,jdbcType=VARCHAR}, #{area,jdbcType=DOUBLE}, #{typeid,jdbcType=BIGINT},  | 
|       #{address,jdbcType=VARCHAR}, #{remarks,jdbcType=VARCHAR}, #{operator,jdbcType=BIGINT},  | 
|       #{operatedt,jdbcType=TIMESTAMP}, #{disabled,jdbcType=TINYINT}, #{deleted,jdbcType=TINYINT} | 
|       ) | 
|   </insert> | 
|   | 
|   <insert id="insertSelective" parameterType="com.dy.pipIrrGlobal.pojoSe.SeClient"> | 
|     <!--@mbg.generated--> | 
|     insert into se_client | 
|     <trim prefix="(" suffix=")" suffixOverrides=","> | 
|       <if test="id != null"> | 
|         id, | 
|       </if> | 
|       <if test="countyid != null"> | 
|         countyId, | 
|       </if> | 
|       <if test="townid != null"> | 
|         townId, | 
|       </if> | 
|       <if test="villageid != null"> | 
|         villageId, | 
|       </if> | 
|       <if test="blockid != null"> | 
|         blockId, | 
|       </if> | 
|       <if test="divideid != null"> | 
|         divideId, | 
|       </if> | 
|       <if test="name != null"> | 
|         `name`, | 
|       </if> | 
|       <if test="virtualid != null"> | 
|         virtualId, | 
|       </if> | 
|       <if test="clientnum != null"> | 
|         clientNum, | 
|       </if> | 
|       <if test="districtnum != null"> | 
|         districtNum, | 
|       </if> | 
|       <if test="districttitle != null"> | 
|         districtTitle, | 
|       </if> | 
|       <if test="phone != null"> | 
|         phone, | 
|       </if> | 
|       <if test="idcard != null"> | 
|         idCard, | 
|       </if> | 
|       <if test="area != null"> | 
|         area, | 
|       </if> | 
|       <if test="typeid != null"> | 
|         typeId, | 
|       </if> | 
|       <if test="address != null"> | 
|         address, | 
|       </if> | 
|       <if test="remarks != null"> | 
|         remarks, | 
|       </if> | 
|       <if test="operator != null"> | 
|         `operator`, | 
|       </if> | 
|       <if test="operatedt != null"> | 
|         operateDt, | 
|       </if> | 
|       <if test="disabled != null"> | 
|         disabled, | 
|       </if> | 
|       <if test="deleted != null"> | 
|         deleted, | 
|       </if> | 
|     </trim> | 
|     <trim prefix="values (" suffix=")" suffixOverrides=","> | 
|       <if test="id != null"> | 
|         #{id,jdbcType=BIGINT}, | 
|       </if> | 
|       <if test="countyid != null"> | 
|         #{countyid,jdbcType=BIGINT}, | 
|       </if> | 
|       <if test="townid != null"> | 
|         #{townid,jdbcType=BIGINT}, | 
|       </if> | 
|       <if test="villageid != null"> | 
|         #{villageid,jdbcType=BIGINT}, | 
|       </if> | 
|       <if test="blockid != null"> | 
|         #{blockid,jdbcType=BIGINT}, | 
|       </if> | 
|       <if test="divideid != null"> | 
|         #{divideid,jdbcType=BIGINT}, | 
|       </if> | 
|       <if test="name != null"> | 
|         #{name,jdbcType=VARCHAR}, | 
|       </if> | 
|       <if test="virtualid != null"> | 
|         #{virtualid,jdbcType=BIGINT}, | 
|       </if> | 
|       <if test="clientnum != null"> | 
|         #{clientnum,jdbcType=VARCHAR}, | 
|       </if> | 
|       <if test="districtnum != null"> | 
|         #{districtnum,jdbcType=BIGINT}, | 
|       </if> | 
|       <if test="districttitle != null"> | 
|         #{districttitle,jdbcType=VARCHAR}, | 
|       </if> | 
|       <if test="phone != null"> | 
|         #{phone,jdbcType=VARCHAR}, | 
|       </if> | 
|       <if test="idcard != null"> | 
|         #{idcard,jdbcType=VARCHAR}, | 
|       </if> | 
|       <if test="area != null"> | 
|         #{area,jdbcType=DOUBLE}, | 
|       </if> | 
|       <if test="typeid != null"> | 
|         #{typeid,jdbcType=BIGINT}, | 
|       </if> | 
|       <if test="address != null"> | 
|         #{address,jdbcType=VARCHAR}, | 
|       </if> | 
|       <if test="remarks != null"> | 
|         #{remarks,jdbcType=VARCHAR}, | 
|       </if> | 
|       <if test="operator != null"> | 
|         #{operator,jdbcType=BIGINT}, | 
|       </if> | 
|       <if test="operatedt != null"> | 
|         #{operatedt,jdbcType=TIMESTAMP}, | 
|       </if> | 
|       <if test="disabled != null"> | 
|         #{disabled,jdbcType=TINYINT}, | 
|       </if> | 
|       <if test="deleted != null"> | 
|         #{deleted,jdbcType=TINYINT}, | 
|       </if> | 
|     </trim> | 
|   </insert> | 
|   <update id="updateByPrimaryKeySelective" parameterType="com.dy.pipIrrGlobal.pojoSe.SeClient"> | 
|     <!--@mbg.generated--> | 
|     update se_client | 
|     <set> | 
|       <if test="countyid != null"> | 
|         countyId = #{countyid,jdbcType=BIGINT}, | 
|       </if> | 
|       <if test="townid != null"> | 
|         townId = #{townid,jdbcType=BIGINT}, | 
|       </if> | 
|       <if test="villageid != null"> | 
|         villageId = #{villageid,jdbcType=BIGINT}, | 
|       </if> | 
|       <if test="blockid != null"> | 
|         blockId = #{blockid,jdbcType=BIGINT}, | 
|       </if> | 
|       <if test="divideid != null"> | 
|         divideId = #{divideid,jdbcType=BIGINT}, | 
|       </if> | 
|       <if test="name != null"> | 
|         `name` = #{name,jdbcType=VARCHAR}, | 
|       </if> | 
|       <if test="virtualid != null"> | 
|         virtualId = #{virtualid,jdbcType=BIGINT}, | 
|       </if> | 
|       <if test="clientnum != null"> | 
|         clientNum = #{clientnum,jdbcType=VARCHAR}, | 
|       </if> | 
|       <if test="districtnum != null"> | 
|         districtNum = #{districtnum,jdbcType=BIGINT}, | 
|       </if> | 
|       <if test="districttitle != null"> | 
|         districtTitle = #{districttitle,jdbcType=VARCHAR}, | 
|       </if> | 
|       <if test="phone != null"> | 
|         phone = #{phone,jdbcType=VARCHAR}, | 
|       </if> | 
|       <if test="idcard != null"> | 
|         idCard = #{idcard,jdbcType=VARCHAR}, | 
|       </if> | 
|       <if test="area != null"> | 
|         area = #{area,jdbcType=DOUBLE}, | 
|       </if> | 
|       <if test="typeid != null"> | 
|         typeId = #{typeid,jdbcType=BIGINT}, | 
|       </if> | 
|       <if test="address != null"> | 
|         address = #{address,jdbcType=VARCHAR}, | 
|       </if> | 
|       <if test="remarks != null"> | 
|         remarks = #{remarks,jdbcType=VARCHAR}, | 
|       </if> | 
|       <if test="operator != null"> | 
|         `operator` = #{operator,jdbcType=BIGINT}, | 
|       </if> | 
|       <if test="operatedt != null"> | 
|         operateDt = #{operatedt,jdbcType=TIMESTAMP}, | 
|       </if> | 
|       <if test="disabled != null"> | 
|         disabled = #{disabled,jdbcType=TINYINT}, | 
|       </if> | 
|       <if test="deleted != null"> | 
|         deleted = #{deleted,jdbcType=TINYINT}, | 
|       </if> | 
|     </set> | 
|     where id = #{id,jdbcType=BIGINT} | 
|   </update> | 
|   <update id="updateByPrimaryKey" parameterType="com.dy.pipIrrGlobal.pojoSe.SeClient"> | 
|     <!--@mbg.generated--> | 
|     update se_client | 
|     set countyId = #{countyid,jdbcType=BIGINT}, | 
|       townId = #{townid,jdbcType=BIGINT}, | 
|       villageId = #{villageid,jdbcType=BIGINT}, | 
|       blockId = #{blockid,jdbcType=BIGINT}, | 
|       divideId = #{divideid,jdbcType=BIGINT}, | 
|       `name` = #{name,jdbcType=VARCHAR}, | 
| <!--      virtualId = #{virtualid,jdbcType=BIGINT},--> | 
|       clientNum = #{clientnum,jdbcType=VARCHAR}, | 
|       districtNum = #{districtnum,jdbcType=BIGINT}, | 
|       districtTitle = #{districttitle,jdbcType=VARCHAR}, | 
|       phone = #{phone,jdbcType=VARCHAR}, | 
|       idCard = #{idcard,jdbcType=VARCHAR}, | 
|       area = #{area,jdbcType=DOUBLE}, | 
|       typeId = #{typeid,jdbcType=BIGINT}, | 
|       address = #{address,jdbcType=VARCHAR}, | 
|       remarks = #{remarks,jdbcType=VARCHAR}, | 
|       `operator` = #{operator,jdbcType=BIGINT}, | 
|       operateDt = #{operatedt,jdbcType=TIMESTAMP} | 
| <!--      disabled = #{disabled,jdbcType=TINYINT},--> | 
| <!--      deleted = #{deleted,jdbcType=TINYINT}--> | 
|     where id = #{id,jdbcType=BIGINT} | 
|   </update> | 
|   | 
|   <!--根据6位区划串模糊查询农户编号--> | 
|   <select id="getClientNumOfMax"  resultType="java.lang.String"> | 
|     SELECT clientNum | 
|     FROM se_client | 
|     WHERE clientNum LIKE CONCAT('%',#{district8},'%') | 
|     ORDER BY clientNum desc | 
|     LIMIT 0,1 | 
|   </select> | 
|   | 
|   <!--根据指定条件获取农户记录数--> | 
| <!--  <select id="getRecordCount" parameterType="java.util.Map" resultType="java.lang.Long">--> | 
|   <select id="getRecordCount" resultType="com.dy.pipIrrGlobal.voSe.VoClient"> | 
| <!--    SELECT--> | 
| <!--        COUNT(*) AS recordCount--> | 
|     SELECT DISTINCT | 
|         cli.countyId, | 
|         dis_con.name AS countryName, | 
|         cli.townId, | 
|         dis_town.name AS townName, | 
|         cli.villageId, | 
|         dis_village.name AS villageName, | 
|         cli.blockId, | 
|         blo.name AS blockName, | 
|         cli.divideId, | 
|         divi.name AS divideName, | 
|         cli.typeId, | 
|         wat.typeName AS waterTypeName, | 
|         cli.id AS clientId, | 
|         cli.name, | 
|         cli.clientNum, | 
|         cli.phone, | 
|         cli.idCard, | 
|         cli.area, | 
|         (SELECT COUNT(*) FROM se_client_card WHERE clientId = cli.id)+(SELECT COUNT(*) FROM se_virtual_card WHERE client_id = cli.id) AS cardCount, | 
|         cli.address, | 
|         cli.remarks, | 
|         cli.operateDt | 
|     FROM se_client cli | 
|         LEFT JOIN ba_district dis_con ON cli.countyId = dis_con.id | 
|         LEFT JOIN ba_district dis_town ON cli.townId = dis_town.id | 
|         LEFT JOIN ba_district dis_village ON cli.villageId = dis_village.id | 
|         LEFT JOIN ba_block blo ON cli.blockId = blo.id | 
|         LEFT JOIN pr_divide divi ON cli.divideId = divi.id | 
|         LEFT JOIN se_water_type wat ON cli.typeId = wat.id | 
|         LEFT JOIN se_client_card card ON card.clientId = cli.id | 
|     <where> | 
|       AND cli.disabled = 0 | 
|       AND cli.deleted = 0 | 
|       <if test = "name != null and name !=''"> | 
|         AND cli.name like CONCAT('%',#{name},'%') | 
|       </if> | 
|   | 
|       <if test = "clientNum != null and clientNum !=''"> | 
|         AND cli.clientNum like CONCAT('%',#{clientNum},'%') | 
|       </if> | 
|   | 
|       <if test = "phone != null and phone !=''"> | 
|         AND cli.phone like CONCAT('%',#{phone},'%') | 
|       </if> | 
|   | 
|       <if test = "address != null and address !=''"> | 
|         AND cli.address like CONCAT('%',#{address},'%') | 
|       </if> | 
|   | 
|       <if test = "villageId != null and villageId !=''"> | 
|         AND cli.villageId =  #{villageId} | 
|       </if> | 
|       <if test = "blockId != null and blockId !=''"> | 
|         AND cli.blockId =  #{blockId} | 
|       </if> | 
|       <if test = "divideId != null and divideId !=''"> | 
|         AND cli.divideId =  #{divideId} | 
|       </if> | 
|       <if test = "cardNum != null"> | 
|         AND card.cardNum =  #{cardNum} | 
|       </if> | 
|     </where> | 
|   | 
|   </select> | 
|   | 
|   | 
|   <!--根据指定条件获取农户数据--> | 
|   <select id="getClients" resultType="com.dy.pipIrrGlobal.voSe.VoClient"> | 
|     SELECT DISTINCT | 
|         cli.countyId, | 
|         dis_con.name AS countryName, | 
|         cli.townId, | 
|         dis_town.name AS townName, | 
|         cli.villageId, | 
|         dis_village.name AS villageName, | 
|         cli.blockId, | 
|         blo.name AS blockName, | 
|         cli.divideId, | 
|         divi.name AS divideName, | 
|         cli.typeId, | 
|         wat.typeName AS waterTypeName, | 
|         cli.id AS clientId, | 
|         cli.name, | 
|         cli.clientNum, | 
|         cli.phone, | 
|         cli.idCard, | 
|         cli.area, | 
|         (SELECT COUNT(*) FROM se_client_card WHERE clientId = cli.id)+(SELECT COUNT(*) FROM se_virtual_card WHERE client_id = cli.id) AS cardCount, | 
|         cli.address, | 
|         cli.remarks, | 
|         cli.operateDt | 
|     FROM se_client cli | 
|         LEFT JOIN ba_district dis_con ON cli.countyId = dis_con.id | 
|         LEFT JOIN ba_district dis_town ON cli.townId = dis_town.id | 
|         LEFT JOIN ba_district dis_village ON cli.villageId = dis_village.id | 
|         LEFT JOIN ba_block blo ON cli.blockId = blo.id | 
|         LEFT JOIN pr_divide divi ON cli.divideId = divi.id | 
|         LEFT JOIN se_water_type wat ON cli.typeId = wat.id | 
|         LEFT JOIN se_client_card card ON card.clientId = cli.id | 
|     <where> | 
|       AND cli.disabled = 0 | 
|       AND cli.deleted = 0 | 
|       <if test = "name != null and name !=''"> | 
|         AND cli.name like CONCAT('%',#{name},'%') | 
|       </if> | 
|   | 
|       <if test = "clientNum != null and clientNum !=''"> | 
|         AND cli.clientNum like CONCAT('%',#{clientNum},'%') | 
|       </if> | 
|   | 
|       <if test = "phone != null and phone !=''"> | 
|         AND cli.phone like CONCAT('%',#{phone},'%') | 
|       </if> | 
|   | 
|       <if test = "address != null and address !=''"> | 
|         AND cli.address like CONCAT('%',#{address},'%') | 
|       </if> | 
|   | 
|       <if test = "villageId != null and villageId !=''"> | 
|         AND cli.villageId =  #{villageId} | 
|       </if> | 
|       <if test = "blockId != null and blockId !=''"> | 
|         AND cli.blockId =  #{blockId} | 
|       </if> | 
|       <if test = "divideId != null and divideId !=''"> | 
|         AND cli.divideId =  #{divideId} | 
|       </if> | 
|       <if test = "cardNum != null"> | 
|         AND card.cardNum =  #{cardNum} | 
|       </if> | 
|     </where> | 
|     ORDER BY cli.operateDt DESC | 
|     <trim prefix="limit " > | 
|       <if test="start != null and count != null"> | 
|         #{start,javaType=Integer,jdbcType=INTEGER}, #{count,javaType=Integer,jdbcType=INTEGER} | 
|       </if> | 
|     </trim> | 
|   </select> | 
|   | 
|   <!--根据农户编号获取5级行政区划代码--> | 
|   <select id="getAreaCodeByNum" resultType="java.lang.Long"> | 
|     SELECT districtNum FROM se_client WHERE clientNum = #{clientNum} LIMIT 0,1 | 
|   </select> | 
|   | 
|   <!--根据农户编号获取5级行政区划串areaCode,补卡过程中开新卡使用--> | 
|   <select id="getAreaCodeById" resultType="java.lang.Long"> | 
|     SELECT districtNum FROM se_client WHERE id = #{clientId} | 
|   </select> | 
|   | 
|   <!--根据农户编号获取农户ID--> | 
|   <select id="getClientIdByNum" resultType="java.lang.Long"> | 
|     SELECT id FROM se_client WHERE clientNum = #{clientNum} LIMIT 0,1 | 
|   </select> | 
|   | 
|   <!--根据电话号码获取农户ID--> | 
|   <select id="getClientIdByPhone" resultType="java.lang.Long"> | 
|     SELECT id FROM se_client WHERE phone = #{phoneNumber} | 
|   </select> | 
|   | 
|   <!--根据农户ID逻辑删除农户--> | 
|   <update id="deleteClientById" parameterType="java.lang.Long"> | 
|     update se_client set deleted = 1 | 
|     <where> | 
|       <if test = "id != null and id > 0"> | 
|         AND id = #{id} | 
|       </if> | 
|     </where> | 
|   </update> | 
|   | 
|   <!--根据主键获取村ID--> | 
|   <select id="getVillageIdById" parameterType="java.lang.Long" resultType="java.lang.Long"> | 
|     SELECT villageId FROM se_client WHERE id = #{id} | 
|   </select> | 
|   | 
|   <!--获取虚拟卡号最大值--> | 
|   <select id="getMa1xVirtualId" resultType="java.lang.Long"> | 
|     SELECT virtualId FROM se_client ORDER BY id DESC LIMIT 0,1 | 
|   </select> | 
|   | 
|   <!--获取用水方式列表--> | 
|   <select id="getWaterTypes" resultType="java.util.Map"> | 
|     SELECT CAST(se_water_type.id AS char) AS id, typeName from se_water_type | 
|   </select> | 
|   | 
|   <!--获取农户基本信息,小程序首页使用--> | 
|   <select id="getSimpleClientInfo" resultType="com.dy.pipIrrGlobal.voSe.VoClientWechat"> | 
|     SELECT | 
|       CAST(ope.id AS char) AS sessionId, | 
|       CAST(cli.id AS char)  AS clientId, | 
|       cli.name AS clientName, | 
|       cli.phone, | 
|       CAST(cli.blockId AS char) AS blockId | 
|     FROM se_open_id ope | 
|            INNER JOIN se_client cli ON ope.client_id = cli.id | 
|     <where> | 
|       <if test = "sessionId != null"> | 
|         AND ope.id = #{sessionId} | 
|       </if> | 
|   | 
|       <if test = "openId != null"> | 
|         AND ope.open_id = #{openId} | 
|       </if> | 
|     </where> | 
|     LIMIT 0,1 | 
|   </select> | 
|   <!--获取指定时间段农户:充值合计、消费合计、余额--> | 
|   <select id="getClientUsagesCount" resultType="java.lang.Long"> | 
|     SELECT | 
|       count(*) | 
|     FROM se_client cli | 
|     <where> | 
|       <if test="clientName != null and clientName != ''"> | 
|         AND cli.name like CONCAT('%', #{clientName}, '%') | 
|       </if> | 
|       <if test="clientNum != null and clientNum != ''"> | 
|         AND cli.clientNum like CONCAT('%', #{clientNum}, '%') | 
|       </if> | 
|     </where> | 
|     </select> | 
|   <!--获取指定时间段农户:充值合计、消费合计、余额--> | 
|   <select id="getClientUsages" resultType="com.dy.pipIrrGlobal.voSt.VoCardUsage"> | 
|     SELECT | 
|       cli.name AS clientName, | 
|       (SELECT ROUND(SUM(rch.amount),2) FROM se_recharge_history rch WHERE rch.clientId = cli.id AND rch.operateDt BETWEEN #{timeStart} AND #{timeStop}) AS totalRecharge, | 
|       (SELECT ROUND(SUM(his.cl_this_money),2) FROM rm_open_close_valve_history his WHERE his.client_id = cli.id AND his.cl_dt BETWEEN #{timeStart} AND #{timeStop}) AS totalConsumption, | 
|       (SELECT ROUND(SUM(card.money),2) FROM se_client_card card WHERE card.clientId = cli.id) AS balance | 
|     FROM se_client cli | 
|     <where> | 
|       <if test="clientName != null and clientName != ''"> | 
|         AND cli.name like CONCAT('%', #{clientName}, '%') | 
|       </if> | 
|       <if test="clientNum != null and clientNum != ''"> | 
|         AND cli.clientNum like CONCAT('%', #{clientNum}, '%') | 
|       </if> | 
|     </where> | 
|     ORDER BY totalConsumption DESC, totalRecharge DESC | 
|     <trim prefix="limit "> | 
|       <if test="start != null and count != null"> | 
|         #{start,javaType=Integer,jdbcType=INTEGER}, #{count,javaType=Integer,jdbcType=INTEGER} | 
|       </if> | 
|     </trim> | 
|   </select> | 
| </mapper> |