liurunyu
5 天以前 e5c29d6ac2b210a9385723598d79a42ae5a9679e
pipIrr-platform/pipIrr-global/src/main/resources/mapper/SeClientMapper.xml
@@ -28,7 +28,7 @@
  </resultMap>
  <sql id="Base_Column_List">
    <!--@mbg.generated-->
    id, countyId, townId, villageId, blockId, divideId, `name`, virtualId, clientNum,
    id, countyId, townId, villageId, blockid, divideId, `name`, virtualId, clientNum,
    districtNum, districtTitle, phone, idCard, area, typeId, address, remarks, `operator`, 
    operateDt, disabled, deleted
  </sql>
@@ -56,7 +56,7 @@
      operateDt, disabled, deleted
      )
    values (#{id,jdbcType=BIGINT}, #{countyid,jdbcType=BIGINT}, #{townid,jdbcType=BIGINT}, 
      #{villageid,jdbcType=BIGINT}, #{blockid,jdbcType=BIGINT}, #{divideid,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}, 
@@ -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
@@ -382,26 +424,46 @@
      <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
    <if test="pageCurr != null and pageSize != null">
      LIMIT ${pageCurr}, ${pageSize}
    </if>
    <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}
    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}
    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逻辑删除农户-->
@@ -409,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>
  <!--获取虚拟卡号最大值-->
@@ -426,180 +488,65 @@
  <!--获取用水方式列表-->
  <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>
  <!-- 下列内容为交易明细查询 -->
  <!--根据指定条件获取购水汇总和购卡汇总-->
  <select id="getSums" resultType="java.util.Map">
  <!--获取农户基本信息,小程序首页使用-->
  <select id="getSimpleClientInfo" resultType="com.dy.pipIrrGlobal.voSe.VoClientWechat">
    SELECT
        SUM(money) AS money,
        SUM(cardCost) AS cardCost
    FROM v_operate
      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 = "villageId != null and villageId > 0">
        AND villageId = ${villageId}
      <if test = "sessionId != null">
        AND ope.id = #{sessionId}
      </if>
      <if test = "paymentId != null and paymentId >0">
        AND paymentId = ${paymentId}
      </if>
      <if test = "operateTimeStart != null and operateTimeStop != null">
        AND operateDt BETWEEN #{operateTimeStart} AND #{operateTimeStop}
      <if test = "openId != null">
        AND ope.open_id = #{openId}
      </if>
    </where>
    LIMIT 0,1
  </select>
  <!--根据指定条件获取交易记录数-->
  <select id="getOperateRecordCount" parameterType="java.util.Map" resultType="java.lang.Long">
  <!--获取指定时间段农户:充值合计、消费合计、余额-->
  <select id="getClientUsagesCount" resultType="java.lang.Long">
    SELECT
        COUNT(*) AS recordCount
    FROM v_operate
      count(*)
    FROM se_client cli
    <where>
      <if test = "villageId != null and villageId > 0">
        AND villageId = ${villageId}
      <if test="clientName != null and clientName != ''">
        AND cli.name like CONCAT('%', #{clientName}, '%')
      </if>
      <if test = "paymentId != null and paymentId >0">
        AND paymentId = ${paymentId}
      </if>
      <if test = "operateTimeStart != null and operateTimeStop != null">
        AND operateDt BETWEEN #{operateTimeStart} AND #{operateTimeStop}
      <if test="clientNum != null and clientNum != ''">
        AND cli.clientNum like CONCAT('%', #{clientNum}, '%')
      </if>
    </where>
  </select>
  <!--根据指定条件获取交易记录-->
  <select id="getOperates" resultType="com.dy.pipIrrGlobal.voSe.VoOperate">
    </select>
  <!--获取指定时间段农户:充值合计、消费合计、余额-->
  <select id="getClientUsages" resultType="com.dy.pipIrrGlobal.voSt.VoCardUsage">
    SELECT
        villageId,
        districtTitle,
        clientNum,
        `name`,
        cardNum,
        idCard,
        phone,
        money,
        cardCost,
        paymentId,
        paymentMethod,
        operateType,
        operateDt,
        operatorName
    FROM v_operate
      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 = "villageId != null and villageId > 0">
        AND villageId = ${villageId}
      <if test="clientName != null and clientName != ''">
        AND cli.name like CONCAT('%', #{clientName}, '%')
      </if>
      <if test = "paymentId != null and paymentId >0">
        AND paymentId = ${paymentId}
      </if>
      <if test = "operateTimeStart != null and operateTimeStop != null">
        AND operateDt BETWEEN #{operateTimeStart} AND #{operateTimeStop}
      <if test="clientNum != null and clientNum != ''">
        AND cli.clientNum like CONCAT('%', #{clientNum}, '%')
      </if>
    </where>
    ORDER BY operateDt
    <if test="pageCurr != null and pageSize != null">
      LIMIT ${pageCurr}, ${pageSize}
    </if>
  </select>
  <!-- 下列内容为交易统计查询 -->
  <!--根据指定条件获取交易笔数汇总和交易金额汇总-->
  <select id="getStatisticSums" resultType="java.util.Map">
    SELECT
    SUM(count) AS count,
    SUM(money) AS money
    FROM
    (
      SELECT
      villageId,
      districtTitle,
      operateType,
      operateDt,
      count(*) AS count,
      (sum(money) + sum(cardCost)) AS money
      FROM v_operate
      <where>
        <if test = "villageId != null and villageId > 0">
          AND villageId = ${villageId}
        </if>
<!--        <if test = "paymentId != null and paymentId >0">-->
<!--          AND paymentId = ${paymentId}-->
<!--        </if>-->
        <if test = "operateTimeStart != null and operateTimeStop != null">
          AND operateDt BETWEEN #{operateTimeStart} AND #{operateTimeStop}
        </if>
      </where>
      GROUP BY villageId, districtTitle, operateType, operateDt
    ) temp
  </select>
  <!--根据指定条件获取汇总记录数-->
  <select id="getStatisticRecordCount" parameterType="java.util.Map" resultType="java.lang.Long">
    SELECT
        COUNT(*) AS recordCount
    FROM
    (
        SELECT
          villageId,
          districtTitle,
          operateType,
          operateDt,
          count(*) AS count,
          (sum(money) + sum(cardCost)) AS money
        FROM v_operate
        <where>
          <if test = "villageId != null and villageId > 0">
            AND villageId = ${villageId}
          </if>
<!--          <if test = "paymentId != null and paymentId >0">-->
<!--            AND paymentId = ${paymentId}-->
<!--          </if>-->
          <if test = "operateTimeStart != null and operateTimeStop != null">
            AND operateDt BETWEEN #{operateTimeStart} AND #{operateTimeStop}
          </if>
        </where>
        GROUP BY villageId, districtTitle, operateType, operateDt
    ) temp
  </select>
  <!--根据指定条件获取统计记录-->
  <select id="getStatistics" resultType="com.dy.pipIrrGlobal.voSe.VoStatistics">
    SELECT
        villageId,
        districtTitle,
        operateType,
        operateDt,
        count(*) AS count,
        (sum(money) + sum(cardCost)) AS money
    FROM v_operate
    <where>
      <if test = "villageId != null and villageId > 0">
        AND villageId = ${villageId}
    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>
<!--      <if test = "paymentId != null and paymentId >0">-->
<!--        AND paymentId = ${paymentId}-->
<!--      </if>-->
      <if test = "operateTimeStart != null and operateTimeStop != null">
        AND operateDt BETWEEN #{operateTimeStart} AND #{operateTimeStop}
      </if>
    </where>
    GROUP BY villageId, districtTitle, operateType, operateDt
    ORDER BY operateDt
    <if test="pageCurr != null and pageSize != null">
      LIMIT ${pageCurr}, ${pageSize}
    </if>
    </trim>
  </select>
</mapper>