lizijie
2019-06-22 15c4ec98dace455967335a27d0f0efdcdfc61f29
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;
@@ -44,6 +45,7 @@
import com.moral.entity.charts.DataCondition;
import com.moral.entity.charts.LineChartCriteria;
import com.moral.entity.charts.TimePeriod;
import com.moral.mapper.AlarmDailyMapper;
import com.moral.mapper.AlarmMapper;
import com.moral.mapper.DeviceMapper;
import com.moral.mapper.HistoryMinutelyMapper;
@@ -64,11 +66,11 @@
   private SensorMapper sensorMapper;
   @Resource
   private AlarmMapper alarmMapper;
   private AlarmDailyMapper alarmDailyMapper;
   @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));
@@ -138,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) {
@@ -185,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>();
@@ -208,8 +212,11 @@
                  Map<String, BigDecimal> mapData = (Map<String, BigDecimal>) obj;
                  BigDecimal sum = mapData.remove("sum");
                  for (Entry<String, BigDecimal> entry : mapData.entrySet()) {
                     sortMap.put(entry.getKey() + "-" + index, new BigDecimal(100).multiply(entry.getValue())
                           .divide(sum, 2, BigDecimal.ROUND_HALF_UP).doubleValue());
                     if (!"name".equals(entry.getKey())) {
                        sortMap.put(entry.getKey() + "-" + index, new BigDecimal(100).multiply(entry.getValue())
                              .divide(sum, 2, BigDecimal.ROUND_HALF_UP).doubleValue());
                     }
                  }
               }
               break;
@@ -226,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());
         }
         
      });
@@ -287,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, alarmMapper.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;
   }
@@ -295,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");
@@ -348,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;
      // 每月一日的数据取上月的数据
@@ -362,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)) {