guoshilong
2024-03-13 c8b03d3da4e29fc3fb9a42ca157738256c331a00
skjcmanager/skjcmanager-service/skjcmanager-alerts/src/main/java/cn/gistack/alerts/alarmRule/mapper/AlarmRecordMapper.xml
@@ -27,7 +27,10 @@
            and a."name" like concat('%',#{alarmRecord.reservoirName},'%')
        </if>
        <if test="alarmRecord.type!=null and alarmRecord.type!=''">
            and sar1.type = #{alarmRecord.type}
            and
            <foreach collection="alarmRecord.type.split(',')" index="index" item="item" open="(" separator="or " close=")">
                sar1.type = #{item}
            </foreach>
        </if>
        <if test="alarmRecord.alarmRuleType!=null and alarmRecord.alarmRuleType!=''">
            and sar1.alarm_rule_type = #{alarmRecord.alarmRuleType}
@@ -39,10 +42,13 @@
            and sar1.rule_name = #{alarmRecord.ruleName}
        </if>
        <if test="alarmRecord.startTime!=null and alarmRecord.startTime!=''">
            and date_format(sar.create_time,'%Y-%m-%d') >= #{alarmRecord.startTime}
            and sar.create_time >= #{alarmRecord.startTime}
        </if>
        <if test="alarmRecord.endTime!=null and alarmRecord.endTime!=''">
            and date_format(sar.create_time,'%Y-%m-%d') &lt;= #{alarmRecord.endTime}
            and sar.create_time &lt;= #{alarmRecord.endTime}
        </if>
        <if test="alarmRecord.adCode!=null and alarmRecord.adCode!=''">
            and  a."interior_ad_guid" like concat('%',#{alarmRecord.adCode},'%')
        </if>
        order by sar.id desc
    </select>
@@ -74,9 +80,28 @@
        select "ad_name" from SJZT_MD."att_ad_base" where "p_ad_code" = #{adCode} order by "guid"
    </select>
    <!--按行政区code行政区-->
    <select id="getAdNameListByAdCode" resultType="java.lang.String">
        select "ad_name" from SJZT_MD."att_ad_base" where "ad_code" = #{adCode} order by "guid"
    </select>
    <!--查询告警统计数据-->
    <select id="statisticAlarmRecord" resultType="cn.gistack.alerts.alarmRule.vo.StatisticAlarmRecord">
        select cityName as adName,rule_name as ruleName,count(*) num from (
        select
            <if test="alarmRecord.adLevel !=null and alarmRecord.adLevel != '' and alarmRecord.adLevel == 1 ">
                cityName as adName,
            </if>
            <if test="alarmRecord.adLevel !=null and alarmRecord.adLevel != '' and alarmRecord.adLevel == 2 ">
                countyName as adName,
            </if>
            <if test="alarmRecord.adLevel !=null and alarmRecord.adLevel != '' and alarmRecord.adLevel == 3 ">
                townName as adName,
            </if>
            <if test="alarmRecord.adLevel !=null and alarmRecord.adLevel != '' and alarmRecord.adLevel == 4 ">
                townName as adName,
            </if>
            rule_name as ruleName,count(*) num from (
            select
            sar.id,sar.alarm_rule_id,sar.create_time,sar.reservoir_number,
            arb."name",
@@ -115,13 +140,31 @@
                and e.rule_name = #{alarmRecord.ruleName}
            </if>
            <if test="alarmRecord.startTime!=null and alarmRecord.startTime!=''">
                and date_format(sar.create_time,'%Y-%m-%d') >= #{alarmRecord.startTime}
                and sar.create_time >= #{alarmRecord.startTime}
            </if>
            <if test="alarmRecord.endTime!=null and alarmRecord.endTime!=''">
                and date_format(sar.create_time,'%Y-%m-%d') &lt;= #{alarmRecord.endTime}
                and sar.create_time &lt;= #{alarmRecord.endTime}
            </if>
            <if test="alarmRecord.adCode!=null and alarmRecord.adCode!=''">
                and arb."interior_ad_guid" like concat('%',#{alarmRecord.adCode},'%')
            </if>
        ) f
        group by cityName,rule_name
        group by
        <if test="alarmRecord.adLevel !=null and alarmRecord.adLevel != '' and alarmRecord.adLevel == 1 ">
            cityName,
        </if>
        <if test="alarmRecord.adLevel !=null and alarmRecord.adLevel != '' and alarmRecord.adLevel == 2 ">
            countyName,
        </if>
        <if test="alarmRecord.adLevel !=null and alarmRecord.adLevel != '' and alarmRecord.adLevel == 3 ">
            townName,
        </if>
        <if test="alarmRecord.adLevel !=null and alarmRecord.adLevel != '' and alarmRecord.adLevel == 4 ">
            townName,
        </if>
            rule_name
    </select>
    <!--查询告警统计数据-按三大类-->
@@ -137,17 +180,61 @@
        select type,count(*) num
        from YWXT.sm_alarm_record sar
        left join YWXT.sm_alarm_rule e on e.id = sar.alarm_rule_id
        left join SJZT_MD."att_res_base" a on a."guid" = sar.reservoir_number
        left join SJZT_MD."att_ad_base" b on b."guid" = a."interior_ad_guid"
        where sar.is_deleted = 0
        <if test="alarmRecord.startTime!=null and alarmRecord.startTime!=''">
            and date_format(sar.create_time,'%Y-%m-%d') >= #{alarmRecord.startTime}
            and sar.create_time >= #{alarmRecord.startTime}
        </if>
        <if test="alarmRecord.endTime!=null and alarmRecord.endTime!=''">
            and date_format(sar.create_time,'%Y-%m-%d') &lt;= #{alarmRecord.endTime}
            and sar.create_time &lt;= #{alarmRecord.endTime}
        </if>
        <if test="alarmRecord.adCode!=null and alarmRecord.adCode!=''">
            and  a."interior_ad_guid" like concat('%',#{alarmRecord.adCode},'%')
        </if>
        group by type
        ) b on a.dict_value = b.type
    </select>
    <!--  查询大坝安全告警统计数据  -->
    <select id="statisticAlarmRecordByAlarmRuleType" resultType="cn.gistack.alerts.alarmRule.vo.StatisticAlarmRecord">
        select
            case
                when alarm_rule_type='渗压监测告警' then '告警数量'
                when alarm_rule_type='渗压监测预警' then '预警数量'
                when alarm_rule_type='变形监测告警' then '告警数量'
                when alarm_rule_type='变形监测预警' then '预警数量'
                when alarm_rule_type='渗流监测告警' then '告警数量'
                when alarm_rule_type='渗流监测预警' then '预警数量'
            else alarm_rule_type
            end as ruleName,
        sum(
        (
        select count(*) from YWXT.sm_alarm_record cha
        left join SJZT_MD."att_res_base" a on a."guid" = cha.reservoir_number
        left join SJZT_MD."att_ad_base" b on b."guid" = a."interior_ad_guid"
        where a.id = cha.alarm_rule_id
        and cha.is_deleted = 0
        <if test="alarmRecord.startTime!=null and alarmRecord.startTime!=''">
            and cha.create_time >= #{alarmRecord.startTime}
        </if>
        <if test="alarmRecord.endTime!=null and alarmRecord.endTime!=''">
            and cha.create_time &lt;= #{alarmRecord.endTime}
        </if>
        <if test="alarmRecord.adCode!=null and alarmRecord.adCode!=''">
            and  a."interior_ad_guid" like concat('%',#{alarmRecord.adCode},'%')
        </if>
        )
        ) as num
        from  YWXT.sm_alarm_rule a
        <where>
            <if test="alarmRecord.type!=null and alarmRecord.type!=''">
                and type = #{alarmRecord.type}
            </if>
        </where>
        group by alarm_rule_type
    </select>
    <!--查询符合条件的告警类型-->
    <select id="listAlarmRule" resultType="cn.gistack.alerts.alarmRule.entity.AlarmRule">
        select * from YWXT.sm_alarm_rule where is_deleted = 0