liurunyu
5 天以前 e5c29d6ac2b210a9385723598d79a42ae5a9679e
pipIrr-platform/pipIrr-global/src/main/resources/mapper/SeClientMapper.xml
@@ -302,60 +302,24 @@
  </select>
  <!--根据指定条件获取农户记录数-->
  <select id="getRecordCount" parameterType="java.util.Map" resultType="java.lang.Long">
    SELECT
        COUNT(*) AS recordCount
    FROM se_client cli
    , (SELECT @i:=0) AS itable
    <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>
    </where>
  </select>
  <!--根据指定条件获取农户数据-->
  <select id="getClients" resultType="com.dy.pipIrrGlobal.voSe.VoClient">
    SELECT
        CAST(cli.countyId AS char) AS countyId,
<!--  <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,
        CAST(cli.townId AS char) AS townId,
        cli.townId,
        dis_town.name AS townName,
        CAST(cli.villageId AS char) AS villageId,
        cli.villageId,
        dis_village.name AS villageName,
        CAST(cli.blockId AS char) AS blockId,
        cli.blockId,
        blo.name AS blockName,
        CAST(cli.divideId AS char) AS divideId,
        cli.divideId,
        divi.name AS divideName,
        CAST(cli.typeId AS char) AS typeId,
        cli.typeId,
        wat.typeName AS waterTypeName,
        CAST(cli.id AS char) AS clientId,
        cli.id AS clientId,
        cli.name,
        cli.clientNum,
        cli.phone,
@@ -366,12 +330,13 @@
        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 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
@@ -399,6 +364,78 @@
      </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
@@ -411,7 +448,7 @@
  <!--根据农户编号获取5级行政区划代码-->
  <select id="getAreaCodeByNum" resultType="java.lang.Long">
    SELECT districtNum FROM se_client WHERE clientNum = ${clientNum} LIMIT 0,1
    SELECT districtNum FROM se_client WHERE clientNum = #{clientNum} LIMIT 0,1
  </select>
  <!--根据农户编号获取5级行政区划串areaCode,补卡过程中开新卡使用-->
@@ -421,7 +458,7 @@
  <!--根据农户编号获取农户ID-->
  <select id="getClientIdByNum" resultType="java.lang.Long">
    SELECT id FROM se_client WHERE clientNum = ${clientNum} LIMIT 0,1
    SELECT id FROM se_client WHERE clientNum = #{clientNum} LIMIT 0,1
  </select>
  <!--根据电话号码获取农户ID-->
@@ -434,14 +471,14 @@
    update se_client set deleted = 1
    <where>
      <if test = "id != null and id > 0">
        AND id = ${id}
        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 villageId FROM se_client WHERE id = #{id}
  </select>
  <!--获取虚拟卡号最大值-->
@@ -475,5 +512,41 @@
    </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>