jinpengyong
2020-10-27 d7ee12cb208473741f79b64505adccd0653e4654
vue页面增加误差率参数,沧州剔除非本公司设备显示,报表接口更新
4 files modified
138 ■■■■■ changed files
src/main/java/com/moral/controller/ScreenController.java 28 ●●●●● patch | view | raw | blame | history
src/main/java/com/moral/service/HistoryMinutelyService.java 1 ●●●● patch | view | raw | blame | history
src/main/java/com/moral/service/impl/HistoryMinutelyServiceImpl.java 93 ●●●●● patch | view | raw | blame | history
src/main/java/com/moral/service/impl/WeatherServiceImpl.java 16 ●●●●● patch | view | raw | blame | history
src/main/java/com/moral/controller/ScreenController.java
@@ -1060,7 +1060,34 @@
    public ResultBean<List<MonitorPoint>> getMonitorPointsAndDevicesByRegion(HttpServletRequest request)
            throws Exception {
        Map<String, Object> parameters = WebUtils.getParametersStartingWith(request, null);
        String regionCode = parameters.get("regionCode").toString();
        List<MonitorPoint> monitorPoints = monitorPointService.getMonitorPointsAndDevicesByRegion(parameters);
        //剔除沧州非本公司设备
        if (regionCode.startsWith("1309")) {
            List<Integer> orgIds = new ArrayList<>();
            Collections.addAll(orgIds, 60, 65, 159, 165, 166);
            Iterator<MonitorPoint> iter = monitorPoints.iterator();
            while (iter.hasNext()) {
                MonitorPoint next = iter.next();
                Integer mpId = next.getId();
                Integer orgId = next.getOrganizationId();
                if (!orgIds.contains(orgId)) {
                    iter.remove();
                } else {
                    if (orgId == 60) {
                        if (mpId != 56) {
                            iter.remove();
                        }
                    } else if (orgId == 65) {
                        if (mpId != 83 && mpId != 84) {
                            iter.remove();
                        }
                    }
                }
            }
        }
        //给每一个monitorPoint下的设备通过device.getName()进行排序
        for (MonitorPoint monitorPoint : monitorPoints) {
            List<Device> deviceList = monitorPoint.getDevices();
@@ -2520,7 +2547,6 @@
            @ApiImplicitParam(name = "endTime", value = "结束时间(格式:2020-08-04)", required = false, paramType = "query", dataType = "String")})
    public ResultBean<List<Map<String, Object>>> getAllDeviceDataToExcel(HttpServletRequest request) throws Exception {
        Map<String, Object> parameters = WebUtils.getParametersStartingWith(request, null);
        ParameterUtils.getTimeType4Time(parameters);
        List<Map<String, Object>> list = historyMinutelyService.getAllDeviceDataToExcel(parameters);
        return new ResultBean<List<Map<String, Object>>>(list);
    }
src/main/java/com/moral/service/HistoryMinutelyService.java
@@ -38,7 +38,6 @@
    List<Map<String, Object>> getMultiDeviceSensorData(Map<String, Object> parameters) throws Exception;
    List<Map<String, Object>> getAllDeviceDataToExcel(Map<String, Object> parameters) throws Exception;
}
src/main/java/com/moral/service/impl/HistoryMinutelyServiceImpl.java
@@ -1001,6 +1001,8 @@
    @Override
    public List<Map<String, Object>> getAllDeviceDataToExcel(Map<String, Object> parameters) throws Exception {
        Calendar cal = Calendar.getInstance();
        int length = ((String) parameters.get("startTime")).split("-").length;
        String time = parameters.remove("startTime").toString();
        String timeb;
        if (parameters.get("endTime") == null) {
@@ -1008,65 +1010,44 @@
        } else {
            timeb = parameters.remove("endTime").toString();
        }
        String dateFormat = "";
        String typeFormat = "";
        String timeUnits = "daily";
        int i = 0;
        if (length == 1) {
            dateFormat = "yyyy";
            typeFormat = "%Y";
            i = Calendar.YEAR;
        } else if (length == 2) {
            dateFormat = "yyyy-MM";
            typeFormat = "%Y-%m";
            i = Calendar.MONTH;
        } else if (length == 3) {
            dateFormat = "yyyy-MM-dd";
            typeFormat = "%Y-%m-%d";
            i = Calendar.DAY_OF_MONTH;
        } else if (length == 4) {
            dateFormat = "yyyy-MM-dd HH";
            typeFormat = "%Y-%m-%d %H";
            timeUnits = "hourly";
            i = Calendar.HOUR_OF_DAY;
            time = time.substring(0, 10) + " " + time.substring(11, 13);
            timeb = timeb.substring(0, 10) + " " + timeb.substring(11, 13);
        }
        parameters.put("time", time);
        parameters.put("timeb", timeb);
        Calendar cal = Calendar.getInstance();
        int length = time.length();
        String type = "";
        if (length == 10) {
            type = "day";
        } else if (length == 7) {
            type = "month";
        } else if (length == 4) {
            type = "year";
        } else if (length == 13) {
            type = "hour";
        }
        parameters.put("type", type);
        String[] endTimes = timeb.split("-");
        String dateFormat = "";
        String beginTime = "";
        String endTime = "";
        Integer year = Integer.valueOf(endTimes[0]);
        int i = 0;
        if (type.equals("year")) {
            dateFormat = "yyyy-MM";
            beginTime = time + "-01";
            timeb = Integer.valueOf(timeb) + 1 + "";
            endTime = timeb + "-01";
            i = Calendar.MONTH;
        } else if (type.equals("month")) {
            dateFormat = "yyyy-MM-dd";
            beginTime = time + "-01";
            i = Calendar.DAY_OF_MONTH;
            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM");
            cal.setTime(sdf.parse(timeb));
            cal.add(Calendar.MONTH, 1);
            timeb = sdf.format(cal.getTime());
            endTime = timeb + "-01";
        } else if (type.equals("day")) {
            dateFormat = "yyyy-MM-dd HH";
            beginTime = time + " 00";
            i = Calendar.HOUR_OF_DAY;
            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
            cal.setTime(sdf.parse(timeb));
            cal.add(Calendar.DAY_OF_MONTH, 1);
            timeb = sdf.format(cal.getTime());
            endTime = timeb + " 00";
        } else if (type.equals("hour")) {
            dateFormat = "yyyy-MM-dd HH:mm";
            beginTime = time + ":00:00";
            i = Calendar.MINUTE;
            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH");
            cal.setTime(sdf.parse(timeb));
            cal.add(Calendar.HOUR_OF_DAY, 1);
            timeb = sdf.format(cal.getTime());
            endTime = timeb + ":00:00";
        }
        SimpleDateFormat sdf = new SimpleDateFormat(dateFormat);
        cal.setTime(sdf.parse(beginTime));
        cal.setTime(sdf.parse(timeb));
        cal.add(i, 1);
        Date endTime = cal.getTime();
        parameters.put("format", dateFormat);
        parameters.put("typeFormat", typeFormat);
        parameters.put("timeUnits", timeUnits);
        parameters.put("field", i);
        cal.setTime(sdf.parse(time));
        List<String> times = new ArrayList<>();
        for (long d = cal.getTimeInMillis(); d < sdf.parse(endTime).getTime(); cal.set(i, cal.get(i) + 1), d = cal.getTimeInMillis()) {
        for (long d = cal.getTimeInMillis(); d < endTime.getTime(); cal.set(i, cal.get(i) + 1), d = cal.getTimeInMillis()) {
            String format = sdf.format(d);
            times.add(format);
        }
@@ -1074,7 +1055,7 @@
        List<String> keys = Arrays.asList(sensorKeys);
        parameters.put("sensors", keys);
        parameters.put("sensorKeys", keys);
        parameters.put("timeb", timeb);
        parameters.put("timeb", sdf.format(endTime));
        int mpId = Integer.valueOf(parameters.get("monitorPoint").toString());
        String monitorPointName = monitorPointMapper.getMonitorName(mpId);
        List<Map<String, Object>> devices = deviceMapper.getDevicesByMpId(mpId);
src/main/java/com/moral/service/impl/WeatherServiceImpl.java
@@ -569,6 +569,7 @@
        //实测天气
        int x = 0;
        parameters.put("cityCode", code);
        List<Map<String, Object>> realList = realWeatherMapper.getRealWeather(parameters);
        if (realList.size() == 0) {
            //1-23点数据必然是同一个月份,最后一个可能是下一个月
@@ -670,7 +671,7 @@
            listMap.put("city", name);
            String time1 = listMap.get("time").toString();
            for (Map<String, Object> aqiMap : realAqilist) {
                if(time1.equals(aqiMap.get("time"))){
                if (time1.equals(aqiMap.get("time"))) {
                    listMap.putAll(aqiMap);
                }
            }
@@ -841,6 +842,19 @@
                map.put("river", geographyMap.get("river").toString());
            }
        }
        for (int i = 0; i < resultList.size(); i = i + 2) {
            Map<String, Object> foreMap = resultList.get(i);
            Map<String, Object> realMap = resultList.get(i + 1);
            if (foreMap.get("O3C") != null && realMap.get("O3C") != null) {
                Double foreO3 = Double.valueOf(foreMap.get("O3C").toString());
                Double realO3 = Double.valueOf(realMap.get("O3C").toString());
                int round = (int) Math.round((realO3 - foreO3) / realO3 * 100);
                if (round < 0) {
                    round = -round;
                }
                realMap.put("errorRate", round + "%");
            }
        }
        return resultList;
    }
}