Commit 1988c6e7 authored by jiawei's avatar jiawei

/tBoardStatistic/getBoardTrendPageList 获取展板播放趋势

/tBoardStatistic/getBoardDistrictPageList 获取地区展板播统计
/tBoardStatistic/getBoardRankPageList 获取展板播放排行
修改以上接口  加上区域条件
parent fc2a8478
...@@ -6,6 +6,7 @@ import com.baomidou.mybatisplus.annotation.Version; ...@@ -6,6 +6,7 @@ import com.baomidou.mybatisplus.annotation.Version;
import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableField;
import java.io.Serializable; import java.io.Serializable;
import java.util.List;
import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
...@@ -72,5 +73,14 @@ public class TBoardPlayRank implements Serializable { ...@@ -72,5 +73,14 @@ public class TBoardPlayRank implements Serializable {
@ApiModelProperty("机构编码") @ApiModelProperty("机构编码")
private String organCode; private String organCode;
@ApiModelProperty("地区编码")
private String areaCode;
/**
* 地区id集合
*/
@ApiModelProperty(hidden = true)
private List<String> areaIds;
} }
...@@ -7,6 +7,7 @@ import com.baomidou.mybatisplus.annotation.Version; ...@@ -7,6 +7,7 @@ import com.baomidou.mybatisplus.annotation.Version;
import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableField;
import java.io.Serializable; import java.io.Serializable;
import java.util.List;
import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
...@@ -66,5 +67,13 @@ public class TBoardPlayTrend implements Serializable { ...@@ -66,5 +67,13 @@ public class TBoardPlayTrend implements Serializable {
@ApiModelProperty("地区编码")
private String areaCode;
/**
* 地区id集合
*/
@ApiModelProperty(hidden = true)
private List<String> areaIds;
} }
package cn.chnmuseum.party.model; package cn.chnmuseum.party.model;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.Version;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableField;
import java.io.Serializable; import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
import lombok.*;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.AllArgsConstructor;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors; import lombok.experimental.Accessors;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull; import java.io.Serializable;
import cn.chnmuseum.party.common.validator.groups.Add; import java.util.List;
import cn.chnmuseum.party.common.validator.groups.Update;
import com.baomidou.mybatisplus.annotation.TableField;
/** /**
* <p> * <p>
...@@ -64,4 +52,14 @@ public class TDistrictBoardStatistic implements Serializable { ...@@ -64,4 +52,14 @@ public class TDistrictBoardStatistic implements Serializable {
private String organCode; private String organCode;
@ApiModelProperty("地区编码")
private String areaCode;
/**
* 地区id集合
*/
@ApiModelProperty(hidden = true)
private List<String> areaIds;
} }
...@@ -265,7 +265,7 @@ public class TBoardStatisticServiceImpl extends ServiceImpl<TBoardStatisticMappe ...@@ -265,7 +265,7 @@ public class TBoardStatisticServiceImpl extends ServiceImpl<TBoardStatisticMappe
qw.eq("board_id", bs.getBoardId()); qw.eq("board_id", bs.getBoardId());
qw.eq("organ_id", bs.getOrganId()); qw.eq("organ_id", bs.getOrganId());
qw.eq("play_date", bs.getPlayDate()); qw.eq("play_date", bs.getPlayDate());
TBoardStatistic tbDB = this.getOne(qw); TBoardStatistic tbDB = this.getOne(qw,false);
// 如果数据库存在统计记录,则累计统计数量 // 如果数据库存在统计记录,则累计统计数量
if (tbDB != null) { if (tbDB != null) {
tbDB.setPlayNumber(Integer.parseInt(CurrencyMathUtil.add(bs.getPlayNumber(), tbDB.getPlayNumber()))); tbDB.setPlayNumber(Integer.parseInt(CurrencyMathUtil.add(bs.getPlayNumber(), tbDB.getPlayNumber())));
......
package cn.chnmuseum.party.web.controller; package cn.chnmuseum.party.web.controller;
import cn.hutool.core.date.DateField;
import cn.hutool.core.date.DateTime;
import cn.chnmuseum.party.common.util.DateUtil; import cn.chnmuseum.party.common.util.DateUtil;
import cn.chnmuseum.party.model.*; import cn.chnmuseum.party.model.*;
import cn.chnmuseum.party.service.TAreaService;
import cn.chnmuseum.party.service.TBoardStatisticService; import cn.chnmuseum.party.service.TBoardStatisticService;
import cn.chnmuseum.party.web.controller.base.BaseController; import cn.chnmuseum.party.web.controller.base.BaseController;
import cn.hutool.core.date.DateField;
import cn.hutool.core.date.DateTime;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParam;
...@@ -13,6 +16,8 @@ import io.swagger.annotations.ApiImplicitParams; ...@@ -13,6 +16,8 @@ import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.util.CollectionUtils;
import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RestController;
...@@ -21,6 +26,7 @@ import javax.annotation.Resource; ...@@ -21,6 +26,7 @@ import javax.annotation.Resource;
import java.text.ParseException; import java.text.ParseException;
import java.text.SimpleDateFormat; import java.text.SimpleDateFormat;
import java.util.*; import java.util.*;
import java.util.stream.Collectors;
/** /**
* <pre> * <pre>
...@@ -39,6 +45,9 @@ public class TBoardStatisticController extends BaseController { ...@@ -39,6 +45,9 @@ public class TBoardStatisticController extends BaseController {
@Resource @Resource
private TBoardStatisticService tBoardStatisticService; private TBoardStatisticService tBoardStatisticService;
@Autowired
TAreaService areaService;
// @ApiImplicitParams(value = { // @ApiImplicitParams(value = {
// @ApiImplicitParam(name = "_index", value = "分页起始偏移量", paramType = "query", dataType = "Integer"), // @ApiImplicitParam(name = "_index", value = "分页起始偏移量", paramType = "query", dataType = "Integer"),
// @ApiImplicitParam(name = "_size", value = "返回条数", paramType = "query", dataType = "Integer") // @ApiImplicitParam(name = "_size", value = "返回条数", paramType = "query", dataType = "Integer")
...@@ -86,6 +95,9 @@ public class TBoardStatisticController extends BaseController { ...@@ -86,6 +95,9 @@ public class TBoardStatisticController extends BaseController {
if (StringUtils.isEmpty(rank.getPlayDate())) { if (StringUtils.isEmpty(rank.getPlayDate())) {
rank.setPlayDate(DateUtil.getCurrentDate("yyyyMM")); rank.setPlayDate(DateUtil.getCurrentDate("yyyyMM"));
} }
//加上区域条件
List<String> areaIds = findAllAreaIdByParentCode(rank.getAreaCode());
rank.setAreaIds(areaIds);
Page<TBoardPlayRank> page = this.tBoardStatisticService.getBoardRankPageList(getPage(), rank); Page<TBoardPlayRank> page = this.tBoardStatisticService.getBoardRankPageList(getPage(), rank);
return getResult(page); return getResult(page);
} }
...@@ -111,6 +123,9 @@ public class TBoardStatisticController extends BaseController { ...@@ -111,6 +123,9 @@ public class TBoardStatisticController extends BaseController {
if (StringUtils.isEmpty(trend.getPlayDate())) { if (StringUtils.isEmpty(trend.getPlayDate())) {
trend.setPlayDate(DateUtil.getCurrentDate("yyyyMM")); trend.setPlayDate(DateUtil.getCurrentDate("yyyyMM"));
} }
//加上区域条件
List<String> areaIds = findAllAreaIdByParentCode(trend.getAreaCode());
trend.setAreaIds(areaIds);
Page<TBoardPlayTrend> page = this.tBoardStatisticService.getBoardTrendPageList(getPage(),trend); Page<TBoardPlayTrend> page = this.tBoardStatisticService.getBoardTrendPageList(getPage(),trend);
...@@ -198,10 +213,52 @@ public class TBoardStatisticController extends BaseController { ...@@ -198,10 +213,52 @@ public class TBoardStatisticController extends BaseController {
if (StringUtils.isEmpty(district.getPlayDate())) { if (StringUtils.isEmpty(district.getPlayDate())) {
district.setPlayDate(DateUtil.getCurrentDate("yyyyMM")); district.setPlayDate(DateUtil.getCurrentDate("yyyyMM"));
} }
//加上区域条件
List<String> areaIds = findAllAreaIdByParentCode(district.getAreaCode());
district.setAreaIds(areaIds);
Page<TDistrictBoardStatistic> page = this.tBoardStatisticService.getBoardDistrictPageList(getPage(), district); Page<TDistrictBoardStatistic> page = this.tBoardStatisticService.getBoardDistrictPageList(getPage(), district);
return getResult(page); return getResult(page);
} }
/**
* 根据父地区code查询查询所有子下级 返回包含本机id以及所有的子集id
*
* @param areaCode
* @return
*/
private List<String> findAllAreaIdByParentCode(String areaCode) {
List<String> areaIds = new ArrayList<>();
if (StringUtils.isBlank(areaCode)) {
return areaIds;
}
LambdaQueryWrapper<TArea> wrapper = new QueryWrapper<TArea>().lambda()
.eq(TArea::getCode, areaCode);
TArea one = areaService.getOne(wrapper, false);
if (one == null) {
return areaIds;
}
List<String> parentAreaIds = new ArrayList<>();
String valueOf = String.valueOf(one.getId());
parentAreaIds.add(valueOf);
//加上自己本身的id
areaIds.add(valueOf);
//循环调用数据库,但实际只会调用3到4次,区域级别无非三四级
while (!CollectionUtils.isEmpty(parentAreaIds)) {
wrapper.clear();
wrapper.in(TArea::getParentId, parentAreaIds)
.select(TArea::getId, TArea::getParentId);
List<TArea> list = areaService.list(wrapper);
if (CollectionUtils.isEmpty(list)) {
//为空跳出循环
break;
}
List<String> ids = list.stream().map(l -> String.valueOf(l.getId())).collect(Collectors.toList());
parentAreaIds = ids;
areaIds.addAll(parentAreaIds);
}
return areaIds;
}
@ApiImplicitParams(value = { @ApiImplicitParams(value = {
@ApiImplicitParam(name = "_index", value = "分页起始偏移量", paramType = "query", dataType = "Integer"), @ApiImplicitParam(name = "_index", value = "分页起始偏移量", paramType = "query", dataType = "Integer"),
@ApiImplicitParam(name = "_size", value = "返回条数", paramType = "query", dataType = "Integer"), @ApiImplicitParam(name = "_size", value = "返回条数", paramType = "query", dataType = "Integer"),
......
...@@ -56,6 +56,13 @@ ...@@ -56,6 +56,13 @@
<if test="rank.organCode != null"> <if test="rank.organCode != null">
and o.code LIKE concat(#{rank.organCode}, '%') and o.code LIKE concat(#{rank.organCode}, '%')
</if> </if>
<if test="rank.areaIds !=null and rank.areaIds.size() > 0">
AND s.area_id IN
<foreach collection="rank.areaIds" separator="," open="(" close=")" item="item">
#{item}
</foreach>
</if>
</where> </where>
GROUP BY s.board_id,s.board_name GROUP BY s.board_id,s.board_name
ORDER BY sum(s.play_number) desc ORDER BY sum(s.play_number) desc
...@@ -71,6 +78,14 @@ ...@@ -71,6 +78,14 @@
<if test="trend.organCode != null"> <if test="trend.organCode != null">
and o.code LIKE concat(#{trend.organCode}, '%') and o.code LIKE concat(#{trend.organCode}, '%')
</if> </if>
<if test="trend.areaIds !=null and trend.areaIds.size() > 0">
AND s.area_id IN
<foreach collection="trend.areaIds" separator="," open="(" close=")" item="item">
#{item}
</foreach>
</if>
GROUP BY left(s.play_date,6) GROUP BY left(s.play_date,6)
ORDER BY left(s.play_date,6) ORDER BY left(s.play_date,6)
</if> </if>
...@@ -82,6 +97,14 @@ ...@@ -82,6 +97,14 @@
<if test="trend.organCode != null"> <if test="trend.organCode != null">
and o.code LIKE concat(#{trend.organCode}, '%') and o.code LIKE concat(#{trend.organCode}, '%')
</if> </if>
<if test="trend.areaIds !=null and trend.areaIds.size() > 0">
AND s.area_id IN
<foreach collection="trend.areaIds" separator="," open="(" close=")" item="item">
#{item}
</foreach>
</if>
GROUP BY s.play_date GROUP BY s.play_date
ORDER BY s.play_date ORDER BY s.play_date
</if> </if>
...@@ -93,6 +116,14 @@ ...@@ -93,6 +116,14 @@
<if test="trend.organCode != null"> <if test="trend.organCode != null">
and o.code LIKE concat(#{trend.organCode}, '%') and o.code LIKE concat(#{trend.organCode}, '%')
</if> </if>
<if test="trend.areaIds !=null and trend.areaIds.size() > 0">
AND s.area_id IN
<foreach collection="trend.areaIds" separator="," open="(" close=")" item="item">
#{item}
</foreach>
</if>
GROUP BY s.play_date GROUP BY s.play_date
ORDER BY s.play_date ORDER BY s.play_date
</if> </if>
...@@ -130,6 +161,12 @@ ...@@ -130,6 +161,12 @@
<if test="district.organCode != null"> <if test="district.organCode != null">
and o.code LIKE concat(#{district.organCode}, '%') and o.code LIKE concat(#{district.organCode}, '%')
</if> </if>
<if test="district.areaIds !=null and district.areaIds.size() > 0">
AND s.area_id IN
<foreach collection="district.areaIds" separator="," open="(" close=")" item="item">
#{item}
</foreach>
</if>
</where> </where>
GROUP BY s.area_id GROUP BY s.area_id
order by sum(s.play_number) desc,count(board_id) desc order by sum(s.play_number) desc,count(board_id) desc
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment