ZhuDongming
2019-08-15 1d25854b8dfdebe7b4d5153e932c0e74ed5f7453
src/main/java/com/moral/service/impl/HistoryServiceImpl.java
@@ -9,6 +9,7 @@
import java.time.temporal.TemporalAdjusters;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Calendar;
import java.util.Collections;
import java.util.Comparator;
import java.util.Date;
@@ -37,6 +38,7 @@
import com.moral.service.AccountService;
import com.moral.service.HistoryService;
import com.moral.service.ProfessionService;
import com.moral.util.AQICalculation;
@Service
public class HistoryServiceImpl implements HistoryService {
@@ -285,7 +287,7 @@
         if (sensorUnits.containsKey(sensorKey)) {
            Map<String, Object> sensorUnit  = (Map<String, Object>) sensorUnits.get(sensorKey);
            String rules = sensorUnit.get("rules").toString();
            rules = rules.replace("d", "").replace("{0}", "sensorKeyValue");
            rules = rules.replace("d", "").replace("{0}", "value");
            Expression expression = AviatorEvaluator.compile(rules);
            Map<String, Object> env = new HashMap<String, Object>();
            env.put("value", Double.valueOf(sensorKeyValue.toString()));
@@ -339,4 +341,39 @@
      return resultMap;
      
   }
   @Override
   public Map<String, Object> gitHourlyAQIByMacAndTimeslot(Map<String, Object> parameters) {
      String mac = parameters.get("mac").toString();
      //获取日期
      LocalDate localDate = LocalDate.now();
       Calendar c = Calendar.getInstance();//可以对每个时间域单独修改
       int endHour = c.get(Calendar.HOUR_OF_DAY);
       String endTime = localDate+" "+endHour+":00:00";
       String startTime;
       if(endHour == 0) {
          LocalDate startDate = localDate.minusDays(1);
          startTime = startDate+" "+"23:00:00";
       }else {
         int startHour = endHour-1;
         startTime = localDate+" "+startHour+":00:00";
      }
      Map<String, Object> map = historyMapper.getAVGValueByMacAndTimeslot(mac, startTime, endTime);
      System.out.println(map);
      Map<String, Object> returnMap = new HashMap<>();
      if (map.isEmpty()) {
         returnMap.put("AQI", "N/V");
      } else {
         Map<String, Double> AQIMap = new HashMap<>();
         for (Map.Entry<String, Object> entry : map.entrySet()) {
            String key = entry.getKey();
            Double value = Double.parseDouble(entry.getValue().toString());
            AQIMap.put(key, value);
           }
         returnMap = AQICalculation.hourlyAQI(AQIMap);
      }
      return returnMap;
   }
}