AnalysisSearchServiceImpl.java 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899
  1. package com.redxun.knowledge.analysis.service;
  2. import com.baomidou.mybatisplus.core.metadata.IPage;
  3. import com.redxun.common.base.entity.QueryData;
  4. import com.redxun.common.tool.StringUtils;
  5. import com.redxun.knowledge.analysis.entity.enums.SystemDetailVisitsEnum;
  6. import com.redxun.knowledge.analysis.entity.vo.SystemCompanyVo;
  7. import com.redxun.knowledge.analysis.entity.vo.SystemDetailVisitsVo;
  8. import com.redxun.knowledge.analysis.mapper.AnalysisSearchMapper;
  9. import com.redxun.knowledge.common.UserService;
  10. import com.redxun.knowledge.utils.DateUtils;
  11. import com.redxun.knowledge.utils.PageListUtils;
  12. import lombok.extern.slf4j.Slf4j;
  13. import org.springframework.beans.factory.annotation.Autowired;
  14. import org.springframework.stereotype.Service;
  15. import java.util.*;
  16. import java.util.stream.Collectors;
  17. /**
  18. * 文件名: AnalysisSearchServiceImpl
  19. * 作者: zizg
  20. * 时间: 2023/3/23
  21. * 描述:
  22. * 修改人:
  23. * 修改时间:
  24. * 修改内容:
  25. */
  26. @Service
  27. @Slf4j
  28. public class AnalysisSearchServiceImpl {
  29. @Autowired
  30. private AnalysisSearchMapper analysisSearchMapper;
  31. @Autowired
  32. private UserService userService;
  33. /**
  34. * 各业务系统分布
  35. * @param type
  36. * @return
  37. */
  38. public Map<String, Double> searchSystemDetailVisits(String type) {
  39. Map<String, Double> map = new HashMap<>();
  40. Calendar calendar = Calendar.getInstance();
  41. int year = calendar.get(Calendar.YEAR);
  42. List<SystemDetailVisitsVo> result = new ArrayList<>();
  43. if (("total").equals(type)){
  44. result = analysisSearchMapper.searchSystemDetailVisits(null,null);
  45. } else if (("year").equals(type)){
  46. result = analysisSearchMapper.searchSystemDetailVisits(DateUtils.format(DateUtils.getFirstOfYear(year)),
  47. DateUtils.format(DateUtils.getLastOfYear(year)));
  48. } else if (("month").equals(type)){
  49. int month = calendar.get(Calendar.MONTH);
  50. String firstOfMonth = DateUtils.getFirstOfMonth(year, month + 1, 15);
  51. String lastOfMonth = DateUtils.getLastOfMonth(year, month + 1, 15);
  52. result = analysisSearchMapper.searchSystemDetailVisits(firstOfMonth, lastOfMonth);
  53. }
  54. result.forEach(e -> map.put(SystemDetailVisitsEnum.getMessage(e.getPlatform()),e.getPercentage()));
  55. return map;
  56. }
  57. /**
  58. * 组织访问量
  59. * @param queryData
  60. * @return
  61. */
  62. public IPage organizationSearchs(QueryData queryData) {
  63. //获取排序规则
  64. String sort = queryData.getSortField();
  65. if (sort != null){
  66. sort = sort + queryData.getSortOrder();
  67. }
  68. Calendar calendar = Calendar.getInstance();
  69. int year = calendar.get(Calendar.YEAR);
  70. List<SystemCompanyVo> result = new ArrayList<>();
  71. if (("total").equals(queryData.getParams().get("type"))){
  72. result = analysisSearchMapper.organizationSearchs(null,null,sort);
  73. } else if (("year").equals(queryData.getParams().get("type"))){
  74. result = analysisSearchMapper.organizationSearchs(DateUtils.format(DateUtils.getFirstOfYear(year)),
  75. DateUtils.format(DateUtils.getLastOfYear(year)),sort);
  76. } else if (("month").equals(queryData.getParams().get("type"))){
  77. int month = calendar.get(Calendar.MONTH);
  78. String firstOfMonth = DateUtils.getFirstOfMonth(year, month + 1, 15);
  79. String lastOfMonth = DateUtils.getLastOfMonth(year, month + 1, 15);
  80. result = analysisSearchMapper.organizationSearchs(firstOfMonth, lastOfMonth,sort);
  81. }
  82. String tops = queryData.getParams().get("tops");
  83. if(StringUtils.isNotEmpty(tops)){
  84. result = result.stream().limit(Long.parseLong(tops)).collect(Collectors.toList());
  85. } else {
  86. result = result.stream().limit(10).collect(Collectors.toList());
  87. }
  88. //公司名称赋值
  89. result.forEach(e -> e.setCompany(userService.findDeptByDeptId(e.getCompany()).getName()));
  90. return PageListUtils.getPages(queryData.getPageNo(),queryData.getPageSize(),result);
  91. }
  92. }