Commit f8a67011 authored by liqin's avatar liqin 💬

Merge branch 'master' of http://111.203.232.171:8888/lee/chnmuseum-party into master

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