liurunyu
2024-10-25 f16c96a3bbd126dca21b254ceb018a0558f5ea1d
pipIrr-platform/pipIrr-global/src/main/resources/mapper/RmOpenCloseValveHistoryMapper.xml
@@ -447,6 +447,9 @@
            <if test="intakeNum != null and intakeNum != ''">
                AND inta.name LIKE CONCAT('%', #{intakeNum}, '%')
            </if>
            <if test="clientName != null and clientName != ''">
                AND oh.client_name LIKE CONCAT('%', #{clientName}, '%')
            </if>
            <if test="rtuAddr != null and rtuAddr != ''">
                AND oh.rtu_addr LIKE CONCAT('%', #{rtuAddr}, '%')
            </if>
@@ -467,13 +470,13 @@
               oh.client_name          AS clientName,
               oh.op_ic_card_no        AS openIcNum,
               oh.op_ic_card_addr      AS openIcAddr,
               oh.op_dt                AS openTime,
               oh.open_dt              AS openTime,
               CASE
                   WHEN oh.op_type = 1 THEN '刷卡开阀'
                   WHEN oh.op_type = 3 THEN '中心站开阀'
                   WHEN oh.op_type = 5 THEN '余额不足关阀'
                   WHEN oh.op_type = 8 THEN '用户远程开阀'
                   WHEN oh.op_type = 11 THEN '开关阀卡开阀'
                   WHEN oh.op_type = 11 THEN '巡检卡开阀'
                   ELSE '未知'
                   END                 AS openType,
               oh.op_order_no          AS openOrderNo,
@@ -483,7 +486,7 @@
               oh.op_ele_total_amount  AS openEleTotalAmount,
               oh.cl_ic_card_no        AS closeIcNum,
               oh.cl_ic_card_addr      AS closeIcAddr,
               oh.cl_dt                AS closeTime,
               oh.close_dt             AS closeTime,
               CASE
                   WHEN oh.cl_type = 2 THEN '刷卡关阀'
                   WHEN oh.cl_type = 4 THEN '中心站关阀'
@@ -491,7 +494,7 @@
                   WHEN oh.cl_type = 6 THEN '流量计故障关阀'
                   WHEN oh.cl_type = 7 THEN '紧急关闭'
                   WHEN oh.cl_type = 9 THEN '用户远程关阀'
                   WHEN oh.cl_type = 10 THEN '开关阀卡关阀'
                   WHEN oh.cl_type = 10 THEN '巡检卡关阀'
                   WHEN oh.cl_type = 12 THEN '黑名单命令关阀'
                   WHEN oh.cl_type = 13 THEN '用户远程定时关阀'
                   WHEN oh.cl_type = 14 THEN '用户远程定量关阀'
@@ -510,6 +513,9 @@
            </if>
            <if test="intakeNum != null and intakeNum != ''">
                AND inta.name LIKE CONCAT('%', #{intakeNum}, '%')
            </if>
            <if test="clientName != null and clientName != ''">
                AND oh.client_name LIKE CONCAT('%', #{clientName}, '%')
            </if>
            <if test="rtuAddr != null and rtuAddr != ''">
                AND oh.rtu_addr LIKE CONCAT('%', #{rtuAddr}, '%')
@@ -654,11 +660,19 @@
               cli.clientNum,
               CONCAT(cli.districtTitle, cli.address) AS address,
               cli.phone,
               cli.idCard
               cli.idCard,
                (SELECT COUNT(*)
                FROM rm_open_close_valve_history his
                <where>
                    his.client_id = cli.id
                    <if test="timeStart != null and timeStart != '' and timeStop != null and timeStop != ''">
                AND his.op_dt BETWEEN #{timeStart} AND #{timeStop}
                    </if>
                </where>) AS openCount
        FROM se_client cli
        <where>
            <if test="timeStart != null and timeStart != '' and timeStop != null and timeStop != '' and openCount != null">
        (SELECT COUNT(*)
               (SELECT COUNT(*)
               FROM rm_open_close_valve_history his
               WHERE his.client_id = cli.id
                 AND his.op_dt BETWEEN #{timeStart} AND #{timeStop}) > #{openCount}
@@ -693,7 +707,15 @@
               cli.clientNum,
               CONCAT(cli.districtTitle, cli.address) AS address,
               cli.phone,
               cli.idCard
               cli.idCard,
                (SELECT COUNT(*)
                FROM rm_open_close_valve_history his
                <where>
                    his.client_id = cli.id
                    <if test="timeStart != null and timeStart != '' and timeStop != null and timeStop != ''">
                AND his.op_dt BETWEEN #{timeStart} AND #{timeStop}
                    </if>
                </where>) AS openCount
        FROM se_client cli
        <where>
            <if test="timeStart != null and timeStart != '' and timeStop != null and timeStop != '' and openCount != null">
@@ -715,10 +737,14 @@
    <select id="getLargeWaterConsumptionClientsCount" resultType="java.lang.Long">
        SELECT COUNT(*) AS recordCount
        FROM se_client cli
        WHERE (SELECT SUM(his.cl_this_amount)
               FROM rm_open_close_valve_history his
               WHERE his.client_id = cli.id
                 AND his.op_dt BETWEEN #{timeStart} AND #{timeStop}) > #{waterConsumption}
        <where>
            <if test="timeStart != null and timeStart != '' and timeStop != null and timeStop != '' and waterConsumption != null">
                (SELECT SUM(his.cl_this_amount)
                FROM rm_open_close_valve_history his
                WHERE his.client_id = cli.id
                AND his.op_dt BETWEEN #{timeStart} AND #{timeStop}) > #{waterConsumption}
            </if>
        </where>
    </select>
    <!--获取指定时间段内用水量超过指定值的农户-->
@@ -728,12 +754,73 @@
               cli.clientNum,
               CONCAT(cli.districtTitle, cli.address) AS address,
               cli.phone,
               cli.idCard
               cli.idCard,
                IFNULL((SELECT SUM(his.cl_this_amount)
                FROM rm_open_close_valve_history his
                <where>
                    his.client_id = cli.id
                    <if test="timeStart != null and timeStart != '' and timeStop != null and timeStop != ''">
                        AND his.op_dt BETWEEN #{timeStart} AND #{timeStop}
                    </if>
                </where>
                ),0) AS waterConsumption
        FROM se_client cli
        WHERE (SELECT SUM(his.cl_this_amount)
               FROM rm_open_close_valve_history his
               WHERE his.client_id = cli.id
                 AND his.op_dt BETWEEN #{timeStart} AND #{timeStop}) > #{waterConsumption}
        <where>
            <if test="timeStart != null and timeStart != '' and timeStop != null and timeStop != '' and waterConsumption != null">
                (SELECT SUM(his.cl_this_amount)
                FROM rm_open_close_valve_history his
                WHERE his.client_id = cli.id
                AND his.op_dt BETWEEN #{timeStart} AND #{timeStop}) > #{waterConsumption}
            </if>
        </where>
        ORDER BY cli.id
        <trim prefix="limit ">
            <if test="start != null and count != null">
                #{start,javaType=Integer,jdbcType=INTEGER}, #{count,javaType=Integer,jdbcType=INTEGER}
            </if>
        </trim>
    </select>
    <!--获取指定时间段内用水量低于指定值的农户数量-->
    <select id="getSmallWaterConsumptionClientsCount" resultType="java.lang.Long">
        SELECT COUNT(*) AS recordCount
        FROM se_client cli
        <where>
            <if test="timeStart != null and timeStart != '' and timeStop != null and timeStop != '' and waterConsumption != null">
                (SELECT SUM(his.cl_this_amount)
                FROM rm_open_close_valve_history his
                WHERE his.client_id = cli.id
                AND his.op_dt BETWEEN #{timeStart} AND #{timeStop}) &lt; #{waterConsumption}
            </if>
        </where>
    </select>
    <!--获取指定时间段内用水量低于指定值的农户-->
    <select id="getSmallWaterConsumptionClients" resultType="com.dy.pipIrrGlobal.voSt.VoClient">
        SELECT cli.id                                 AS clientId,
        cli.name                               AS clientName,
        cli.clientNum,
        CONCAT(cli.districtTitle, cli.address) AS address,
        cli.phone,
        cli.idCard,
        IFNULL((SELECT SUM(his.cl_this_amount)
        FROM rm_open_close_valve_history his
        <where>
            his.client_id = cli.id
            <if test="timeStart != null and timeStart != '' and timeStop != null and timeStop != ''">
                AND his.op_dt BETWEEN #{timeStart} AND #{timeStop}
            </if>
        </where>
        ),0) AS waterConsumption
        FROM se_client cli
        <where>
            <if test="timeStart != null and timeStart != '' and timeStop != null and timeStop != '' and waterConsumption != null">
                (SELECT SUM(his.cl_this_amount)
                FROM rm_open_close_valve_history his
                WHERE his.client_id = cli.id
                AND his.op_dt BETWEEN #{timeStart} AND #{timeStop}) &lt; #{waterConsumption}
            </if>
        </where>
        ORDER BY cli.id
        <trim prefix="limit ">
            <if test="start != null and count != null">
@@ -746,10 +833,14 @@
    <select id="getLargeAmountSpentClientsCount" resultType="java.lang.Long">
        SELECT COUNT(*) AS recordCount
        FROM se_client cli
        WHERE (SELECT SUM(his.cl_this_money)
        <where>
        <if test="timeStart != null and timeStart != '' and timeStop != null and timeStop != '' and amountSpent != null">
               (SELECT SUM(his.cl_this_money)
               FROM rm_open_close_valve_history his
               WHERE his.client_id = cli.id
                 AND his.op_dt BETWEEN #{timeStart} AND #{timeStop}) > #{amountSpent}
        </if>
        </where>
    </select>
    <!--获取指定时间段内消费金额超过指定值的农户-->
    <select id="getLargeAmountSpentClients" resultType="com.dy.pipIrrGlobal.voSt.VoClient">
@@ -758,12 +849,72 @@
               cli.clientNum,
               CONCAT(cli.districtTitle, cli.address) AS address,
               cli.phone,
               cli.idCard
               cli.idCard,
                IFNULL((SELECT SUM(his.cl_this_money)
                FROM rm_open_close_valve_history his
                <where>
                    his.client_id = cli.id
                    <if test="timeStart != null and timeStart != '' and timeStop != null and timeStop != ''">
                        AND his.op_dt BETWEEN #{timeStart} AND #{timeStop}
                    </if>
                </where>
                ),0) AS amountSpent
        FROM se_client cli
        WHERE (SELECT SUM(his.cl_this_money)
               FROM rm_open_close_valve_history his
               WHERE his.client_id = cli.id
                 AND his.op_dt BETWEEN #{timeStart} AND #{timeStop}) > #{amountSpent}
        <where>
            <if test="timeStart != null and timeStart != '' and timeStop != null and timeStop != '' and amountSpent != null">
                (SELECT SUM(his.cl_this_money)
                FROM rm_open_close_valve_history his
                WHERE his.client_id = cli.id
                AND his.op_dt BETWEEN #{timeStart} AND #{timeStop}) > #{amountSpent}
            </if>
        </where>
        ORDER BY cli.id
        <trim prefix="limit ">
            <if test="start != null and count != null">
                #{start,javaType=Integer,jdbcType=INTEGER}, #{count,javaType=Integer,jdbcType=INTEGER}
            </if>
        </trim>
    </select>
    <!--获取指定时间段内消费金额低于指定值的农户数量-->
    <select id="getSmallAmountSpentClientsCount" resultType="java.lang.Long">
        SELECT COUNT(*) AS recordCount
        FROM se_client cli
        <where>
            <if test="timeStart != null and timeStart != '' and timeStop != null and timeStop != '' and amountSpent != null">
                (SELECT SUM(his.cl_this_money)
                FROM rm_open_close_valve_history his
                WHERE his.client_id = cli.id
                AND his.op_dt BETWEEN #{timeStart} AND #{timeStop})  &lt; #{amountSpent}
            </if>
        </where>
    </select>
    <!--获取指定时间段内消费金额低于指定值的农户-->
    <select id="getSmallAmountSpentClients" resultType="com.dy.pipIrrGlobal.voSt.VoClient">
        SELECT cli.id                                 AS clientId,
        cli.name                               AS clientName,
        cli.clientNum,
        CONCAT(cli.districtTitle, cli.address) AS address,
        cli.phone,
        cli.idCard,
        IFNULL((SELECT SUM(his.cl_this_money)
        FROM rm_open_close_valve_history his
        <where>
            his.client_id = cli.id
            <if test="timeStart != null and timeStart != '' and timeStop != null and timeStop != ''">
                AND his.op_dt BETWEEN #{timeStart} AND #{timeStop}
            </if>
        </where>
        ),0) AS amountSpent
        FROM se_client cli
        <where>
            <if test="timeStart != null and timeStart != '' and timeStop != null and timeStop != '' and amountSpent != null">
                (SELECT SUM(his.cl_this_money)
                FROM rm_open_close_valve_history his
                WHERE his.client_id = cli.id
                AND his.op_dt BETWEEN #{timeStart} AND #{timeStop})  &lt; #{amountSpent}
            </if>
        </where>
        ORDER BY cli.id
        <trim prefix="limit ">
            <if test="start != null and count != null">
@@ -776,10 +927,14 @@
    <select id="getLargeWaterDurationClientsCount" resultType="java.lang.Long">
        SELECT COUNT(*) AS recordCount
        FROM se_client cli
        WHERE (SELECT SUM(his.cl_this_time)
        <where>
        <if test="timeStart != null and timeStart != '' and timeStop != null and timeStop != '' and waterDuration != null">
               (SELECT SUM(his.cl_this_time)
               FROM rm_open_close_valve_history his
               WHERE his.client_id = cli.id
                 AND his.op_dt BETWEEN #{timeStart} AND #{timeStop}) > #{waterDuration}
        </if>
        </where>
    </select>
    <!--获取指定时间段内用水时长超过指定值的农户-->
@@ -789,12 +944,73 @@
               cli.clientNum,
               CONCAT(cli.districtTitle, cli.address) AS address,
               cli.phone,
               cli.idCard
               cli.idCard,
                IFNULL((SELECT SUM(his.cl_this_time)
                FROM rm_open_close_valve_history his
                <where>
                    his.client_id = cli.id
                    <if test="timeStart != null and timeStart != '' and timeStop != null and timeStop != ''">
                        AND his.op_dt BETWEEN #{timeStart} AND #{timeStop}
                    </if>
                </where>
                ),0) AS waterDuration
        FROM se_client cli
        WHERE (SELECT SUM(his.cl_this_time)
               FROM rm_open_close_valve_history his
               WHERE his.client_id = cli.id
                 AND his.op_dt BETWEEN #{timeStart} AND #{timeStop}) > #{waterDuration}
        <where>
            <if test="timeStart != null and timeStart != '' and timeStop != null and timeStop != '' and waterDuration != null">
                (SELECT SUM(his.cl_this_time)
                FROM rm_open_close_valve_history his
                WHERE his.client_id = cli.id
                AND his.op_dt BETWEEN #{timeStart} AND #{timeStop}) > #{waterDuration}
            </if>
        </where>
        ORDER BY cli.id
        <trim prefix="limit ">
            <if test="start != null and count != null">
                #{start,javaType=Integer,jdbcType=INTEGER}, #{count,javaType=Integer,jdbcType=INTEGER}
            </if>
        </trim>
    </select>
    <!--获取指定时间段内用水时长低于指定值的农户数量-->
    <select id="getSmallWaterDurationClientsCount" resultType="java.lang.Long">
        SELECT COUNT(*) AS recordCount
        FROM se_client cli
        <where>
            <if test="timeStart != null and timeStart != '' and timeStop != null and timeStop != '' and waterDuration != null">
                (SELECT SUM(his.cl_this_time)
                FROM rm_open_close_valve_history his
                WHERE his.client_id = cli.id
                AND his.op_dt BETWEEN #{timeStart} AND #{timeStop})  &lt; #{waterDuration}
            </if>
        </where>
    </select>
    <!--获取指定时间段内用水时长低于指定值的农户-->
    <select id="getSmallWaterDurationClients" resultType="com.dy.pipIrrGlobal.voSt.VoClient">
        SELECT cli.id                                 AS clientId,
        cli.name                               AS clientName,
        cli.clientNum,
        CONCAT(cli.districtTitle, cli.address) AS address,
        cli.phone,
        cli.idCard,
        IFNULL((SELECT SUM(his.cl_this_time)
        FROM rm_open_close_valve_history his
        <where>
            his.client_id = cli.id
            <if test="timeStart != null and timeStart != '' and timeStop != null and timeStop != ''">
                AND his.op_dt BETWEEN #{timeStart} AND #{timeStop}
            </if>
        </where>
        ),0) AS waterDuration
        FROM se_client cli
        <where>
            <if test="timeStart != null and timeStart != '' and timeStop != null and timeStop != '' and waterDuration != null">
                (SELECT SUM(his.cl_this_time)
                FROM rm_open_close_valve_history his
                WHERE his.client_id = cli.id
                AND his.op_dt BETWEEN #{timeStart} AND #{timeStop})  &lt; #{waterDuration}
            </if>
        </where>
        ORDER BY cli.id
        <trim prefix="limit ">
            <if test="start != null and count != null">
@@ -987,4 +1203,149 @@
            </if>
        </trim>
    </select>
    <!--获取水卡消费记录数量,管理平台使用-->
    <select id="getExpendsCount" resultType="java.lang.Long">
        SELECT COUNT(*) AS recordCount
        FROM rm_open_close_valve_history och
            INNER JOIN se_client cli ON cli.id = och.client_id
            INNER JOIN pr_intake inta ON inta.id = och.intake_id
        <where>
            AND och.cl_ic_card_no IS NOT NULL AND och.client_id IS NOT NULL
            AND och.cl_this_money> 0
            <if test = "clientName != null and clientName !=''">
                AND cli.name like CONCAT('%',#{clientName},'%')
            </if>
            <if test = "clientNum != null and clientNum > 0">
                AND cli.clientNum like CONCAT('%',#{clientNum},'%')
            </if>
            <if test = "cardNum != null and cardNum !=''">
                AND och.cl_ic_card_no like CONCAT('%',#{cardNum},'%')
            </if>
        </where>
    </select>
    <!--获取水卡消费记录,管理平台使用-->
    <select id="getExpends" resultType="com.dy.pipIrrGlobal.voRm.VoExpend">
        SELECT
            cli.name AS clientName,
            cli.clientNum,
            och.cl_ic_card_no AS cardNum,
            inta.name AS intakeName,
            och.rtu_addr AS rtuAddr,
            och.cl_this_money AS moneyAmount,
            och.cl_this_amount AS waterAmount,
            och.cl_this_time AS duration,
            och.cl_dt AS operateTime
        FROM rm_open_close_valve_history och
            INNER JOIN se_client cli ON cli.id = och.client_id
            INNER JOIN pr_intake inta ON inta.id = och.intake_id
        <where>
            AND och.cl_ic_card_no IS NOT NULL AND och.client_id IS NOT NULL
            AND och.cl_this_money> 0
            <if test = "clientName != null and clientName !=''">
                AND cli.name like CONCAT('%',#{clientName},'%')
            </if>
            <if test = "clientNum != null and clientNum > 0">
                AND cli.clientNum like CONCAT('%',#{clientNum},'%')
            </if>
            <if test = "cardNum != null and cardNum !=''">
                AND och.cl_ic_card_no like CONCAT('%',#{cardNum},'%')
            </if>
        </where>
        ORDER BY och.cl_dt DESC
        <trim prefix="limit " >
            <if test="start != null and count != null">
                #{start,javaType=Integer,jdbcType=INTEGER}, #{count,javaType=Integer,jdbcType=INTEGER}
            </if>
        </trim>
    </select>
    <!--获取物理卡开关阀记录数量,微信小程序使用-->
    <select id="getCardOpenCloseCount" resultType="java.lang.Long">
        SELECT COUNT(*) AS recordCount
        FROM rm_open_close_valve_history his
                 LEFT JOIN pr_intake inta ON inta.id = his.intake_id
        <where>
            AND op_type  = 1
            <if test = "clientId != null">
                AND his.client_id = #{clientId}
            </if>
        </where>
    </select>
    <!--获取物理卡开关阀记录,微信小程序使用-->
    <select id="getCardOpenClose" resultType="com.dy.pipIrrGlobal.voRm.VoOpenClostWechat">
        SELECT
            cl_this_money AS expense,
            op_ic_card_no AS cardNum,
            inta.name AS intakeNum,
            open_dt AS openTime,
            close_dt AS closeTime,
            cl_this_time AS duration,
            cl_this_amount AS amount,
            '刷卡开阀' AS openType
        FROM rm_open_close_valve_history his
                 LEFT JOIN pr_intake inta ON inta.id = his.intake_id
        <where>
            AND op_type  = 1
            <if test = "clientId != null">
                AND his.client_id = #{clientId}
            </if>
        </where>
        ORDER BY open_dt DESC
        <trim prefix="limit " >
            <if test="start != null and count != null">
                #{start,javaType=Integer,jdbcType=INTEGER}, #{count,javaType=Integer,jdbcType=INTEGER}
            </if>
        </trim>
    </select>
    <!--获取虚拟卡开关阀记录数量,微信小程序使用-->
    <select id="getVcCardOpenCloseCount" resultType="java.lang.Long">
        SELECT COUNT(*) AS recordCount
        FROM rm_open_close_valve_history his
                 LEFT JOIN pr_intake inta ON inta.id = his.intake_id
        <where>
            AND op_type  = 8
            <if test = "clientId != null">
                AND his.client_id = #{clientId}
            </if>
        </where>
    </select>
    <!--获取虚拟卡开关阀记录,微信小程序使用-->
    <select id="getVcCardOpenClose" resultType="com.dy.pipIrrGlobal.voRm.VoOpenClostWechat">
        SELECT
            cl_this_money AS expense,
            op_ic_card_no AS cardNum,
            inta.name AS intakeNum,
            open_dt AS openTime,
            close_dt AS closeTime,
            cl_this_time AS duration,
            cl_this_amount AS amount,
            CASE
                WHEN cl_type = 13 THEN '定时关阀式开阀'
                WHEN cl_type = 14 THEN '定量关阀式开阀'
                ELSE '远程开阀'
                END AS openType
        FROM rm_open_close_valve_history his
                 LEFT JOIN pr_intake inta ON inta.id = his.intake_id
        <where>
            AND op_type  = 8
            <if test = "clientId != null">
                AND his.client_id = #{clientId}
            </if>
        </where>
        ORDER BY open_dt 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>