pipIrr-platform/pipIrr-global/src/main/resources/mapper/SeClientMapper.xml
@@ -286,7 +286,7 @@
      address = #{address,jdbcType=VARCHAR},
      remarks = #{remarks,jdbcType=VARCHAR},
      `operator` = #{operator,jdbcType=BIGINT},
      operateDt = #{operatedt,jdbcType=TIMESTAMP},
      operateDt = #{operatedt,jdbcType=TIMESTAMP}
<!--      disabled = #{disabled,jdbcType=TINYINT},-->
<!--      deleted = #{deleted,jdbcType=TINYINT}-->
    where id = #{id,jdbcType=BIGINT}
@@ -302,11 +302,41 @@
  </select>
  <!--根据指定条件获取农户记录数-->
  <select id="getRecordCount" parameterType="java.util.Map" resultType="java.lang.Long">
    SELECT
        COUNT(*) AS recordCount
<!--  <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
    , (SELECT @i:=0) AS itable
        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
@@ -324,6 +354,19 @@
      <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>
@@ -332,38 +375,37 @@
  <!--根据指定条件获取农户数据-->
  <select id="getClients" resultType="com.dy.pipIrrGlobal.voSe.VoClient">
    SELECT
        (@i:=@i+1) AS id,
        CAST(cli.countyId AS char) AS countyId,
    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,
        blo.name AS bolckName,
        CAST(cli.divideId AS char) AS divideId,
        cli.blockId,
        blo.name AS blockName,
        cli.divideId,
        divi.name AS divideName,
        CAST(cli.typeId AS char) AS waterTypeId,
        cli.typeId,
        wat.typeName AS waterTypeName,
        CAST(cli.id AS char) AS clientId,
        cli.id AS clientId,
        cli.name,
        cli.clientNum,
        cli.phone,
        cli.idCard,
        cli.area,
        (SELECT COUNT(*) FROM se_client_card WHERE clientId = cli.id) AS cardCount,
        (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
    , (SELECT @i:=0) AS itable
        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
@@ -381,6 +423,19 @@
      <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
@@ -393,17 +448,17 @@
  <!--根据农户编号获取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,补卡过程中开新卡使用-->
  <select id="getAreaCodeById" resultType="java.lang.Long">
    SELECT districtNum FROM se_client WHERE id = ${clientId}
    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 FROM se_client WHERE clientNum = #{clientNum} LIMIT 0,1
  </select>
  <!--根据电话号码获取农户ID-->
@@ -416,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>
  <!--获取虚拟卡号最大值-->
@@ -433,7 +488,7 @@
  <!--获取用水方式列表-->
  <select id="getWaterTypes" resultType="java.util.Map">
    SELECT id, typeName from se_water_type
    SELECT CAST(se_water_type.id AS char) AS id, typeName from se_water_type
  </select>
  <!--获取农户基本信息,小程序首页使用-->
@@ -457,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>