package com.goafanti.admin.service.impl; import com.goafanti.admin.bo.AdminStatisticsBo; import com.goafanti.admin.bo.ConsultantStatisticsBo; import com.goafanti.admin.bo.ConsultantUserCount; import com.goafanti.admin.bo.OutFinanceCount; import com.goafanti.admin.service.AdminStatisticsService; import com.goafanti.common.constant.AFTConstants; import com.goafanti.common.dao.AdminMapper; import com.goafanti.common.dao.PublicReleaseMapper; import com.goafanti.common.model.AdminUserCount; import com.goafanti.common.utils.DateUtils; import com.goafanti.core.shiro.token.TokenManager; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.math.BigDecimal; import java.util.*; @Service public class AdminStatisticsServiceImpl implements AdminStatisticsService { @Autowired private AdminMapper adminMapper; @Autowired private PublicReleaseMapper publicReleaseMapper; @Override public Object info( String startTime, String endTime) { String aid=TokenManager.getAdminId(); endTime=endTime+" 23:59:59"; AdminStatisticsBo adminStatisticsBo = adminMapper.adminStatisticsInfo(aid); if (adminStatisticsBo==null)adminStatisticsBo=new AdminStatisticsBo(); if (adminStatisticsBo.getReceivables()==null) adminStatisticsBo.setReceivables(new BigDecimal(0)); AdminStatisticsBo asb = adminMapper.adminStatisticsInfoByTime(aid, startTime, endTime); if (asb==null) { adminStatisticsBo.setRangePrivateSum(0); adminStatisticsBo.setRangeSignSum(0); adminStatisticsBo.setRangeChannelSum(0); adminStatisticsBo.setRangeFollowSum(0); adminStatisticsBo.setRangeOrderSum(0); }else { adminStatisticsBo.setRangePrivateSum(asb.getRangePrivateSum()); adminStatisticsBo.setRangeSignSum(asb.getRangeSignSum()); adminStatisticsBo.setRangeChannelSum(asb.getRangeChannelSum()); adminStatisticsBo.setRangeFollowSum(asb.getRangeFollowSum()); adminStatisticsBo.setRangeOrderSum(asb.getRangeOrderSum()); } Integer rangePublicReleaseSum=adminMapper.adminStatisticsPublicReleaseByAidAndTime(aid, startTime, endTime); if (rangePublicReleaseSum==null)rangePublicReleaseSum=0; adminStatisticsBo.setRangePublicReleaseSum(rangePublicReleaseSum); BigDecimal rangeReceivables=adminMapper.addAdminContactsRangeReceivables(aid,startTime,endTime); adminStatisticsBo.setRangeReceivables(rangeReceivables); return adminStatisticsBo; } @Override // @Cacheable(value = "adminStatisticeLists#300", key = "'key:'+#aid") public Object lists(String aid) { //获取当月的列表 Map map=new HashMap<>(); Days days = new Days(); List thisMonth = getThisMonth(days); List userList = adminMapper.thisMonthUser(days.firstDay,days.endDay, aid); List signList=new ArrayList<>(); List privateList=new ArrayList<>(); List channelList=new ArrayList<>(); List userFollowList=new ArrayList<>(); List orderList=new ArrayList<>(); List publicReleaseList=new ArrayList<>(); int signCount=0,privateCount=0,channelCount=0,followCount=0,orderCount=0,publicReleaseCount=0; for (String dates : thisMonth) { boolean flag=true; for (AdminUserCount e : userList) { String formatDate = DateUtils.formatDate(e.getDateTime(), AFTConstants.YYYYMMDD); if (dates.equals(formatDate)){ signCount=signCount+e.getSignCount(); int newSign=signCount; signList.add(newSign); privateCount=privateCount+e.getPrivateCount(); int newPrivate=privateCount; privateList.add(newPrivate); channelCount=channelCount+e.getChannelCount(); int newChannel=channelCount; channelList.add(newChannel); followCount=followCount+e.getFollowCount(); int newFollow=followCount; userFollowList.add(newFollow); orderCount=orderCount+e.getOrderCount(); int newOrder=orderCount; orderList.add(newOrder); publicReleaseCount=publicReleaseCount+e.getPublicReleaseCount(); int newPublicRelease=publicReleaseCount; publicReleaseList.add(newPublicRelease); flag=false; } } if (flag){ signList.add(signCount); privateList.add(privateCount); channelList.add(channelCount); userFollowList.add(followCount); orderList.add(orderCount); publicReleaseList.add(publicReleaseCount); } } map.put("dates",thisMonth); map.put("signList",signList); map.put("privateList",privateList); map.put("channelList",channelList); //跟进数 map.put("userFollowList",userFollowList); //订单数 map.put("orderList",orderList); //公出企业数 map.put("publicReleaseList",publicReleaseList); return map; } @Override public Object consultantInfo(String startTime, String endTime) { String aid=TokenManager.getAdminId(); endTime=endTime+" 23:59:59"; Integer shiroType=2; if(TokenManager.hasRole(AFTConstants.TECH)){ shiroType=0; }else if(TokenManager.hasRole(AFTConstants.TECH_MANAGER)){ shiroType=1; } ConsultantStatisticsBo res = adminMapper.consultantStatisticsInfo(aid,shiroType); if (res == null) res=new ConsultantStatisticsBo(); if (res.getCountPublicRelease()==null)res.setCountPublicRelease(0); if (res.getOrderPayment()==null)res.setOrderPayment(0); ConsultantStatisticsBo asb = adminMapper.consultantStatisticsInfoByTime(aid, startTime, endTime); if (asb!=null){ res.setRangeProjectCount(asb.getProjectCount()); res.setRangeInProgress(asb.getInProgress()); res.setRangeNotStarted(asb.getNotStarted()); res.setRangeComplete(asb.getComplete()); res.setRangeStop(asb.getStop()); res.setRangeCountPublicRelease(asb.getCountPublicRelease()); res.setRangeCountAssist(asb.getCountAssist()); } return res; } @Override public Object consultantLists(String aid) { //获取当月的列表 Map map=new LinkedHashMap<>(); Days days = new Days(); List thisMonth = getThisMonth(days); List list = adminMapper.consultantthisMonthUser(days.firstDay,days.endDay, aid); List projectCountList =new ArrayList<>(); List inProgressList =new ArrayList<>(); List notStartedList =new ArrayList<>(); List completeList =new ArrayList<>(); List stopList =new ArrayList<>(); List publicReleaseCountList =new ArrayList<>(); List assistCountList =new ArrayList<>(); int projectCount=0,inProgressCount=0,notStartedCount=0,completeCount=0,stopCount=0,publicReleaseCount=0, assistCount=0; for (String dates : thisMonth) { for (ConsultantUserCount e : list) { if (e.getDates().equals(dates)){ projectCount=projectCount+e.getProjectCount(); inProgressCount=inProgressCount+e.getInProgress(); notStartedCount=notStartedCount+e.getNotStarted(); completeCount=completeCount+e.getComplete(); stopCount=stopCount+e.getStop(); publicReleaseCount=publicReleaseCount+e.getCountPublicRelease(); assistCount=assistCount+e.getCountAssist(); } } projectCountList.add(projectCount); inProgressList.add(inProgressCount); notStartedList.add(notStartedCount); completeList.add(completeCount); stopList.add(stopCount); publicReleaseCountList.add(publicReleaseCount); assistCountList.add(assistCount); } map.put("dates",thisMonth); map.put("projectCountList",projectCountList); map.put("inProgressList",inProgressList); map.put("notStartedList",notStartedList); map.put("completeList",completeList); map.put("stopList",stopList); map.put("publicReleaseCountList",publicReleaseCountList); map.put("assistCountList",assistCountList); return map; } @Override public Object financeInfo(String startTime, String endTime) { String aid = TokenManager.getAdminId(); OutFinanceCount financeCount=adminMapper.financeInfo(aid, startTime, endTime); Integer rangePublicCount = publicReleaseMapper.selectByaidAndDate(aid, startTime, endTime); financeCount.setRangePublicCount(rangePublicCount); BigDecimal rangeReceivables=adminMapper.addAdminContactsRangeReceivables(aid,startTime,endTime); financeCount.setRangeReceivables(rangeReceivables); OutFinanceCount outFinanceCount = adminMapper.selectFinanceChangeCount(aid); if (outFinanceCount.getChangeCount()==null)outFinanceCount.setChangeCount(0); if (outFinanceCount.getChangeInvoiceCount()==null)outFinanceCount.setChangeInvoiceCount(0); financeCount.setChangeCount(outFinanceCount.getChangeCount()); financeCount.setChangeInvoiceCount(outFinanceCount.getChangeInvoiceCount()); return financeCount; } public List getThisMonth(Days days) { //获取三十天前的日期 Date date=new Date(); Calendar ca=Calendar.getInstance(); ca.setTime(date); ca.add(Calendar.DAY_OF_MONTH,-30); days.setFirstDay(DateUtils.formatDate(ca.getTime(),AFTConstants.YYYYMMDD)); List list=new ArrayList<>(); for (int i=0;i<31;i++){ if (i==0){ Calendar newc=Calendar.getInstance(); newc.setTime(ca.getTime()); list.add(DateUtils.formatDate(newc.getTime(), AFTConstants.YYYYMMDD)); }else { ca.add(Calendar.DAY_OF_MONTH,1); ca.set(Calendar.HOUR_OF_DAY,0); if (ca.getTimeInMillis()