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;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableField;
import java.io.Serializable;
import java.util.List;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
......@@ -72,5 +73,14 @@ public class TBoardPlayRank implements Serializable {
@ApiModelProperty("机构编码")
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;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableField;
import java.io.Serializable;
import java.util.List;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
......@@ -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;
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 java.io.Serializable;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.AllArgsConstructor;
import lombok.EqualsAndHashCode;
import lombok.*;
import lombok.experimental.Accessors;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import cn.chnmuseum.party.common.validator.groups.Add;
import cn.chnmuseum.party.common.validator.groups.Update;
import com.baomidou.mybatisplus.annotation.TableField;
import java.io.Serializable;
import java.util.List;
/**
* <p>
......@@ -64,4 +52,14 @@ public class TDistrictBoardStatistic implements Serializable {
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
qw.eq("board_id", bs.getBoardId());
qw.eq("organ_id", bs.getOrganId());
qw.eq("play_date", bs.getPlayDate());
TBoardStatistic tbDB = this.getOne(qw);
TBoardStatistic tbDB = this.getOne(qw,false);
// 如果数据库存在统计记录,则累计统计数量
if (tbDB != null) {
tbDB.setPlayNumber(Integer.parseInt(CurrencyMathUtil.add(bs.getPlayNumber(), tbDB.getPlayNumber())));
......
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.model.*;
import cn.chnmuseum.party.service.TAreaService;
import cn.chnmuseum.party.service.TBoardStatisticService;
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 io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
......@@ -13,6 +16,8 @@ import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
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.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
......@@ -21,6 +26,7 @@ import javax.annotation.Resource;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.*;
import java.util.stream.Collectors;
/**
* <pre>
......@@ -39,6 +45,9 @@ public class TBoardStatisticController extends BaseController {
@Resource
private TBoardStatisticService tBoardStatisticService;
@Autowired
TAreaService areaService;
// @ApiImplicitParams(value = {
// @ApiImplicitParam(name = "_index", value = "分页起始偏移量", paramType = "query", dataType = "Integer"),
// @ApiImplicitParam(name = "_size", value = "返回条数", paramType = "query", dataType = "Integer")
......@@ -86,6 +95,9 @@ public class TBoardStatisticController extends BaseController {
if (StringUtils.isEmpty(rank.getPlayDate())) {
rank.setPlayDate(DateUtil.getCurrentDate("yyyyMM"));
}
//加上区域条件
List<String> areaIds = findAllAreaIdByParentCode(rank.getAreaCode());
rank.setAreaIds(areaIds);
Page<TBoardPlayRank> page = this.tBoardStatisticService.getBoardRankPageList(getPage(), rank);
return getResult(page);
}
......@@ -111,6 +123,9 @@ public class TBoardStatisticController extends BaseController {
if (StringUtils.isEmpty(trend.getPlayDate())) {
trend.setPlayDate(DateUtil.getCurrentDate("yyyyMM"));
}
//加上区域条件
List<String> areaIds = findAllAreaIdByParentCode(trend.getAreaCode());
trend.setAreaIds(areaIds);
Page<TBoardPlayTrend> page = this.tBoardStatisticService.getBoardTrendPageList(getPage(),trend);
......@@ -198,10 +213,52 @@ public class TBoardStatisticController extends BaseController {
if (StringUtils.isEmpty(district.getPlayDate())) {
district.setPlayDate(DateUtil.getCurrentDate("yyyyMM"));
}
//加上区域条件
List<String> areaIds = findAllAreaIdByParentCode(district.getAreaCode());
district.setAreaIds(areaIds);
Page<TDistrictBoardStatistic> page = this.tBoardStatisticService.getBoardDistrictPageList(getPage(), district);
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 = {
@ApiImplicitParam(name = "_index", value = "分页起始偏移量", paramType = "query", dataType = "Integer"),
@ApiImplicitParam(name = "_size", value = "返回条数", paramType = "query", dataType = "Integer"),
......
......@@ -56,6 +56,13 @@
<if test="rank.organCode != null">
and o.code LIKE concat(#{rank.organCode}, '%')
</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>
GROUP BY s.board_id,s.board_name
ORDER BY sum(s.play_number) desc
......@@ -71,6 +78,14 @@
<if test="trend.organCode != null">
and o.code LIKE concat(#{trend.organCode}, '%')
</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)
ORDER BY left(s.play_date,6)
</if>
......@@ -82,6 +97,14 @@
<if test="trend.organCode != null">
and o.code LIKE concat(#{trend.organCode}, '%')
</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
ORDER BY s.play_date
</if>
......@@ -93,6 +116,14 @@
<if test="trend.organCode != null">
and o.code LIKE concat(#{trend.organCode}, '%')
</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
ORDER BY s.play_date
</if>
......@@ -130,6 +161,12 @@
<if test="district.organCode != null">
and o.code LIKE concat(#{district.organCode}, '%')
</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>
GROUP BY s.area_id
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