<?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.zc.business.mapper.OnlineSumMapper"> <resultMap type="com.zc.business.domain.OnlineSum" id="OnlineSum"> <result property="id" column="id"/> <result property="deviceId" column="device_id"/> <result property="totalCount" column="total_count"/> <result property="onlineRate" column="online_rate"/> <result property="offlineRate" column="offline_rate"/> <result property="lossRate" column="loss_rate"/> <result property="rttAvg" column="rtt_avg"/> <result property="networkQuality" column="network_quality"/> <result property="statisticalDate" column="statistical_date"/> <result property="deviceType" column="device_type"/> <result property="roadId" column="section_id"/> <result property="deviceIp" column="device_ip"/> <result property="deviceName" column="device_name"/> <result property="stakeMark" column="stake_mark"/> <result property="direction" column="direction"/> <result property="useState" column="use_state"/> <result property="deviceStatus" column="device_state"/> </resultMap> <insert id="duplicateKeyUpdate"> insert into dc_online_sum (device_id,total_count,online_rate,offline_rate,loss_rate,rtt_avg,network_quality,statistical_date) values (#{deviceId},#{totalCount},#{onlineRate},#{offlineRate},#{lossRate},#{rttAvg},#{networkQuality},#{statisticalDate}) on duplicate key update total_count= values(total_count), online_rate = values(online_rate), offline_rate = values(offline_rate), loss_rate = values(loss_rate), rtt_avg = values(rtt_avg), network_quality = values(network_quality) </insert> <select id="queryByDateRangeOfDevice" resultMap="OnlineSum"> select id,device_id,total_count,online_rate,offline_rate,loss_rate,rtt_avg,network_quality,statistical_date from dc_online_sum where device_id = #{deviceId} and (statistical_date between #{startDate} and #{endDate}) </select> <select id="queryByDeviceTypeAndDate" resultMap="OnlineSum"> select s.id,s.device_id,total_count,online_rate,offline_rate,loss_rate,rtt_avg,network_quality,statistical_date,COALESCE(d.child_type,d.device_type) as device_type from dc_online_sum s join dc_device d on s.device_id = d.id where d.use_state = 1 and (s.statistical_date BETWEEN #{startDate} AND #{endDate}) <if test="types.length != 0"> and (d.device_type in <foreach item="typeItem" collection="types" open="(" separator="," close=")"> #{typeItem} </foreach> or d.child_type in <foreach item="typeItem" collection="types" open="(" separator="," close=")"> #{typeItem} </foreach> ) </if> <if test="direction != null and direction != ''"> and d.direction = #{direction} </if> </select> <select id="queryByDateOfDeviceType" resultMap="OnlineSum"> select s.id,s.device_id,total_count, online_rate,offline_rate,loss_rate, rtt_avg,network_quality,statistical_date,COALESCE (d.child_type, d.device_type) as device_type from dc_online_sum s join dc_device d on s.device_id = d.id where d.use_state = 1 and s.statistical_date = #{queryDate} </select> <select id="queryByDateOfRoad" resultMap="OnlineSum"> select s.id,s.device_id,total_count,online_rate, offline_rate,loss_rate,rtt_avg,network_quality,statistical_date, m.section_id from dc_online_sum s join dc_device d on s.device_id = d.id LEFT JOIN dc_stake_mark m on m.stake_mark=d.stake_mark and m.direction = d.direction where d.use_state = 1 and s.statistical_date = #{queryDate} </select> <select id="queryByDeviceTypesOfToday" parameterType="com.zc.business.controller.queryParams.OnlineQueryParams" resultMap="OnlineSum"> select d.device_ip,d.device_name,d.stake_mark,COALESCE (d.child_type, d.device_type) as device_type, d.direction, IF(d.use_state = 1, d.use_state, 0) AS use_state, IF(d.device_state = 1, d.device_state, 0) AS device_state, s.id,s.device_id,total_count,online_rate, offline_rate,loss_rate,rtt_avg,network_quality,statistical_date from dc_device d join dc_online_sum s on s.device_id = d.id JOIN (SELECT device_id, MAX(statistical_date) AS max_date FROM dc_online_sum WHERE DATE(statistical_date) = CURDATE() GROUP BY device_id) s_max ON s.device_id = s_max.device_id AND s.statistical_date = s_max.max_date where <if test="type.length != 0"> (d.device_type in <foreach item="typeItem" collection="type" open="(" separator="," close=")"> #{typeItem} </foreach> or d.child_type in <foreach item="typeItem" collection="type" open="(" separator="," close=")"> #{typeItem} </foreach> ) </if> <if test="deviceIp != null and deviceIp != ''"> and d.device_ip like concat('%',#{deviceIp},'%') </if> <if test="stakeMark != null and stakeMark != ''"> and d.stake_mark like concat('%',#{stakeMark},'%') </if> <if test="deviceState != null and deviceState != ''"> and d.device_state = #{deviceState} </if> <if test="useState != null and useState != ''"> and d.use_state = #{useState} </if> <if test="orderByField != null and orderDirection != null"> order by ${orderByField} ${orderDirection} </if> </select> </mapper>