TBoardStatisticController.java 16.3 KB
Newer Older
liqin's avatar
liqin committed
1
package cn.chnmuseum.party.web.controller;
yangtianyou's avatar
yangtianyou committed
2

3 4
import cn.hutool.core.date.DateField;
import cn.hutool.core.date.DateTime;
liqin's avatar
liqin committed
5 6 7 8
import cn.chnmuseum.party.common.util.DateUtil;
import cn.chnmuseum.party.model.*;
import cn.chnmuseum.party.service.TBoardStatisticService;
import cn.chnmuseum.party.web.controller.base.BaseController;
9
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
yangtianyou's avatar
yangtianyou committed
10 11 12 13 14 15
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
16 17 18
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
yangtianyou's avatar
yangtianyou committed
19 20

import javax.annotation.Resource;
wzp's avatar
wzp committed
21 22
import java.text.ParseException;
import java.text.SimpleDateFormat;
wzp's avatar
wzp committed
23
import java.util.*;
yangtianyou's avatar
yangtianyou committed
24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41

/**
 * <pre>
 * 展板统计信息表 前端控制器
 * </pre>
 *
 * @author Danny Lee
 * @since 2021-03-25
 */
@Slf4j
@RestController
@RequestMapping("/tBoardStatistic")
@Api(tags = {"展板统计信息表操作接口"})
public class TBoardStatisticController extends BaseController {

    @Resource
    private TBoardStatisticService tBoardStatisticService;

42
    //    @ApiImplicitParams(value = {
yangtianyou's avatar
yangtianyou committed
43 44 45 46
//            @ApiImplicitParam(name = "_index", value = "分页起始偏移量", paramType = "query", dataType = "Integer"),
//            @ApiImplicitParam(name = "_size", value = "返回条数", paramType = "query", dataType = "Integer")
//    })
    @PostMapping("/getBoardSurvey")
wzp's avatar
wzp committed
47
//    @RequiresAuthentication  //@RequiresPermissions("t:board:statistic:survey")
yangtianyou's avatar
yangtianyou committed
48 49
    @ApiOperation(value = "获取展板统计概况", notes = "获取展板统计概况")
    public Map<String, Object> getBoardSurvey(TBoardSurvey survey) {
wzp's avatar
wzp committed
50 51 52
        TUser user = null;
        try {
            user = getcurUser();
53
            if (user.getRoleList().size() > 0 && !user.getRoleList().contains("1")) {
wzp's avatar
wzp committed
54 55
                survey.setOrganCode(user.getOrgCode());
            }
wzp's avatar
wzp committed
56 57 58
        } catch (Exception e) {
            survey.setOrganCode(null);
        }
wzp's avatar
wzp committed
59 60 61 62
        // 默认当月
        if (StringUtils.isEmpty(survey.getStatisticDate())) {
            survey.setStatisticDate(DateUtil.getCurrentDate("yyyyMM"));
        }
yangtianyou's avatar
yangtianyou committed
63 64 65 66
        TBoardSurvey result = this.tBoardStatisticService.getBoardSurvey(survey);

        return getResult(result);
    }
yangtianyou's avatar
yangtianyou committed
67 68 69 70 71 72

    @ApiImplicitParams(value = {
            @ApiImplicitParam(name = "_index", value = "分页起始偏移量", paramType = "query", dataType = "Integer"),
            @ApiImplicitParam(name = "_size", value = "返回条数", paramType = "query", dataType = "Integer")
    })
    @PostMapping("/getBoardRankPageList")
wzp's avatar
wzp committed
73
//    @RequiresAuthentication  //@RequiresPermissions("t:board:statistic:rankPage")
yangtianyou's avatar
yangtianyou committed
74 75
    @ApiOperation(value = "获取展板播放排行", notes = "获取展板播放排行")
    public Map<String, Object> getBoardRankPageList(TBoardPlayRank rank) {
wzp's avatar
wzp committed
76 77 78
        TUser user = null;
        try {
            user = getcurUser();
79
            if (user.getRoleList().size() > 0 && !user.getRoleList().contains("1")) {
wzp's avatar
wzp committed
80 81
                rank.setOrganCode(user.getOrgCode());
            }
wzp's avatar
wzp committed
82 83 84
        } catch (Exception e) {
            rank.setOrganCode(null);
        }
wzp's avatar
wzp committed
85 86 87
        // 默认当月
        if (StringUtils.isEmpty(rank.getPlayDate())) {
            rank.setPlayDate(DateUtil.getCurrentDate("yyyyMM"));
yangtianyou's avatar
yangtianyou committed
88
        }
wzp's avatar
wzp committed
89
        Page<TBoardPlayRank> page = this.tBoardStatisticService.getBoardRankPageList(getPage(), rank);
yangtianyou's avatar
yangtianyou committed
90 91 92 93 94 95 96 97
        return getResult(page);
    }

    @ApiImplicitParams(value = {
            @ApiImplicitParam(name = "_index", value = "分页起始偏移量", paramType = "query", dataType = "Integer"),
            @ApiImplicitParam(name = "_size", value = "返回条数", paramType = "query", dataType = "Integer")
    })
    @PostMapping("/getBoardTrendPageList")
wzp's avatar
wzp committed
98
//    @RequiresAuthentication  //@RequiresPermissions("t:board:statistic:trendPage")
yangtianyou's avatar
yangtianyou committed
99
    @ApiOperation(value = "获取展板播放趋势", notes = "获取展板播放趋势")
100
    public Map<String, Object> getBoardTrendPageList(TBoardPlayTrend trend) throws ParseException {
wzp's avatar
wzp committed
101 102 103
        TUser user = null;
        try {
            user = getcurUser();
104
            if (user.getRoleList().size() > 0 && !user.getRoleList().contains("1")) {
wzp's avatar
wzp committed
105 106
                trend.setOrganCode(user.getOrgCode());
            }
wzp's avatar
wzp committed
107 108 109
        } catch (Exception e) {
            trend.setOrganCode(null);
        }
yangtianyou's avatar
yangtianyou committed
110
        // 如果查询日志为空,则默认当月
111
        if (StringUtils.isEmpty(trend.getPlayDate())) {
yangtianyou's avatar
yangtianyou committed
112
            trend.setPlayDate(DateUtil.getCurrentDate("yyyyMM"));
yangtianyou's avatar
yangtianyou committed
113 114
        }

115
        Page<TBoardPlayTrend> page = this.tBoardStatisticService.getBoardTrendPageList(getPage(),trend);
116

117
//        List<TBoardPlayTrend> records = this.tBoardStatisticService.getBoardTrendPageList(getPage(), trend);
yangtianyou's avatar
yangtianyou committed
118 119 120 121
        // 处理数据为展板趋势图
        Map map = new HashMap();
        List dateList = new ArrayList();
        List cntList = new ArrayList();
122
        //按照 播放数据统计大屏 中 展板点播趋势图要求返回本月每天的播放量需求 修改接口
123
        getDateList(trend.getPlayDate(), dateList, cntList);
124 125
        for (TBoardPlayTrend t : page.getRecords()) {
//        for (TBoardPlayTrend t : records) {
126 127 128
//            dateList.add(t.getPlayDate());
//            cntList.add(t.getPlayNumber());
            int index = dateList.indexOf(t.getPlayDate());
129 130
            if (index >= 0) {
                cntList.set(index, t.getPlayNumber());
131
            }
yangtianyou's avatar
yangtianyou committed
132
        }
133
//        page.getRecords().sort(Comparator.comparing(TBoardPlayTrend::getPlayNumber).reversed());
134 135
        map.put("dateList", dateList);
        map.put("cntList", cntList);
136
        map.put("page",page);
yangtianyou's avatar
yangtianyou committed
137
        return getResult(map);
yangtianyou's avatar
yangtianyou committed
138 139
    }

140
    /**
141 142
     * 按照 播放数据统计大屏 中 展板点播趋势图要求返回本月每天的播放量  新增方法
     *
143 144 145 146 147 148 149 150 151
     * @param dateFormat
     * @param dateList
     * @param cntList
     * @throws ParseException
     */
    private void getDateList(String dateFormat, List dateList, List cntList) throws ParseException {
        Date date;
        Date beginTime;
        Date endTime;
152
        Date nowDate = new Date();
153 154 155 156
        if (dateFormat.length() > 4) {
            date = new SimpleDateFormat("yyyyMM").parse(dateFormat);
            beginTime = cn.hutool.core.date.DateUtil.beginOfMonth(date);
            endTime = cn.hutool.core.date.DateUtil.endOfMonth(date);
157 158 159 160
            //  设置最后时间不能大于当前时间
            if (nowDate.after(beginTime) && nowDate.before(endTime)) {
                endTime = nowDate;
            }
161 162 163 164
        } else {
            date = new SimpleDateFormat("yyyy").parse(dateFormat);
            beginTime = cn.hutool.core.date.DateUtil.beginOfYear(date);
            endTime = cn.hutool.core.date.DateUtil.endOfYear(date);
165 166 167 168
            //  设置最后时间不能大于当前时间
            if (nowDate.after(beginTime) && nowDate.before(endTime)) {
                endTime = nowDate;
            }
169 170 171
        }
        //生成范围类的一系列日期
        List<DateTime> dateTimes = cn.hutool.core.date.DateUtil.rangeToList(beginTime, endTime, DateField.DAY_OF_MONTH);
172
        dateTimes.stream().forEach(dt -> {
173 174 175 176 177 178
            String yyyyMMdd = dt.toString("yyyyMMdd");
            dateList.add(yyyyMMdd);
            //默认初始值0
            cntList.add(0);
        });
    }
yangtianyou's avatar
yangtianyou committed
179 180 181 182 183 184

    @ApiImplicitParams(value = {
            @ApiImplicitParam(name = "_index", value = "分页起始偏移量", paramType = "query", dataType = "Integer"),
            @ApiImplicitParam(name = "_size", value = "返回条数", paramType = "query", dataType = "Integer")
    })
    @PostMapping("/getBoardDistrictPageList")
wzp's avatar
wzp committed
185
//    @RequiresAuthentication  //@RequiresPermissions("t:board:statistic:districtPage")
yangtianyou's avatar
yangtianyou committed
186 187
    @ApiOperation(value = "获取地区展板播统计", notes = "获取地区展板播统计")
    public Map<String, Object> getBoardDistrictPageList(TDistrictBoardStatistic district) {
wzp's avatar
wzp committed
188 189 190
        TUser user = null;
        try {
            user = getcurUser();
191
            if (user.getRoleList().size() > 0 && !user.getRoleList().contains("1")) {
wzp's avatar
wzp committed
192 193
                district.setOrganCode(user.getOrgCode());
            }
wzp's avatar
wzp committed
194 195 196
        } catch (Exception e) {
            district.setOrganCode(null);
        }
wzp's avatar
wzp committed
197 198 199
        // 默认当月
        if (StringUtils.isEmpty(district.getPlayDate())) {
            district.setPlayDate(DateUtil.getCurrentDate("yyyyMM"));
yangtianyou's avatar
yangtianyou committed
200
        }
wzp's avatar
wzp committed
201
        Page<TDistrictBoardStatistic> page = this.tBoardStatisticService.getBoardDistrictPageList(getPage(), district);
yangtianyou's avatar
yangtianyou committed
202 203
        return getResult(page);
    }
yangtianyou's avatar
yangtianyou committed
204 205 206 207 208 209 210

    @ApiImplicitParams(value = {
            @ApiImplicitParam(name = "_index", value = "分页起始偏移量", paramType = "query", dataType = "Integer"),
            @ApiImplicitParam(name = "_size", value = "返回条数", paramType = "query", dataType = "Integer"),
            @ApiImplicitParam(name = "organId", value = "统计机构", paramType = "query", dataType = "String")
    })
    @PostMapping("/getBoardProvincePlayTotalList")
wzp's avatar
wzp committed
211
//    @RequiresAuthentication  //@RequiresPermissions("t:board:statistic:provPlayList")
yangtianyou's avatar
yangtianyou committed
212 213
    @ApiOperation(value = "获取省级展板播放统计", notes = "获取省级展板播放统计")
    public Map<String, Object> getBoardProvincePlayTotalList(String organId) {
wzp's avatar
wzp committed
214
        String orgCode = null;
wzp's avatar
wzp committed
215 216
        try {
            TUser user = getcurUser();
217
            if (user.getRoleList().size() > 0 && !user.getRoleList().contains("1")) {
wzp's avatar
wzp committed
218 219
                orgCode = user.getOrgCode();
            }
wzp's avatar
wzp committed
220 221 222
        } catch (Exception e) {
            orgCode = null;
        }
223
        List list = this.tBoardStatisticService.getBoardProvincePlayTotalList(organId, orgCode);
yangtianyou's avatar
yangtianyou committed
224 225 226
        return getResult(list);
    }

wzp's avatar
wzp committed
227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247

    @ApiImplicitParams(value = {
            @ApiImplicitParam(name = "areaCode", value = "区域编码", paramType = "query", dataType = "String")
    })
    @PostMapping("/getBoardCityPlayTotalList")
//    @RequiresAuthentication  //@RequiresPermissions("t:board:statistic:provPlayList")
    @ApiOperation(value = "获取下级区域展板播放统计", notes = "获取下级展板播放统计")
    public Map<String, Object> getBoardCityPlayTotalList(String areaCode) {
        String orgCode = null;
        try {
            TUser user = getcurUser();
            if (user.getRoleList().size()>0&&!user.getRoleList().contains("1")) {
                orgCode = user.getOrgCode();
            }
        } catch (Exception e) {
            orgCode = null;
        }
        List list = this.tBoardStatisticService.getBoardCityPlayTotalList(areaCode,orgCode);
        return getResult(list);
    }

yangtianyou's avatar
yangtianyou committed
248 249 250 251 252 253
    @ApiImplicitParams(value = {
            @ApiImplicitParam(name = "_index", value = "分页起始偏移量", paramType = "query", dataType = "Integer"),
            @ApiImplicitParam(name = "_size", value = "返回条数", paramType = "query", dataType = "Integer"),
            @ApiImplicitParam(name = "frequencyDate", value = "互动统计时间 年:yyyy 月:yyyyMM,默认当月", paramType = "query", dataType = "String")
    })
    @PostMapping("/getInteractionFrequencyPageList")
wzp's avatar
wzp committed
254
//    @RequiresAuthentication  //@RequiresPermissions("t:board:statistic:districtPage")
yangtianyou's avatar
yangtianyou committed
255 256
    @ApiOperation(value = "获取互动频次统计信息", notes = "获取互动频次统计信息")
    public Map<String, Object> getInteractionFrequencyPageList(String frequencyDate) {
wzp's avatar
wzp committed
257
        String orgCode = null;
wzp's avatar
wzp committed
258 259
        try {
            TUser user = getcurUser();
260
            if (user.getRoleList().size() > 0 && !user.getRoleList().contains("1")) {
wzp's avatar
wzp committed
261 262
                orgCode = user.getOrgCode();
            }
wzp's avatar
wzp committed
263 264 265
        } catch (Exception e) {
            orgCode = null;
        }
266
        if (StringUtils.isEmpty(frequencyDate)) {
yangtianyou's avatar
yangtianyou committed
267 268 269
            frequencyDate = DateUtil.getCurrentDate("yyyyMM");
        }

270
        Page page = this.tBoardStatisticService.getInteractionFrequency(getPage(), frequencyDate, orgCode);
yangtianyou's avatar
yangtianyou committed
271 272 273 274
        //
        Map map = new HashMap();
        List organList = new ArrayList<>();
        List cntList = new ArrayList();
275
        for (Object o : page.getRecords()) {
yangtianyou's avatar
yangtianyou committed
276 277 278 279
            Map m = (HashMap) o;
            organList.add(m.get("organName"));
            cntList.add(m.get("frequencyCnt"));
        }
280 281 282
        map.put("organList", organList);
        map.put("cntList", cntList);
        map.put("page", page);
yangtianyou's avatar
yangtianyou committed
283 284
        return getResult(map);
    }
yangtianyou's avatar
yangtianyou committed
285

wzp's avatar
wzp committed
286 287

    /**
wzp's avatar
wzp committed
288
     * 以下两个接口是pc端专用
289
     *
wzp's avatar
wzp committed
290 291 292 293 294 295 296 297
     * @param trend
     * @return
     */
    @ApiImplicitParams(value = {
            @ApiImplicitParam(name = "_index", value = "分页起始偏移量", paramType = "query", dataType = "Integer"),
            @ApiImplicitParam(name = "_size", value = "返回条数", paramType = "query", dataType = "Integer")
    })
    @PostMapping("/getBoardPageList")
wzp's avatar
wzp committed
298
//    @RequiresAuthentication  //@RequiresPermissions("t:board:statistic:Page")
wzp's avatar
wzp committed
299
    @ApiOperation(value = "获取展板播放趋势Pc", notes = "获取展板播放趋势Pc")
wzp's avatar
wzp committed
300
//    @MethodLog(operModule = OperModule.TEND, operType = OperType.SELECT)
wzp's avatar
wzp committed
301
    public Map<String, Object> getBoardPageList(TBoardPlayTrend trend) throws ParseException {
wzp's avatar
wzp committed
302 303 304
        TUser user = null;
        try {
            user = getcurUser();
305
            if (user.getRoleList().size() > 0 && !user.getRoleList().contains("1")) {
wzp's avatar
wzp committed
306 307
                trend.setOrganCode(user.getOrgCode());
            }
wzp's avatar
wzp committed
308 309 310
        } catch (Exception e) {
            trend.setOrganCode(null);
        }
wzp's avatar
wzp committed
311
        // 如果查询日志为空,则默认当月
312 313
        if (StringUtils.isEmpty(trend.getBeginDate())) {
            trend.setBeginDate(DateUtil.getCurrentDate("yyyy") + "01");
wzp's avatar
wzp committed
314
            trend.setEndDate(DateUtil.getCurrentDate("yyyyMM"));
wzp's avatar
wzp committed
315
        }
316
        Page<TBoardPlayTrend> page = this.tBoardStatisticService.getBoardPageList(getPage(), trend);
wzp's avatar
wzp committed
317 318 319 320
        // 处理数据为展板趋势图
        Map map = new HashMap();
        List dateList = new ArrayList();
        List cntList = new ArrayList();
wzp's avatar
wzp committed
321

wzp's avatar
wzp committed
322 323 324 325
        for (TBoardPlayTrend t : page.getRecords()) {
            dateList.add(t.getPlayDate());
            cntList.add(t.getPlayNumber());
        }
wzp's avatar
wzp committed
326
        List<TBoardPlayTrend> list = page.getRecords();
327 328
        list.sort(Comparator.comparing(TBoardPlayTrend::getPlayNumber, Comparator.reverseOrder()).thenComparing(TBoardPlayTrend::getPlayDate, Comparator.reverseOrder()));
        if (list.size() >= 10) {
wzp's avatar
wzp committed
329 330
            list = list.subList(0, 10);
        }
wzp's avatar
wzp committed
331
        page.setRecords(list);
332 333 334
        map.put("dateList", dateList);
        map.put("cntList", cntList);
        map.put("page", page);
wzp's avatar
wzp committed
335 336 337 338 339 340 341 342 343 344
        return getResult(map);
    }


    @ApiImplicitParams(value = {
            @ApiImplicitParam(name = "_index", value = "分页起始偏移量", paramType = "query", dataType = "Integer"),
            @ApiImplicitParam(name = "_size", value = "返回条数", paramType = "query", dataType = "Integer"),
            @ApiImplicitParam(name = "frequencyDate", value = "互动统计时间 年:yyyy 月:yyyyMM,默认当月", paramType = "query", dataType = "String")
    })
    @PostMapping("/getInteractionPageList")
wzp's avatar
wzp committed
345
//    @RequiresAuthentication  //@RequiresPermissions("t:interaction:statistic:districtPage")
wzp's avatar
wzp committed
346
    @ApiOperation(value = "获取互动频次统计信息pc", notes = "获取互动频次统计信息pc")
wzp's avatar
wzp committed
347
//    @MethodLog(operModule = OperModule.INTERACTION, operType = OperType.SELECT)
wzp's avatar
wzp committed
348
    public Map<String, Object> getInteractionPageList(String frequencyDate) {
wzp's avatar
wzp committed
349
        String orgCode = null;
wzp's avatar
wzp committed
350 351
        try {
            TUser user = getcurUser();
352
            if (user.getRoleList().size() > 0 && !user.getRoleList().contains("1")) {
wzp's avatar
wzp committed
353 354
                orgCode = user.getOrgCode();
            }
wzp's avatar
wzp committed
355 356 357
        } catch (Exception e) {
            orgCode = null;
        }
358
        if (StringUtils.isEmpty(frequencyDate)) {
wzp's avatar
wzp committed
359 360 361
            frequencyDate = DateUtil.getCurrentDate("yyyyMM");
        }

362
        Page page = this.tBoardStatisticService.getInteractionFrequency(getPage(), frequencyDate, orgCode);
wzp's avatar
wzp committed
363 364 365 366
        //
        Map map = new HashMap();
        List organList = new ArrayList<>();
        List cntList = new ArrayList();
367
        for (Object o : page.getRecords()) {
wzp's avatar
wzp committed
368 369 370 371
            Map m = (HashMap) o;
            organList.add(m.get("organName"));
            cntList.add(m.get("frequencyCnt"));
        }
372 373 374
        map.put("organList", organList);
        map.put("cntList", cntList);
        map.put("page", page);
wzp's avatar
wzp committed
375 376
        return getResult(map);
    }
yangtianyou's avatar
yangtianyou committed
377 378
}