<?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,d.use_state,d.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
where
s.statistical_date = CURDATE()
<if test= "type.length != 0" >
and (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>