| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262 |
- 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<String,Object> map=new HashMap<>();
- Days days = new Days();
- List<String> thisMonth = getThisMonth(days);
- List<AdminUserCount> userList = adminMapper.thisMonthUser(days.firstDay,days.endDay, aid);
- List<Integer> signList=new ArrayList<>();
- List<Integer> privateList=new ArrayList<>();
- List<Integer> channelList=new ArrayList<>();
- List<Integer> userFollowList=new ArrayList<>();
- List<Integer> orderList=new ArrayList<>();
- List<Integer> 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<String,Object> map=new LinkedHashMap<>();
- Days days = new Days();
- List<String> thisMonth = getThisMonth(days);
- List<ConsultantUserCount> list = adminMapper.consultantthisMonthUser(days.firstDay,days.endDay, aid);
- List<Integer> projectCountList =new ArrayList<>();
- List<Integer> inProgressList =new ArrayList<>();
- List<Integer> notStartedList =new ArrayList<>();
- List<Integer> completeList =new ArrayList<>();
- List<Integer> stopList =new ArrayList<>();
- List<Integer> publicReleaseCountList =new ArrayList<>();
- List<Integer> 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<String> 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<String> 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()<date.getTime()){
- Calendar newc=Calendar.getInstance();
- newc.setTime(ca.getTime());
- days.setEndDay(DateUtils.formatDate(newc.getTime(), AFTConstants.YYYYMMDD));
- list.add(days.getEndDay());
- }
- }
- }
- return list;
- }
- class Days{
- private String firstDay;
- private String endDay;
- public String getFirstDay() {
- return firstDay;
- }
- public void setFirstDay(String firstDay) {
- this.firstDay = firstDay;
- }
- public String getEndDay() {
- return endDay;
- }
- public void setEndDay(String endDay) {
- this.endDay = endDay;
- }
- }
- }
|