TBoardStatisticMapper.xml 8.13 KB
<?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>