AdminStatisticsServiceImpl.java 7.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189
  1. package com.goafanti.admin.service.impl;
  2. import com.goafanti.admin.bo.AdminStatisticsBo;
  3. import com.goafanti.admin.bo.ConsultantStatisticsBo;
  4. import com.goafanti.admin.service.AdminStatisticsService;
  5. import com.goafanti.common.constant.AFTConstants;
  6. import com.goafanti.common.dao.AdminMapper;
  7. import com.goafanti.common.model.AdminUserCount;
  8. import com.goafanti.common.utils.DateUtils;
  9. import com.goafanti.core.shiro.token.TokenManager;
  10. import org.springframework.beans.factory.annotation.Autowired;
  11. import org.springframework.stereotype.Service;
  12. import java.math.BigDecimal;
  13. import java.util.*;
  14. @Service
  15. public class AdminStatisticsServiceImpl implements AdminStatisticsService {
  16. @Autowired
  17. private AdminMapper adminMapper;
  18. @Override
  19. public Object info( String startTime, String endTime) {
  20. String aid=TokenManager.getAdminId();
  21. endTime=endTime+" 23:59:59";
  22. AdminStatisticsBo adminStatisticsBo = adminMapper.adminStatisticsInfo(aid);
  23. if (adminStatisticsBo==null)adminStatisticsBo=new AdminStatisticsBo();
  24. if (adminStatisticsBo.getReceivables()==null) adminStatisticsBo.setReceivables(new BigDecimal(0));
  25. AdminStatisticsBo asb = adminMapper.adminStatisticsInfoByTime(aid, startTime, endTime);
  26. if (asb==null) {
  27. adminStatisticsBo.setRangePrivateSum(0);
  28. adminStatisticsBo.setRangeSignSum(0);
  29. adminStatisticsBo.setRangeChannelSum(0);
  30. adminStatisticsBo.setRangeFollowSum(0);
  31. adminStatisticsBo.setRangeOrderSum(0);
  32. }else {
  33. adminStatisticsBo.setRangePrivateSum(asb.getRangePrivateSum());
  34. adminStatisticsBo.setRangeSignSum(asb.getRangeSignSum());
  35. adminStatisticsBo.setRangeChannelSum(asb.getRangeChannelSum());
  36. adminStatisticsBo.setRangeFollowSum(asb.getRangeFollowSum());
  37. adminStatisticsBo.setRangeOrderSum(asb.getRangeOrderSum());
  38. }
  39. Integer rangePublicReleaseSum=adminMapper.adminStatisticsPublicReleaseByAidAndTime(aid, startTime, endTime);
  40. if (rangePublicReleaseSum==null)rangePublicReleaseSum=0;
  41. adminStatisticsBo.setRangePublicReleaseSum(rangePublicReleaseSum);
  42. BigDecimal rangeReceivables=adminMapper.addAdminContactsRangeReceivables(aid,startTime,endTime);
  43. adminStatisticsBo.setRangeReceivables(rangeReceivables);
  44. return adminStatisticsBo;
  45. }
  46. @Override
  47. // @Cacheable(value = "adminStatisticeLists#300", key = "'key:'+#aid")
  48. public Object lists(String aid) {
  49. //获取当月的列表
  50. Map<String,Object> map=new HashMap<>();
  51. Days days = new Days();
  52. List<String> thisMonth = getThisMonth(days);
  53. List<AdminUserCount> userList = adminMapper.thisMonthUser(days.firstDay,days.endDay, aid);
  54. List<Integer> signList=new ArrayList<>();
  55. List<Integer> privateList=new ArrayList<>();
  56. List<Integer> channelList=new ArrayList<>();
  57. List<Integer> userFollowList=new ArrayList<>();
  58. List<Integer> orderList=new ArrayList<>();
  59. List<Integer> publicReleaseList=new ArrayList<>();
  60. int signCount=0,privateCount=0,channelCount=0,followCount=0,orderCount=0,publicReleaseCount=0;
  61. for (String dates : thisMonth) {
  62. boolean flag=true;
  63. for (AdminUserCount e : userList) {
  64. String formatDate = DateUtils.formatDate(e.getDateTime(), AFTConstants.YYYYMMDD);
  65. if (dates.equals(formatDate)){
  66. signCount=signCount+e.getSignCount();
  67. int newSign=signCount;
  68. signList.add(newSign);
  69. privateCount=privateCount+e.getPrivateCount();
  70. int newPrivate=privateCount;
  71. privateList.add(newPrivate);
  72. channelCount=channelCount+e.getChannelCount();
  73. int newChannel=channelCount;
  74. channelList.add(newChannel);
  75. followCount=followCount+e.getFollowCount();
  76. int newFollow=followCount;
  77. userFollowList.add(newFollow);
  78. orderCount=orderCount+e.getOrderCount();
  79. int newOrder=orderCount;
  80. orderList.add(newOrder);
  81. publicReleaseCount=publicReleaseCount+e.getPublicReleaseCount();
  82. int newPublicRelease=publicReleaseCount;
  83. publicReleaseList.add(newPublicRelease);
  84. flag=false;
  85. }
  86. }
  87. if (flag){
  88. signList.add(signCount);
  89. privateList.add(privateCount);
  90. channelList.add(channelCount);
  91. userFollowList.add(followCount);
  92. orderList.add(orderCount);
  93. publicReleaseList.add(publicReleaseCount);
  94. }
  95. }
  96. map.put("dates",thisMonth);
  97. map.put("signList",signList);
  98. map.put("privateList",privateList);
  99. map.put("channelList",channelList);
  100. //跟进数
  101. map.put("userFollowList",userFollowList);
  102. //订单数
  103. map.put("orderList",orderList);
  104. //公出企业数
  105. map.put("publicReleaseList",publicReleaseList);
  106. return map;
  107. }
  108. @Override
  109. public Object consultantInfo(String startTime, String endTime) {
  110. String aid=TokenManager.getAdminId();
  111. endTime=endTime+" 23:59:59";
  112. ConsultantStatisticsBo res = adminMapper.consultantStatisticsInfo(aid);
  113. if (res.getCountPublicRelease()==null)res.setCountPublicRelease(0);
  114. if (res.getOrderPayment()==null)res.setOrderPayment(0);
  115. ConsultantStatisticsBo asb = adminMapper.consultantStatisticsInfoByTime(aid, startTime, endTime);
  116. if (asb!=null){
  117. res.setRangeProjectCount(asb.getProjectCount());
  118. res.setRangeInProgress(asb.getInProgress());
  119. res.setRangeNotStarted(asb.getNotStarted());
  120. res.setRangeComplete(asb.getComplete());
  121. res.setRangeStop(asb.getStop());
  122. res.setRangeCountPublicRelease(asb.getCountPublicRelease());
  123. res.setRangeCountAssist(asb.getCountAssist());
  124. }
  125. return res;
  126. }
  127. public List<String> getThisMonth(Days days) {
  128. //获取当月的第一天
  129. Date date=new Date();
  130. Calendar ca=Calendar.getInstance();
  131. ca.setTime(date);
  132. ca.add(Calendar.DAY_OF_MONTH,-30);
  133. days.setFirstDay(DateUtils.formatDate(ca.getTime(),AFTConstants.YYYYMMDD));
  134. List<String> list=new ArrayList<>();
  135. for (int i=0;i<31;i++){
  136. if (i==0){
  137. Calendar newc=Calendar.getInstance();
  138. newc.setTime(ca.getTime());
  139. list.add(DateUtils.formatDate(newc.getTime(), AFTConstants.YYYYMMDD));
  140. }else {
  141. ca.add(Calendar.DAY_OF_MONTH,1);
  142. ca.set(Calendar.HOUR_OF_DAY,0);
  143. if (ca.getTimeInMillis()<date.getTime()){
  144. Calendar newc=Calendar.getInstance();
  145. newc.setTime(ca.getTime());
  146. days.setEndDay(DateUtils.formatDate(newc.getTime(), AFTConstants.YYYYMMDD));
  147. list.add(days.getEndDay());
  148. }
  149. }
  150. }
  151. return list;
  152. }
  153. class Days{
  154. private String firstDay;
  155. private String endDay;
  156. public String getFirstDay() {
  157. return firstDay;
  158. }
  159. public void setFirstDay(String firstDay) {
  160. this.firstDay = firstDay;
  161. }
  162. public String getEndDay() {
  163. return endDay;
  164. }
  165. public void setEndDay(String endDay) {
  166. this.endDay = endDay;
  167. }
  168. }
  169. }