AdminStatisticsServiceImpl.java 24 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526
  1. package com.goafanti.admin.service.impl;
  2. import com.goafanti.admin.bo.*;
  3. import com.goafanti.admin.service.AdminStatisticsService;
  4. import com.goafanti.common.constant.AFTConstants;
  5. import com.goafanti.common.dao.*;
  6. import com.goafanti.common.model.Admin;
  7. import com.goafanti.common.model.AdminUserCount;
  8. import com.goafanti.common.model.SalesTeam;
  9. import com.goafanti.common.utils.DateUtils;
  10. import com.goafanti.common.utils.LoggerUtils;
  11. import com.goafanti.core.shiro.token.TokenManager;
  12. import org.springframework.cache.annotation.CacheEvict;
  13. import org.springframework.cache.annotation.Cacheable;
  14. import org.springframework.stereotype.Service;
  15. import javax.annotation.Resource;
  16. import java.math.BigDecimal;
  17. import java.util.*;
  18. @Service
  19. public class AdminStatisticsServiceImpl implements AdminStatisticsService {
  20. @Resource
  21. private AdminMapper adminMapper;
  22. @Resource
  23. private PublicReleaseMapper publicReleaseMapper;
  24. @Resource
  25. private FinanceCountMapper financeCountMapper;
  26. @Resource
  27. private CallLogMapper callLogMapper;
  28. @Resource
  29. private SalesTeamMapper salesTeamMapper;
  30. @Resource
  31. private AdminCallDayMapper adminCallDayMapper;
  32. @Resource
  33. private UserFollowMapper userFollowMapper;
  34. @Resource
  35. private NewOrderDunMapper newOrderDunMapper;
  36. @Override
  37. public Object info( String startTime, String endTime) {
  38. String aid=TokenManager.getAdminId();
  39. endTime=endTime+" 23:59:59";
  40. //不再计算私有,签单,渠道
  41. AdminStatisticsBo adminStatisticsBo = adminMapper.adminStatisticsInfo(aid);
  42. if (adminStatisticsBo==null){
  43. adminStatisticsBo=new AdminStatisticsBo();
  44. }else {
  45. //从客户中计算再添加到adminStatisticsBo
  46. AdminStatisticsBo ListCount = adminMapper.selectUserCount(aid, null, null);
  47. adminStatisticsBo.setPrivateSum(ListCount.getPrivateSum());
  48. adminStatisticsBo.setSignSum(ListCount.getSignSum());
  49. adminStatisticsBo.setChannelSum(ListCount.getChannelSum());
  50. //计算公出次数
  51. Integer publicSum = publicReleaseMapper.selectCountByaidAndDate(aid, null, null);
  52. adminStatisticsBo.setPublicReleaseSum(publicSum);
  53. //计算跟进次数
  54. Integer followSum = userFollowMapper.selectByaidAndDate(aid, null, null);
  55. adminStatisticsBo.setFollowSum(followSum);
  56. }
  57. if (adminStatisticsBo.getReceivables()==null) adminStatisticsBo.setReceivables(new BigDecimal(0));
  58. AdminStatisticsBo asb = adminMapper.adminStatisticsInfoByTime(aid, startTime, endTime);
  59. if (asb==null) {
  60. adminStatisticsBo.setRangePrivateSum(0);
  61. adminStatisticsBo.setRangeSignSum(0);
  62. adminStatisticsBo.setRangeChannelSum(0);
  63. adminStatisticsBo.setRangeFollowSum(0);
  64. adminStatisticsBo.setRangeOrderSum(0);
  65. }else {
  66. adminStatisticsBo.setRangeFollowSum(asb.getRangeFollowSum());
  67. adminStatisticsBo.setRangeOrderSum(asb.getRangeOrderSum());
  68. //从客户中计算再添加到adminStatisticsBo
  69. AdminStatisticsBo ListCount = adminMapper.selectUserCount(aid, startTime, endTime);
  70. adminStatisticsBo.setRangePrivateSum(ListCount.getPrivateSum());
  71. adminStatisticsBo.setRangeSignSum(ListCount.getSignSum());
  72. adminStatisticsBo.setRangeChannelSum(ListCount.getChannelSum());
  73. }
  74. Integer rangePublicReleaseSum=adminMapper.adminStatisticsPublicReleaseByAidAndTime(aid, startTime, endTime);
  75. if (rangePublicReleaseSum==null)rangePublicReleaseSum=0;
  76. adminStatisticsBo.setRangePublicReleaseSum(rangePublicReleaseSum);
  77. BigDecimal rangeReceivables=adminMapper.addAdminContactsRangeReceivables(aid,startTime,endTime);
  78. adminStatisticsBo.setRangeReceivables(rangeReceivables);
  79. //添加外呼数据
  80. AdminStatisticsBo as = adminCallDayMapper.selectByAidCount(aid, startTime, endTime);
  81. if (as !=null){
  82. if (as.getCallSum()!=null)adminStatisticsBo.setCallSum(as.getCallSum());
  83. if (as.getCallDurationSum()!=null)adminStatisticsBo.setCallDurationSum(as.getCallDurationSum());
  84. if (as.getConnectSum()!=null)adminStatisticsBo.setConnectSum(as.getConnectSum());
  85. if (as.getValidSum()!=null)adminStatisticsBo.setValidSum(as.getValidSum());
  86. }else {
  87. adminStatisticsBo.setCallSum(0);
  88. adminStatisticsBo.setCallDurationSum(BigDecimal.ZERO);
  89. adminStatisticsBo.setConnectSum(0);
  90. adminStatisticsBo.setValidSum(0);
  91. }
  92. //添加销售团队数据
  93. statisticsSalesTeam(adminStatisticsBo,aid,startTime,endTime);
  94. return adminStatisticsBo;
  95. }
  96. private void statisticsSalesTeam(AdminStatisticsBo res,String aid ,String startTime,String endTime) {
  97. List<String> list =new ArrayList<>();
  98. List<SalesTeam> salesTeams = salesTeamMapper.queryByAid(aid);
  99. //如果不是团队负责人,所有数据都为null
  100. if (salesTeams.isEmpty()){
  101. res.setTeamPeopleSum(null);
  102. res.setTeamCallSum(null);
  103. res.setTeamCallDurationSum(null);
  104. return;
  105. }
  106. //先获取顶层再迭代获取每一层
  107. for (SalesTeam e : salesTeams) {
  108. List<Admin> admins = adminMapper.queryByTeamId(e.getId());
  109. admins.stream().forEach(e1 -> {
  110. list.add(e1.getId());
  111. });
  112. addSonSalesTeam(list,e);
  113. }
  114. Set<String> set = new HashSet<>(list);
  115. int teamCallSum=0;
  116. int teamConnectSum=0;
  117. int teamValidSum=0;
  118. BigDecimal teamCallDurationSum=BigDecimal.ZERO;
  119. for (String s : set) {
  120. AdminStatisticsBo as = adminCallDayMapper.selectByAidCount(s, startTime, endTime);
  121. if (as != null) {
  122. if (as.getCallSum()!= null) teamCallSum = teamCallSum + as.getCallSum();
  123. if (as.getCallDurationSum()!= null) teamCallDurationSum = teamCallDurationSum.add(as.getCallDurationSum());
  124. if (as.getConnectSum() !=null) teamConnectSum = teamConnectSum + as.getConnectSum();
  125. if (as.getValidSum()!=null) teamValidSum = teamValidSum + as.getValidSum();
  126. }
  127. }
  128. res.setTeamPeopleSum(set.size());
  129. res.setTeamCallSum(teamCallSum);
  130. res.setTeamConnectSum(teamConnectSum);
  131. res.setTeamValidSum(teamValidSum);
  132. res.setTeamCallDurationSum(teamCallDurationSum);
  133. }
  134. /**
  135. *
  136. * @param list
  137. * @param res
  138. */
  139. private void addSonSalesTeam(List<String> list, SalesTeam res) {
  140. List<SalesTeam> salesTeams = salesTeamMapper.queryBySuperId(res.getId());
  141. if (!salesTeams.isEmpty()){
  142. for (SalesTeam e : salesTeams) {
  143. List<Admin> admins = adminMapper.queryByTeamId(e.getId());
  144. admins.stream().forEach(e1 -> {
  145. list.add(e1.getId());
  146. });
  147. addSonSalesTeam(list,e);
  148. }
  149. }
  150. }
  151. @Override
  152. // @Cacheable(value = "adminStatisticeLists#300", key = "'key:'+#aid")
  153. public Object lists(String aid) {
  154. //获取当月的列表
  155. Map<String,Object> map=new HashMap<>();
  156. Days days = new Days();
  157. List<String> thisMonth = getThisMonth(days);
  158. List<AdminUserCount> userList = adminMapper.thisMonthUser(days.firstDay,days.endDay, aid);
  159. List<Integer> signList=new ArrayList<>();
  160. List<Integer> privateList=new ArrayList<>();
  161. List<Integer> channelList=new ArrayList<>();
  162. List<Integer> userFollowList=new ArrayList<>();
  163. List<Integer> orderList=new ArrayList<>();
  164. List<Integer> publicReleaseList=new ArrayList<>();
  165. int signCount=0,privateCount=0,channelCount=0,followCount=0,orderCount=0,publicReleaseCount=0;
  166. for (String dates : thisMonth) {
  167. boolean flag=true;
  168. for (AdminUserCount e : userList) {
  169. String formatDate = DateUtils.formatDate(e.getDateTime(), AFTConstants.YYYYMMDD);
  170. if (dates.equals(formatDate)){
  171. signCount=signCount+e.getSignCount();
  172. int newSign=signCount;
  173. signList.add(newSign);
  174. privateCount=privateCount+e.getPrivateCount();
  175. int newPrivate=privateCount;
  176. privateList.add(newPrivate);
  177. channelCount=channelCount+e.getChannelCount();
  178. int newChannel=channelCount;
  179. channelList.add(newChannel);
  180. followCount=followCount+e.getFollowCount();
  181. int newFollow=followCount;
  182. userFollowList.add(newFollow);
  183. orderCount=orderCount+e.getOrderCount();
  184. int newOrder=orderCount;
  185. orderList.add(newOrder);
  186. publicReleaseCount=publicReleaseCount+e.getPublicReleaseCount();
  187. int newPublicRelease=publicReleaseCount;
  188. publicReleaseList.add(newPublicRelease);
  189. flag=false;
  190. }
  191. }
  192. if (flag){
  193. signList.add(signCount);
  194. privateList.add(privateCount);
  195. channelList.add(channelCount);
  196. userFollowList.add(followCount);
  197. orderList.add(orderCount);
  198. publicReleaseList.add(publicReleaseCount);
  199. }
  200. }
  201. map.put("dates",thisMonth);
  202. map.put("signList",signList);
  203. map.put("privateList",privateList);
  204. map.put("channelList",channelList);
  205. //跟进数
  206. map.put("userFollowList",userFollowList);
  207. //订单数
  208. map.put("orderList",orderList);
  209. //公出企业数
  210. map.put("publicReleaseList",publicReleaseList);
  211. return map;
  212. }
  213. @Override
  214. public Object consultantInfo(String startTime, String endTime) {
  215. String aid=TokenManager.getAdminId();
  216. endTime=endTime+" 23:59:59";
  217. Integer shiroType=2;
  218. if(TokenManager.hasRole(AFTConstants.TECH)){
  219. shiroType=0;
  220. }else if(TokenManager.hasRole(AFTConstants.TECH_MANAGER)){
  221. shiroType=1;
  222. }
  223. ConsultantStatisticsBo res = adminMapper.consultantStatisticsInfo(aid,shiroType);
  224. if (res == null) res=new ConsultantStatisticsBo();
  225. if (res.getCountPublicRelease()==null)res.setCountPublicRelease(0);
  226. if (res.getOrderPayment()==null)res.setOrderPayment(0);
  227. ConsultantStatisticsBo asb = adminMapper.consultantStatisticsInfoByTime(aid, startTime, endTime);
  228. if (asb!=null){
  229. res.setRangeProjectCount(asb.getProjectCount());
  230. res.setRangeInProgress(asb.getInProgress());
  231. res.setRangeNotStarted(asb.getNotStarted());
  232. res.setRangeComplete(asb.getComplete());
  233. res.setRangeStop(asb.getStop());
  234. res.setRangeCountPublicRelease(asb.getCountPublicRelease());
  235. res.setRangeCountAssist(asb.getCountAssist());
  236. }
  237. return res;
  238. }
  239. @Override
  240. public Object consultantLists(String aid) {
  241. //获取当月的列表
  242. Map<String,Object> map=new LinkedHashMap<>();
  243. Days days = new Days();
  244. List<String> thisMonth = getThisMonth(days);
  245. List<ConsultantUserCount> list = adminMapper.consultantthisMonthUser(days.firstDay,days.endDay, aid);
  246. List<Integer> projectCountList =new ArrayList<>();
  247. List<Integer> inProgressList =new ArrayList<>();
  248. List<Integer> notStartedList =new ArrayList<>();
  249. List<Integer> completeList =new ArrayList<>();
  250. List<Integer> stopList =new ArrayList<>();
  251. List<Integer> publicReleaseCountList =new ArrayList<>();
  252. List<Integer> assistCountList =new ArrayList<>();
  253. int projectCount=0,inProgressCount=0,notStartedCount=0,completeCount=0,stopCount=0,publicReleaseCount=0,
  254. assistCount=0;
  255. for (String dates : thisMonth) {
  256. for (ConsultantUserCount e : list) {
  257. if (e.getDates().equals(dates)){
  258. projectCount=projectCount+e.getProjectCount();
  259. inProgressCount=inProgressCount+e.getInProgress();
  260. notStartedCount=notStartedCount+e.getNotStarted();
  261. completeCount=completeCount+e.getComplete();
  262. stopCount=stopCount+e.getStop();
  263. publicReleaseCount=publicReleaseCount+e.getCountPublicRelease();
  264. assistCount=assistCount+e.getCountAssist();
  265. }
  266. }
  267. projectCountList.add(projectCount);
  268. inProgressList.add(inProgressCount);
  269. notStartedList.add(notStartedCount);
  270. completeList.add(completeCount);
  271. stopList.add(stopCount);
  272. publicReleaseCountList.add(publicReleaseCount);
  273. assistCountList.add(assistCount);
  274. }
  275. map.put("dates",thisMonth);
  276. map.put("projectCountList",projectCountList);
  277. map.put("inProgressList",inProgressList);
  278. map.put("notStartedList",notStartedList);
  279. map.put("completeList",completeList);
  280. map.put("stopList",stopList);
  281. map.put("publicReleaseCountList",publicReleaseCountList);
  282. map.put("assistCountList",assistCountList);
  283. return map;
  284. }
  285. @Override
  286. public Object financeInfo(String startTime, String endTime) {
  287. String aid = TokenManager.getAdminId();
  288. OutFinanceCount financeCount=adminMapper.financeInfo(aid, startTime, endTime);
  289. if (financeCount==null)financeCount= new OutFinanceCount();
  290. String endDate =endTime+" 23:59:59";
  291. Integer rangePublicCount = publicReleaseMapper.selectCountByaidAndDate(aid, startTime, endDate);
  292. if (rangePublicCount==null) rangePublicCount=0;
  293. financeCount.setRangePublicCount(rangePublicCount);
  294. BigDecimal rangeReceivables=adminMapper.selectFinanceReceivablesCount(aid,startTime,endDate);
  295. if (rangeReceivables==null)rangeReceivables=new BigDecimal(0);
  296. financeCount.setRangeReceivables(rangeReceivables);
  297. OutFinanceCount outFinanceCount = adminMapper.selectFinanceChangeCount(aid);
  298. if (outFinanceCount==null) outFinanceCount= new OutFinanceCount();
  299. if (outFinanceCount.getChangeCount()==null)outFinanceCount.setChangeCount(0);
  300. if (outFinanceCount.getChangeInvoiceCount()==null)outFinanceCount.setChangeInvoiceCount(0);
  301. financeCount.setChangeCount(outFinanceCount.getChangeCount());
  302. financeCount.setChangeInvoiceCount(outFinanceCount.getChangeInvoiceCount());
  303. return financeCount;
  304. }
  305. @Override
  306. public Object financeLists(String aid) {
  307. //获取当月的列表
  308. Map<String,Object> map=new LinkedHashMap<>();
  309. Days days = new Days();
  310. List<String> thisMonth = getThisMonth(days);
  311. List<Integer> orderList=new ArrayList<>();
  312. List<Integer> expenseList=new ArrayList<>();
  313. List<Integer> invoiceList=new ArrayList<>();
  314. List<Integer> memberList=new ArrayList<>();
  315. List<Integer> paymentList=new ArrayList<>();
  316. List<Integer> publicList=new ArrayList<>();
  317. List<OutFinanceCount> financeCounts = financeCountMapper.financeLists(aid, days.firstDay, days.endDay+" 23:59:59");
  318. List<OutFinanceCount> pList = publicReleaseMapper.selectByaidAndDate(aid, days.firstDay, days.endDay + " 23:59:59");
  319. int orderCount=0,expenseCount=0, invoiceCount=0,memberCount=0,paymentCount=0,publicCount=0;
  320. for (String e : thisMonth) {
  321. for (OutFinanceCount f : financeCounts) {
  322. if (e.equals(f.getDates())){
  323. orderCount+=f.getOrderCount();
  324. expenseCount+=f.getExpenseCount();
  325. invoiceCount+=f.getInvoiceCount();
  326. memberCount+=f.getMemberCount();
  327. paymentCount+=f.getPaymentCount();
  328. }
  329. }
  330. for (OutFinanceCount p : pList) {
  331. if (e.equals(p.getDates())){
  332. publicCount+=p.getPublicCount();
  333. }
  334. }
  335. orderList.add(orderCount);
  336. expenseList.add(expenseCount);
  337. invoiceList.add(invoiceCount);
  338. memberList.add(memberCount);
  339. paymentList.add(paymentCount);
  340. publicList.add(publicCount);
  341. }
  342. map.put("dates",thisMonth);
  343. map.put("orderList",orderList);
  344. map.put("expenseList",expenseList);
  345. map.put("invoiceList",invoiceList);
  346. map.put("memberList",memberList);
  347. map.put("paymentList",paymentList);
  348. map.put("publicList",publicList);
  349. return map;
  350. }
  351. @Override
  352. @Cacheable(value = "salesTeam#600", key = "'key:'+#aid+'_'+#startTime+'_'+#endTime")
  353. public Object salesTeam(String aid,String startTime, String endTime) {
  354. endTime=endTime+" 23:59:59";
  355. List<SalesTeamBo> resList=new ArrayList<>();
  356. List<SalesTeam> salesTeams=new ArrayList<>();
  357. if (TokenManager.hasRole(AFTConstants.SUPERADMIN)){
  358. List<SalesTeamBo> salesTeamLvlList = salesTeamMapper.findSalesTeamLvlList(1);
  359. salesTeams.addAll(salesTeamLvlList);
  360. }else {
  361. salesTeams= salesTeamMapper.queryByAid(aid);
  362. }
  363. //如果不是团队负责人,所有数据都为null
  364. int teamCallSum=0;
  365. int teamConnectSum=0;
  366. int teamValidSum=0;
  367. BigDecimal teamCallDurationSum=BigDecimal.ZERO;
  368. //先计算负责人
  369. // AdminStatisticsBo ab=adminCallDayMapper.selectByAidCount(aid,startTime,endTime);
  370. // if (ab!= null) {
  371. // if (ab.getCallSum()!= null) teamCallSum = teamCallSum + ab.getCallSum();
  372. // if (ab.getCallDurationSum()!= null) teamCallDurationSum = teamCallDurationSum.add(ab.getCallDurationSum());
  373. // if (ab.getConnectSum()!= null) teamConnectSum = teamConnectSum + ab.getConnectSum();
  374. // if (ab.getValidSum()!= null) teamValidSum = teamValidSum + ab.getValidSum();
  375. // }
  376. if (!salesTeams.isEmpty()){
  377. //先获取顶层再迭代获取每一层
  378. for (SalesTeam e : salesTeams) {
  379. SalesTeamBo salesTeamBo = new SalesTeamBo(e);
  380. //再计算所有成员
  381. List<Admin> admins = adminMapper.queryByTeamId(e.getId());
  382. for (Admin e2 : admins) {
  383. AdminStatisticsBo as=adminCallDayMapper.selectByAidCount(e2.getId(), startTime,endTime);
  384. if (as != null) {
  385. if (as.getCallSum()!= null) teamCallSum = teamCallSum + as.getCallSum();
  386. if (as.getCallDurationSum()!= null) teamCallDurationSum = teamCallDurationSum.add(as.getCallDurationSum());
  387. if (as.getConnectSum()!= null) teamConnectSum = teamConnectSum + as.getConnectSum();
  388. if (as.getValidSum()!= null) teamValidSum = teamValidSum + as.getValidSum();
  389. }
  390. }
  391. salesTeamBo.setTeamCallSum(teamCallSum);
  392. salesTeamBo.setTeamCallDurationSum(teamCallDurationSum);
  393. salesTeamBo.setTeamPeopleSum(admins.size());
  394. salesTeamBo.setTeamConnectSum(teamConnectSum);
  395. salesTeamBo.setTeamValidSum(teamValidSum);
  396. resList.add(salesTeamBo);
  397. addSonTeam(resList,salesTeamBo,startTime,endTime);
  398. }
  399. }
  400. return resList;
  401. }
  402. @Override
  403. @CacheEvict(value = "salesTeam#600", allEntries = true)
  404. public Object salesTeamClean() {
  405. LoggerUtils.debug(getClass(),"营销团队缓存清理");
  406. return 1;
  407. }
  408. private void addSonTeam(List<SalesTeamBo>list, SalesTeamBo salesTeamBo, String startTime, String endTime) {
  409. List<SalesTeam> salesTeams = salesTeamMapper.queryBySuperId(salesTeamBo.getId());
  410. if (!salesTeams.isEmpty()){
  411. //计算所有子项数据
  412. for (SalesTeam e : salesTeams) {
  413. SalesTeamBo salesTeamBo2 = new SalesTeamBo(e);
  414. int teamCallSum=0;
  415. int teamConnectSum=0;
  416. int teamValidSum=0;
  417. BigDecimal teamCallDurationSum=BigDecimal.ZERO;
  418. //先计算负责人
  419. // AdminStatisticsBo ab=callLogMapper.selectAdminCallSum(e.getAid(),startTime,endTime);
  420. // if (ab!= null) {
  421. // if (ab.getCallSum()!= null) teamCallSum = teamCallSum + ab.getCallSum();
  422. // if (ab.getCallDurationSum()!= null) teamCallDurationSum = teamCallDurationSum.add(ab.getCallDurationSum());
  423. // if (ab.getConnectSum()!= null) teamConnectSum = teamConnectSum + ab.getConnectSum();
  424. // if (ab.getValidSum()!= null) teamValidSum = teamValidSum + ab.getValidSum();
  425. // }
  426. List<Admin> admins = adminMapper.queryByTeamId(e.getId());
  427. for (Admin admin : admins) {
  428. AdminStatisticsBo as=callLogMapper.selectAdminCallSum(admin.getId(),startTime,endTime);
  429. if (as!= null) {
  430. if (as.getCallSum()!= null) teamCallSum = teamCallSum + as.getCallSum();
  431. if (as.getCallDurationSum()!= null) teamCallDurationSum = teamCallDurationSum.add(as.getCallDurationSum());
  432. if (as.getConnectSum()!= null) teamConnectSum = teamConnectSum + as.getConnectSum();
  433. if (as.getValidSum()!= null) teamValidSum = teamValidSum + as.getValidSum();
  434. }
  435. }
  436. salesTeamBo2.setTeamCallSum(teamCallSum);
  437. salesTeamBo2.setTeamCallDurationSum(teamCallDurationSum);
  438. salesTeamBo2.setTeamConnectSum(teamConnectSum);
  439. salesTeamBo2.setTeamValidSum(teamValidSum);
  440. salesTeamBo2.setTeamPeopleSum(admins.size());
  441. //迭代计算并赋值给上一层
  442. addSonTeam(list,salesTeamBo2,startTime,endTime);
  443. if (salesTeamBo2.getTeamPeopleSum()!=null)salesTeamBo.setTeamPeopleSum(salesTeamBo.getTeamPeopleSum() + salesTeamBo2.getTeamPeopleSum());
  444. if (salesTeamBo2.getTeamCallSum()!=null)salesTeamBo.setTeamCallSum(salesTeamBo.getTeamCallSum()+salesTeamBo2.getTeamCallSum());
  445. if (salesTeamBo2.getTeamCallDurationSum()!=null)salesTeamBo.setTeamCallDurationSum(salesTeamBo.getTeamCallDurationSum().add(salesTeamBo2.getTeamCallDurationSum()));
  446. if (salesTeamBo2.getTeamConnectSum()!=null)salesTeamBo.setTeamConnectSum(salesTeamBo.getTeamConnectSum()+salesTeamBo2.getTeamConnectSum());
  447. if (salesTeamBo2.getTeamValidSum()!=null)salesTeamBo.setTeamValidSum(salesTeamBo.getTeamValidSum()+salesTeamBo2.getTeamValidSum());
  448. list.add(salesTeamBo2);
  449. }
  450. }
  451. }
  452. public List<String> getThisMonth(Days days) {
  453. //获取三十天前的日期
  454. Date date=new Date();
  455. Calendar ca=Calendar.getInstance();
  456. ca.setTime(date);
  457. ca.add(Calendar.DAY_OF_MONTH,-30);
  458. days.setFirstDay(DateUtils.formatDate(ca.getTime(),AFTConstants.YYYYMMDD));
  459. List<String> list=new ArrayList<>();
  460. for (int i=0;i<31;i++){
  461. if (i==0){
  462. Calendar newc=Calendar.getInstance();
  463. newc.setTime(ca.getTime());
  464. list.add(DateUtils.formatDate(newc.getTime(), AFTConstants.YYYYMMDD));
  465. }else {
  466. ca.add(Calendar.DAY_OF_MONTH,1);
  467. ca.set(Calendar.HOUR_OF_DAY,0);
  468. if (ca.getTimeInMillis()<date.getTime()){
  469. Calendar newc=Calendar.getInstance();
  470. newc.setTime(ca.getTime());
  471. days.setEndDay(DateUtils.formatDate(newc.getTime(), AFTConstants.YYYYMMDD));
  472. list.add(days.getEndDay());
  473. }
  474. }
  475. }
  476. return list;
  477. }
  478. class Days{
  479. private String firstDay;
  480. private String endDay;
  481. public String getFirstDay() {
  482. return firstDay;
  483. }
  484. public void setFirstDay(String firstDay) {
  485. this.firstDay = firstDay;
  486. }
  487. public String getEndDay() {
  488. return endDay;
  489. }
  490. public void setEndDay(String endDay) {
  491. this.endDay = endDay;
  492. }
  493. }
  494. }