guoshilong
2024-03-13 c8b03d3da4e29fc3fb9a42ca157738256c331a00
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
<?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
        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
        <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  a."interior_ad_guid" like concat('%',#{alarmRecord.adCode},'%')
        </if>
        order by sar.id desc
    </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
            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>
        ) 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>
 
</mapper>