TBoardStatisticMapper.xml 11.6 KB
Newer Older
yangtianyou's avatar
yangtianyou committed
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43
<?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">
wzp's avatar
wzp committed
44 45 46
        SELECT s.board_id,s.board_name,sum(s.play_number) play_number
        from t_board_statistic s
        left join t_organ o on o.id = s.organ_id
yangtianyou's avatar
yangtianyou committed
47 48
        <where>
            <if test="rank.playDate != null">
wzp's avatar
wzp committed
49
                and s.play_date like concat( #{rank.playDate}, '%')
yangtianyou's avatar
yangtianyou committed
50 51
            </if>
            <if test="rank.organId != null">
wzp's avatar
wzp committed
52 53 54 55
                and s.organ_id = #{rank.organId}
            </if>
            <if test="rank.organCode != null">
                and o.code LIKE concat(#{rank.organCode}, '%')
yangtianyou's avatar
yangtianyou committed
56 57
            </if>
        </where>
wzp's avatar
wzp committed
58 59
        GROUP BY s.board_id,s.board_name
        ORDER BY sum(s.play_number) desc
yangtianyou's avatar
yangtianyou committed
60 61 62 63 64
    </select>

    <!-- 播放趋势统计 -->
    <select id="getBoardTrendPageList" parameterType="cn.wisenergy.chnmuseum.party.model.TBoardPlayTrend" resultMap="trendMap">
        <if test="trend.playDate != null and trend.playDate.length() == 4">
wzp's avatar
wzp committed
65 66 67 68 69 70 71 72 73
            SELECT sum(s.play_number) play_number,left(s.play_date,6) play_date
            from t_board_statistic s
            left join t_organ o on o.id = s.organ_id
            where left(s.play_date,4) = ${trend.playDate}
            <if test="trend.organCode != null">
                and o.code LIKE concat(#{trend.organCode}, '%')
            </if>
            GROUP BY left(s.play_date,6)
            ORDER BY left(s.play_date,6)
yangtianyou's avatar
yangtianyou committed
74 75
        </if>
        <if test="trend.playDate != null and trend.playDate.length() == 6">
wzp's avatar
wzp committed
76 77 78 79 80 81 82 83 84
            SELECT sum(s.play_number) play_number,s.play_date
            from t_board_statistic s
            left join t_organ o on o.id = s.organ_id
            where left(s.play_date,6) = ${trend.playDate}
            <if test="trend.organCode != null">
                and o.code LIKE concat(#{trend.organCode}, '%')
            </if>
            GROUP BY s.play_date
            ORDER BY s.play_date
yangtianyou's avatar
yangtianyou committed
85
        </if>
wzp's avatar
wzp committed
86 87 88 89 90 91 92 93 94 95 96
        <if test="trend.playDate != null and trend.playDate.length() == 8">
            SELECT sum(s.play_number) play_number,s.play_date
            from t_board_statistic s
            left join t_organ o on o.id = s.organ_id
            where s.play_date = ${trend.playDate}
            <if test="trend.organCode != null">
                and o.code LIKE concat(#{trend.organCode}, '%')
            </if>
            GROUP BY s.play_date
            ORDER BY s.play_date
        </if>
yangtianyou's avatar
yangtianyou committed
97 98
    </select>

wzp's avatar
wzp committed
99 100 101 102 103 104 105 106 107 108 109 110 111 112

    <select id="getBoardPageList" parameterType="cn.wisenergy.chnmuseum.party.model.TBoardPlayTrend" resultMap="trendMap">
            SELECT sum(s.play_number) play_number,left(s.play_date,6) play_date
            from t_board_statistic s
            left join t_organ o on o.id = s.organ_id
            where
            left(s.play_date,6) between ${trend.beginDate} and ${trend.endDate}
            <if test="trend.organCode != null">
                and o.code LIKE concat(#{trend.organCode}, '%')
            </if>
            GROUP BY left(s.play_date,6)
            ORDER BY left(s.play_date,6)
    </select>

yangtianyou's avatar
yangtianyou committed
113 114
    <!-- 地区展板播放统计 -->
    <select id="getBoardDistrictPageList" resultMap="districtMap">
wzp's avatar
wzp committed
115
        SELECT a.name area_name,sum(s.play_number) play_number,count(s.board_id) board_cnt from t_board_statistic s
yangtianyou's avatar
yangtianyou committed
116
        left join t_area a on s.area_id = a.id
wzp's avatar
wzp committed
117
        left join t_organ o on o.id = s.organ_id
yangtianyou's avatar
yangtianyou committed
118 119
        <where>
            <if test="district.playDate != null and district.playDate.length() == 4">
wzp's avatar
wzp committed
120
                left(s.play_date,4) = ${district.playDate}
yangtianyou's avatar
yangtianyou committed
121 122
            </if>
            <if test="district.playDate != null and district.playDate.length() == 6">
wzp's avatar
wzp committed
123
                left(s.play_date,6) = ${district.playDate}
yangtianyou's avatar
yangtianyou committed
124 125
            </if>
            <if test="district.playDate != null and district.playDate.length() == 6">
wzp's avatar
wzp committed
126 127 128 129
                s.play_date = ${district.playDate}
            </if>
            <if test="district.organCode != null">
                and o.code LIKE concat(#{district.organCode}, '%')
yangtianyou's avatar
yangtianyou committed
130 131
            </if>
        </where>
wzp's avatar
wzp committed
132 133
        GROUP BY s.area_id
        order by sum(s.play_number) desc,count(board_id) desc
yangtianyou's avatar
yangtianyou committed
134 135 136
    </select>


yangtianyou's avatar
yangtianyou committed
137 138
    <!-- 获取展板播放总量 -->
    <select id="getBoardPlayTotal" parameterType="cn.wisenergy.chnmuseum.party.model.TBoardSurvey" resultType="java.lang.Integer">
wzp's avatar
wzp committed
139
        SELECT sum(s.play_number) play_number
yangtianyou's avatar
yangtianyou committed
140
        from t_board_statistic s
wzp's avatar
wzp committed
141
        left join t_organ o on o.id = s.organ_id
yangtianyou's avatar
yangtianyou committed
142 143
        <where>
            <if test="statisticDate != null and statisticDate.length() == 4">
wzp's avatar
wzp committed
144
                and left(s.play_date,4) = ${statisticDate}
yangtianyou's avatar
yangtianyou committed
145 146
            </if>
            <if test="statisticDate != null and statisticDate.length() == 6">
wzp's avatar
wzp committed
147
                and left(s.play_date,6) = ${statisticDate}
yangtianyou's avatar
yangtianyou committed
148 149
            </if>
            <if test="statisticDate != null and statisticDate.length() == 8">
wzp's avatar
wzp committed
150
                and s.play_date = ${statisticDate}
yangtianyou's avatar
yangtianyou committed
151 152
            </if>
            <if test="areaId != null">
wzp's avatar
wzp committed
153
                and s.area_id like concat(#{areaId}, '%')
yangtianyou's avatar
yangtianyou committed
154 155
            </if>
            <if test="organId != null">
wzp's avatar
wzp committed
156 157 158 159
                and s.organ_id = #{organId}
            </if>
            <if test="organCode != null">
                and o.code LIKE concat(#{organCode}, '%')
yangtianyou's avatar
yangtianyou committed
160 161 162 163 164 165 166 167
            </if>
        </where>
    </select>

    <!-- 获取展板总量 -->
    <select id="getBoardTotal" resultType="java.lang.Integer">
        SELECT count( a.board_id )
            FROM
wzp's avatar
wzp committed
168
                ( SELECT s.board_id
yangtianyou's avatar
yangtianyou committed
169
                    FROM t_board_statistic s
wzp's avatar
wzp committed
170
                    left join t_organ o on o.id = s.organ_id
yangtianyou's avatar
yangtianyou committed
171 172
                    <where>
                        <if test="statisticDate != null and statisticDate.length() == 4">
wzp's avatar
wzp committed
173
                            left(s.play_date,4) = ${statisticDate}
yangtianyou's avatar
yangtianyou committed
174 175
                        </if>
                        <if test="statisticDate != null and statisticDate.length() == 6">
wzp's avatar
wzp committed
176
                            left(s.play_date,6) = ${statisticDate}
yangtianyou's avatar
yangtianyou committed
177 178
                        </if>
                        <if test="statisticDate != null and statisticDate.length() == 8">
wzp's avatar
wzp committed
179 180 181 182
                            s.play_date = ${statisticDate}
                        </if>
                        <if test="organCode != null">
                            and o.code LIKE concat(#{organCode}, '%')
yangtianyou's avatar
yangtianyou committed
183 184
                        </if>
                    </where>
wzp's avatar
wzp committed
185
                    GROUP BY s.board_id ) a
yangtianyou's avatar
yangtianyou committed
186 187 188 189 190 191 192
    </select>

    <!-- 获取播放展板的机构总量 -->
    <select id="getOrganTotal" resultType="java.lang.Integer">
        SELECT
	count( a.organ_id )
    FROM
wzp's avatar
wzp committed
193 194
	    ( SELECT s.organ_id FROM t_board_statistic s
        left join t_organ o on o.id = s.organ_id
yangtianyou's avatar
yangtianyou committed
195 196
            <where>
                <if test="statisticDate != null and statisticDate.length() == 4">
wzp's avatar
wzp committed
197
                    left(s.play_date,4) = ${statisticDate}
yangtianyou's avatar
yangtianyou committed
198 199
                </if>
                <if test="statisticDate != null and statisticDate.length() == 6">
wzp's avatar
wzp committed
200
                    left(s.play_date,6) = ${statisticDate}
yangtianyou's avatar
yangtianyou committed
201 202
                </if>
                <if test="statisticDate != null and statisticDate.length() == 8">
wzp's avatar
wzp committed
203 204 205 206
                    s.play_date = ${statisticDate}
                </if>
                <if test="organCode != null">
                    and o.code LIKE concat(#{organCode}, '%')
yangtianyou's avatar
yangtianyou committed
207 208
                </if>
            </where>
wzp's avatar
wzp committed
209
	        GROUP BY s.organ_id ) a
yangtianyou's avatar
yangtianyou committed
210 211 212
    </select>
    <!-- 获取互动总量 -->
    <select id="getInteractionTotal" resultType="java.lang.Integer">
wzp's avatar
wzp committed
213 214
        select count(i.id) from t_interaction i
        left join t_organ o on o.id = i.organ_id
yangtianyou's avatar
yangtianyou committed
215 216
        <where>
            <if test="statisticDate != null and statisticDate.length() == 4">
wzp's avatar
wzp committed
217
                DATE_FORMAT(i.create_time,'%Y') = ${statisticDate}
yangtianyou's avatar
yangtianyou committed
218 219
            </if>
            <if test="statisticDate != null and statisticDate.length() == 6">
wzp's avatar
wzp committed
220
                DATE_FORMAT(i.create_time,'%Y%m') = ${statisticDate}
yangtianyou's avatar
yangtianyou committed
221 222
            </if>
            <if test="statisticDate != null and statisticDate.length() == 8">
wzp's avatar
wzp committed
223 224 225 226
                DATE_FORMAT(i.create_time,'%Y%m%d') = ${statisticDate}
            </if>
            <if test="organCode != null">
                and o.code LIKE concat(#{organCode}, '%')
yangtianyou's avatar
yangtianyou committed
227 228 229 230 231 232 233 234 235 236 237
            </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}
wzp's avatar
wzp committed
238 239 240
                <if test="orgCode != null">
                    and o.code LIKE concat(#{orgCode}, '%')
                </if>
yangtianyou's avatar
yangtianyou committed
241 242
            </where>
            group by i.organ_id
wzp's avatar
wzp committed
243
            order by count(i.organ_id) desc
yangtianyou's avatar
yangtianyou committed
244 245 246 247 248 249 250
        </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}
wzp's avatar
wzp committed
251 252 253
                <if test="orgCode != null">
                    and o.code LIKE concat(#{orgCode}, '%')
                </if>
yangtianyou's avatar
yangtianyou committed
254 255
            </where>
            group by i.organ_id
wzp's avatar
wzp committed
256
            order by count(i.organ_id) desc
yangtianyou's avatar
yangtianyou committed
257
        </if>
wzp's avatar
wzp committed
258 259 260 261 262 263 264 265 266 267 268
        <if test="frequencyDate != null and frequencyDate.length() == 8">
            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%d') = ${frequencyDate}
                <if test="orgCode != null">
                    and o.code LIKE concat(#{orgCode}, '%')
                </if>
            </where>
            group by i.organ_id
wzp's avatar
wzp committed
269
            order by count(i.organ_id) desc
wzp's avatar
wzp committed
270
        </if>
yangtianyou's avatar
yangtianyou committed
271 272 273 274

    </select>


yangtianyou's avatar
yangtianyou committed
275
</mapper>