济菏高速数据中心代码
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.

332 lines
18 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.DcPerceivedEventsWarningMapper">
<select id="perceivedEventsWarningNum" resultType="java.lang.Integer">
select count(1) from dc_warning
</select>
<select id="selectEventTypeList" resultType="com.zc.business.domain.DcEventType">
select event_type, event_name from dc_event_type
</select>
<select id="selectWarningById" resultType="com.zc.business.domain.DcWarning">
SELECT DISTINCT warning.`id`,warning.`stake_mark`, warning.`direction`,
warning.duration,
mark.longitude,mark.latitude,warning.lane,warning.vehicle_type vehicleType,
warning.`dept_id`,warning.`warning_state`,warning.`warning_time`,
warning.`user_id`, warning.`warning_source`,warning.`warning_level`,
warning.`remark`, warning.`create_time`,warning.`update_time`,
warning.`warning_type`,warning.`warning_subclass`,warning.`warning_title`,
warning.`other_config` FROM dc_warning AS warning
LEFT JOIN dc_stake_mark AS mark ON mark.stake_mark=warning.stake_mark and mark.direction=warning.direction
where warning.`id`=#{id}
</select>
<select id="selectPerceivedEventsList" resultType="com.zc.business.domain.DcWarning">
SELECT warning.`id`,warning.`stake_mark`, warning.`direction`,
mark.longitude,mark.latitude,warning.lane,duration,
warning.`dept_id`,warning.`warning_state`,warning.`warning_time`,
warning.`user_id`, warning.`warning_source`,warning.`warning_level`,
warning.`remark`, warning.`create_time`,warning.`update_time`,
warning.`warning_type`,warning.`warning_subclass`,warning.`warning_title`,
warning.`other_config` FROM dc_warning AS warning
left JOIN dc_stake_mark AS mark ON mark.stake_mark=warning.stake_mark and mark.direction=warning.direction
<where>
<if test="warningType != null and warningType != ''"> and warning.warning_type = #{warningType}</if>
<if test="warningSubclass != null and warningSubclass != ''"> and warning.warning_subclass = #{warningSubclass}</if>
<if test="warningSource != null and warningSource != ''"> and warning.warning_source = #{warningSource}</if>
<if test="direction != null and direction != ''"> and warning.direction = #{direction}</if>
<if test="stakeMark != null and direction != ''"> and warning.stake_mark = #{stakeMark}</if>
<if test="startTime != null and endTime != null ">
and warning.warning_time between #{startTime} and #{endTime}</if>
</where>
</select>
<select id="selectSectionPerceivedEventsList" resultType="hashmap">
select s.section_name sectionName,
(select COUNT(1) FROM `dc_warning` as w where
DATE_FORMAT(w.warning_time,'%Y-%m-%d')=DATE_FORMAT(#{warningTime},'%Y-%m-%d')
and mark.stake_mark=w.stake_mark)number from dc_warning as w
left JOIN dc_stake_mark as mark ON mark.stake_mark=w.stake_mark and mark.direction=w.direction
LEFT JOIN dc_road_section as s ON mark.section_id=s.id
where mark.stake_mark is not null
group by w.stake_mark
HAVING number !=0
order by number desc
</select>
<select id="selectSectionPerceivedNumber" resultType="java.util.HashMap">
select s.section_name sectionName,
(select COUNT(1) FROM `dc_warning` as w where
DATE_FORMAT(w.warning_time,'%Y-%m-%d')=DATE_FORMAT(#{warningTime},'%Y-%m-%d')
and mark.stake_mark=w.stake_mark)number from dc_warning as w
left JOIN dc_stake_mark as mark ON mark.stake_mark=w.stake_mark and mark.direction=w.direction
LEFT JOIN dc_road_section as s ON mark.section_id=s.id
where mark.stake_mark is not null
group by w.stake_mark
HAVING number !=0
</select>
<select id="selectDailyCumulative" resultType="java.util.HashMap">
SELECT DATE_FORMAT(warning_time, '%Y-%m-%d %H') AS time, COUNT(*) AS number
FROM dc_warning
WHERE warning_time >= CURDATE() AND warning_time <![CDATA[<]]> CURDATE() + INTERVAL 1 DAY
GROUP BY time
ORDER BY time
</select>
<select id="selectDailyCumulativeMonth" resultType="java.util.HashMap">
SELECT HOUR(warning_time) AS time, COUNT(*) AS number
FROM dc_warning
WHERE MONTH(warning_time) = MONTH(CURDATE())
AND YEAR(warning_time) = YEAR(CURDATE())
GROUP BY HOUR(warning_time)
ORDER BY HOUR(warning_time);
</select>
<select id="selectWarningSourceGroup" resultType="java.util.HashMap">
SELECT warning_source warningSource,COUNT(*) AS number FROM dc_warning
where DATE_FORMAT(warning_time,'%Y-%m-%d')=DATE_FORMAT(#{warningTime},'%Y-%m-%d')
GROUP BY warning_source
</select>
<select id="selectWarningSourceGroupCount" resultType="java.lang.String">
SELECT COUNT(*) AS number FROM dc_warning
where DATE_FORMAT(warning_time,'%Y-%m-%d')=DATE_FORMAT(#{warningTime},'%Y-%m-%d')
</select>
<select id="selectWarningStateDay" resultType="java.util.HashMap">
select t1.warningState,t1.warningStateName,IFNULL(t2.num,0)number from
(select '1' as warningState,'上报' as warningStateName
UNION ALL select '2' as warningState,'已完成' as warningStateName
UNION ALL select '3' as warningState,'已终止' as warningStateName
UNION ALL select '4' as warningState,'自动结束' as warningStateName) t1
LEFT JOIN
(SELECT warning_state warningState,count(*) num
from dc_warning
where DATE_FORMAT(warning_time,'%Y-%m-%d')=DATE_FORMAT(now(),'%Y-%m-%d')
GROUP BY warning_state)t2
on t1.warningState=t2.warningState
</select>
<select id="selectWarningTypeDay" resultType="java.util.HashMap">
SELECT warning_type warningType,COUNT(*) AS number FROM dc_warning
GROUP BY warning_type
ORDER BY number DESC
</select>
<select id="selectWarningTrendDay" resultType="java.util.HashMap">
SELECT DATE_FORMAT(warning.warning_time, '%Y-%m-%d %H') AS time, COUNT(*) AS number
FROM dc_warning AS warning
LEFT JOIN dc_stake_mark AS mark ON warning.stake_mark=mark.stake_mark
WHERE DATE_FORMAT(warning.warning_time,'%Y-%m-%d')=DATE_FORMAT(#{warningTime},'%Y-%m-%d')
AND warning.direction=#{direction} and mark.direction=#{direction}
AND mark.`section_id`=#{sectionId}
GROUP BY time
</select>
<select id="selectWarningTrendMonth" resultType="java.util.HashMap">
SELECT DATE(warning.warning_time) AS day, COUNT(*) AS number
FROM dc_warning as warning
LEFT JOIN dc_stake_mark AS mark ON warning.stake_mark=mark.stake_mark
WHERE DATE_FORMAT(warning.warning_time,'%Y-%m') =DATE_FORMAT(#{warningTime},'%Y-%m')
AND warning.direction=#{direction} and mark.direction=#{direction}
and mark.`section_id`=#{sectionId}
GROUP BY day
ORDER BY day
</select>
<select id="selectWarningTrendQuarter" resultType="java.util.HashMap">
SELECT
CASE
WHEN MONTH(warning.warning_time) BETWEEN 1 AND 3 THEN '第一季度'
WHEN MONTH(warning.warning_time) BETWEEN 4 AND 6 THEN '第二季度'
WHEN MONTH(warning.warning_time) BETWEEN 7 AND 9 THEN '第三季度'
ELSE '第四季度'
END AS QUARTER,
MONTH(warning.warning_time) AS month,
COUNT(*) AS number
FROM dc_warning as warning
LEFT JOIN dc_stake_mark AS mark ON warning.stake_mark=mark.stake_mark
WHERE YEAR(warning.warning_time) =DATE_FORMAT(#{warningTime},'%Y')
AND warning.direction=#{direction} and mark.direction=#{direction}
and mark.`section_id`=#{sectionId}
GROUP BY QUARTER, MONTH
ORDER BY QUARTER, MONTH;
</select>
<select id="selectWarningTrendYear" resultType="java.util.HashMap">
SELECT month(warning.warning_time) AS month, COUNT(*) AS number
FROM dc_warning as warning
LEFT JOIN dc_stake_mark AS mark ON warning.stake_mark=mark.stake_mark
where mark.`section_id`=#{sectionId} AND warning.direction=#{direction} and mark.direction=#{direction}
and DATE_FORMAT(warning.warning_time,'%Y')=DATE_FORMAT(#{warningTime},'%Y')
GROUP BY month
</select>
<select id="selectWarningSectionTypeDayCount" resultType="java.lang.String">
SELECT COUNT(*) AS number FROM dc_warning as warning
LEFT JOIN dc_stake_mark as mark on warning.stake_mark=mark.stake_mark
where DATE_FORMAT(warning.warning_time,'%Y-%m-%d')=DATE_FORMAT(#{warningTime},'%Y-%m-%d')
AND warning.direction=#{direction} and mark.direction=#{direction}
and mark.`section_id`=#{sectionId}
</select>
<select id="selectWarningSectionTypeDay" resultType="java.util.HashMap">
SELECT warning.warning_type warningType,
COUNT(*) AS number
FROM dc_warning as warning
LEFT JOIN dc_stake_mark as mark on warning.stake_mark=mark.stake_mark
where DATE_FORMAT(warning.warning_time,'%Y-%m-%d')=DATE_FORMAT(#{warningTime},'%Y-%m-%d')
AND warning.direction=#{direction} and mark.direction=#{direction}
and mark.`section_id`=#{sectionId}
GROUP BY warning_type
ORDER BY number DESC
</select>
<select id="selectWarningSectionTypeMonthCount" resultType="java.lang.String">
SELECT COUNT(*) AS number FROM dc_warning as warning
LEFT JOIN dc_stake_mark as mark on warning.stake_mark=mark.stake_mark
where DATE_FORMAT(warning.warning_time,'%Y-%m') =DATE_FORMAT(#{warningTime},'%Y-%m')
AND warning.direction=#{direction} and mark.direction=#{direction}
and mark.`section_id`=#{sectionId}
</select>
<select id="selectWarningSectionTypeMonth" resultType="java.util.HashMap">
SELECT warning.warning_type warningType,COUNT(*) AS number
FROM dc_warning as warning
LEFT JOIN dc_stake_mark as mark on warning.stake_mark=mark.stake_mark
where DATE_FORMAT(warning.warning_time,'%Y-%m') =DATE_FORMAT(#{warningTime},'%Y-%m')
AND warning.direction=#{direction} and mark.direction=#{direction}
and mark.`section_id`=#{sectionId}
GROUP BY warning_type
ORDER BY number DESC
</select>
<select id="selectWarningSectionTypeQuarterCount" resultType="string">
SELECT
COUNT(*) AS number
FROM dc_warning as warning
LEFT JOIN dc_stake_mark AS mark ON warning.stake_mark=mark.stake_mark
WHERE YEAR(warning.warning_time) =DATE_FORMAT(#{warningTime},'%Y')
AND warning.direction=#{direction} and mark.direction=#{direction}
and mark.`section_id`=#{sectionId}
</select>
<select id="selectWarningSectionTypeQuarter" resultType="java.util.HashMap">
SELECT
CASE
WHEN MONTH(warning.warning_time) BETWEEN 1 AND 3 THEN '第一季度'
WHEN MONTH(warning.warning_time) BETWEEN 4 AND 6 THEN '第二季度'
WHEN MONTH(warning.warning_time) BETWEEN 7 AND 9 THEN '第三季度'
ELSE '第四季度'
END AS QUARTER,
warning.warning_type warningType,
COUNT(*) AS number
FROM dc_warning as warning
LEFT JOIN dc_stake_mark AS mark ON warning.stake_mark=mark.stake_mark
WHERE YEAR(warning.warning_time) =DATE_FORMAT(#{warningTime},'%Y')
AND warning.direction=#{direction} and mark.direction=#{direction}
and mark.`section_id`=#{sectionId}
GROUP BY QUARTER, warningType
ORDER BY QUARTER;
</select>
<select id="selectWarningSectionTypeYearCount" resultType="java.lang.String">
SELECT COUNT(*) AS number FROM dc_warning as warning
LEFT JOIN dc_stake_mark AS mark ON warning.stake_mark=mark.stake_mark
where mark.`section_id`=#{sectionId} AND warning.direction=#{direction} and mark.direction=#{direction}
and DATE_FORMAT(warning.warning_time,'%Y')=DATE_FORMAT(#{warningTime},'%Y')
</select>
<select id="selectWarningSectionTypeYear" resultType="java.util.HashMap">
SELECT warning.warning_type warningType, COUNT(*) AS number
FROM dc_warning as warning
LEFT JOIN dc_stake_mark AS mark ON warning.stake_mark=mark.stake_mark
where mark.`section_id`=#{sectionId} AND warning.direction=#{direction} and mark.direction=#{direction}
and DATE_FORMAT(warning.warning_time,'%Y')=DATE_FORMAT(#{warningTime},'%Y')
GROUP BY warningType
</select>
<select id="selectSectionMark" resultType="java.util.HashMap">
SELECT stake_mark stakeMark FROM dc_stake_mark AS mark WHERE mark.section_id=#{sectionId}
</select>
<select id="selectSectionNumber" resultType="java.lang.String">
select count(1) from dc_warning where stake_mark=#{stakeMark} AND warning.direction=#{direction}
</select>
<select id="selectWarningEscalation" resultType="java.util.HashMap">
select org.organization_name,warning.warning_type,warning.warning_subclass,
warning_title,warning.warning_state,DATE_FORMAT(warning.warning_time,'%Y-%m-%d %H:%m:%s') warningTime,
warning. warning_source,DATE_FORMAT(warning.create_time,'%Y-%m-%d %H:%m:%s') createTime from dc_warning as warning
LEFT JOIN dc_stake_mark as mark on warning.stake_mark=mark.stake_mark and mark.direction=warning.direction
LEFT JOIN dc_organization as org on mark.stake_mark=org.stake_mark
<where>
<if test="warningState != null and warningState != ''"> and warning.warning_state = #{warningState}</if>
</where>
</select>
<update id="updateWarning">
update dc_warning
<trim prefix="SET" suffixOverrides=",">
<if test="stakeMark != null and stakeMark != ''">stake_mark = #{stakeMark},</if>
<if test="direction != null">direction = #{direction},</if>
<if test="deptId != null">dept_id = #{deptId},</if>
<if test="warningState != null">warning_state = #{warningState},</if>
<if test="warningTime != null">warning_time = #{warningTime},</if>
<if test="userId != null">user_id = #{userId},</if>
<if test="warningSource != null">warning_source = #{warningSource},</if>
<if test="warningLevel != null">warning_level = #{warningLevel},</if>
<if test="remark != null">remark = #{remark},</if>
<if test="updateTime != null">update_time = #{updateTime},</if>
<if test="warningType != null">warning_type = #{warningType},</if>
<if test="warningSubclass != null">warning_subclass = #{warningSubclass},</if>
<if test="warningTitle != null">warning_title = #{warningTitle},</if>
<if test="otherConfig != null">other_config = #{otherConfig},</if>
<if test="lane != null">lane = #{lane},</if>
<if test="vehicleType != null">vehicle_type = #{vehicleType},</if>
</trim>
where id = #{id}
</update>
<select id="selectWarningMarkDay" resultType="java.lang.String">
select count(1) from dc_warning where stake_mark=#{stakeMark}
AND direction=#{direction} and DATE(warning_time)=DATE_FORMAT(#{warningTime},'%Y-%m-%d')
</select>
<select id="selectWarningMarkMonth" resultType="java.lang.String">
select count(1) from dc_warning where stake_mark=#{stakeMark}
AND direction=#{direction} and DATE_FORMAT(warning_time,'%Y-%m') =DATE_FORMAT(#{warningTime},'%Y-%m')
</select>
<select id="selectWarningMarkYear" resultType="java.lang.String">
select count(1) from dc_warning where stake_mark=#{stakeMark}
AND direction=#{direction} and YEAR(warning_time) =DATE_FORMAT(#{warningTime},'%Y')
</select>
<select id="selectWarningMarkQuarter" resultType="hashmap">
select count(1) number,stake_mark stakeMark,
CASE
WHEN MONTH(warning_time) BETWEEN 1 AND 3 THEN '第一季度'
WHEN MONTH(warning_time) BETWEEN 4 AND 6 THEN '第二季度'
WHEN MONTH(warning_time) BETWEEN 7 AND 9 THEN '第三季度'
ELSE '第四季度'
END AS QUARTER
from dc_warning where stake_mark=#{stakeMark} and
YEAR(warning_time) =DATE_FORMAT(#{warningTime},'%Y')
AND direction=#{direction} and stake_mark is not null
GROUP BY QUARTER
ORDER BY QUARTER;
</select>
<select id="selectNumber" resultType="int">
select count(1) from dc_warning
</select>
<select id="selectWarningMarkQuarterOptimize" resultType="java.util.HashMap">
SELECT count( 1 ) sectionNumber,
CASE
WHEN MONTH ( w.warning_time ) BETWEEN 1 AND 3 THEN '第一季度'
WHEN MONTH ( w.warning_time ) BETWEEN 4 AND 6 THEN '第二季度'
WHEN MONTH ( w.warning_time ) BETWEEN 7 AND 9 THEN '第三季度'
ELSE '第四季度'
END AS QUARTER
FROM dc_warning w
LEFT JOIN dc_stake_mark m ON w.stake_mark = m.stake_mark and m.direction=w.direction
WHERE m.stake_mark IS NOT null and w.direction=#{direction}
and YEAR(w.warning_time) =DATE_FORMAT(#{warningTime},'%Y')
GROUP BY QUARTER
ORDER BY QUARTER;
</select>
<select id="selectWarningMarkDayOptimize" resultType="java.util.HashMap">
SELECT DISTINCT m.stake_mark stakeMarkId,
(SELECT count( 0 ) FROM dc_warning w WHERE w.stake_mark = m.stake_mark
<if test = 'type == "day"' >and DATE(w.warning_time)= DATE_FORMAT(#{warningTime},'%Y-%m-%d')</if>
<if test = 'type == "month"' >and DATE_FORMAT(w.warning_time,'%Y-%m') =DATE_FORMAT(#{warningTime},'%Y-%m')</if>
<if test = 'type == "year"' >and YEAR(w.warning_time) =DATE_FORMAT(#{warningTime},'%Y')</if>
AND w.direction = #{direction}) sectionNumber FROM dc_stake_mark AS m
WHERE m.section_id = #{sectionId}
HAVING sectionNumber!=0
</select>
</mapper>