From a6ff89dd8eed9ea4e6162ff5491d4583e4ef621a Mon Sep 17 00:00:00 2001 From: lizijie <lzjiiie@163.com> Date: Thu, 08 Aug 2019 14:34:17 +0800 Subject: [PATCH] AQI计算 --- src/main/java/com/moral/service/HistoryService.java | 2 ++ src/main/java/com/moral/service/impl/HistoryServiceImpl.java | 22 ++++++++++++++++++++++ src/main/java/com/moral/mapper/HistoryMapper.java | 2 ++ src/main/resources/mapper/HistoryMapper.xml | 7 +++++++ src/main/java/com/moral/controller/ScreenController.java | 5 ++++- 5 files changed, 37 insertions(+), 1 deletions(-) diff --git a/src/main/java/com/moral/controller/ScreenController.java b/src/main/java/com/moral/controller/ScreenController.java index 54c82d9..662378a 100644 --- a/src/main/java/com/moral/controller/ScreenController.java +++ b/src/main/java/com/moral/controller/ScreenController.java @@ -365,9 +365,12 @@ @GetMapping("hour-aqi") @ApiOperation(value = "���������������AQI", notes = "���������������AQI") + @ApiImplicitParams(value = { + @ApiImplicitParam(name = "mac", value = "������mac������", required = true, paramType = "query", dataType = "String") + }) public Map<String, Object> getHourAQIByDevice(HttpServletRequest request) { Map<String, Object> parameters = getParametersStartingWith(request, null); - return historyMinutelyService.getHourAQIByDevice(parameters); + return historyService.gitHourlyAQIByMacAndTimeslot(parameters); } /** diff --git a/src/main/java/com/moral/mapper/HistoryMapper.java b/src/main/java/com/moral/mapper/HistoryMapper.java index 134ed98..6fd31b0 100644 --- a/src/main/java/com/moral/mapper/HistoryMapper.java +++ b/src/main/java/com/moral/mapper/HistoryMapper.java @@ -19,5 +19,7 @@ List<Map<String, Object>> getValueByMacAndSize(Map<String, Object> parameters); Map<String, Object> getActualDataByRegion(Map<String, Object> parameters); + + Map<String, Object> getAVGValueByMacAndTimeslot(@Param("mac")String mac, @Param("starttime")String starttime, @Param("endtime")String endtime); } \ No newline at end of file diff --git a/src/main/java/com/moral/service/HistoryService.java b/src/main/java/com/moral/service/HistoryService.java index 822cbc2..fafef75 100644 --- a/src/main/java/com/moral/service/HistoryService.java +++ b/src/main/java/com/moral/service/HistoryService.java @@ -22,5 +22,7 @@ Map<String, Object> getActualDataByRegion(Map<String, Object> parameters); Map<String, Object> getSensorUnitByDeviceMac(Map<String, Object> parameters); + + Map<String, Object> gitHourlyAQIByMacAndTimeslot(Map<String, Object> parameters); } diff --git a/src/main/java/com/moral/service/impl/HistoryServiceImpl.java b/src/main/java/com/moral/service/impl/HistoryServiceImpl.java index f8c8a05..da7fdbd 100644 --- a/src/main/java/com/moral/service/impl/HistoryServiceImpl.java +++ b/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; @@ -339,4 +340,25 @@ 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); + return map; + } } diff --git a/src/main/resources/mapper/HistoryMapper.xml b/src/main/resources/mapper/HistoryMapper.xml index 8cc81ab..0747947 100644 --- a/src/main/resources/mapper/HistoryMapper.xml +++ b/src/main/resources/mapper/HistoryMapper.xml @@ -162,4 +162,11 @@ AND h.time < #{end} </where> </select> + + <select id="getAVGValueByMacAndTimeslot" resultType="java.util.Map"> + SELECT AVG(JSON_EXTRACT(value,'$.e1[0]')) e1,AVG(JSON_EXTRACT(value,'$.e2[0]')) e2,AVG(JSON_EXTRACT(value,'$.e10[0]')) e10,AVG(JSON_EXTRACT(value,'$.e11[0]')) e11,AVG(JSON_EXTRACT(value,'$.e16[0]')) e16,AVG(JSON_EXTRACT(value,'$.e15[0]')) e15 + FROM history + WHERE mac = #{mac} + AND time BETWEEN #{starttime} AND #{endtime} + </select> </mapper> \ No newline at end of file -- Gitblit v1.8.0