Commit 5c3095a7 authored by wzp's avatar wzp

修改bug

parent 0bef09c7
......@@ -22,10 +22,9 @@ import org.springframework.stereotype.Service;
import org.springframework.beans.factory.annotation.Autowired;
import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.*;
/**
* <pre>
......@@ -51,12 +50,13 @@ public class TBoardStatisticServiceImpl extends ServiceImpl<TBoardStatisticMappe
@Autowired
private RedisUtil redisUtil;
@Autowired
private RedisTemplate<String,? extends Object> redisTemplate;
private RedisTemplate<String, ? extends Object> redisTemplate;
private static String STATISTIC_BOARD_INFO_KEY = "STATISTIC_BOARD_INFO_KEY"; // 展板统计信息key
@Override
@RedisLock(value = "boardLock",timeLock = 20 ,required = true,timeOut = 1100000)
@RedisLock(value = "boardLock", timeLock = 20, required = true, timeOut = 1100000)
public Object boardStatisticInfo(TBoardStatistic tBoardStatistic, boolean autoUpdate) {
if (tBoardStatistic!=null) {
if (tBoardStatistic != null) {
// 根据用户id获取用户信息
TUser user = userService.selectById(tBoardStatistic.getUserId());
tBoardStatistic.setOrganId(user.getOrgId()); // 用户所属机构
......@@ -65,7 +65,7 @@ public class TBoardStatisticServiceImpl extends ServiceImpl<TBoardStatisticMappe
// 获取当前日期
tBoardStatistic.setPlayDate(DateUtil.getCurrentDate("yyyyMMdd"));
}
if (null==tBoardStatistic.getPlayNumber()) {
if (null == tBoardStatistic.getPlayNumber()) {
// 获取当前日期
tBoardStatistic.setPlayNumber(1);
}
......@@ -77,45 +77,45 @@ public class TBoardStatisticServiceImpl extends ServiceImpl<TBoardStatisticMappe
// 获取统计信息缓存数据
String businessJsonArray = (String) redisUtil.get(redisKey);
// 缓存数据不为空,转换数据
if (StringUtils.isNotEmpty(businessJsonArray)){
if (StringUtils.isNotEmpty(businessJsonArray)) {
statisticList = JSONObject.parseArray(businessJsonArray, TBoardStatistic.class);
}
if (tBoardStatistic!=null) {
if (tBoardStatistic != null) {
statisticList.add(tBoardStatistic);
}
redisUtil.set(redisKey, JSON.toJSON(statisticList).toString());
// 统计记录数等于100 时,或者需要自动更新时 汇总统计数据
if (statisticList.size() >= 100 || (autoUpdate&&statisticList.size()>0)){
if (statisticList.size() >= 100 || (autoUpdate && statisticList.size() > 0)) {
// 更新展板统计信息
updateBoardStatisticInfo(statisticList,redisKey);
updateBoardStatisticInfo(statisticList, redisKey);
}
return true;
}
@Override
public Page<TBoardPlayRank> getBoardRankPageList(Page<TBoardPlayRank> page,TBoardPlayRank rank) {
page.setRecords(boardStatisticMapper.getBoardRankPageList(page,rank));
public Page<TBoardPlayRank> getBoardRankPageList(Page<TBoardPlayRank> page, TBoardPlayRank rank) {
page.setRecords(boardStatisticMapper.getBoardRankPageList(page, rank));
return page;
}
@Override
public Page<TBoardPlayTrend> getBoardTrendPageList(Page<TBoardPlayTrend> page, TBoardPlayTrend trend) {
page.setRecords(boardStatisticMapper.getBoardTrendPageList(page,trend));
page.setRecords(boardStatisticMapper.getBoardTrendPageList(page, trend));
return page;
}
@Override
public Page<TDistrictBoardStatistic> getBoardDistrictPageList(Page<TDistrictBoardStatistic> page, TDistrictBoardStatistic district){
public Page<TDistrictBoardStatistic> getBoardDistrictPageList(Page<TDistrictBoardStatistic> page, TDistrictBoardStatistic district) {
List<TDistrictBoardStatistic> list = boardStatisticMapper.getBoardDistrictPageList(page, district);
page.setRecords(list);
page.setRecords(list);
return page;
}
@Override
public TBoardSurvey getBoardSurvey(TBoardSurvey survey){
public TBoardSurvey getBoardSurvey(TBoardSurvey survey) {
// 获取展板播放量
survey.setPlayCnt(boardStatisticMapper.getBoardPlayTotal(survey));
// 获取展板总数
......@@ -128,19 +128,19 @@ public class TBoardStatisticServiceImpl extends ServiceImpl<TBoardStatisticMappe
}
@Override
public Page getInteractionFrequency(Page page,String frequencyDate,String orgCode){
page.setRecords(boardStatisticMapper.getInteractionFrequency(page,frequencyDate,orgCode));
public Page getInteractionFrequency(Page page, String frequencyDate, String orgCode) {
page.setRecords(boardStatisticMapper.getInteractionFrequency(page, frequencyDate, orgCode));
return page;
}
@Override
public List getBoardProvincePlayTotalList(String organId,String orgCode){
public List getBoardProvincePlayTotalList(String organId, String orgCode) {
// 获取省份信息
QueryWrapper qw = new QueryWrapper();
qw.eq("type","P");
qw.eq("type", "P");
List<TArea> provlist = areaService.list(qw);
provlist.stream().forEach(l->l.setName(l.getName().replace("省","").replace("市","").
replace("自治区","").replace("特别行政区","").replace("壮族","").replace("回族","").replace("维吾尔","")));
provlist.stream().forEach(l -> l.setName(l.getName().replace("省", "").replace("市", "").
replace("自治区", "").replace("特别行政区", "").replace("壮族", "").replace("回族", "").replace("维吾尔", "")));
// 遍历省份,统计各省播放量
TBoardSurvey survey = new TBoardSurvey();
String dateStr = DateUtil.getCurrentDate("yyyyMM");
......@@ -149,12 +149,12 @@ public class TBoardStatisticServiceImpl extends ServiceImpl<TBoardStatisticMappe
survey.setOrganCode(orgCode);
List list = new ArrayList();
// 根据省份查询播放量
for(TArea prov : provlist){
for (TArea prov : provlist) {
Map map = new HashMap();
survey.setAreaId(prov.getId().toString().substring(0,2));
survey.setAreaId(prov.getId().toString().substring(0, 2));
Integer cnt = boardStatisticMapper.getBoardPlayTotal(survey);
map.put("name",prov.getName());
map.put("value",cnt == null ? 0 : cnt);
map.put("name", prov.getName());
map.put("value", cnt == null ? 0 : cnt);
list.add(map);
}
return list;
......@@ -162,7 +162,39 @@ public class TBoardStatisticServiceImpl extends ServiceImpl<TBoardStatisticMappe
@Override
public Page<TBoardPlayTrend> getBoardPageList(Page<TBoardPlayTrend> page, TBoardPlayTrend trend) {
page.setRecords(boardStatisticMapper.getBoardPageList(page,trend));
HashMap<String, Integer> map = new HashMap<>();
List<TBoardPlayTrend> board = boardStatisticMapper.getBoardPageList(page, trend);
for (TBoardPlayTrend tBoardPlayTrend : board) {
map.put(tBoardPlayTrend.getPlayDate(),tBoardPlayTrend.getPlayNumber());
}
SimpleDateFormat sim = new SimpleDateFormat("yyyyMM");
Date begin = null;
Date end = null;
try {
begin = sim.parse(trend.getBeginDate());
end = sim.parse(trend.getEndDate());
} catch (ParseException e) {
e.printStackTrace();
}
long l = (end.getTime() - begin.getTime()) / 1000 / 3600 / 24 / 30;
ArrayList<TBoardPlayTrend> list = new ArrayList<>();
Calendar rightNow = Calendar.getInstance();
rightNow.setTime(begin);
for (int i = 0; i <= l; i++) {
TBoardPlayTrend tBoardPlayTrend = new TBoardPlayTrend();
String date = sim.format(rightNow.getTime());
tBoardPlayTrend.setPlayDate(date);
if (map.get(date)!=null){
tBoardPlayTrend.setPlayNumber(map.get(date));
}else {
tBoardPlayTrend.setPlayNumber(0);
}
list.add(tBoardPlayTrend);
rightNow.add(Calendar.MONTH, 1);
}
page.setRecords(list);
return page;
}
......@@ -170,35 +202,35 @@ public class TBoardStatisticServiceImpl extends ServiceImpl<TBoardStatisticMappe
* 更新展板统计信息
*/
@Override
public void updateBoardStatisticInfo(List<TBoardStatistic> statisticList,String redisKey) {
Map<String,TBoardStatistic> map = new HashMap<>();
statisticList.stream().forEach(s->{
String key = s.getBoardId()+"_"+s.getOrganId()+"_"+s.getPlayDate();
public void updateBoardStatisticInfo(List<TBoardStatistic> statisticList, String redisKey) {
Map<String, TBoardStatistic> map = new HashMap<>();
statisticList.stream().forEach(s -> {
String key = s.getBoardId() + "_" + s.getOrganId() + "_" + s.getPlayDate();
// 如果有对应的展板记录,累计播放量
if (map.containsKey(key)){
if (map.containsKey(key)) {
TBoardStatistic boardStatistic = map.get(key);
boardStatistic.setPlayNumber(Integer.parseInt(CurrencyMathUtil.add(boardStatistic.getPlayNumber(),s.getPlayNumber())));
map.put(key,boardStatistic);
}else {
boardStatistic.setPlayNumber(Integer.parseInt(CurrencyMathUtil.add(boardStatistic.getPlayNumber(), s.getPlayNumber())));
map.put(key, boardStatistic);
} else {
// 如果无对应的展板记录,插入到map中
map.put(key,s);
map.put(key, s);
}
});
// 更新数据库展板统计信息
for (String key : map.keySet()){
for (String key : map.keySet()) {
TBoardStatistic bs = map.get(key);
// 查询数据库是否有对应的记录
QueryWrapper<TBoardStatistic> qw = new QueryWrapper<>();
qw.eq("board_id",bs.getBoardId());
qw.eq("organ_id",bs.getOrganId());
qw.eq("play_date",bs.getPlayDate());
qw.eq("board_id", bs.getBoardId());
qw.eq("organ_id", bs.getOrganId());
qw.eq("play_date", bs.getPlayDate());
TBoardStatistic tbDB = this.getOne(qw);
// 如果数据库存在统计记录,则累计统计数量
if (tbDB != null){
tbDB.setPlayNumber(Integer.parseInt(CurrencyMathUtil.add(bs.getPlayNumber(),tbDB.getPlayNumber())));
if (tbDB != null) {
tbDB.setPlayNumber(Integer.parseInt(CurrencyMathUtil.add(bs.getPlayNumber(), tbDB.getPlayNumber())));
this.updateById(tbDB);
map.put(key,tbDB);
}else {
map.put(key, tbDB);
} else {
// 如果数据库不存在统计记录,则增加统计数据
this.save(bs);
}
......
......@@ -22,6 +22,7 @@ import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.time.DateUtils;
import org.apache.shiro.authz.annotation.RequiresAuthentication;
import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.springframework.validation.annotation.Validated;
......@@ -29,6 +30,8 @@ import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import javax.validation.constraints.NotNull;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.*;
/**
......@@ -232,7 +235,7 @@ public class TBoardStatisticController extends BaseController {
// @RequiresAuthentication //@RequiresPermissions("t:board:statistic:Page")
@ApiOperation(value = "获取展板播放趋势Pc", notes = "获取展板播放趋势Pc")
// @MethodLog(operModule = OperModule.TEND, operType = OperType.SELECT)
public Map<String, Object> getBoardPageList(TBoardPlayTrend trend) {
public Map<String, Object> getBoardPageList(TBoardPlayTrend trend) throws ParseException {
TUser user = null;
try {
user = getcurUser();
......@@ -247,17 +250,20 @@ public class TBoardStatisticController extends BaseController {
trend.setBeginDate(DateUtil.getCurrentDate("yyyy")+"01");
trend.setEndDate(DateUtil.getCurrentDate("yyyyMM"));
}
Page<TBoardPlayTrend> page = this.tBoardStatisticService.getBoardPageList(getPage(),trend);
// 处理数据为展板趋势图
Map map = new HashMap();
List dateList = new ArrayList();
List cntList = new ArrayList();
for (TBoardPlayTrend t : page.getRecords()) {
dateList.add(t.getPlayDate());
cntList.add(t.getPlayNumber());
}
page.getRecords().sort(Comparator.comparing(TBoardPlayTrend::getPlayNumber).reversed());
List<TBoardPlayTrend> list = page.getRecords();
list.sort(Comparator.comparing(TBoardPlayTrend::getPlayNumber,Comparator.reverseOrder()).thenComparing(TBoardPlayTrend::getPlayDate,Comparator.reverseOrder()));
list=list.subList(0,10);
page.setRecords(list);
map.put("dateList",dateList);
map.put("cntList",cntList);
map.put("page",page);
......
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