cjl
2023-12-14 6992aaf0587c09f7c511c1afd12e1519d91363d3
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
<?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="com.moral.api.mapper.HistoryHourlyMapper">
 
    <select id="selectHourlyData" resultType="java.lang.String">
        SELECT `value`
        FROM history_hourly_${timeUnits}
        WHERE mac = #{mac}
          AND `time` = #{time}
    </select>
 
 
    <select id="selectHourlyListData" parameterType="java.util.List" resultType="java.util.Map">
        SELECT `value`,`time`
        FROM history_hourly_${timeUnits}
        WHERE mac = #{mac}
          AND `time` BETWEEN  #{startTime} and #{endTime}
    </select>
 
 
    <select id="selectDataByMacsAndTime" parameterType="java.util.List" resultType="java.util.Map">
        select mac, `time`, `value` from history_hourly_${timeUnits}
        where mac in
        <foreach collection="list" item="item" index="index" open="(" separator="," close=")">
            #{item}
        </foreach>
        and `time` = #{time}
    </select>
 
    <select id="queryLastHourlyMac" resultType="java.lang.String">
        SELECT `value`
        FROM history_hourly_${timeUnits}
        WHERE mac = #{mac}
          AND `time` = #{time}
    </select>
 
 
    <select id="getArea" resultType="com.moral.api.pojo.dto.Wind.WindData">
        SELECT
        d.longitude AS longitude,
        d.latitude AS latitude,d.mac,
        CASE WHEN
        h.value->'$.a01007' = 0 THEN 0.1 ELSE h.value->'$.a01007' END AS windSpeed,
        h.value->'$.a01008' AS windDir
        FROM history_hourly_${timeUnits} h ,
        `device` AS d
        WHERE d.is_delete = '0'
        and d.mac = h.mac
        AND d.monitor_point_id IN
        <foreach item="monitorPointId" collection="monitorPointIds" index="index" open="(" separator="," close=")">
            #{monitorPointId}
        </foreach>
        <if test="macs != null and macs.size!= 0">
            and h.mac in
            <foreach collection="macs" item="id" index="index" open="(" close=")" separator=",">
                #{id}
            </foreach>
        </if>
        AND h.time = #{time}
    </select>
 
    <select id="getTVOCByMac" resultType="java.lang.String">
        select `value` - > '$.${sensor}'
        from history_hourly_${yearAndMonth}
        where mac = #{mac}
          and time =#{time}
    </select>
 
 
    <select id="getPressureByMac" resultType="java.lang.String">
        select `value` - > '$.a01006'
        from history_hourly_${yearAndMonth}
        where mac = #{mac}
          and time =#{time}
    </select>
 
 
    <select id="getDataByMac" resultType="java.util.Map">
        select `value`
        from history_hourly_${yearAndMonth}
        where mac = #{mac}
          and time =#{time}
    </select>
 
    <insert id="insertHistoryHourly">
        INSERT INTO history_hourly_${timeUnits}
        VALUES (#{mac}, #{time}, #{value}, #{version})
    </insert>
 
 
    <insert id="updateHistoryHourly">
        UPDATE history_hourly_${timeUnits} SET `value` = #{value}
        where mac =  #{mac} and time = #{time} and version = #{version}
    </insert>
 
    <select id="listResult" resultType="com.moral.api.entity.HistoryHourly">
        SELECT mac,time,value,version FROM history_hourly${table}
         WHERE 1 =1
         <if test="macs != null and macs.size!=0">
             and mac in
             <foreach collection="macs" item="id" index="index" open="(" close=")" separator=",">
                 #{id}
             </foreach>
         </if>
         <if test="mac != null and mac != ''">
            and mac = #{mac}
         </if>
 
         and time BETWEEN #{startDate} and #{endDate}
 
        order by time desc
    </select>
 
    <select id="listLikeResult" resultType="com.moral.api.entity.HistoryHourly">
        SELECT mac,time,value,version FROM history_hourly${table}
        WHERE 1 =1
        <if test="macs != null and macs.size!=0">
            and mac in
            <foreach collection="macs" item="id" index="index" open="(" close=")" separator=",">
                #{id}
            </foreach>
        </if>
        <if test="mac != null and mac != ''">
            and mac = #{mac}
        </if>
 
        and time like concat(#{time},'%')
 
        order by time desc
    </select>
</mapper>