‘liusuyi’
2023-09-02 636054d8d283b06802c05e0c15724c22637d8b30
ard-work/src/main/resources/mapper/alarm/ArdAlarmWallMapper.xml
@@ -21,7 +21,20 @@
    </resultMap>
    <sql id="selectArdAlarmWallVo">
        select id,wall_id,wall_name, user_id, alarm_type, alarm_time, longitude, latitude, altitude, create_by, create_time, update_by, update_time from ard_alarm_wall
        select id,
               wall_id,
               wall_name,
               user_id,
               alarm_type,
               alarm_time,
               longitude,
               latitude,
               altitude,
               create_by,
               create_time,
               update_by,
               update_time
        from ard_alarm_wall
    </sql>
    <select id="selectArdAlarmWallList" parameterType="ArdAlarmWall" resultMap="ArdAlarmWallResult">
@@ -97,7 +110,9 @@
    </update>
    <delete id="deleteArdAlarmWallById" parameterType="String">
        delete from ard_alarm_wall where id = #{id}
        delete
        from ard_alarm_wall
        where id = #{id}
    </delete>
    <delete id="deleteArdAlarmWallByIds" parameterType="String">
@@ -106,4 +121,39 @@
            #{id}
        </foreach>
    </delete>
    <select id="selectCountByAlarmTime" resultType="Integer">
        SELECT COUNT(DISTINCT aaw.wall_name)
        FROM ard_alarm_wall aaw
        WHERE aaw.alarm_time >= CURRENT_TIMESTAMP - INTERVAL '%${refreshTime}%' MINUTE
          and aaw.view_time is null
    </select>
    <select id="selectListAllByCommand" resultMap="ArdAlarmWallResult">
        SELECT T.*
        FROM (
                 SELECT aaa.ID,
                        aaa.user_id,
                        aaa.wall_NAME,
                        aaa.alarm_time,
                        aaa.longitude,
                        aaa.latitude,
                        aaa.altitude,
                        ROW_NUMBER() OVER ( PARTITION BY aaa.wall_NAME ORDER BY aaa.alarm_time DESC ) AS rn,
                        COUNT(CASE WHEN aaa.view_time IS NULL THEN 1 END) OVER ( PARTITION BY aaa.wall_NAME ) AS COUNT,
                      COUNT ( aaa.alarm_time ) OVER ( PARTITION BY aaa.wall_NAME ) AS total
                 FROM
                     ard_alarm_wall aaa
                 WHERE
                     aaa.alarm_time >= ( CURRENT_TIMESTAMP - INTERVAL '%${refreshTime}%' MINUTE )
                 ORDER BY
                     aaa.create_time DESC
             ) T
        WHERE T.rn = 1
    </select>
    <update id="updateViewTimeByUserId" parameterType="String">
        update ard_alarm_wall
        set view_time=#{viewTime}
        where user_id = #{userId}
          and create_time &lt;= #{createTime}
          and view_time is null
    </update>
</mapper>