xieb
2024-06-25 94b2c9db484f97cb84ead85bd4e5268d9c823ed2
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="cn.gistack.alerts.alarmRule.mapper.AlarmRecordMapper">
 
    <!--自定义分页列表查询-->
    <select id="selectAlarmRecordPage" resultType="cn.gistack.alerts.alarmRule.vo.AlarmRecordVO">
        select
        <if test="alarmRecord.type == '渗压监测' or alarmRecord.type =='渗流监测' or alarmRecord.type == '变形监测' ">
            acb."cd_nm" as cdNm,
        </if>
        sar.*,
        sar1.type,sar1.alarm_rule_type as alarmRuleType,sar1.create_alarm_type as createAlarmType,sar1.rule_name as ruleName,a."label" as labels,
        a."name" as reservoirName,a."res_reg_code" as resRegCode,a."eng_scal" as engScal,
        case when b."ad_grad" = 4 THEN b."ad_name"
            ELSE NULL END AS townName,
        case when b."ad_grad" = 3 THEN b."ad_name"
            when c."ad_grad" = 3 THEN C."ad_name"
            END AS countyName,
        case when b."ad_grad" = 2 THEN b."ad_name"
            when c."ad_grad" = 2 THEN c."ad_name"
            ELSE d."ad_name" END AS cityName,
            sar1.alarm_level
        from YWXT.sm_alarm_record sar
        left join YWXT.sm_alarm_rule sar1 on sar.alarm_rule_id = sar1.id and sar1.is_deleted = 0
        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"
        LEFT JOIN SJZT_MD."att_ad_base" c ON b."p_ad_code" = c."guid"
        LEFT JOIN SJZT_MD."att_ad_base" d ON c."p_ad_code" = d."guid"
 
        LEFT JOIN SJZT_MD."rel_res_bas_loc" rrbl ON rrbl."res_guid" = sar.reservoir_number
        LEFT JOIN SJZT_MD."att_bas_base" abb ON abb."code" = rrbl."bas_guid"
        LEFT JOIN SJZT_MD."att_bas_base" pabb ON abb."p_code" = pabb."code"
 
        <if test="alarmRecord.type == '渗压监测'">
            LEFT JOIN SJZT_MD."att_cd_base" acb on acb."cd" = sar.alarm_survey_station_code and acb."cd_type" = 'sy' and sar.alarm_survey_station_code !='-1'  and acb."res_cd" = sar.reservoir_number
        </if>
        <if test="alarmRecord.type == '渗流监测'">
            LEFT JOIN SJZT_MD."att_cd_base" acb on acb."cd" = sar.alarm_survey_station_code and acb."cd_type" = 'sl' and sar.alarm_survey_station_code !='-1'  and acb."res_cd" = sar.reservoir_number
        </if>
        <if test="alarmRecord.type == '变形监测'">
            LEFT JOIN SJZT_MD."att_wy_cd_base" acb on acb."cd" = sar.alarm_survey_station_code and acb."cd_type" = 'wy' and sar.alarm_survey_station_code !='-1'  and acb."res_cd" = sar.reservoir_number
        </if>
        where sar.is_deleted = 0
        <if test="alarmRecord.reservoirName!=null and alarmRecord.reservoirName!=''">
            and a."name" like concat('%',#{alarmRecord.reservoirName},'%')
        </if>
        <if test="alarmRecord.type!=null and 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}
        </if>
        <if test="alarmRecord.createAlarmType!=null and alarmRecord.createAlarmType!=''">
            and sar1.create_alarm_type = #{alarmRecord.createAlarmType}
        </if>
        <if test="alarmRecord.ruleName!=null and alarmRecord.ruleName!=''">
            and sar1.rule_name = #{alarmRecord.ruleName}
        </if>
        <if test="alarmRecord.startTime!=null and alarmRecord.startTime!=''">
            and sar.create_time >= #{alarmRecord.startTime}
        </if>
        <if test="alarmRecord.endTime!=null and alarmRecord.endTime!=''">
            and sar.create_time &lt;= #{alarmRecord.endTime}
        </if>
        <if test="alarmRecord.adCode!=null and alarmRecord.adCode!=''">
            and  concat(a."interior_ad_guid",b."guid",c."guid",d."guid") like concat('%',#{alarmRecord.adCode},'%')
        </if>
        <if test="alarmRecord.alarmLevel != null and alarmRecord.alarmLevel !=''">
            and sar1.alarm_level = #{alarmRecord.alarmLevel}
        </if>
 
        <if test="alarmRecord.engScal != null and alarmRecord.engScal != ''">
            and a."eng_scal" = #{alarmRecord.engScal}
        </if>
        <if test="alarmRecord.labels != null and alarmRecord.labels != '' ">
            AND( 1!=1
            <foreach collection="alarmRecord.labels.split(',')" item="item" open="" separator="" close="" index="index">
                OR  #{item}  in (a."label")
            </foreach>
            )
        </if>
        <if test="alarmRecord.basGuids != null and alarmRecord.basGuids !='' ">
            AND(
            abb."code" in
            <foreach collection="alarmRecord.basGuids.split(',')" item="item" index="index" open="(" separator="," close=")">
                #{item}
            </foreach>
            or pabb."code" in
            <foreach collection="alarmRecord.basGuids.split(',')" item="item" index="index" open="(" separator="," close=")">
                #{item}
            </foreach>
            )
        </if>
        <if test="alarmRecord.resGuids != null and alarmRecord.resGuids !=''">
            AND sar.reservoir_number in
            <foreach collection="alarmRecord.resGuids.split(',')" item="item" index="index" open="(" separator="," close=")">
                #{item}
            </foreach>
        </if>
        order by field(sar1.alarm_level,'红色预警','橙色预警','黄色预警','蓝色预警')
    </select>
 
    <select id="getVODetail" resultType="cn.gistack.alerts.alarmRule.vo.AlarmRecordVO">
        select
            sar.*,
            sar1.type,sar1.alarm_rule_type as alarmRuleType,sar1.create_alarm_type as createAlarmType,sar1.rule_name as ruleName,
            a."name" as reservoirName,a."res_reg_code" as resRegCode,a."eng_scal" as engScal,
            case when b."ad_grad" = 4 THEN b."ad_name"
                 ELSE NULL END AS townName,
            case when b."ad_grad" = 3 THEN b."ad_name"
                 when c."ad_grad" = 3 THEN C."ad_name"
                END AS countyName,
            case when b."ad_grad" = 2 THEN b."ad_name"
                 when c."ad_grad" = 2 THEN c."ad_name"
                 ELSE d."ad_name" END AS cityName
        from YWXT.sm_alarm_record sar
                 left join YWXT.sm_alarm_rule sar1 on sar.alarm_rule_id = sar1.id and sar1.is_deleted = 0
                 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"
                 LEFT JOIN SJZT_MD."att_ad_base" c ON b."p_ad_code" = c."guid"
                 LEFT JOIN SJZT_MD."att_ad_base" d ON c."p_ad_code" = d."guid"
        where sar.is_deleted = 0 and sar.id = #{id}
    </select>
 
    <!--按行政区code 查询下级行政区-->
    <select id="getAdNameList" resultType="java.lang.String">
        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
            <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",
            e.rule_name,
            case when b."ad_grad" = 4 THEN b."ad_name" ELSE NULL END AS townName,
            case when b."ad_grad" = 3 THEN b."ad_name"
                when c."ad_grad" = 3 THEN c."ad_name" END AS countyName,
            case when b."ad_grad" = 3 THEN b."ad_code"
                when c."ad_grad" = 3 THEN c."ad_code" END AS countyCode,
            case when b."ad_grad" = 2 THEN b."ad_code"
                when c."ad_grad" = 2 THEN c."ad_code"
                ELSE d."ad_code" END AS cityCode,
            case when b."ad_grad" = 2 THEN b."ad_name"
                when c."ad_grad" = 2 THEN c."ad_name"
                ELSE d."ad_name" END AS cityName
            from YWXT.sm_alarm_record sar
            left join SJZT_MD."att_res_base" arb on arb."guid" = sar.reservoir_number
            left join SJZT_MD."att_ad_base" b ON arb."interior_ad_guid" = b."guid"
            left join SJZT_MD."att_ad_base" c ON b."p_ad_code" = c."guid"
            left join SJZT_MD."att_ad_base" d ON c."p_ad_code" = d."guid"
            left join YWXT.sm_alarm_rule e on e.id = sar.alarm_rule_id
 
            LEFT JOIN SJZT_MD."rel_res_bas_loc" rrbl ON rrbl."res_guid" = sar.reservoir_number
            LEFT JOIN SJZT_MD."att_bas_base" abb ON abb."code" = rrbl."bas_guid"
            LEFT JOIN SJZT_MD."att_bas_base" pabb ON abb."p_code" = pabb."code"
            where sar.is_deleted = 0
            <if test="alarmRecord.reservoirName!=null and alarmRecord.reservoirName!=''">
                and arb."name" like concat('%',#{alarmRecord.reservoirName},'%')
            </if>
            <if test="alarmRecord.type!=null and alarmRecord.type!=''">
                and e.type = #{alarmRecord.type}
            </if>
            <if test="alarmRecord.alarmRuleType!=null and alarmRecord.alarmRuleType!=''">
                and e.alarm_rule_type = #{alarmRecord.alarmRuleType}
            </if>
            <if test="alarmRecord.createAlarmType!=null and alarmRecord.createAlarmType!=''">
                and e.create_alarm_type = #{alarmRecord.createAlarmType}
            </if>
            <if test="alarmRecord.ruleName!=null and alarmRecord.ruleName!=''">
                and e.rule_name = #{alarmRecord.ruleName}
            </if>
            <if test="alarmRecord.startTime!=null and alarmRecord.startTime!=''">
                and sar.create_time >= #{alarmRecord.startTime}
            </if>
            <if test="alarmRecord.endTime!=null and 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>
            <if test="alarmRecord.engScal != null and alarmRecord.engScal != ''">
                and arb."eng_scal" = #{alarmRecord.engScal}
            </if>
            <if test="alarmRecord.labels != null and alarmRecord.labels != '' ">
                AND( 1!=1
                <foreach collection="alarmRecord.labels.split(',')" item="item" open="" separator="" close="" index="index">
                    OR  #{item}  in (arb."label")
                </foreach>
                )
            </if>
            <if test="alarmRecord.basGuids != null and alarmRecord.basGuids !='' ">
                AND(
                abb."code" in
                <foreach collection="alarmRecord.basGuids.split(',')" item="item" index="index" open="(" separator="," close=")">
                    #{item}
                </foreach>
                or pabb."code" in
                <foreach collection="alarmRecord.basGuids.split(',')" item="item" index="index" open="(" separator="," close=")">
                    #{item}
                </foreach>
                )
            </if>
            <if test="alarmRecord.resGuids != null and alarmRecord.resGuids !=''">
                AND sar.reservoir_number in
                <foreach collection="alarmRecord.resGuids.split(',')" item="item" index="index" open="(" separator="," close=")">
                    #{item}
                </foreach>
            </if>
 
 
        ) f
        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>
 
    <!--查询告警统计数据-按三大类-->
    <select id="statisticAlarmRecordByType" resultType="cn.gistack.alerts.alarmRule.vo.StatisticAlarmRecord">
        select
        a.dict_value as ruleName,
        case when ifnull(b.type,0)='0' then 0 else b.num end as num
        from
        (
        select dict_value from YWXT.blade_dict_biz where code = 'ALARM_TYPE' and dict_key!= '-1' and is_deleted = 0
        ) a left join
        (
        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 sar.create_time >= #{alarmRecord.startTime}
        </if>
        <if test="alarmRecord.endTime!=null and 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
        <if test="alarmRecord.type!=null and alarmRecord.type!=''">
            and type = #{alarmRecord.type}
        </if>
        <if test="alarmRecord.alarmRuleType!=null and alarmRecord.alarmRuleType!=''">
            and alarm_rule_type = #{alarmRecord.alarmRuleType}
        </if>
        <if test="alarmRecord.createAlarmType!=null and alarmRecord.createAlarmType!=''">
            and create_alarm_type = #{alarmRecord.createAlarmType}
        </if>
        <if test="alarmRecord.ruleName!=null and alarmRecord.ruleName!=''">
            and rule_name = #{alarmRecord.ruleName}
        </if>
    </select>
    <select id="statisticsPie" resultType="cn.gistack.alerts.alarmRule.vo.StatisticAlarmRecord">
 
        SELECT
            count(*) num,rule.alarm_level alarmLevel
        FROM YWXT.sm_alarm_record record
                 LEFT JOIN ywxt.SM_ALARM_RULE rule on rule.id = record.alarm_rule_id
                 LEFT JOIN SJZT_MD."att_res_base" arb on arb."guid" = record.reservoir_number
 
                LEFT JOIN SJZT_MD."rel_res_bas_loc" rrbl ON rrbl."res_guid" = record.reservoir_number
                LEFT JOIN SJZT_MD."att_bas_base" abb ON abb."code" = rrbl."bas_guid"
                LEFT JOIN SJZT_MD."att_bas_base" pabb ON abb."p_code" = pabb."code"
        where
            record.is_deleted = 0
          <if test="alarmRecord.type != null and alarmRecord.type !=''">
              and rule.type = #{alarmRecord.type}
          </if>
        <if test="alarmRecord.reservoirName!=null and alarmRecord.reservoirName!=''">
            and arb."name" like concat('%',#{alarmRecord.reservoirName},'%')
        </if>
        <if test="alarmRecord.alarmRuleType!=null and alarmRecord.alarmRuleType!=''">
            and rule.alarm_rule_type = #{alarmRecord.alarmRuleType}
        </if>
        <if test="alarmRecord.createAlarmType!=null and alarmRecord.createAlarmType!=''">
            and rule.create_alarm_type = #{alarmRecord.createAlarmType}
        </if>
        <if test="alarmRecord.ruleName!=null and alarmRecord.ruleName!=''">
            and rule.rule_name = #{alarmRecord.ruleName}
        </if>
          <if test="alarmRecord.adCode != null and alarmRecord.adCode !=''">
              and arb."interior_ad_guid" like concat('%',#{alarmRecord.adCode},'%')
          </if>
            <if test="alarmRecord.startTime!=null and alarmRecord.startTime!=''">
                and record.create_time >= #{alarmRecord.startTime}
            </if>
            <if test="alarmRecord.endTime!=null and alarmRecord.endTime!=''">
                and record.create_time &lt;= #{alarmRecord.endTime}
            </if>
            <if test="alarmRecord.engScal != null and alarmRecord.engScal != ''">
                and arb."eng_scal" = #{alarmRecord.engScal}
            </if>
            <if test="alarmRecord.labels != null and alarmRecord.labels != '' ">
                AND( 1!=1
                <foreach collection="alarmRecord.labels.split(',')" item="item" open="" separator="" close="" index="index">
                    OR  #{item}  in (arb."label")
                </foreach>
                )
            </if>
            <if test="alarmRecord.basGuids != null and alarmRecord.basGuids !='' ">
                AND(
                abb."code" in
                <foreach collection="alarmRecord.basGuids.split(',')" item="item" index="index" open="(" separator="," close=")">
                    #{item}
                </foreach>
                or pabb."code" in
                <foreach collection="alarmRecord.basGuids.split(',')" item="item" index="index" open="(" separator="," close=")">
                    #{item}
                </foreach>
                )
            </if>
            <if test="alarmRecord.resGuids != null and alarmRecord.resGuids !=''">
                AND record.reservoir_number in
                <foreach collection="alarmRecord.resGuids.split(',')" item="item" index="index" open="(" separator="," close=")">
                    #{item}
                </foreach>
            </if>
        group by rule.alarm_level
        order by field(rule.alarm_level,'蓝色预警','黄色预警','橙色预警','红色预警')
    </select>
 
    <!--告警统计按告警分类-等级统计-->
    <select id="statisticAlaByTypeAndLev" resultType="cn.gistack.alerts.alarmRule.vo.StatisticAlarmRecord">
        SELECT
            count(*) num,type as ruleName,rule.alarm_level alarmLevel
        FROM YWXT.sm_alarm_record record
        LEFT JOIN ywxt.SM_ALARM_RULE rule on rule.id = record.alarm_rule_id
        LEFT JOIN SJZT_MD."att_res_base" arb on arb."guid" = record.reservoir_number
        LEFT JOIN SJZT_MD."rel_res_bas_loc" rrbl ON rrbl."res_guid" = record.reservoir_number
        LEFT JOIN SJZT_MD."att_bas_base" abb ON abb."code" = rrbl."bas_guid"
        LEFT JOIN SJZT_MD."att_bas_base" pabb ON abb."p_code" = pabb."code"
        where
        record.is_deleted = 0
        and rule.type in ('渗压监测','渗流监测','变形监测','水情监测','雨情监测')
        <if test="alarmRecord.reservoirName!=null and alarmRecord.reservoirName!=''">
            and arb."name" like concat('%',#{alarmRecord.reservoirName},'%')
        </if>
        <if test="alarmRecord.alarmRuleType!=null and alarmRecord.alarmRuleType!=''">
            and rule.alarm_rule_type = #{alarmRecord.alarmRuleType}
        </if>
        <if test="alarmRecord.createAlarmType!=null and alarmRecord.createAlarmType!=''">
            and rule.create_alarm_type = #{alarmRecord.createAlarmType}
        </if>
        <if test="alarmRecord.ruleName!=null and alarmRecord.ruleName!=''">
            and rule.rule_name = #{alarmRecord.ruleName}
        </if>
        <if test="alarmRecord.startTime!=null and alarmRecord.startTime!=''">
            and record.create_time >= #{alarmRecord.startTime}
        </if>
        <if test="alarmRecord.endTime!=null and alarmRecord.endTime!=''">
            and record.create_time &lt;= #{alarmRecord.endTime}
        </if>
        <if test="alarmRecord.resGuids != null and alarmRecord.resGuids !=''">
            AND record.reservoir_number in
            <foreach collection="alarmRecord.resGuids.split(',')" item="item" index="index" open="(" separator="," close=")">
                #{item}
            </foreach>
        </if>
        group by type,rule.alarm_level
    </select>
 
</mapper>