<?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.roadm.admin.mapper.MonitorMapper">

    <select id="listSpChannelSpeed" resultType="cn.roadm.admin.dto.ChannelSendSpeedDO">
        SELECT s.channelid,
               s.speed,
               s.type,
               s.monitortime,
               DATE_FORMAT(s.createtime, '%Y-%m-%d %H:%i:%S') as createTime
        FROM sms_channel_speed_monitor s
        <where>
            <if test="channelId != null and channelId != ''">
                s.channelid = #{channelId}
            </if>
            <if test="startTime != null and startTime != ''">
                and s.createtime &gt;= STR_TO_DATE(#{startTime}, '%Y-%m-%d %H:%i:%s')
            </if>
            <if test="endTime != null and endTime != ''">
                and s.createtime &lt;= STR_TO_DATE(#{endTime}, '%Y-%m-%d %H:%i:%s')
            </if>
        </where>
    </select>

    <select id="listSpReportSpeed" resultType="cn.roadm.admin.dto.ChannelSendSpeedDO">
        SELECT s.channelId,
               s.speed,
               s.monitorTime,
               DATE_FORMAT(s.createtime, '%Y-%m-%d %H:%i:%S') as createTime
        FROM sms_channel_report_speed s
        <where>
            <if test="channelId != null and channelId != ''">
                s.channelid = #{channelId}
            </if>
            <if test="type != null and type >= 0">
                and s.type = #{type}
            </if>
            <if test="startTime != null and startTime != ''">
                and s.createtime &gt;= STR_TO_DATE(#{startTime}, '%Y-%m-%d %H:%i:%s')
            </if>
            <if test="endTime != null and endTime != ''">
                and s.createtime &lt;= STR_TO_DATE(#{endTime}, '%Y-%m-%d %H:%i:%s')
            </if>
        </where>
    </select>

    <resultMap id="ChannelMonitorStatusMap" type="cn.roadm.admin.dto.ChannelMonitorStatusDO">
        <id column="id" property="id"/>
        <result column="channel_id" property="channelId"/>
        <result column="alarm_flag" property="alarmFlag"/>
        <result column="delay_time" property="delayTime"/>
        <result column="report_succ_rate" property="reportSuccRate"/>
        <result column="send_num_limit" property="sendNumLimit"/>
        <result column="receipt_rate" property="receiptRate"/>
        <result column="alarm_type" property="alarmType"/>
        <result column="alarm_cycle" property="alarmCycle"/>
        <result column="alarm_num" property="alarmNum"/>
        <result column="alarm_interval_time" property="alarmIntervalTime"/>
        <result column="data_scan_time" property="dataScanTime"/>
        <result column="phone" property="phone"/>
        <result column="email" property="email"/>
        <result column="alarm_content" property="alarmContent"/>
    </resultMap>

    <resultMap id="ChannelAlarmContactMap" type="cn.roadm.admin.dto.ChannelAlarmContactDO">
        <id column="id" property="id"/>
        <result column="channelid" property="channelId"/>
        <result column="phone" property="phone"/>
        <result column="email" property="email"/>
    </resultMap>

    <resultMap id="ChannelMonitorQueueMap" type="cn.roadm.admin.dto.ChannelMonitorQueueDO">
        <id column="id" property="id"/>
        <result column="channel_id" property="channelId"/>
        <result column="alarm_flag" property="alarmFlag"/>
        <result column="alarm_queue_size" property="alarmQueueSize"/>
        <result column="alarm_object_type" property="alarmObjectType"/>
        <result column="alarm_interval_time" property="alarmIntervalTime"/>
        <result column="data_scan_time" property="dataScanTime"/>
        <result column="alarm_content" property="alarmContent"/>
    </resultMap>

    <resultMap id="ChannelMonitorErrorMap" type="cn.roadm.admin.dto.ChannelMonitorErrorDO">
        <id column="id" property="id"/>
        <result column="channelid" property="channelId"/>
        <result column="alarm_flag" property="alarmFlag"/>
        <result column="alarm_interval_time" property="alarmIntervalTime"/>
        <result column="alarm_type" property="alarmErrType"/>
        <result column="errcode" property="errcode"/>
        <result column="alarm_content" property="alarmContent"/>
    </resultMap>

    <resultMap id="ChannelMonitorNetworkMap" type="cn.roadm.admin.dto.ChannelMonitorNetworkDO">
        <id column="id" property="id"/>
        <result column="channel_id" property="channelId"/>
        <result column="alarm_flag" property="alarmFlag"/>
        <result column="continuous_num" property="continuousNum"/>
        <result column="alarm_object_type" property="numAlarmObjectType"/>
        <result column="network_interval_time" property="networkIntervalTime"/>
        <result column="data_scan_time" property="dataScanTime"/>
        <result column="alarm_content" property="alarmContent"/>
    </resultMap>

    <select id="getStatusConfig" resultMap="ChannelMonitorStatusMap">
        select id, channel_id, alarm_flag, delay_time, report_succ_rate, send_num_limit, receipt_rate,
               alarm_type, alarm_cycle, alarm_num, alarm_interval_time, data_scan_time, phone, email, alarm_content
        from alarm_pa_report
        where channel_id = #{channelId}
        limit 1
    </select>

    <insert id="insertStatusConfig" parameterType="cn.roadm.admin.dto.ChannelMonitorStatusDO">
        insert into alarm_pa_report(channel_id, alarm_flag, delay_time, report_succ_rate, send_num_limit, receipt_rate,
                                    alarm_type, alarm_cycle, alarm_num, alarm_interval_time, data_scan_time, phone, email, alarm_content)
        values (#{channelId}, #{alarmFlag}, #{delayTime}, #{reportSuccRate}, #{sendNumLimit}, #{receiptRate},
                #{alarmType}, #{alarmCycle}, #{alarmNum}, #{alarmIntervalTime}, #{dataScanTime}, #{phone}, #{email}, #{alarmContent})
    </insert>

    <update id="updateStatusConfig" parameterType="cn.roadm.admin.dto.ChannelMonitorStatusDO">
        update alarm_pa_report
        set alarm_flag = #{alarmFlag},
            delay_time = #{delayTime},
            report_succ_rate = #{reportSuccRate},
            send_num_limit = #{sendNumLimit},
            receipt_rate = #{receiptRate},
            alarm_type = #{alarmType},
            alarm_cycle = #{alarmCycle},
            alarm_num = #{alarmNum},
            alarm_interval_time = #{alarmIntervalTime},
            data_scan_time = #{dataScanTime},
            phone = #{phone},
            email = #{email},
            alarm_content = #{alarmContent}
        where id = #{id}
    </update>

    <select id="getAlarmContactConfig" resultMap="ChannelAlarmContactMap">
        select id, channelid, phone, email
        from channel_alarm_config
        where channelid = #{channelId}
        limit 1
    </select>

    <insert id="insertAlarmContactConfig" parameterType="cn.roadm.admin.dto.ChannelAlarmContactDO">
        insert into channel_alarm_config(channelid, phone, email)
        values (#{channelId}, #{phone}, #{email})
    </insert>

    <update id="updateAlarmContactConfig" parameterType="cn.roadm.admin.dto.ChannelAlarmContactDO">
        update channel_alarm_config
        set phone = #{phone},
            email = #{email}
        where id = #{id}
    </update>

    <select id="getQueueConfig" resultMap="ChannelMonitorQueueMap">
        select id, channel_id, alarm_flag, alarm_queue_size, alarm_object_type, alarm_interval_time, data_scan_time, alarm_content
        from alarm_channel_queue_size
        where channel_id = #{channelId}
        limit 1
    </select>

    <insert id="insertQueueConfig" parameterType="cn.roadm.admin.dto.ChannelMonitorQueueDO">
        insert into alarm_channel_queue_size(channel_id, alarm_flag, alarm_queue_size, alarm_object_type,
                                             alarm_interval_time, data_scan_time, alarm_content)
        values (#{channelId}, #{alarmFlag}, #{alarmQueueSize}, #{alarmObjectType},
                #{alarmIntervalTime}, #{dataScanTime}, #{alarmContent})
    </insert>

    <update id="updateQueueConfig" parameterType="cn.roadm.admin.dto.ChannelMonitorQueueDO">
        update alarm_channel_queue_size
        set alarm_flag = #{alarmFlag},
            alarm_queue_size = #{alarmQueueSize},
            alarm_object_type = #{alarmObjectType},
            alarm_interval_time = #{alarmIntervalTime},
            data_scan_time = #{dataScanTime},
            alarm_content = #{alarmContent}
        where id = #{id}
    </update>

    <select id="getErrorConfig" resultMap="ChannelMonitorErrorMap">
        select id, channelid, alarm_flag, alarm_interval_time, alarm_type, errcode, alarm_content
        from alarm_channel_errcode
        where channelid = #{channelId}
        limit 1
    </select>

    <insert id="insertErrorConfig" parameterType="cn.roadm.admin.dto.ChannelMonitorErrorDO">
        insert into alarm_channel_errcode(channelid, alarm_flag, alarm_interval_time, alarm_type, errcode, alarm_content)
        values (#{channelId}, #{alarmFlag}, #{alarmIntervalTime}, #{alarmErrType}, #{errcode}, #{alarmContent})
    </insert>

    <update id="updateErrorConfig" parameterType="cn.roadm.admin.dto.ChannelMonitorErrorDO">
        update alarm_channel_errcode
        set alarm_flag = #{alarmFlag},
            alarm_interval_time = #{alarmIntervalTime},
            alarm_type = #{alarmErrType},
            errcode = #{errcode},
            alarm_content = #{alarmContent}
        where id = #{id}
    </update>

    <select id="getNetworkConfig" resultMap="ChannelMonitorNetworkMap">
        select id, channel_id, alarm_flag, continuous_num, alarm_object_type, network_interval_time, data_scan_time, alarm_content
        from alarm_channel_network
        where channel_id = #{channelId}
        limit 1
    </select>

    <insert id="insertNetworkConfig" parameterType="cn.roadm.admin.dto.ChannelMonitorNetworkDO">
        insert into alarm_channel_network(channel_id, alarm_flag, continuous_num, alarm_object_type,
                                          network_interval_time, data_scan_time, alarm_content)
        values (#{channelId}, #{alarmFlag}, #{continuousNum}, #{numAlarmObjectType},
                #{networkIntervalTime}, #{dataScanTime}, #{alarmContent})
    </insert>

    <update id="updateNetworkConfig" parameterType="cn.roadm.admin.dto.ChannelMonitorNetworkDO">
        update alarm_channel_network
        set alarm_flag = #{alarmFlag},
            continuous_num = #{continuousNum},
            alarm_object_type = #{numAlarmObjectType},
            network_interval_time = #{networkIntervalTime},
            data_scan_time = #{dataScanTime},
            alarm_content = #{alarmContent}
        where id = #{id}
    </update>
</mapper>
