AdminStatisticsServiceImpl.java 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262
  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.bo.ConsultantUserCount;
  5. import com.goafanti.admin.bo.OutFinanceCount;
  6. import com.goafanti.admin.service.AdminStatisticsService;
  7. import com.goafanti.common.constant.AFTConstants;
  8. import com.goafanti.common.dao.AdminMapper;
  9. import com.goafanti.common.dao.PublicReleaseMapper;
  10. import com.goafanti.common.model.AdminUserCount;
  11. import com.goafanti.common.utils.DateUtils;
  12. import com.goafanti.core.shiro.token.TokenManager;
  13. import org.springframework.beans.factory.annotation.Autowired;
  14. import org.springframework.stereotype.Service;
  15. import java.math.BigDecimal;
  16. import java.util.*;
  17. @Service
  18. public class AdminStatisticsServiceImpl implements AdminStatisticsService {
  19. @Autowired
  20. private AdminMapper adminMapper;
  21. @Autowired
  22. private PublicReleaseMapper publicReleaseMapper;
  23. @Override
  24. public Object info( String startTime, String endTime) {
  25. String aid=TokenManager.getAdminId();
  26. endTime=endTime+" 23:59:59";
  27. AdminStatisticsBo adminStatisticsBo = adminMapper.adminStatisticsInfo(aid);
  28. if (adminStatisticsBo==null)adminStatisticsBo=new AdminStatisticsBo();
  29. if (adminStatisticsBo.getReceivables()==null) adminStatisticsBo.setReceivables(new BigDecimal(0));
  30. AdminStatisticsBo asb = adminMapper.adminStatisticsInfoByTime(aid, startTime, endTime);
  31. if (asb==null) {
  32. adminStatisticsBo.setRangePrivateSum(0);
  33. adminStatisticsBo.setRangeSignSum(0);
  34. adminStatisticsBo.setRangeChannelSum(0);
  35. adminStatisticsBo.setRangeFollowSum(0);
  36. adminStatisticsBo.setRangeOrderSum(0);
  37. }else {
  38. adminStatisticsBo.setRangePrivateSum(asb.getRangePrivateSum());
  39. adminStatisticsBo.setRangeSignSum(asb.getRangeSignSum());
  40. adminStatisticsBo.setRangeChannelSum(asb.getRangeChannelSum());
  41. adminStatisticsBo.setRangeFollowSum(asb.getRangeFollowSum());
  42. adminStatisticsBo.setRangeOrderSum(asb.getRangeOrderSum());
  43. }
  44. Integer rangePublicReleaseSum=adminMapper.adminStatisticsPublicReleaseByAidAndTime(aid, startTime, endTime);
  45. if (rangePublicReleaseSum==null)rangePublicReleaseSum=0;
  46. adminStatisticsBo.setRangePublicReleaseSum(rangePublicReleaseSum);
  47. BigDecimal rangeReceivables=adminMapper.addAdminContactsRangeReceivables(aid,startTime,endTime);
  48. adminStatisticsBo.setRangeReceivables(rangeReceivables);
  49. return adminStatisticsBo;
  50. }
  51. @Override
  52. // @Cacheable(value = "adminStatisticeLists#300", key = "'key:'+#aid")
  53. public Object lists(String aid) {
  54. //获取当月的列表
  55. Map<String,Object> map=new HashMap<>();
  56. Days days = new Days();
  57. List<String> thisMonth = getThisMonth(days);
  58. List<AdminUserCount> userList = adminMapper.thisMonthUser(days.firstDay,days.endDay, aid);
  59. List<Integer> signList=new ArrayList<>();
  60. List<Integer> privateList=new ArrayList<>();
  61. List<Integer> channelList=new ArrayList<>();
  62. List<Integer> userFollowList=new ArrayList<>();
  63. List<Integer> orderList=new ArrayList<>();
  64. List<Integer> publicReleaseList=new ArrayList<>();
  65. int signCount=0,privateCount=0,channelCount=0,followCount=0,orderCount=0,publicReleaseCount=0;
  66. for (String dates : thisMonth) {
  67. boolean flag=true;
  68. for (AdminUserCount e : userList) {
  69. String formatDate = DateUtils.formatDate(e.getDateTime(), AFTConstants.YYYYMMDD);
  70. if (dates.equals(formatDate)){
  71. signCount=signCount+e.getSignCount();
  72. int newSign=signCount;
  73. signList.add(newSign);
  74. privateCount=privateCount+e.getPrivateCount();
  75. int newPrivate=privateCount;
  76. privateList.add(newPrivate);
  77. channelCount=channelCount+e.getChannelCount();
  78. int newChannel=channelCount;
  79. channelList.add(newChannel);
  80. followCount=followCount+e.getFollowCount();
  81. int newFollow=followCount;
  82. userFollowList.add(newFollow);
  83. orderCount=orderCount+e.getOrderCount();
  84. int newOrder=orderCount;
  85. orderList.add(newOrder);
  86. publicReleaseCount=publicReleaseCount+e.getPublicReleaseCount();
  87. int newPublicRelease=publicReleaseCount;
  88. publicReleaseList.add(newPublicRelease);
  89. flag=false;
  90. }
  91. }
  92. if (flag){
  93. signList.add(signCount);
  94. privateList.add(privateCount);
  95. channelList.add(channelCount);
  96. userFollowList.add(followCount);
  97. orderList.add(orderCount);
  98. publicReleaseList.add(publicReleaseCount);
  99. }
  100. }
  101. map.put("dates",thisMonth);
  102. map.put("signList",signList);
  103. map.put("privateList",privateList);
  104. map.put("channelList",channelList);
  105. //跟进数
  106. map.put("userFollowList",userFollowList);
  107. //订单数
  108. map.put("orderList",orderList);
  109. //公出企业数
  110. map.put("publicReleaseList",publicReleaseList);
  111. return map;
  112. }
  113. @Override
  114. public Object consultantInfo(String startTime, String endTime) {
  115. String aid=TokenManager.getAdminId();
  116. endTime=endTime+" 23:59:59";
  117. Integer shiroType=2;
  118. if(TokenManager.hasRole(AFTConstants.TECH)){
  119. shiroType=0;
  120. }else if(TokenManager.hasRole(AFTConstants.TECH_MANAGER)){
  121. shiroType=1;
  122. }
  123. ConsultantStatisticsBo res = adminMapper.consultantStatisticsInfo(aid,shiroType);
  124. if (res == null) res=new ConsultantStatisticsBo();
  125. if (res.getCountPublicRelease()==null)res.setCountPublicRelease(0);
  126. if (res.getOrderPayment()==null)res.setOrderPayment(0);
  127. ConsultantStatisticsBo asb = adminMapper.consultantStatisticsInfoByTime(aid, startTime, endTime);
  128. if (asb!=null){
  129. res.setRangeProjectCount(asb.getProjectCount());
  130. res.setRangeInProgress(asb.getInProgress());
  131. res.setRangeNotStarted(asb.getNotStarted());
  132. res.setRangeComplete(asb.getComplete());
  133. res.setRangeStop(asb.getStop());
  134. res.setRangeCountPublicRelease(asb.getCountPublicRelease());
  135. res.setRangeCountAssist(asb.getCountAssist());
  136. }
  137. return res;
  138. }
  139. @Override
  140. public Object consultantLists(String aid) {
  141. //获取当月的列表
  142. Map<String,Object> map=new LinkedHashMap<>();
  143. Days days = new Days();
  144. List<String> thisMonth = getThisMonth(days);
  145. List<ConsultantUserCount> list = adminMapper.consultantthisMonthUser(days.firstDay,days.endDay, aid);
  146. List<Integer> projectCountList =new ArrayList<>();
  147. List<Integer> inProgressList =new ArrayList<>();
  148. List<Integer> notStartedList =new ArrayList<>();
  149. List<Integer> completeList =new ArrayList<>();
  150. List<Integer> stopList =new ArrayList<>();
  151. List<Integer> publicReleaseCountList =new ArrayList<>();
  152. List<Integer> assistCountList =new ArrayList<>();
  153. int projectCount=0,inProgressCount=0,notStartedCount=0,completeCount=0,stopCount=0,publicReleaseCount=0,
  154. assistCount=0;
  155. for (String dates : thisMonth) {
  156. for (ConsultantUserCount e : list) {
  157. if (e.getDates().equals(dates)){
  158. projectCount=projectCount+e.getProjectCount();
  159. inProgressCount=inProgressCount+e.getInProgress();
  160. notStartedCount=notStartedCount+e.getNotStarted();
  161. completeCount=completeCount+e.getComplete();
  162. stopCount=stopCount+e.getStop();
  163. publicReleaseCount=publicReleaseCount+e.getCountPublicRelease();
  164. assistCount=assistCount+e.getCountAssist();
  165. }
  166. }
  167. projectCountList.add(projectCount);
  168. inProgressList.add(inProgressCount);
  169. notStartedList.add(notStartedCount);
  170. completeList.add(completeCount);
  171. stopList.add(stopCount);
  172. publicReleaseCountList.add(publicReleaseCount);
  173. assistCountList.add(assistCount);
  174. }
  175. map.put("dates",thisMonth);
  176. map.put("projectCountList",projectCountList);
  177. map.put("inProgressList",inProgressList);
  178. map.put("notStartedList",notStartedList);
  179. map.put("completeList",completeList);
  180. map.put("stopList",stopList);
  181. map.put("publicReleaseCountList",publicReleaseCountList);
  182. map.put("assistCountList",assistCountList);
  183. return map;
  184. }
  185. @Override
  186. public Object financeInfo(String startTime, String endTime) {
  187. String aid = TokenManager.getAdminId();
  188. OutFinanceCount financeCount=adminMapper.financeInfo(aid, startTime, endTime);
  189. Integer rangePublicCount = publicReleaseMapper.selectByaidAndDate(aid, startTime, endTime);
  190. financeCount.setRangePublicCount(rangePublicCount);
  191. BigDecimal rangeReceivables=adminMapper.addAdminContactsRangeReceivables(aid,startTime,endTime);
  192. financeCount.setRangeReceivables(rangeReceivables);
  193. OutFinanceCount outFinanceCount = adminMapper.selectFinanceChangeCount(aid);
  194. if (outFinanceCount.getChangeCount()==null)outFinanceCount.setChangeCount(0);
  195. if (outFinanceCount.getChangeInvoiceCount()==null)outFinanceCount.setChangeInvoiceCount(0);
  196. financeCount.setChangeCount(outFinanceCount.getChangeCount());
  197. financeCount.setChangeInvoiceCount(outFinanceCount.getChangeInvoiceCount());
  198. return financeCount;
  199. }
  200. public List<String> getThisMonth(Days days) {
  201. //获取三十天前的日期
  202. Date date=new Date();
  203. Calendar ca=Calendar.getInstance();
  204. ca.setTime(date);
  205. ca.add(Calendar.DAY_OF_MONTH,-30);
  206. days.setFirstDay(DateUtils.formatDate(ca.getTime(),AFTConstants.YYYYMMDD));
  207. List<String> list=new ArrayList<>();
  208. for (int i=0;i<31;i++){
  209. if (i==0){
  210. Calendar newc=Calendar.getInstance();
  211. newc.setTime(ca.getTime());
  212. list.add(DateUtils.formatDate(newc.getTime(), AFTConstants.YYYYMMDD));
  213. }else {
  214. ca.add(Calendar.DAY_OF_MONTH,1);
  215. ca.set(Calendar.HOUR_OF_DAY,0);
  216. if (ca.getTimeInMillis()<date.getTime()){
  217. Calendar newc=Calendar.getInstance();
  218. newc.setTime(ca.getTime());
  219. days.setEndDay(DateUtils.formatDate(newc.getTime(), AFTConstants.YYYYMMDD));
  220. list.add(days.getEndDay());
  221. }
  222. }
  223. }
  224. return list;
  225. }
  226. class Days{
  227. private String firstDay;
  228. private String endDay;
  229. public String getFirstDay() {
  230. return firstDay;
  231. }
  232. public void setFirstDay(String firstDay) {
  233. this.firstDay = firstDay;
  234. }
  235. public String getEndDay() {
  236. return endDay;
  237. }
  238. public void setEndDay(String endDay) {
  239. this.endDay = endDay;
  240. }
  241. }
  242. }