package com.matrix.system.hiveErp.analysUtil; 
 | 
  
 | 
import com.matrix.core.tools.DateUtil; 
 | 
import org.apache.commons.collections.MapUtils; 
 | 
  
 | 
import java.util.ArrayList; 
 | 
import java.util.Date; 
 | 
import java.util.List; 
 | 
import java.util.Map; 
 | 
  
 | 
/** 
 | 
 * 统计分析时间工具 
 | 
 * @author  jyy 
 | 
 */ 
 | 
public class StatisticsTimeUtil { 
 | 
  
 | 
  
 | 
  
 | 
  
 | 
    /** 
 | 
     * 获取map中的值为数组 
 | 
     * @param yAxisMap 
 | 
     * @return 
 | 
     */ 
 | 
    public static  String[] getSeries(Map<String, Integer> yAxisMap) { 
 | 
        if (MapUtils.isNotEmpty(yAxisMap)) { 
 | 
            String[] seroes = new String[yAxisMap.size()-1]; 
 | 
            for (int index=0; index<yAxisMap.size()-1 ; index++) { 
 | 
                if(index<seroes.length){ 
 | 
                    System.out.println(yAxisMap.get("t"+index)+""); 
 | 
                     seroes[index]=yAxisMap.get("t"+index)+""; 
 | 
                } 
 | 
            } 
 | 
            return seroes; 
 | 
        } else { 
 | 
            return new String[0]; 
 | 
        } 
 | 
    } 
 | 
  
 | 
  
 | 
  
 | 
    /** 
 | 
     * 
 | 
     * @param xAxis 
 | 
     * @param statisticsParam 
 | 
     * @return 
 | 
     */ 
 | 
    public static String[] getFormartDateList(List<Date> xAxis, StatisticsParamVo statisticsParam) { 
 | 
        String[] dates=new String[xAxis.size()]; 
 | 
        String dataFmt=""; 
 | 
        switch (statisticsParam.getStatisticsUnit()){ 
 | 
            case "时": 
 | 
                dataFmt= DateUtil.DATE_FORMAT_HH; 
 | 
                break; 
 | 
            case "日": 
 | 
                dataFmt=DateUtil.DATE_FORMAT_DD; 
 | 
                break; 
 | 
            case "月": 
 | 
                dataFmt=DateUtil.MONTH; 
 | 
                break; 
 | 
            case "年": 
 | 
                dataFmt=DateUtil.YEAR; 
 | 
                break; 
 | 
  
 | 
        } 
 | 
        for(int i=0 ; i<dates.length; i++ ){ 
 | 
            dates[i]= DateUtil.dateToString(xAxis.get(i),dataFmt); 
 | 
        } 
 | 
        return dates; 
 | 
    } 
 | 
  
 | 
  
 | 
    /** 
 | 
     * 构建查询参数,带时间范围 
 | 
     * @param xAxis 
 | 
     * @return 
 | 
     */ 
 | 
    public static List<StatisticsTimeDaoParam> buidParam(List<Date> xAxis) { 
 | 
        List<StatisticsTimeDaoParam> daoParams = new ArrayList<>(); 
 | 
        for(int i=0 ;i<xAxis.size(); i++){ 
 | 
            StatisticsTimeDaoParam param=  new StatisticsTimeDaoParam(); 
 | 
            param.setBeginTime(xAxis.get(i)); 
 | 
            if(i+1<xAxis.size()){ 
 | 
                param.setEndTime(xAxis.get(i+1)); 
 | 
            } 
 | 
            daoParams.add(param); 
 | 
        } 
 | 
        return daoParams; 
 | 
    } 
 | 
  
 | 
  
 | 
  
 | 
    /** 
 | 
     * 通过统计单位获取时间段中,有多小段 
 | 
     * @param beginTime 
 | 
     * @param endTime 
 | 
     * @param statisticsUnit 
 | 
     * @return 
 | 
     */ 
 | 
    public static List<Date> getTimeSpace(String beginTime, String endTime, String statisticsUnit) { 
 | 
  
 | 
  
 | 
        List<Date> result=new ArrayList<>(); 
 | 
        switch (statisticsUnit){ 
 | 
            case "时": 
 | 
                    return getTimeSpaceByHours(beginTime,endTime); 
 | 
            case "日": 
 | 
                return getTimeSpaceByDay(beginTime,endTime); 
 | 
            case "月": 
 | 
                return getTimeSpaceByMonth(beginTime,endTime); 
 | 
  
 | 
            case "年": 
 | 
                return getTimeSpaceByYear(beginTime,endTime); 
 | 
                default: 
 | 
                    return result; 
 | 
        } 
 | 
  
 | 
    } 
 | 
  
 | 
  
 | 
  
 | 
    private static List<Date> getTimeSpaceByYear(String beginTime, String endTime){ 
 | 
        List<Date> tims=new ArrayList(); 
 | 
        Date begin= DateUtil.stringToDate(beginTime,DateUtil.YEAR); 
 | 
        Date end= DateUtil.stringToDate(endTime,DateUtil.YEAR); 
 | 
        tims.add(begin); 
 | 
        while(DateUtil.isAffterDate(begin,end)){ 
 | 
  
 | 
            begin=DateUtil.getDateAfterYear(begin,1); 
 | 
            tims.add(begin); 
 | 
        } 
 | 
  
 | 
        begin=DateUtil.getDateAfterYear(begin,1); 
 | 
        tims.add(begin); 
 | 
        return tims; 
 | 
    } 
 | 
  
 | 
  
 | 
    private static List<Date> getTimeSpaceByMonth(String beginTime, String endTime){ 
 | 
        List<Date> tims=new ArrayList(); 
 | 
        Date begin= DateUtil.stringToDate(beginTime,DateUtil.MONTH); 
 | 
        Date end= DateUtil.stringToDate(endTime,DateUtil.MONTH); 
 | 
        tims.add(begin); 
 | 
        while(DateUtil.isAffterDate(begin,end)){ 
 | 
  
 | 
            begin=DateUtil.getDateAfterMonth(begin,1); 
 | 
            tims.add(begin); 
 | 
        } 
 | 
        begin=DateUtil.getDateAfterMonth(begin,1); 
 | 
        tims.add(begin); 
 | 
        return tims; 
 | 
    } 
 | 
  
 | 
  
 | 
    private static List<Date> getTimeSpaceByDay(String beginTime, String endTime){ 
 | 
        List<Date> tims=new ArrayList(); 
 | 
        Date begin= DateUtil.stringToDate(beginTime,DateUtil.DATE_FORMAT_DD); 
 | 
        Date end= DateUtil.stringToDate(endTime,DateUtil.DATE_FORMAT_DD); 
 | 
        tims.add(begin); 
 | 
        while(DateUtil.isAffterDate(begin,end)){ 
 | 
            begin=DateUtil.getDateAfter(begin,1); 
 | 
            tims.add(begin); 
 | 
        } 
 | 
        begin=DateUtil.getDateAfter(begin,1); 
 | 
        tims.add(begin); 
 | 
        return tims; 
 | 
    } 
 | 
  
 | 
  
 | 
  
 | 
  
 | 
    private static List<Date> getTimeSpaceByHours(String beginTime, String endTime){ 
 | 
         List<Date> tims=new ArrayList(); 
 | 
         Date begin= DateUtil.stringToDate(beginTime,DateUtil.DATE_FORMAT_HH); 
 | 
         Date end= DateUtil.stringToDate(endTime,DateUtil.DATE_FORMAT_HH); 
 | 
         tims.add(begin); 
 | 
         while(DateUtil.isAffterDate(begin,end)){ 
 | 
             begin=DateUtil.getDateAfterHours(begin,1); 
 | 
             tims.add(begin); 
 | 
         } 
 | 
        begin=DateUtil.getDateAfterHours(begin,1); 
 | 
        tims.add(begin); 
 | 
         return tims; 
 | 
    } 
 | 
  
 | 
    public static void main(String[] args) { 
 | 
        List<Date> tims= getTimeSpaceByYear("2014","2019"); 
 | 
        for (Date time:  tims) { 
 | 
            System.out.println(time.toLocaleString()); 
 | 
        } 
 | 
    } 
 | 
} 
 |