OpenApiRecordTopMapper.xml
3.14 KB
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
<?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="org.thingsboard.server.dao.yunteng.mapper.OpenApiRecordMapper">
<resultMap type="org.thingsboard.server.common.data.yunteng.dto.OpenApiRecordTopDTO" id="DTOMap">
<result property="name" column="application_name"/>
<result property="recordNum" column="recordNum"/>
<result property="successCount" column="success_count"/>
<result property="failureCount" column="failure_count"/>
<result property="recordProportion" column="recordProportion"/>
</resultMap>
<resultMap type="org.thingsboard.server.common.data.yunteng.dto.OpenApiRecordClassifyDTO" id="map">
<result property="classify" column="classify"/>
<result property="time" column="time_period"/>
<result property="count" column="call_count"/>
</resultMap>
<select id="getTop" resultMap="DTOMap">
SELECT
application_name,
COUNT(*) AS recordNum,
ROUND(COUNT(*) * 100.0 / (SELECT COUNT(*) FROM tk_open_api_record WHERE tenant_id = #{tenantId} ), 2) AS recordProportion,
SUM(CASE WHEN state = 1 THEN 1 ELSE 0 END) AS success_count,
SUM(CASE WHEN state = 0 THEN 1 ELSE 0 END) AS failure_count
FROM tk_open_api_record
WHERE tenant_id = #{tenantId}
GROUP BY application_name
ORDER BY recordNum desc
<if test="page != null">
LIMIT #{pageSize}
OFFSET (#{page} - 1) * #{pageSize};
</if>
</select>
<select id="getClassify" resultMap="map">
SELECT foo.classify,foo.time_period,count(foo.time_period) as call_count from (
SELECT
classify,
concat(
EXTRACT(YEAR FROM request_time), '-',
EXTRACT(MONTH FROM request_time),'-',
EXTRACT(DAY FROM request_time)
<choose>
<when test="type == 'hour'">
, ' ',
EXTRACT(HOUR FROM request_time), ':',
floor( EXTRACT(MINUTE FROM request_time) / 5 ) * 5
</when>
<when test="type == 'day'">
, ' ',
floor( EXTRACT(HOUR FROM request_time) / 2 ) * 2, ':',
'00'
</when>
</choose>
)
as time_period
FROM tk_open_api_record
WHERE tenant_id = #{tenantId} AND request_time <![CDATA[ >= ]]> #{startTime} AND request_time <![CDATA[ <= ]]> #{endTime}
) as foo
GROUP BY foo.classify,foo.time_period
ORDER BY foo.time_period;
</select>
<delete id="deleteByAppIds">
DELETE FROM tk_open_api_record WHERE application_id IN
<foreach collection="applicationIds" item="applicationId" open="(" separator="," close=")">
#{applicationId}
</foreach>
</delete>
</mapper>