shenyijian
2024-06-21 f20611265f7d34fd4fbcdfdaff6cb9cccd0b25fc
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
<?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.sm.sjztmd.mapper.TbDykeInvestigationMapper">
    <!--namespace根据自己需要创建的的mapper的路径和名称填写-->
    <select id="statisticsPie" resultType="cn.gistack.sm.sjztmd.statisticsVO.StatisticsPie">
        SELECT
        tempNum.totalNum,
        tempNum.finishNum,
        tempNum.totalNum-tempNum.finishNum as unFinishNum
        FROM(
 
        SELECT
        COUNT(*) totalNum,
        SUM(CASE WHEN  (tdis."check_state" = 1 or tdis."check_state" = 2) THEN 1 ELSE 0 END) as finishNum
        from
        SJZT_MD."tb_res_dyke" trd
        LEFT JOIN SJZT_MD."tb_dyke_investigation_state" tdis ON tdis."dyke_guid" = trd."guid" AND (tdis."check_state" = 1 or tdis."check_state" = 2)
        <if test="params.tbYear != null and params.tbYear !=''">
            AND tdis."tb_year" = #{params.tbYear}
        </if>
        LEFT JOIN YWXT."att_ad_base" aab ON aab."ad_code" = trd."ad_code"
        WHERE
        1=1
        <if test="params.adCode != null and params.adCode !=''">
            and trd."ad_code" LIKE #{params.adCode}
        </if>
        ) tempNum
 
    </select>
    <select id="getCountyStatisticsBar" resultType="cn.gistack.sm.sjztmd.statisticsVO.StatisticsBar">
        SELECT
        aab."guid" code,
        aab."ad_name" name,
        CASE WHEN dyke.dykeLength THEN dyke.dykeLength ELSE 0 END AS dykeLength,
        CASE WHEN dyke.termiteLength THEN dyke.termiteLength ELSE 0 END AS termiteLength
        FROM YWXT."att_ad_base" aab
        left join (
        SELECT
        tmp.adCode,
        SUM(CASE WHEN tmp.dykeLength THEN tmp.dykeLength ELSE 0 END) AS dykeLength,
        SUM(CASE WHEN tmp.termiteLength THEN tmp.termiteLength ELSE 0 END) AS termiteLength
        FROM
        (
        SELECT
        trd."dyke_length" dykeLength,
        trd."ad_code" adCode,
        CASE WHEN dykeTmp.termiteLength THEN dykeTmp.termiteLength ELSE 0 END as termiteLength
        FROM
        sjzt_md."tb_res_dyke" trd
        LEFT JOIN SJZT_MD."tb_dyke_investigation_state" tdis ON tdis."dyke_guid" = trd."guid" AND (tdis."check_state" = 1 or tdis."check_state" = 2)
        LEFT JOIN (
        SELECT
        TEMP1.*,
        TEMP1.dangerLength/temp1.num as termiteLength
        FROM (
        SELECT tdi."tb_state_id",tdi."dyke_guid",tdi."unit",
        count(*) as num,
        SUM(CASE WHEN (tdi."danger_length") THEN tdi."danger_length" ELSE 0 END) AS dangerLength
        from sjzt_md."tb_dyke_investigation" tdi
        where 1=1
        <if test="params.tbYear != null and params.tbYear !=''">
            AND tdi."tb_year" = #{params.tbYear}
        </if>
 
        and tdi."investigation_variety" = '白蚁'
        group by tdi."tb_state_id",tdi."dyke_guid",tdi."unit"
        )TEMP1
        ) dykeTmp on dykeTmp."tb_state_id" = tdis."guid"
        where 1=1
        <if test="params.adCode != null and params.adCode !=''">
            AND trd."ad_code"  = #{params.adCode}
        </if>
 
        )tmp group by tmp.adCode
        ) dyke ON dyke.adCode = aab."guid"
        where 1=1
        <if test="params.adCode != null and params.adCode !=''">
            AND aab."guid"  = #{params.adCode}
        </if>
 
 
    </select>
    <select id="getCityStatisticsBar" resultType="cn.gistack.sm.sjztmd.statisticsVO.StatisticsBar">
 
        SELECT
            aab."guid" code,
            aab."ad_name" name,
            CASE WHEN dyke.dykeLength THEN dyke.dykeLength ELSE 0 END AS dykeLength,
            CASE WHEN dyke.termiteLength THEN dyke.termiteLength ELSE 0 END AS termiteLength
        FROM YWXT."att_ad_base" aab
                 left join (
                    SELECT
                        tmp.adCode,
                        SUM(CASE WHEN tmp.dykeLength THEN tmp.dykeLength ELSE 0 END) AS dykeLength,
                        SUM(CASE WHEN tmp.termiteLength THEN tmp.termiteLength ELSE 0 END) AS termiteLength
                    FROM
                        (
                            SELECT
                                trd."dyke_length" dykeLength,
                                trd."ad_code" adCode,
                                CASE WHEN dykeTmp.termiteLength THEN dykeTmp.termiteLength ELSE 0 END as termiteLength
                            FROM
                                sjzt_md."tb_res_dyke" trd
                                    LEFT JOIN SJZT_MD."tb_dyke_investigation_state" tdis ON tdis."dyke_guid" = trd."guid" AND (tdis."check_state" = 1 or tdis."check_state" = 2)
                                    LEFT JOIN (
                                        SELECT
                                            TEMP1.*,
                                            TEMP1.dangerLength/temp1.num as termiteLength
                                        FROM (
                                                 SELECT tdi."tb_state_id",tdi."dyke_guid",tdi."unit",
                                                        count(*) as num,
                                                        SUM(CASE WHEN (tdi."danger_length") THEN tdi."danger_length" ELSE 0 END) AS dangerLength
                                                 from sjzt_md."tb_dyke_investigation" tdi
                                                 where 1=1
                                                   <if test="params.tbYear != null and params.tbYear !=''">
                                                       AND tdi."tb_year" = 2024
                                                   </if>
                                                   and tdi."investigation_variety" = '白蚁'
                                                 group by tdi."tb_state_id",tdi."dyke_guid",tdi."unit"
                                             )TEMP1
                                    ) dykeTmp on dykeTmp."tb_state_id" = tdis."guid"
                            where 1=1
                                      <if test="params.adGuid != null and params.adGuid != ''">
                                          AND trd."ad_code" LIKE #{params.adGuid}
                                      </if>
                        )tmp group by tmp.adCode
                 ) dyke ON dyke.adCode = aab."guid"
        where
            <if test="params.adCode != null and params.adCode !=''">
                aab."p_ad_code" = #{params.adCode}
            </if>
 
 
 
    </select>
    <select id="getProvinceStatisticsBar" resultType="cn.gistack.sm.sjztmd.statisticsVO.StatisticsBar">
 
        SELECT
            aab."guid" code,
            aab."ad_name" name,
            CASE WHEN dyke.dykeLength THEN dyke.dykeLength ELSE 0 END AS dykeLength,
            CASE WHEN dyke.termiteLength THEN dyke.termiteLength ELSE 0 END AS termiteLength
        FROM YWXT."att_ad_base" aab
                 left join (
            SELECT
                aab."p_ad_code" adCode,
                aab."p_ad_name" adName,
 
                SUM(CASE WHEN tmp.dykeLength THEN tmp.dykeLength ELSE 0 END) AS dykeLength,
                SUM(CASE WHEN tmp.termiteLength THEN tmp.termiteLength ELSE 0 END) AS termiteLength
            from (
 
                     SELECT
                         trd."dyke_length" dykeLength,
                         trd."ad_code" adCode,
                         trd."ad_name" adName,
                         CASE WHEN dykeTmp.termiteLength THEN dykeTmp.termiteLength ELSE 0 END as termiteLength
                     FROM
                         sjzt_md."tb_res_dyke" trd
                             LEFT JOIN SJZT_MD."tb_dyke_investigation_state" tdis ON tdis."dyke_guid" = trd."guid" AND (tdis."check_state" = 1 or tdis."check_state" = 2)
                             LEFT JOIN (
                             SELECT
                                 TEMP1.*,
                                 TEMP1.dangerLength/temp1.num as termiteLength
                             FROM (
                                      SELECT tdi."tb_state_id",tdi."dyke_guid",tdi."unit",
                                             count(*) as num,
                                             SUM(CASE WHEN (tdi."danger_length") THEN tdi."danger_length" ELSE 0 END) AS dangerLength
                                      from sjzt_md."tb_dyke_investigation" tdi
                                      where 1=1
                                        <if test="params.tbYear != null and params.tbYear !=''">
                                            AND tdi."tb_year" = 2024
                                        </if>
                                        and tdi."investigation_variety" = '白蚁'
                                      group by tdi."tb_state_id",tdi."dyke_guid",tdi."unit"
                                  )TEMP1
                         ) dykeTmp on dykeTmp."tb_state_id" = tdis."guid"
                     where 1=1
                         <if test="params.adGuid != null and params.adGuid !=''">
                             AND trd."ad_code" LIKE #{params.adGuid}
                         </if>
                 )tmp
                     LEFT JOIN YWXT."att_ad_base" aab ON aab."guid" = tmp.adCode
            group by
                aab."p_ad_code",
                aab."p_ad_name"
        ) dyke ON dyke.adCode = aab."guid"
        where 1= 1
        <if test="params.adCode != null and params.adCode !=''">
             AND aab."p_ad_code" = #{params.adCode}
        </if>
 
    </select>
 
 
    <select id="getStatisticsBar" resultType="cn.gistack.sm.sjztmd.statisticsVO.StatisticsBar">
        SELECT
            aab."guid" code,
            aab."ad_name" name,
            dyke.dykeTotalLength as dykeLength,
            dangerDyke.dykeLength as termiteLength
        FROM YWXT."att_ad_base" aab
        LEFT JOIN (
            SELECT
                aab."guid" adCode,
                aab."ad_name" adName,
                SUM(CASE WHEN dykeLengthInfo."dyke_length" THEN dykeLengthInfo."dyke_length" ELSE 0 END) dykeTotalLength
            FROM YWXT."att_ad_base" aab
            LEFT JOIN (
                SELECT
                    county."ad_code" countyCode,
                    city."ad_code" cityCode,
                    province."ad_code" provinceCode,
                    trd."dyke_length"
                FROM SJZT_MD."tb_res_dyke" trd
                         LEFT JOIN ywxt."att_ad_base" county on county."ad_code" = trd."ad_code"
                         LEFT JOIN ywxt."att_ad_base" city on city."ad_code" = county."p_ad_code"
                         LEFT JOIN ywxt."att_ad_base" province on province."ad_code" = city."p_ad_code"
            ) dykeLengthInfo on ((dykeLengthInfo.countyCode = aab."guid") or (dykeLengthInfo.cityCode = aab."guid") or (dykeLengthInfo.provinceCode = aab."guid"))
            group by aab."guid",aab."ad_name"
        )dyke on dyke.adCode = aab."guid"
 
        left join (
            SELECT
        aab."guid",
        aab."ad_name",
        SUM(CASE WHEN trd."dyke_guid" is not null then trd.dangerLength else 0 END) as dykeLength
        FROM YWXT."att_ad_base" aab
        LEFT JOIN (
        SELECT
        trd."guid",
        trd."dyke_length",
        trd."dyke_level",
        trd."dyke_guid",
        trd.dangerLength,
        county."guid" as countyCode,
        city."guid" as cityCode,
        province."guid" as provinceCode
        FROM (
        SELECT
        tdis."guid",
        tdis."dyke_guid",
        trd."ad_code",
        trd."dyke_level",
        trd."dyke_length",
        tdi.dangerLength
        FROM SJZT_MD."tb_dyke_investigation_state" tdis
        LEFT JOIN SJZT_MD."tb_res_dyke" trd on trd."guid" = tdis."dyke_guid"
        LEFT JOIN (
        SELECT
        TEMP1."tb_state_id",
        TEMP1."unit",
        TEMP1.dangerLength/temp1.num as dangerLength
        FROM (
        SELECT
        tdi."tb_state_id",
        tdi."dyke_guid",
        tdi."unit",
        count(*) as num,
        SUM(CASE WHEN (tdi."danger_length") THEN tdi."danger_length" ELSE 0 END) AS dangerLength
        from sjzt_md."tb_dyke_investigation" tdi
        where 1=1
        <if test="params.tbYear!=null and params.tbYear!=''">
            AND    tdi."tb_year" = #{params.tbYear}
        </if>
        and tdi."investigation_variety" = '白蚁'
        group by tdi."tb_state_id",tdi."dyke_guid",tdi."unit"
        )TEMP1
        ) tdi on tdi."tb_state_id" = tdis."guid"
        where (tdis."check_state" = 1 or tdis."check_state" = 2)
        ) trd
        LEFT JOIN YWXT."att_ad_base" county ON county."ad_code" = trd."ad_code"
        LEFT JOIN YWXT."att_ad_base" city ON city."ad_code" = county."p_ad_code"
        LEFT JOIN YWXT."att_ad_base" province ON province."ad_code" = city."p_ad_code"
        )trd on ((trd.countyCode = aab."guid") or (trd.cityCode = aab."guid") or (trd.provinceCode = aab."guid"))
        group by aab."guid",aab."ad_name"
        )dangerDyke on dangerDyke."guid" = aab."guid"
 
        where 1= 1
        <if test="params.adGrad !=3">
            <if test="params.adCode != null and params.adCode !=''">
                AND aab."p_ad_code" = #{params.adCode}
            </if>
        </if>
        <if test="params.adGrad ==3">
            <if test="params.adCode != null and params.adCode !=''">
                AND aab."ad_code" = #{params.adCode}
            </if>
        </if>
    </select>
</mapper>