zhubaomin
2025-03-28 3bc6fb1aa90463ccf8e9dcdaca58ad9365f39916
pipIrr-platform/pipIrr-global/src/main/resources/mapper/Ls4StatisticsMapper.xml
@@ -130,5 +130,190 @@
        </if>
    </select>
    <select id="mTotalCountOfReport" resultType="java.lang.Integer">
        select
        count(*) as count
        from rm_on_hour_report_last tb
        where tb.dt <![CDATA[>=]]> #{fromDt, javaType=DATE, jdbcType=TIMESTAMP}
    </select>
    <select id="mTotalCountOfNoReport" resultType="java.lang.Integer">
        select
        count(*) as count
        from pr_intake tb
            left join (
                select ltb.intake_id
                from rm_on_hour_report_last ltb
                where ltb.dt <![CDATA[>=]]> #{fromDt, javaType=DATE, jdbcType=TIMESTAMP}
            ) temTb on tb.id = temTb.intake_id
        where temTb.intake_id is null
    </select>
    <select id="mTotalCountOfNeverReport" resultType="java.lang.Integer">
        select
        count(*) as count
        from pr_intake tb
            left join (
                select ltb.intake_id
                from rm_on_hour_report_last ltb
            ) temTb on tb.id = temTb.intake_id
        where temTb.intake_id is null
    </select>
    <select id="mTotalCountOfOpenValve" resultType="java.lang.Integer">
        select
        count(*) as count
        from rm_alarm_state_last tb
        where valve_state = 0
        <if test="fromDt != null ">
            AND tb.dt <![CDATA[>=]]> #{fromDt, javaType=DATE, jdbcType=TIMESTAMP}
        </if>
    </select>
    <select id="mTotalCountOfCloseValve" resultType="java.lang.Integer">
        select
        count(*) as count
        from rm_alarm_state_last tb
        where valve_state = 1
        <if test="fromDt != null ">
            AND tb.dt <![CDATA[>=]]> #{fromDt, javaType=DATE, jdbcType=TIMESTAMP}
        </if>
    </select>
    <select id="mTotalCountOfNeverOpenValve" resultType="java.lang.Integer">
        select
            count(*) as count
        from pr_intake tb
            left join (
                /* 此处理解为有过记录,那么就开过阀 */
                select ltb.intake_id
                from rm_alarm_state_last ltb
            ) temTb on tb.id = temTb.intake_id
        where temTb.intake_id is null
    </select>
    <select id="mTotalCountOfAlarm" resultType="java.lang.Integer">
        select
        count(*) as count
        from rm_alarm_state_last tb
        where (alarm_remain_water = 1 or
        alarm_exceed_year = 1 or
        alarm_water_meter_fault = 1 or
        alarm_loss = 1 or
        alarm_water_meter_break = 1 or
        alarm_ele_meter_fault = 1 or
        alarm_inner_door = 1 or
        alarm_outer_door = 1 or
        alarm_ele_miss = 1 or
        alarm_ele_exceed = 1 or
        alarm_ele_low_volt = 1 or
        state_ic_enable = 1 or
        alarm_battery_volt = 1 or
        alarm_valve = 1)
        <if test="fromDt != null ">
            AND tb.dt <![CDATA[>=]]> #{fromDt, javaType=DATE, jdbcType=TIMESTAMP}
        </if>
    </select>
    <select id="mTotalCountOfNoAlarm" resultType="java.lang.Integer">
        select
        count(*) as count
        from rm_alarm_state_last tb
        where ((alarm_remain_water is null or alarm_remain_water = 0) and
        (alarm_remain_water is null or alarm_exceed_year = 0)  and
        (alarm_remain_water is null or alarm_water_meter_fault = 0)  and
        (alarm_remain_water is null or alarm_loss = 0)  and
        (alarm_remain_water is null or alarm_water_meter_break = 0)  and
        (alarm_remain_water is null or alarm_ele_meter_fault = 0)  and
        (alarm_remain_water is null or alarm_inner_door = 0)  and
        (alarm_remain_water is null or alarm_outer_door = 0)  and
        (alarm_remain_water is null or alarm_ele_miss = 0)  and
        (alarm_remain_water is null or alarm_ele_exceed = 0)  and
        (alarm_remain_water is null or alarm_ele_low_volt = 0)  and
        (alarm_remain_water is null or state_ic_enable = 0)  and
        (alarm_remain_water is null or alarm_battery_volt = 0)  and
        (alarm_remain_water is null or alarm_valve = 0) )
        <if test="fromDt != null ">
            AND tb.dt <![CDATA[>=]]> #{fromDt, javaType=DATE, jdbcType=TIMESTAMP}
        </if>
    </select>
    <select id="mTotalCountOfNeverAlarm" resultType="java.lang.Integer">
        select
            count(*) as count
        from pr_intake tb
                 left join (
            select ltb.intake_id
            from rm_alarm_state_last ltb
            where ((ltb.alarm_remain_water is null or ltb.alarm_remain_water = 0) and
                   (ltb.alarm_remain_water is null or ltb.alarm_exceed_year = 0)  and
                   (ltb.alarm_remain_water is null or ltb.alarm_water_meter_fault = 0)  and
                   (ltb.alarm_remain_water is null or ltb.alarm_loss = 0)  and
                   (ltb.alarm_remain_water is null or ltb.alarm_water_meter_break = 0)  and
                   (ltb.alarm_remain_water is null or ltb.alarm_ele_meter_fault = 0)  and
                   (ltb.alarm_remain_water is null or ltb.alarm_inner_door = 0)  and
                   (ltb.alarm_remain_water is null or ltb.alarm_outer_door = 0)  and
                   (ltb.alarm_remain_water is null or ltb.alarm_ele_miss = 0)  and
                   (ltb.alarm_remain_water is null or ltb.alarm_ele_exceed = 0)  and
                   (ltb.alarm_remain_water is null or ltb.alarm_ele_low_volt = 0)  and
                   (ltb.alarm_remain_water is null or ltb.state_ic_enable = 0)  and
                   (ltb.alarm_remain_water is null or ltb.alarm_battery_volt = 0)  and
                   (ltb.alarm_remain_water is null or ltb.alarm_valve = 0) )
        ) temTb on tb.id = temTb.intake_id
        where temTb.intake_id is null
    </select>
    <select id="topXClientAtCertainDay" resultType="com.dy.pipIrrGlobal.voSpecial.VoTopXClient">
        select mTb.id as id, mTb.client_id as clientId,
        scTb.name as clientName, scTb.clientNum as clientNum, scTb.address as clientAddress,
        mTb.amount as amount
        from rm_client_amount_day mTb
        left join se_client scTb on scTb.id = mTb.client_id
        <where>
            <if test = "idStart != null">
                mTb.id <![CDATA[>=]]> #{idStart, javaType=LONG, jdbcType=BIGINT}
            </if>
            <if test = "idEnd != null">
                and mTb.id <![CDATA[<=]]> #{idEnd, javaType=LONG, jdbcType=BIGINT}
            </if>
        </where>
        order by mTb.amount DESC
        <trim prefix="limit " >
            <if test="count != null">
                0, #{count,javaType=Integer, jdbcType=INTEGER}
            </if>
        </trim>
    </select>
    <select id="topXIntakeAtCertainDay" resultType="com.dy.pipIrrGlobal.voSpecial.VoTopXIntake">
        select mTb.id as id, mTb.intake_id as intakeId,
        piTb.name as intakeNum, piTb.lng as intakeLng, piTb.lat as intakeLat,
        mTb.amount as amount
        from rm_intake_amount_day mTb
        left join pr_intake piTb on piTb.id = mTb.intake_id
        <where>
            <if test = "idStart != null">
                mTb.id <![CDATA[>=]]> #{idStart, javaType=LONG, jdbcType=BIGINT}
            </if>
            <if test = "idEnd != null">
                and mTb.id <![CDATA[<=]]> #{idEnd, javaType=LONG, jdbcType=BIGINT}
            </if>
        </where>
        order by mTb.amount DESC
        <trim prefix="limit " >
            <if test="count != null">
                0, #{count,javaType=Integer, jdbcType=INTEGER}
            </if>
        </trim>
    </select>
</mapper>