lizijie
2019-07-10 e97c393e23f4c015a44b5fef5fd26ae288bc6c0f
src/main/java/com/moral/service/impl/HistoryMinutelyServiceImpl.java
@@ -37,6 +37,7 @@
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.TypeReference;
import com.moral.common.util.CalculateUtils;
import com.moral.common.util.ParameterUtils;
import com.moral.common.util.ReportTimeFormat;
import com.moral.common.util.ResourceUtil;
import com.moral.common.util.ValidateUtil;
@@ -69,7 +70,7 @@
   @Override
   public Map<String, Object> getDayAQIByDevice(Map<String, Object> parameters) {
      ValidateUtil.notNull(parameters.get("mac"), "param.is.null");
      //ValidateUtil.notNull(parameters.get("mac"), "param.is.null");
      LocalDate localDate = LocalDate.now();
      // 昨日00:00:00
      parameters.put("start", localDate.minusDays(1));
@@ -139,7 +140,8 @@
      List<Map<String, Object>> list = JSON.parseObject((String)parameters.remove("items"), new TypeReference<List<Map<String, Object>>>() {});
      
      String type = (String) parameters.get("type");
      parameters.putAll(getElementByType(type));
      // parameters.putAll(getElementByType(type));
      ParameterUtils.getElementByType(parameters);
      Integer timeLength = Integer.valueOf(parameters.remove("timeLength").toString());
      if ("month".equals(type)) {
         for (Map<String, Object> map : list) {
@@ -186,7 +188,8 @@
      Set<String> sensors = new TreeSet<String>(new Comparator<String>() {
         @Override
         public int compare(String o1, String o2) {
            return Integer.compare(Integer.valueOf(o1.split("-")[0].replace("e", "")), Integer.valueOf(o2.split("-")[0].replace("e", "")));
            return o1.split("-")[0].compareTo(o2.split("-")[0]);
            //return Integer.compare(Integer.valueOf(o1.split("-")[0].replace("e", "")), Integer.valueOf(o2.split("-")[0].replace("e", "")));
         }
      });
      Map<String, Double> sortMap = new HashMap<String, Double>();
@@ -230,14 +233,20 @@
            if (o2.getValue().compareTo(o1.getValue()) == 0) {
               String[] key1 = o1.getKey().split("-");
               String[] key2 = o2.getKey().split("-");
               String sensor1  = key1[0].replace("e", "");
               String sensor2  = key2[0].replace("e", "");
               if (Integer.valueOf(sensor1).compareTo(Integer.valueOf(sensor2)) == 0) {
//               String sensor1  = key1[0].replace("e", "");
//               String sensor2  = key2[0].replace("e", "");
//               if (Integer.valueOf(sensor1).compareTo(Integer.valueOf(sensor2)) == 0) {
//                  return Integer.compare(Integer.valueOf(key1[1]), Integer.valueOf(key2[1]));
//               }
//               return Integer.valueOf(sensor1).compareTo(Integer.valueOf(sensor2));
               if (key1[0].compareTo(key2[0]) == 0) {
                  return Integer.compare(Integer.valueOf(key1[1]), Integer.valueOf(key2[1]));
               } else {
                  return key1[0].compareTo(key2[0]);
               }
               return Integer.valueOf(sensor1).compareTo(Integer.valueOf(sensor2));
            } else {
               return o2.getValue().compareTo(o1.getValue());
            }
            return o2.getValue().compareTo(o1.getValue());
         }
         
      });
@@ -291,7 +300,10 @@
      Object type = parameters.get("type");
      if ("year".equals(type) || "month".equals(type)) {
         parameters.put("sensorKeys", Arrays.asList("e1", "e2", "e10", "e11", "e15", "e16"));
         resultMap.put("alarmData" + part, alarmDailyMapper.getAlarmData(parameters).get(0));
         List<Map<String, Object>> alarmData = alarmDailyMapper.getAlarmData(parameters);
         if (!ObjectUtils.isEmpty(alarmData)) {
            resultMap.put("alarmData" + part, alarmDailyMapper.getAlarmData(parameters).get(0));
         }
      }
      return resultMap;
   }
@@ -299,15 +311,18 @@
   @Override
   public List<Map<String, Object>> getMonitorPointOrDeviceAvgData(Map<String, Object> parameters) throws Exception {
      convertQueryParam(parameters);
      if (!ObjectUtils.isEmpty(parameters.get("compensate"))) {
         parameters.put("timeUnits", "10min");
      }
      return historyMinutelyMapper.getMonitorPointOrDeviceAvgData(parameters);
   }
   @Override
   public void convertQueryParam(Map<String, Object> parameters) throws ParseException {
      String type = (String) parameters.get("type");
      if (!parameters.containsKey("field")) {
         parameters.putAll(getElementByType(type));
         // String type = (String) parameters.get("type");
         // parameters.putAll(getElementByType(type));
         ParameterUtils.getElementByType(parameters);
      }
      String time = (String) parameters.get("time");
      String format = (String) parameters.get("format");
@@ -352,8 +367,9 @@
   @Override
   public Map<String, Object> getMonthAverageBySensor(Map<String, Object> parameters) {
      ValidateUtil.notNull(parameters.get("mac"), "param.is.null");
      ValidateUtil.notNull(parameters.get("macKey"), "param.is.null");
      //ValidateUtil.notNull(parameters.get("mac"), "param.is.null");
      Object sensorKey = parameters.remove("macKey");
      ValidateUtil.notNull(sensorKey, "param.is.null");
      Map<String, Object> result = new HashMap<String, Object>();
      LocalDate end = LocalDate.now(),start;
      // 每月一日的数据取上月的数据
@@ -366,10 +382,7 @@
      }
      parameters.put("start", start);
      parameters.put("end", end);
      String sensorKey = (String) parameters.remove("macKey");
      List<String> sensorKeys = new ArrayList<String>();
      sensorKeys.add(sensorKey);
      parameters.put("sensorKeys", sensorKeys);
      parameters.put("sensorKeys", Arrays.asList(sensorKey));
      Map<String, Double> average = historyMinutelyMapper.getSersionAvgByDevice(parameters);
      if (isEmpty(average)) {