xufenglei
2018-03-13 d4f150414533b95324b2a1c8a81c11d92efb71ec
src/main/java/com/moral/service/impl/HistoryMinutelyServiceImpl.java
@@ -27,9 +27,16 @@
import java.util.concurrent.ExecutorCompletionService;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.stream.Collector;
import java.util.stream.Collectors;
import javax.annotation.Resource;
import com.moral.common.util.ReportTimeFormat;
import com.moral.entity.charts.DataCondition;
import com.moral.entity.charts.LineChartCriteria;
import com.moral.entity.charts.PairData;
import com.moral.entity.charts.TimePeriod;
import org.apache.commons.lang3.time.DateUtils;
import org.springframework.stereotype.Service;
import org.springframework.util.ObjectUtils;
@@ -435,4 +442,70 @@
      return result;
   }
   /**
    * 根据线性表单的条件规则,获取多条线性表单数据
    * @param lineChartCriteria
    * @return
    */
   @Override
   public List<List<PairData>> queryLineChartDateByCrieria(LineChartCriteria lineChartCriteria){
        String sensorKey = lineChartCriteria.getSensorKey();
        TimePeriod timePeriod = lineChartCriteria.getTimePeriod();
      List<DataCondition> dataConditionList = lineChartCriteria.getDataConditions();
      List<List<PairData>> list =  new ArrayList<>();
      dataConditionList.forEach(item -> {
         List<PairData> pairDataList =  queryOneLineChartDateByCrieria(sensorKey,timePeriod,item);
         list.add(pairDataList);
      });
      return  list;
   }
   /**
    * 根据线性表单的条件规则,获取一条线性表单数据
    * @param sensorKey
    * @param timePeriod
    * @param dataCondition
    * @return
    */
   public List<PairData> queryOneLineChartDateByCrieria(String sensorKey, TimePeriod timePeriod, DataCondition dataCondition){
      List<String> timeList = ReportTimeFormat.makeTimeList(timePeriod);
      List<PairData> lineChartDatas = historyMinutelyMapper.selectLineChartDateByCrieria(sensorKey,timePeriod,dataCondition);
      List<PairData> lineChartDatasWithEmpty = new ArrayList<>();
      int m = 0;
      int dataLength = lineChartDatas.size()-1;
      m = dataLength>-1?0:-1;
      if(m>-1){
         for(int n =0;n<timeList.size();n++){
            String time = timeList.get(n);
            if(m>-1){
               PairData pairData = lineChartDatas.get(m);
               String keyTime = pairData.getCategory();
               if(time.equals(keyTime)){
                  lineChartDatasWithEmpty.add(pairData);
                  m = m<dataLength ? m+1 : -1;
               }else{
                  lineChartDatasWithEmpty.add(generateEmptyData(time));
               }
            }else {
                   lineChartDatasWithEmpty.add(generateEmptyData(time));
            }
         }
      }else{
         fillEmptyDataToList(timeList,lineChartDatasWithEmpty);
      }
      return  lineChartDatasWithEmpty;
   }
   private PairData generateEmptyData(String time) {
      PairData pairData = new PairData();
      pairData.setCategory(time);
      pairData.setValue(null);
      return pairData;
   }
   private void fillEmptyDataToList(List<String> timeList,List<PairData> lineChartDatasWithEmpty){
        timeList.forEach( time ->{
         PairData pairData = generateEmptyData(time);
           lineChartDatasWithEmpty.add(pairData);
      });
   }
}