济菏高速数据中心代码
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

120 lines
5.6 KiB

<?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>