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