<?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.ruoyi.alarm.apponekey.mapper.ArdAlarmApponekeyMapper"> 
 | 
  
 | 
    <resultMap type="ArdAlarmApponekey" id="ArdAlarmApponekeyResult"> 
 | 
        <result property="id" column="id"/> 
 | 
        <result property="userId" column="user_id"/> 
 | 
        <result property="name" column="name"/> 
 | 
        <result property="longitude" column="longitude"/> 
 | 
        <result property="latitude" column="latitude"/> 
 | 
        <result property="altitude" column="altitude"/> 
 | 
        <result property="recordUrl" column="record_url"/> 
 | 
        <result property="createTime" column="create_time"/> 
 | 
        <result property="viewTime" column="view_time"/> 
 | 
    </resultMap> 
 | 
  
 | 
    <sql id="selectArdAlarmApponekeyVo"> 
 | 
        select id, 
 | 
               user_id, 
 | 
               name, 
 | 
               longitude, 
 | 
               latitude, 
 | 
               altitude, 
 | 
               record_url, 
 | 
               create_time, 
 | 
               view_time 
 | 
        from ard_alarm_apponekey 
 | 
    </sql> 
 | 
  
 | 
    <select id="selectArdAlarmApponekeyList" parameterType="ArdAlarmApponekey" resultMap="ArdAlarmApponekeyResult"> 
 | 
        <include refid="selectArdAlarmApponekeyVo"/> 
 | 
        <where> 
 | 
            <if test="name != null ">AND name like concat('%', #{name}, '%')</if> 
 | 
            <if test="params.beginTime != null and params.beginTime != ''"><!-- 开始时间检索 --> 
 | 
                AND create_time >= to_timestamp(#{params.beginTime},'yyyy-MM-DD HH24:MI:ss') 
 | 
            </if> 
 | 
            <if test="params.endTime != null and params.endTime != ''"><!-- 结束时间检索 --> 
 | 
                AND create_time <= to_timestamp(#{params.endTime},'yyyy-MM-DD HH24:MI:ss') 
 | 
            </if> 
 | 
        </where> 
 | 
        order by create_time desc 
 | 
    </select> 
 | 
  
 | 
    <select id="selectArdAlarmApponekeyById" parameterType="String" resultMap="ArdAlarmApponekeyResult"> 
 | 
        <include refid="selectArdAlarmApponekeyVo"/> 
 | 
        where id = #{id} 
 | 
    </select> 
 | 
  
 | 
    <insert id="insertArdAlarmApponekey" parameterType="ArdAlarmApponekey"> 
 | 
        insert into ard_alarm_apponekey 
 | 
        <trim prefix="(" suffix=")" suffixOverrides=","> 
 | 
            <if test="id != null">id,</if> 
 | 
            <if test="userId != null">user_id,</if> 
 | 
            <if test="name != null">name,</if> 
 | 
            <if test="longitude != null">longitude,</if> 
 | 
            <if test="latitude != null">latitude,</if> 
 | 
            <if test="altitude != null">altitude,</if> 
 | 
            <if test="recordUrl != null">record_url,</if> 
 | 
            <if test="createTime != null">create_time,</if> 
 | 
            <if test="viewTime != null">view_time,</if> 
 | 
        </trim> 
 | 
        <trim prefix="values (" suffix=")" suffixOverrides=","> 
 | 
            <if test="id != null">#{id},</if> 
 | 
            <if test="userId != null">#{userId},</if> 
 | 
            <if test="name != null">#{name},</if> 
 | 
            <if test="longitude != null">#{longitude},</if> 
 | 
            <if test="latitude != null">#{latitude},</if> 
 | 
            <if test="altitude != null">#{altitude},</if> 
 | 
            <if test="recordUrl != null">#{recordUrl},</if> 
 | 
            <if test="createTime != null">#{createTime},</if> 
 | 
            <if test="viewTime != null">#{viewTime},</if> 
 | 
        </trim> 
 | 
    </insert> 
 | 
  
 | 
    <update id="updateArdAlarmApponekey" parameterType="ArdAlarmApponekey"> 
 | 
        update ard_alarm_apponekey 
 | 
        <trim prefix="SET" suffixOverrides=","> 
 | 
            <if test="userId != null">user_id = #{userId},</if> 
 | 
            <if test="name != null">name = #{name},</if> 
 | 
            <if test="longitude != null">longitude = #{longitude},</if> 
 | 
            <if test="latitude != null">latitude = #{latitude},</if> 
 | 
            <if test="altitude != null">altitude = #{altitude},</if> 
 | 
            <if test="recordUrl != null">record_url = #{recordUrl},</if> 
 | 
            <if test="createTime != null">create_time = #{createTime},</if> 
 | 
            <if test="viewTime != null">view_time = #{viewTime},</if> 
 | 
        </trim> 
 | 
        where id = #{id} 
 | 
    </update> 
 | 
  
 | 
    <delete id="deleteArdAlarmApponekeyById" parameterType="String"> 
 | 
        delete 
 | 
        from ard_alarm_apponekey 
 | 
        where id = #{id} 
 | 
    </delete> 
 | 
  
 | 
    <delete id="deleteArdAlarmApponekeyByIds" parameterType="String"> 
 | 
        delete from ard_alarm_apponekey where id in 
 | 
        <foreach item="id" collection="array" open="(" separator="," close=")"> 
 | 
            #{id} 
 | 
        </foreach> 
 | 
    </delete> 
 | 
    <select id="selectCountByAlarmTime" resultType="Integer"> 
 | 
        SELECT COUNT(DISTINCT aaak.user_id) 
 | 
        FROM ard_alarm_apponekey aaak 
 | 
        WHERE aaak.create_time >= CURRENT_TIMESTAMP - INTERVAL '%${refreshTime}%' MINUTE 
 | 
          and aaak.view_time is null 
 | 
    </select> 
 | 
    <select id="selectListAllByCommand" resultMap="ArdAlarmApponekeyResult"> 
 | 
        SELECT T.* 
 | 
        FROM ( 
 | 
                 SELECT aaa.ID, 
 | 
                        aaa.user_id, 
 | 
                        aaa.NAME, 
 | 
                        aaa.create_time, 
 | 
                        aaa.longitude, 
 | 
                        aaa.latitude, 
 | 
                        aaa.altitude, 
 | 
                        aaa.record_url, 
 | 
                        ROW_NUMBER() OVER ( PARTITION BY aaa.NAME ORDER BY aaa.create_time DESC ) AS rn, COUNT(CASE WHEN aaa.view_time IS NULL THEN 1 END) OVER ( PARTITION BY aaa.NAME ) AS COUNT, 
 | 
        COUNT ( aaa.create_time ) OVER ( PARTITION BY aaa.NAME ) AS total 
 | 
                 FROM 
 | 
                     ard_alarm_apponekey aaa 
 | 
                 WHERE 
 | 
                     aaa.create_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_apponekey 
 | 
        set view_time=#{viewTime} 
 | 
        where user_id = #{userId} 
 | 
          and create_time <= #{createTime} 
 | 
          and view_time is null 
 | 
    </update> 
 | 
  
 | 
    <select id="apponekeyYear" resultType="com.ruoyi.statistical.vo.CountVo"> 
 | 
        select to_char(create_time::DATE, 'MM') as date,count(id) 
 | 
        from ard_alarm_apponekey 
 | 
        where create_time >= #{start} 
 | 
          and create_time <= #{end} 
 | 
        group by date 
 | 
        order by date 
 | 
    </select> 
 | 
    <select id="apponekeyMonth" resultType="com.ruoyi.statistical.vo.CountVo"> 
 | 
        select to_char(create_time::DATE, 'dd') as date,count(id) 
 | 
        from ard_alarm_apponekey 
 | 
        where create_time >= #{start} 
 | 
          and create_time <= #{end} 
 | 
        group by date 
 | 
        order by date 
 | 
    </select> 
 | 
</mapper> 
 |