DataService.java 6.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163
  1. package com.fdkankan.manage.service.impl;
  2. import cn.dev33.satoken.stp.StpUtil;
  3. import com.fdkankan.fyun.face.FYunFileServiceInterface;
  4. import com.fdkankan.manage.common.FilePath;
  5. import com.fdkankan.manage.common.ResultCode;
  6. import com.fdkankan.manage.entity.DistrictCode;
  7. import com.fdkankan.manage.entity.JyPlatform;
  8. import com.fdkankan.manage.entity.JyUser;
  9. import com.fdkankan.manage.entity.ScenePlus;
  10. import com.fdkankan.manage.exception.BusinessException;
  11. import com.fdkankan.manage.mapper.IDataMapper;
  12. import com.fdkankan.manage.service.*;
  13. import com.fdkankan.manage.util.Dateutils;
  14. import com.fdkankan.manage.vo.request.SceneTotalParam;
  15. import com.fdkankan.manage.vo.response.*;
  16. import org.springframework.beans.factory.annotation.Autowired;
  17. import org.springframework.stereotype.Service;
  18. import javax.servlet.http.HttpServletRequest;
  19. import javax.servlet.http.HttpServletResponse;
  20. import java.util.*;
  21. import java.util.stream.Collectors;
  22. @Service
  23. public class DataService implements IDataService {
  24. @Autowired
  25. IDataMapper dataMapper;
  26. @Autowired
  27. IJyUserPlatformService userPlatformService;
  28. @Autowired
  29. IJyUserService jyUserService;
  30. @Autowired
  31. ISysRoleService sysRoleService;
  32. @Autowired
  33. IDistrictCodeService districtCodeService;
  34. @Autowired
  35. IScenePlusService scenePlusService;
  36. @Autowired
  37. IAuthPageService authPageService;
  38. private JyUser commonSetParam(SceneTotalParam param){
  39. JyUser jyUser = jyUserService.getLoginUser();
  40. if(param.getPlatformId() != null){
  41. List<JyPlatform> jyPlatforms = authPageService.platformList();
  42. List<Integer> collect = jyPlatforms.stream().map(JyPlatform::getId).collect(Collectors.toList());
  43. if(!collect.contains(param.getPlatformId())){
  44. throw new BusinessException(ResultCode.NOT_PERMISSION);
  45. }
  46. }else {
  47. if(!sysRoleService.isSuperAdmin()){
  48. Boolean flag = sysRoleService.isAdmin();
  49. if(!flag){
  50. param.setUserId(jyUser.getUserId());
  51. }else {
  52. param.setPlatformId(jyUser.getPlatformId());
  53. }
  54. }
  55. }
  56. return jyUser;
  57. }
  58. @Override
  59. public SceneTotalVo sceneTotal(SceneTotalParam param) {
  60. JyUser jyUser = commonSetParam(param);
  61. SceneTotalVo totalVo = new SceneTotalVo();
  62. Long totalSceneCount = dataMapper.totalSceneCount(param);
  63. param.setStartTime(Dateutils.getStartTime(Dateutils.getDaysAgoStr(30)));
  64. param.setEndTime(Dateutils.getEndTime(Dateutils.getDate(new Date())));
  65. Long preMonthAddCount = dataMapper.totalSceneCount(param);
  66. param.setStartTime(Dateutils.getStartTime(Dateutils.getDaysAgoStr(0)));
  67. param.setEndTime(Dateutils.getEndTime(Dateutils.getDaysAgoStr(0)));
  68. Long todayAddCount = dataMapper.totalSceneCount(param);
  69. Long totalUserCount = dataMapper.totalUserCount(param);
  70. Integer totalSceneUserCount = dataMapper.totalSceneUserCount(param).size();
  71. param.setUserId(jyUser.getUserId());
  72. Long userSceneCount = dataMapper.totalSceneCount(param);
  73. String updateTime = dataMapper.getLastSceneBuildTime(param);
  74. totalVo.setTotalSceneCount(totalSceneCount);
  75. totalVo.setTimeSceneCount(preMonthAddCount);
  76. totalVo.setTodaySceneCount(todayAddCount);
  77. totalVo.setTotalUserCount(totalUserCount);
  78. totalVo.setTotalSceneUserCount(Long.valueOf(totalSceneUserCount));
  79. totalVo.setUserSceneCount(userSceneCount);
  80. totalVo.setUpdateTime(updateTime);
  81. return totalVo;
  82. }
  83. @Override
  84. public List<SceneTrendVo> sceneTrend(SceneTotalParam param) {
  85. commonSetParam(param);
  86. List<String> datesStr = new ArrayList<>();
  87. if(param.getTimeList() == null || param.getTimeList().isEmpty()){
  88. datesStr = Dateutils.findDatesStr(Dateutils.getAddTime(-30, Dateutils.DAY), new Date(), Dateutils.DAY);
  89. }else {
  90. datesStr = Dateutils.findDatesStr(Dateutils.getDate(param.getStartTime()),Dateutils.getDate(param.getEndTime()),Dateutils.DAY);
  91. }
  92. HashMap<String,Long> sceneMap = new HashMap<>();
  93. HashMap<String,Long> userMap = new HashMap<>();
  94. List<GroupByCountVo> groupByCounts = dataMapper.getSceneGroupByDay(param);
  95. groupByCounts.forEach(e ->sceneMap.put(e.getGroupKey(),e.getTotalCount()));
  96. List<GroupByCountVo> userCount = dataMapper.getUserGroupByDay(param);
  97. for (GroupByCountVo groupByCountVo : userCount) {
  98. if(userMap.get(groupByCountVo.getGroupKey()) != null){
  99. userMap.put(groupByCountVo.getGroupKey(), userMap.get(groupByCountVo.getGroupKey()) +1);
  100. }else {
  101. userMap.put(groupByCountVo.getGroupKey(),1L);
  102. }
  103. }
  104. List<SceneTrendVo> reList = new ArrayList<>();
  105. for (String key : datesStr) {
  106. reList.add(new SceneTrendVo(key,userMap.get(key),sceneMap.get(key)));
  107. }
  108. return reList;
  109. }
  110. @Override
  111. public Object districtScatter(SceneTotalParam param) {
  112. commonSetParam(param);
  113. List<GroupByCountVo> dataList = dataMapper.getSceneGroupByDistrict(param);
  114. List<String> districtCodeList = dataList.stream().map(GroupByCountVo::getGroupKey).collect(Collectors.toList());
  115. HashMap<String, DistrictCode> map = districtCodeService.getByCodeList(districtCodeList);
  116. for (GroupByCountVo groupByCountVo : dataList) {
  117. if(groupByCountVo.getGroupKey() == null){
  118. groupByCountVo.setGroupKey("unknown");
  119. groupByCountVo.setGroupName("unknown");
  120. }
  121. DistrictCode districtCode = map.get(groupByCountVo.getGroupKey());
  122. if(districtCode != null){
  123. groupByCountVo.setGroupName(districtCode.getName());
  124. }
  125. }
  126. return dataList;
  127. }
  128. @Autowired
  129. IExcelService excelService;
  130. @Override
  131. public void exportSceneList(SceneTotalParam param, HttpServletRequest req, HttpServletResponse resp) {
  132. commonSetParam(param);
  133. List<ExportSceneList> exportSceneLists = dataMapper.getExPortSceneList(param);
  134. try {
  135. excelService.commonExport(req,resp,"场景数据",exportSceneLists, ExportSceneList.class);
  136. } catch (Exception e) {
  137. throw new RuntimeException(e);
  138. }
  139. }
  140. }