<?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="cn.wisenergy.chnmuseum.party.mapper.TBoardStatisticMapper"> <!-- 通用查询映射结果 --> <resultMap id="BaseResultMap" type="cn.wisenergy.chnmuseum.party.model.TBoardStatistic"> <id column="id" property="id" /> <result column="board_id" property="boardId" /> <result column="board_name" property="boardName" /> <result column="organ_id" property="organId" /> <result column="area_id" property="areaId" /> <result column="play_number" property="playNumber" /> <result column="play_date" property="playDate" /> </resultMap> <!-- 播放排行结果 --> <resultMap id="rankMap" type="cn.wisenergy.chnmuseum.party.model.TBoardPlayRank"> <id column="id" property="id"/> <result column="board_id" property="boardId"/> <result column="board_name" property="boardName"/> <result column="play_number" property="playNumber"/> <result column="play_date" property="playDate"/> </resultMap> <resultMap id="trendMap" type="cn.wisenergy.chnmuseum.party.model.TBoardPlayTrend"> <result column="play_number" property="playNumber"/> <result column="play_date" property="playDate"/> </resultMap> <!-- 地区看板统计 --> <resultMap id="districtMap" type="cn.wisenergy.chnmuseum.party.model.TDistrictBoardStatistic"> <result column="area_name" property="areaName"/> <result column="play_number" property="playNumber"/> <result column="board_cnt" property="boardCnt"/> </resultMap> <!-- 通用查询结果列 --> <sql id="Base_Column_List"> id, board_id, board_name, organ_id, area_id, play_number, play_date </sql> <!-- 展板播放量统计 --> <select id="getBoardRankPageList" parameterType="cn.wisenergy.chnmuseum.party.model.TBoardPlayRank" resultMap="rankMap"> SELECT board_id,board_name,sum(play_number) play_number from t_board_statistic <where> <if test="rank.playDate != null"> and play_date like concat( #{rank.playDate}, '%') </if> <if test="rank.organId != null"> and organ_id = #{rank.organId} </if> </where> GROUP BY board_id,board_name ORDER BY sum(play_number) desc </select> <!-- 播放趋势统计 --> <select id="getBoardTrendPageList" parameterType="cn.wisenergy.chnmuseum.party.model.TBoardPlayTrend" resultMap="trendMap"> <if test="trend.playDate != null and trend.playDate.length() == 4"> SELECT sum(play_number) play_number,left(play_date,6) play_date from t_board_statistic where left(play_date,4) = ${trend.playDate} GROUP BY left(play_date,6) ORDER BY left(play_date,6) </if> <if test="trend.playDate != null and trend.playDate.length() == 6"> SELECT sum(play_number) play_number,play_date from t_board_statistic where left(play_date,6) = ${trend.playDate} GROUP BY play_date ORDER BY play_date </if> </select> <!-- 地区展板播放统计 --> <select id="getBoardDistrictPageList" resultMap="districtMap"> SELECT a.name area_name,sum(play_number) play_number,count(board_id) board_cnt from t_board_statistic s left join t_area a on s.area_id = a.id <where> <if test="district.playDate != null and district.playDate.length() == 4"> left(play_date,4) = ${district.playDate} </if> <if test="district.playDate != null and district.playDate.length() == 6"> left(play_date,6) = ${district.playDate} </if> <if test="district.playDate != null and district.playDate.length() == 6"> play_date = ${district.playDate} </if> </where> GROUP BY area_id order by sum(play_number) desc,count(board_id) desc </select> <!-- 获取展板播放总量 --> <select id="getBoardPlayTotal" parameterType="cn.wisenergy.chnmuseum.party.model.TBoardSurvey" resultType="java.lang.Integer"> SELECT sum(play_number) play_number from t_board_statistic s <where> <if test="statisticDate != null and statisticDate.length() == 4"> and left(play_date,4) = ${statisticDate} </if> <if test="statisticDate != null and statisticDate.length() == 6"> and left(play_date,6) = ${statisticDate} </if> <if test="statisticDate != null and statisticDate.length() == 8"> and play_date = ${statisticDate} </if> <if test="areaId != null"> and area_id like concat(#{areaId}, '%') </if> <if test="organId != null"> and organ_id = #{organId} </if> </where> </select> <!-- 获取展板总量 --> <select id="getBoardTotal" resultType="java.lang.Integer"> SELECT count( a.board_id ) FROM ( SELECT board_id FROM t_board_statistic s <where> <if test="statisticDate != null and statisticDate.length() == 4"> left(play_date,4) = ${statisticDate} </if> <if test="statisticDate != null and statisticDate.length() == 6"> left(play_date,6) = ${statisticDate} </if> <if test="statisticDate != null and statisticDate.length() == 8"> play_date = ${statisticDate} </if> </where> GROUP BY board_id ) a </select> <!-- 获取播放展板的机构总量 --> <select id="getOrganTotal" resultType="java.lang.Integer"> SELECT count( a.organ_id ) FROM ( SELECT organ_id FROM t_board_statistic <where> <if test="statisticDate != null and statisticDate.length() == 4"> left(play_date,4) = ${statisticDate} </if> <if test="statisticDate != null and statisticDate.length() == 6"> left(play_date,6) = ${statisticDate} </if> <if test="statisticDate != null and statisticDate.length() == 8"> play_date = ${statisticDate} </if> </where> GROUP BY organ_id ) a </select> <!-- 获取互动总量 --> <select id="getInteractionTotal" resultType="java.lang.Integer"> select count(id) from t_interaction <where> <if test="statisticDate != null and statisticDate.length() == 4"> DATE_FORMAT(create_time,'%Y') = ${statisticDate} </if> <if test="statisticDate != null and statisticDate.length() == 6"> DATE_FORMAT(create_time,'%Y%m') = ${statisticDate} </if> <if test="statisticDate != null and statisticDate.length() == 8"> DATE_FORMAT(create_time,'%Y%m%d') = ${statisticDate} </if> </where> </select> <!-- 互动频次统计 --> <select id="getInteractionFrequency" resultType="java.util.HashMap"> <if test="frequencyDate != null and frequencyDate.length() == 4"> SELECT o.name organName,count(i.organ_id) frequencyCnt from t_interaction i left join t_organ o on i.organ_id = o.id <where> DATE_FORMAT(i.create_time,'%Y') = ${frequencyDate} </where> group by i.organ_id </if> <if test="frequencyDate != null and frequencyDate.length() == 6"> SELECT o.name organName,count(i.organ_id) frequencyCnt from t_interaction i left join t_organ o on i.organ_id = o.id <where> DATE_FORMAT(i.create_time,'%Y%m') = ${frequencyDate} </where> group by i.organ_id </if> </select> </mapper>