lizijie
2019-08-08 a6ff89dd8eed9ea4e6162ff5491d4583e4ef621a
AQI计算
5 files modified
38 ■■■■■ changed files
src/main/java/com/moral/controller/ScreenController.java 5 ●●●● patch | view | raw | blame | history
src/main/java/com/moral/mapper/HistoryMapper.java 2 ●●●●● patch | view | raw | blame | history
src/main/java/com/moral/service/HistoryService.java 2 ●●●●● patch | view | raw | blame | history
src/main/java/com/moral/service/impl/HistoryServiceImpl.java 22 ●●●●● patch | view | raw | blame | history
src/main/resources/mapper/HistoryMapper.xml 7 ●●●●● patch | view | raw | blame | history
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);
    }
    /**
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);
}
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);
}
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;
    }
}
src/main/resources/mapper/HistoryMapper.xml
@@ -162,4 +162,11 @@
            AND h.time &lt; #{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>