| | |
| | | @Resource |
| | | private DeviceAdjustValueTimingService deviceAdjustValueTimingService; |
| | | |
| | | @Resource |
| | | private PollutioSourcePointService pollutioSourcePointService; |
| | | |
| | | @Resource |
| | | private HistoryFiveMinutelyService historyFiveMinutelyService; |
| | | |
| | | /** |
| | | * Screen login. 大屏登录 |
| | | * |
| | |
| | | ParameterUtils.getTimeType4Time(parameters); |
| | | String time1 = (String) parameters.get("time"); |
| | | time1 = time1.replaceAll(" ", ""); |
| | | parameters.put("time",time1); |
| | | parameters.put("time", time1); |
| | | |
| | | String mac1 = (String) parameters.get("mac"); |
| | | List<Map<String, Object>> list = null; |
| | |
| | | parameters.put("sensors", Arrays.asList(sensorKey)); |
| | | // monitorPointService.isCompensateCalculation(parameters); |
| | | list = historyMinutelyService.getMonitorPointOrDeviceAvgData(parameters); |
| | | |
| | | |
| | | /* 0点的数据是昨天11点到今天0点的,界面显示1-24点的,所以不需要0点的数据,但需要单独查询24点的数据 |
| | | 因为改动以前24点的数据是23-24,现在24点的数据是第二天0点的数据, |
| | | */ |
| | | /*改动范围start-------------------------------------------------------------------------*/ |
| | | list.remove(0); |
| | | //if (list.size() == 23) { |
| | | SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); |
| | | SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy-MM-dd"); |
| | | //获取全格式时间yyyy-MM-dd HH:mm:ss |
| | | time1 = time1 + " 00:00:00"; |
| | | Date date = sdf.parse(time1); |
| | | date = DateUtil.rollDay(date, 1); |
| | | //将全格式时间截取 |
| | | String time2 = sdf2.format(date); |
| | | parameters.put("time", time2); |
| | | /*查询第二天0点的数据,以24点的形式存进集合中*/ |
| | | List<Map<String, Object>> nextDayList = historyMinutelyService.getMonitorPointOrDeviceAvgData(parameters); |
| | | if(!ObjectUtils.isEmpty(nextDayList)){ |
| | | time1=time1.replaceAll(" 00:00:00"," 24"); |
| | | Map<String, Object> datas = nextDayList.get(0); |
| | | datas.put("time",time1); |
| | | list.add(datas); |
| | | Iterator<Map<String, Object>> iterator = list.iterator(); |
| | | while (iterator.hasNext()) { |
| | | Map<String, Object> next = iterator.next(); |
| | | String hour = next.get("time").toString().substring(11, 13); |
| | | if ("00".equals(hour)) { |
| | | iterator.remove(); |
| | | } |
| | | //} |
| | | } |
| | | SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); |
| | | SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy-MM-dd"); |
| | | //获取全格式时间yyyy-MM-dd HH:mm:ss |
| | | time1 = time1 + " 00:00:00"; |
| | | Date date = sdf.parse(time1); |
| | | date = DateUtil.rollDay(date, 1); |
| | | //将全格式时间截取 |
| | | String time2 = sdf2.format(date); |
| | | parameters.put("time", time2); |
| | | /*查询第二天0点的数据,以24点的形式存进集合中*/ |
| | | List<Map<String, Object>> nextDayList = historyMinutelyService.getMonitorPointOrDeviceAvgData(parameters); |
| | | if (!ObjectUtils.isEmpty(nextDayList)) { |
| | | time1 = time1.replaceAll(" 00:00:00", " 24"); |
| | | for (Map<String, Object> map : nextDayList) { |
| | | String time = map.get("time").toString().substring(11, 13); |
| | | if("00".equals(time)){ |
| | | map.put("time", time1); |
| | | list.add(map); |
| | | } |
| | | } |
| | | } |
| | | /*改动范围end-------------------------------------------------------------------------*/ |
| | | |
| | | |
| | |
| | | DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); |
| | | LocalDateTime timeLocalDateTime = LocalDateTime.parse(time, dateTimeFormatter); |
| | | int month = timeLocalDateTime.getMonth().getValue(); |
| | | parameters.put("yearAndDay",yearAndDay); |
| | | parameters.put("yearAndDay", yearAndDay); |
| | | Point dirPoint = historyHourlyService.getDirPoint(parameters); |
| | | Map<String, Object> getPollutionSourceData = historyHourlyService.getPollutionSourceDataByHour(parameters); |
| | | if (MapUtils.isEmpty(getPollutionSourceData)) { |
| | |
| | | //System.out.println(paramsJson); |
| | | model.addObject("carTrajectoryParams", paramsJson); |
| | | model.setViewName("cartrajectory"); |
| | | return model; |
| | | } else { |
| | | StringBuilder msg = new StringBuilder(); |
| | | msg.append(" param[0] mac:"); |
| | | msg.append(mac); |
| | | log.warn(msg); |
| | | model.setViewName("403"); |
| | | return model; |
| | | } |
| | | } |
| | | |
| | | @GetMapping("/carTrajectoryNew") |
| | | @ApiOperation(value = "显示走航车轨迹", notes = "显示走航车轨迹") |
| | | @ApiImplicitParams(value = { |
| | | @ApiImplicitParam(name = "mac", value = "设备mac(格式:p5dnd7a0392081)", required = true, paramType = "query", dataType = "String"), |
| | | @ApiImplicitParam(name = "startTime", value = "开始时间(格式:2020-03-19-14)", required = true, paramType = "query", dataType = "String"), |
| | | @ApiImplicitParam(name = "endTime", value = "结束时间(格式:2020-03-19-17)", required = true, paramType = "query", dataType = "String") |
| | | }) |
| | | public ModelAndView carTrajectoryNew(ModelAndView model, HttpServletRequest request) throws Exception { |
| | | Map<String, Object> parameters = WebUtils.getParametersStartingWith(request, null); |
| | | String st = parameters.get("startTime").toString(); |
| | | String startYearAndDay = st.substring(0, st.lastIndexOf("-")); |
| | | String startHour = st.substring(st.lastIndexOf("-") + 1); |
| | | String startTime = startYearAndDay + " " + startHour + ":00:00"; |
| | | String et = parameters.get("endTime").toString(); |
| | | String endYearAndDay = et.substring(0, st.lastIndexOf("-")); |
| | | String endHour = et.substring(et.lastIndexOf("-") + 1); |
| | | String endTime = endYearAndDay + " " + endHour + ":00:00"; |
| | | parameters.put("startTime", startTime); |
| | | parameters.put("endTime", endTime); |
| | | String mac = parameters.get("mac").toString(); |
| | | if (mac != null && mac.length() != 0) { |
| | | List<List<Map<String, Object>>> sensorData = historyService.getCarSensorData(parameters); |
| | | Map<String, String> sensorsMap = sensorService.getSensorsMap(parameters); |
| | | List<Map<String, Object>> sensorList = new ArrayList<>(); |
| | | if (sensorData.size() == 3) { |
| | | sensorList = sensorData.get(0); |
| | | } |
| | | JSONObject params = new JSONObject(); |
| | | params.put("sensorInfo", sensorList); |
| | | params.put("sensorsMap", sensorsMap); |
| | | String paramsJson = params.toJSONString(); |
| | | model.addObject("carTrajectoryParams", paramsJson); |
| | | model.setViewName("cartrajectoryNew"); |
| | | return model; |
| | | } else { |
| | | StringBuilder msg = new StringBuilder(); |
| | |
| | | @ApiImplicitParam(name = "time", value = "时间(格式:2020-03-19)", required = true, paramType = "query", dataType = "String")}) |
| | | public ResultBean<List<Map<String, Object>>> getWeatherNextDayDataByRegion(HttpServletRequest request) throws Exception { |
| | | Map<String, Object> parameters = getParametersStartingWith(request, null); |
| | | List<String> sensorKeys=new ArrayList<>(); |
| | | List<String> sensorKeys = new ArrayList<>(); |
| | | sensorKeys.add("e15"); |
| | | parameters.put("sensorKeys",sensorKeys); |
| | | parameters.put("sensorKeys", sensorKeys); |
| | | List<Map<String, Object>> resultList = weatherService.getForecastAndReal(parameters); |
| | | return new ResultBean<List<Map<String, Object>>>(resultList); |
| | | } |
| | |
| | | @ApiImplicitParam(name = "time", value = "时间(格式:2020-03-19)", required = true, paramType = "query", dataType = "String")}) |
| | | public ResultBean<List<Map<String, Object>>> getForecastAndRealPM(HttpServletRequest request) throws Exception { |
| | | Map<String, Object> parameters = getParametersStartingWith(request, null); |
| | | List<String> sensorKeys=new ArrayList<>(); |
| | | List<String> sensorKeys = new ArrayList<>(); |
| | | sensorKeys.add("e1"); |
| | | sensorKeys.add("e2"); |
| | | parameters.put("sensorKeys",sensorKeys); |
| | | parameters.put("sensorKeys", sensorKeys); |
| | | List<Map<String, Object>> resultList = weatherService.getForecastAndReal(parameters); |
| | | return new ResultBean<List<Map<String, Object>>>(resultList); |
| | | } |
| | |
| | | }*/ |
| | | |
| | | @PostMapping("insertAdjustValue") |
| | | public int insertAdjustValue(@RequestBody HashMap map){ |
| | | try{ |
| | | public int insertAdjustValue(@RequestBody HashMap map) { |
| | | try { |
| | | int device_id = Integer.parseInt(map.get("id").toString()); |
| | | String time = map.get("time").toString(); |
| | | String[] arr = time.split(":"); |
| | | int seconds = Integer.parseInt(arr[0])*3600+Integer.parseInt(arr[1])*60+Integer.parseInt(arr[2]); |
| | | int seconds = Integer.parseInt(arr[0]) * 3600 + Integer.parseInt(arr[1]) * 60 + Integer.parseInt(arr[2]); |
| | | //String t = URLEncoder.encode(参数,"UTF-8") |
| | | List list = (List) map.get("dataArray"); |
| | | String val=""; |
| | | for (int i = 0; i <list.size() ; i++) { |
| | | if (i==0){ |
| | | val=val+list.get(i); |
| | | }else { |
| | | val=val+","+list.get(i); |
| | | String val = ""; |
| | | for (int i = 0; i < list.size(); i++) { |
| | | if (i == 0) { |
| | | val = val + list.get(i); |
| | | } else { |
| | | val = val + "," + list.get(i); |
| | | } |
| | | } |
| | | String value = "{"+val+"}"; |
| | | deviceAdjustValueTimingService.insertData(device_id,seconds,value); |
| | | String value = "{" + val + "}"; |
| | | deviceAdjustValueTimingService.insertData(device_id, seconds, value); |
| | | return 1; |
| | | }catch (Exception e){ |
| | | } catch (Exception e) { |
| | | log.warn(e); |
| | | } |
| | | return 0; |
| | |
| | | |
| | | @RequestMapping("/biaozhun") |
| | | @ResponseBody |
| | | public List<Device> queryDevice(String macOrName){ |
| | | public List<Device> queryDevice(String macOrName) { |
| | | List<Device> deviceList = new ArrayList<>(); |
| | | if (!macOrName.equals("")){ |
| | | deviceList= deviceService.getDevice(macOrName); |
| | | if (!macOrName.equals("")) { |
| | | deviceList = deviceService.getDevice(macOrName); |
| | | } |
| | | return deviceList; |
| | | } |
| | | |
| | | @RequestMapping("/getBiaoZhun") |
| | | @ResponseBody |
| | | public List<DeviceAdjustValueTiming> getBiaoZhun(String id){ |
| | | public List<DeviceAdjustValueTiming> getBiaoZhun(String id) { |
| | | List<DeviceAdjustValueTiming> dataByDeviceid = deviceAdjustValueTimingService.getDataByDeviceid(Integer.parseInt(id)); |
| | | for (DeviceAdjustValueTiming deviceAdjustValueTiming : dataByDeviceid) { |
| | | int seconds = Integer.parseInt(deviceAdjustValueTiming.getSeconds()); |
| | | String hour = String.valueOf(seconds/3600); |
| | | int millAndSeconds = seconds%3600; |
| | | String mill = String.valueOf(millAndSeconds/60); |
| | | String second = String.valueOf(millAndSeconds%60); |
| | | if (hour.length()<2){ |
| | | hour="0"+hour; |
| | | String hour = String.valueOf(seconds / 3600); |
| | | int millAndSeconds = seconds % 3600; |
| | | String mill = String.valueOf(millAndSeconds / 60); |
| | | String second = String.valueOf(millAndSeconds % 60); |
| | | if (hour.length() < 2) { |
| | | hour = "0" + hour; |
| | | } |
| | | if (mill.length()<2){ |
| | | mill="0"+mill; |
| | | if (mill.length() < 2) { |
| | | mill = "0" + mill; |
| | | } |
| | | if (second.length()<2){ |
| | | second="0"+second; |
| | | if (second.length() < 2) { |
| | | second = "0" + second; |
| | | } |
| | | String time = hour+":"+mill+":"+second; |
| | | String time = hour + ":" + mill + ":" + second; |
| | | Map<String, String> value = deviceAdjustValueTiming.getValue(); |
| | | Collection<String> values = value.values(); |
| | | deviceAdjustValueTiming.setSeconds(time); |
| | |
| | | |
| | | @RequestMapping("/getSensor") |
| | | @ResponseBody |
| | | public List<Map<String, Object>> getSensor(String id){ |
| | | public List<Map<String, Object>> getSensor(String id) { |
| | | List<Map<String, Object>> allSensors = sensorService.getSensorByDeviceId(id); |
| | | return allSensors; |
| | | } |
| | | |
| | | @RequestMapping("/deleteBiaoZhun") |
| | | @ResponseBody |
| | | public int deleteBiaoZhun(String id){ |
| | | int i= deviceAdjustValueTimingService.delete(id); |
| | | public int deleteBiaoZhun(String id) { |
| | | int i = deviceAdjustValueTimingService.delete(id); |
| | | return i; |
| | | } |
| | | |
| | |
| | | @ApiImplicitParams(value = { |
| | | @ApiImplicitParam(name = "monitorPointIds", value = "多个monitorid", required = true, paramType = "query", dataType = "String"), |
| | | @ApiImplicitParam(name = "time", value = "时间(格式:2020-03-19)", required = true, paramType = "query", dataType = "String")}) |
| | | public ResultBean<List<Map<String,Object>>> monitorAVGData(HttpServletRequest request) throws Exception { |
| | | public ResultBean<List<Map<String, Object>>> monitorAVGData(HttpServletRequest request) throws Exception { |
| | | Map<String, Object> parameters = getParametersStartingWith(request, null); |
| | | String monitorPointIds = (String) parameters.get("monitorPointIds"); |
| | | String time = (String) parameters.get("time"); |
| | | time = time+" 00:00:00"; |
| | | time = time + " 00:00:00"; |
| | | SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd mm:HH:ss");//注意月份是MM |
| | | Date date = simpleDateFormat.parse(time); |
| | | Calendar calendar = new GregorianCalendar(); |
| | | calendar.setTime(date); |
| | | calendar.add(calendar.DATE,+1); |
| | | String date1= simpleDateFormat.format(date); |
| | | String date2= simpleDateFormat.format(calendar.getTime()); |
| | | calendar.add(calendar.DATE, +1); |
| | | String date1 = simpleDateFormat.format(date); |
| | | String date2 = simpleDateFormat.format(calendar.getTime()); |
| | | String[] mIds = monitorPointIds.split(","); |
| | | List<List<Map<String,Object>>> lists = new ArrayList<>(); |
| | | if (mIds.length==1 && mIds.length!=0){ |
| | | List<List<Map<String, Object>>> lists = new ArrayList<>(); |
| | | if (mIds.length == 1 && mIds.length != 0) { |
| | | String mId = mIds[0]; |
| | | List<Map<String,Object>> dataAvbByMIdAndTime = historyHourlyService.getDataAvbByMIdAndTime(mId, date1, date2); |
| | | List<Map<String, Object>> dataAvbByMIdAndTime = historyHourlyService.getDataAvbByMIdAndTime(mId, date1, date2); |
| | | Double maxO3 = Double.parseDouble(dataAvbByMIdAndTime.get(dataAvbByMIdAndTime.size() - 1).get("maxO3").toString()); |
| | | Map<String,Object> dailyAvgData =new HashMap<>(); |
| | | if (dataAvbByMIdAndTime.get(dataAvbByMIdAndTime.size() - 2).get("data")!=""){ |
| | | Map<String, Object> dailyAvgData = new HashMap<>(); |
| | | if (dataAvbByMIdAndTime.get(dataAvbByMIdAndTime.size() - 2).get("data") != "") { |
| | | dailyAvgData = (Map<String, Object>) dataAvbByMIdAndTime.get(dataAvbByMIdAndTime.size() - 2).get("data"); |
| | | dailyAvgData.put("maxO3_8h",new BigDecimal(maxO3).setScale(0,BigDecimal.ROUND_HALF_UP).doubleValue()); |
| | | }else { |
| | | dailyAvgData= historyHourlyService.getAvgDataByMId(mId, date1, date2); |
| | | if (dailyAvgData!=null){ |
| | | dailyAvgData.put("maxO3_8h",new BigDecimal(maxO3).setScale(0,BigDecimal.ROUND_HALF_UP).doubleValue()); |
| | | }else { |
| | | dailyAvgData.put("maxO3_8h", new BigDecimal(maxO3).setScale(0, BigDecimal.ROUND_HALF_UP).doubleValue()); |
| | | } else { |
| | | dailyAvgData = historyHourlyService.getAvgDataByMId(mId, date1, date2); |
| | | if (dailyAvgData != null) { |
| | | dailyAvgData.put("maxO3_8h", new BigDecimal(maxO3).setScale(0, BigDecimal.ROUND_HALF_UP).doubleValue()); |
| | | } else { |
| | | dailyAvgData = new HashMap<>(); |
| | | dailyAvgData.put("PM2_5",""); |
| | | dailyAvgData.put("NO2",""); |
| | | dailyAvgData.put("SO2",""); |
| | | dailyAvgData.put("PM10",""); |
| | | dailyAvgData.put("O3_day",""); |
| | | dailyAvgData.put("CO",""); |
| | | dailyAvgData.put("PM2_5", ""); |
| | | dailyAvgData.put("NO2", ""); |
| | | dailyAvgData.put("SO2", ""); |
| | | dailyAvgData.put("PM10", ""); |
| | | dailyAvgData.put("O3_day", ""); |
| | | dailyAvgData.put("CO", ""); |
| | | } |
| | | } |
| | | dataAvbByMIdAndTime.remove(dataAvbByMIdAndTime.size() - 1); |
| | | dataAvbByMIdAndTime.remove(dataAvbByMIdAndTime.size() - 1); |
| | | Map<String,Object> dayMap = new HashMap<>(); |
| | | dayMap.put("data",dailyAvgData); |
| | | dayMap.put("time",date1.substring(0,11)); |
| | | Map<String, Object> dayMap = new HashMap<>(); |
| | | dayMap.put("data", dailyAvgData); |
| | | dayMap.put("time", date1.substring(0, 11)); |
| | | dataAvbByMIdAndTime.add(dayMap); |
| | | for (int i = 0; i <dataAvbByMIdAndTime.size() ; i++) { |
| | | if (i!=dataAvbByMIdAndTime.size()-1){ |
| | | for (int i = 0; i < dataAvbByMIdAndTime.size(); i++) { |
| | | if (i != dataAvbByMIdAndTime.size() - 1) { |
| | | Map<String, Object> map1 = AQICalculation2.hourlyAQI((Map<String, Object>) dataAvbByMIdAndTime.get(i).get("data")); |
| | | if (Double.parseDouble(map1.get("AQI").toString())>50.0){ |
| | | ((Map<String, Object>) dataAvbByMIdAndTime.get(i).get("data")).put("primary_pollutants",map1.get("maxSensor")); |
| | | ((Map<String, Object>) dataAvbByMIdAndTime.get(i).get("data")).put("AQI",map1.get("AQI")); |
| | | }else { |
| | | ((Map<String, Object>) dataAvbByMIdAndTime.get(i).get("data")).put("primary_pollutants","-"); |
| | | ((Map<String, Object>) dataAvbByMIdAndTime.get(i).get("data")).put("AQI",map1.get("AQI")); |
| | | if (Double.parseDouble(map1.get("AQI").toString()) > 50.0) { |
| | | ((Map<String, Object>) dataAvbByMIdAndTime.get(i).get("data")).put("primary_pollutants", map1.get("maxSensor")); |
| | | ((Map<String, Object>) dataAvbByMIdAndTime.get(i).get("data")).put("AQI", map1.get("AQI")); |
| | | } else { |
| | | ((Map<String, Object>) dataAvbByMIdAndTime.get(i).get("data")).put("primary_pollutants", "-"); |
| | | ((Map<String, Object>) dataAvbByMIdAndTime.get(i).get("data")).put("AQI", map1.get("AQI")); |
| | | } |
| | | }else { |
| | | } else { |
| | | Map<String, Object> map1 = AQICalculation2.dayAQI((Map<String, Object>) dataAvbByMIdAndTime.get(i).get("data")); |
| | | if (map1.get("AQI").toString().equals("")){ |
| | | if (map1.get("AQI").toString().equals("")) { |
| | | break; |
| | | } |
| | | if (Double.parseDouble(map1.get("AQI").toString())>50.0){ |
| | | ((Map<String, Object>) dataAvbByMIdAndTime.get(i).get("data")).put("primary_pollutants",map1.get("maxSensor")); |
| | | ((Map<String, Object>) dataAvbByMIdAndTime.get(i).get("data")).put("AQI",map1.get("AQI")); |
| | | }else { |
| | | ((Map<String, Object>) dataAvbByMIdAndTime.get(i).get("data")).put("primary_pollutants","-"); |
| | | ((Map<String, Object>) dataAvbByMIdAndTime.get(i).get("data")).put("AQI",map1.get("AQI")); |
| | | } |
| | | if (Double.parseDouble(map1.get("AQI").toString()) > 50.0) { |
| | | ((Map<String, Object>) dataAvbByMIdAndTime.get(i).get("data")).put("primary_pollutants", map1.get("maxSensor")); |
| | | ((Map<String, Object>) dataAvbByMIdAndTime.get(i).get("data")).put("AQI", map1.get("AQI")); |
| | | } else { |
| | | ((Map<String, Object>) dataAvbByMIdAndTime.get(i).get("data")).put("primary_pollutants", "-"); |
| | | ((Map<String, Object>) dataAvbByMIdAndTime.get(i).get("data")).put("AQI", map1.get("AQI")); |
| | | } |
| | | } |
| | | } |
| | | List timeList = new ArrayList(); |
| | | for (int q = 0; q < dataAvbByMIdAndTime.size(); q++) { |
| | | timeList.add(dataAvbByMIdAndTime.get(q).get("time")); |
| | | } |
| | | if (dataAvbByMIdAndTime.size()<25){ |
| | | if (dataAvbByMIdAndTime.size() < 25) { |
| | | for (int j = 1; j < 25; j++) { |
| | | Map<String,Object> map = null; |
| | | Map<String, Object> map = null; |
| | | for (int q = 0; q < dataAvbByMIdAndTime.size(); q++) { |
| | | if (dataAvbByMIdAndTime.get(q).get("time").toString().length() > 2){ |
| | | if (dataAvbByMIdAndTime.get(q).get("time").toString().length() > 2) { |
| | | continue; |
| | | }else { |
| | | } else { |
| | | // System.out.println(Integer.parseInt(dataAvbByMIdAndTime.get(q).get("time").toString())+"==="+j); |
| | | String sj=""; |
| | | if (j<10){ |
| | | sj="0"+j; |
| | | }else { |
| | | if (j==24){ |
| | | sj="00"; |
| | | }else { |
| | | sj=""+j; |
| | | String sj = ""; |
| | | if (j < 10) { |
| | | sj = "0" + j; |
| | | } else { |
| | | if (j == 24) { |
| | | sj = "00"; |
| | | } else { |
| | | sj = "" + j; |
| | | } |
| | | } |
| | | if (!timeList.contains(sj)){ |
| | | if (!timeList.contains(sj)) { |
| | | map = new HashMap<>(); |
| | | map.put("time",sj); |
| | | map.put("time", sj); |
| | | Map map1 = new HashMap(); |
| | | map1.put("PM2_5",""); |
| | | map1.put("NO2",""); |
| | | map1.put("primary_pollutants","-"); |
| | | map1.put("SO2",""); |
| | | map1.put("O3",""); |
| | | map1.put("PM10",""); |
| | | map1.put("O3_8h",""); |
| | | map1.put("CO",""); |
| | | map1.put("AQI",""); |
| | | map.put("data",map1); |
| | | map1.put("PM2_5", ""); |
| | | map1.put("NO2", ""); |
| | | map1.put("primary_pollutants", "-"); |
| | | map1.put("SO2", ""); |
| | | map1.put("O3", ""); |
| | | map1.put("PM10", ""); |
| | | map1.put("O3_8h", ""); |
| | | map1.put("CO", ""); |
| | | map1.put("AQI", ""); |
| | | map.put("data", map1); |
| | | dataAvbByMIdAndTime.add(map); |
| | | break; |
| | | }else { |
| | | } else { |
| | | break; |
| | | } |
| | | } |
| | |
| | | /* for (int i1 = 0; i1 < dataAvbByMIdAndTime.size(); i1++) { |
| | | System.out.println(dataAvbByMIdAndTime.get(i1)); |
| | | }*/ |
| | | Collections.sort(dataAvbByMIdAndTime, new Comparator<Map<String, Object>>(){ |
| | | Collections.sort(dataAvbByMIdAndTime, new Comparator<Map<String, Object>>() { |
| | | public int compare(Map<String, Object> o1, Map<String, Object> o2) { |
| | | String name1 =(String)o1.get("time");//name1是从你list里面拿出来的一个 |
| | | String name2= (String)o2.get("time"); //name1是从你list里面拿出来的第二个name |
| | | String name1 = (String) o1.get("time");//name1是从你list里面拿出来的一个 |
| | | String name2 = (String) o2.get("time"); //name1是从你list里面拿出来的第二个name |
| | | return name1.compareTo(name2); |
| | | } |
| | | }); |
| | | Map map1 = dataAvbByMIdAndTime.get(0); |
| | | dataAvbByMIdAndTime.remove(0); |
| | | dataAvbByMIdAndTime.add(map1); |
| | | for (int j = 0; j <dataAvbByMIdAndTime.size() ; j++) { |
| | | if (dataAvbByMIdAndTime.get(j).get("time").toString().length()>2){ |
| | | for (int j = 0; j < dataAvbByMIdAndTime.size(); j++) { |
| | | if (dataAvbByMIdAndTime.get(j).get("time").toString().length() > 2) { |
| | | Map map2 = dataAvbByMIdAndTime.get(j); |
| | | dataAvbByMIdAndTime.remove(j); |
| | | dataAvbByMIdAndTime.add(map2); |
| | | } |
| | | } |
| | | if (dataAvbByMIdAndTime.size()==1){ |
| | | dataAvbByMIdAndTime=null; |
| | | if (dataAvbByMIdAndTime.size() == 1) { |
| | | dataAvbByMIdAndTime = null; |
| | | } |
| | | lists.add(dataAvbByMIdAndTime); |
| | | //List<Device> devicesByMonitorPointId = deviceService.getDevicesByMonitorPointId(Integer.valueOf(mId)); |
| | | }else { |
| | | for (int i = 0; i <mIds.length ; i++) { |
| | | List<Map<String,Object>> dataAvbByMIdAndTime = historyHourlyService.getDataAvbByMIdAndTime(mIds[i], date1, date2); |
| | | } else { |
| | | for (int i = 0; i < mIds.length; i++) { |
| | | List<Map<String, Object>> dataAvbByMIdAndTime = historyHourlyService.getDataAvbByMIdAndTime(mIds[i], date1, date2); |
| | | Double maxO3 = Double.parseDouble(dataAvbByMIdAndTime.get(dataAvbByMIdAndTime.size() - 1).get("maxO3").toString()); |
| | | Map<String,Object> dailyAvgData =new HashMap<>(); |
| | | if (dataAvbByMIdAndTime.get(dataAvbByMIdAndTime.size() - 2).get("data")!=""){ |
| | | Map<String, Object> dailyAvgData = new HashMap<>(); |
| | | if (dataAvbByMIdAndTime.get(dataAvbByMIdAndTime.size() - 2).get("data") != "") { |
| | | dailyAvgData = (Map<String, Object>) dataAvbByMIdAndTime.get(dataAvbByMIdAndTime.size() - 2).get("data"); |
| | | dailyAvgData.put("maxO3_8h",new BigDecimal(maxO3).setScale(0,BigDecimal.ROUND_HALF_UP).doubleValue()); |
| | | }else { |
| | | dailyAvgData= historyHourlyService.getAvgDataByMId(mIds[i], date1, date2); |
| | | if (dailyAvgData!=null){ |
| | | dailyAvgData.put("maxO3_8h",new BigDecimal(maxO3).setScale(0,BigDecimal.ROUND_HALF_UP).doubleValue()); |
| | | }else { |
| | | dailyAvgData.put("maxO3_8h", new BigDecimal(maxO3).setScale(0, BigDecimal.ROUND_HALF_UP).doubleValue()); |
| | | } else { |
| | | dailyAvgData = historyHourlyService.getAvgDataByMId(mIds[i], date1, date2); |
| | | if (dailyAvgData != null) { |
| | | dailyAvgData.put("maxO3_8h", new BigDecimal(maxO3).setScale(0, BigDecimal.ROUND_HALF_UP).doubleValue()); |
| | | } else { |
| | | dailyAvgData = new HashMap<>(); |
| | | dailyAvgData.put("PM2_5",""); |
| | | dailyAvgData.put("NO2",""); |
| | | dailyAvgData.put("SO2",""); |
| | | dailyAvgData.put("PM10",""); |
| | | dailyAvgData.put("O3_day",""); |
| | | dailyAvgData.put("CO",""); |
| | | dailyAvgData.put("PM2_5", ""); |
| | | dailyAvgData.put("NO2", ""); |
| | | dailyAvgData.put("SO2", ""); |
| | | dailyAvgData.put("PM10", ""); |
| | | dailyAvgData.put("O3_day", ""); |
| | | dailyAvgData.put("CO", ""); |
| | | } |
| | | } |
| | | dataAvbByMIdAndTime.remove(dataAvbByMIdAndTime.size() - 1); |
| | | dataAvbByMIdAndTime.remove(dataAvbByMIdAndTime.size() - 1); |
| | | Map<String,Object> dayMap = new HashMap<>(); |
| | | dayMap.put("data",dailyAvgData); |
| | | dayMap.put("time",date1.substring(0,11)); |
| | | Map<String, Object> dayMap = new HashMap<>(); |
| | | dayMap.put("data", dailyAvgData); |
| | | dayMap.put("time", date1.substring(0, 11)); |
| | | dataAvbByMIdAndTime.add(dayMap); |
| | | List timeList = new ArrayList(); |
| | | for (int q = 0; q < dataAvbByMIdAndTime.size(); q++) { |
| | | timeList.add(dataAvbByMIdAndTime.get(q).get("time")); |
| | | } |
| | | if (dataAvbByMIdAndTime.size()<25){ |
| | | if (dataAvbByMIdAndTime.size() < 25) { |
| | | for (int j = 1; j < 25; j++) { |
| | | Map<String,Object> map = null; |
| | | Map<String, Object> map = null; |
| | | for (int q = 0; q < dataAvbByMIdAndTime.size(); q++) { |
| | | if (dataAvbByMIdAndTime.get(q).get("time").toString().length() > 2){ |
| | | if (dataAvbByMIdAndTime.get(q).get("time").toString().length() > 2) { |
| | | continue; |
| | | }else { |
| | | // System.out.println(Integer.parseInt(dataAvbByMIdAndTime.get(q).get("time").toString())+"==="+j); |
| | | String sj=""; |
| | | if (j<10){ |
| | | sj="0"+j; |
| | | }else { |
| | | if (j==24){ |
| | | sj="00"; |
| | | }else { |
| | | sj=""+j; |
| | | } else { |
| | | // System.out.println(Integer.parseInt(dataAvbByMIdAndTime.get(q).get("time").toString())+"==="+j); |
| | | String sj = ""; |
| | | if (j < 10) { |
| | | sj = "0" + j; |
| | | } else { |
| | | if (j == 24) { |
| | | sj = "00"; |
| | | } else { |
| | | sj = "" + j; |
| | | } |
| | | } |
| | | if (!timeList.contains(sj)){ |
| | | if (!timeList.contains(sj)) { |
| | | map = new HashMap<>(); |
| | | map.put("time",sj); |
| | | map.put("time", sj); |
| | | Map map1 = new HashMap(); |
| | | map1.put("PM2_5",""); |
| | | map1.put("NO2",""); |
| | | map1.put("SO2",""); |
| | | map1.put("O3",""); |
| | | map1.put("PM10",""); |
| | | map1.put("O3_8h",""); |
| | | map1.put("CO",""); |
| | | map.put("data",map1); |
| | | map1.put("PM2_5", ""); |
| | | map1.put("NO2", ""); |
| | | map1.put("SO2", ""); |
| | | map1.put("O3", ""); |
| | | map1.put("PM10", ""); |
| | | map1.put("O3_8h", ""); |
| | | map1.put("CO", ""); |
| | | map.put("data", map1); |
| | | dataAvbByMIdAndTime.add(map); |
| | | break; |
| | | }else { |
| | | } else { |
| | | break; |
| | | } |
| | | } |
| | |
| | | |
| | | } |
| | | } |
| | | Collections.sort(dataAvbByMIdAndTime, new Comparator<Map<String, Object>>(){ |
| | | Collections.sort(dataAvbByMIdAndTime, new Comparator<Map<String, Object>>() { |
| | | public int compare(Map<String, Object> o1, Map<String, Object> o2) { |
| | | String name1 =(String)o1.get("time");//name1是从你list里面拿出来的一个 |
| | | String name2= (String)o2.get("time"); //name1是从你list里面拿出来的第二个name |
| | | String name1 = (String) o1.get("time");//name1是从你list里面拿出来的一个 |
| | | String name2 = (String) o2.get("time"); //name1是从你list里面拿出来的第二个name |
| | | return name1.compareTo(name2); |
| | | } |
| | | }); |
| | | Map map1 = dataAvbByMIdAndTime.get(0); |
| | | dataAvbByMIdAndTime.remove(0); |
| | | dataAvbByMIdAndTime.add(map1); |
| | | for (int j = 0; j <dataAvbByMIdAndTime.size() ; j++) { |
| | | if (dataAvbByMIdAndTime.get(j).get("time").toString().length()>2){ |
| | | for (int j = 0; j < dataAvbByMIdAndTime.size(); j++) { |
| | | if (dataAvbByMIdAndTime.get(j).get("time").toString().length() > 2) { |
| | | Map map2 = dataAvbByMIdAndTime.get(j); |
| | | dataAvbByMIdAndTime.remove(j); |
| | | dataAvbByMIdAndTime.add(map2); |
| | |
| | | List<Map<String, Object>> dataByMonitorPoints = historyHourlyService.getDataByMonitorPoints(mIds, date1, date2); |
| | | lists.add(dataByMonitorPoints); |
| | | } |
| | | List<Map<String, Object>> rList =new ArrayList<>(); |
| | | if (lists.size()==1 && lists.get(0)!=null){ |
| | | List<Map<String, Object>> rList = new ArrayList<>(); |
| | | if (lists.size() == 1 && lists.get(0) != null) { |
| | | for (int i = 0; i < lists.get(0).size(); i++) { |
| | | List list = new ArrayList(); |
| | | list.add(lists.get(0).get(i).get("data")); |
| | | Map map = new HashMap(); |
| | | map.put("data",list); |
| | | map.put("time",lists.get(0).get(i).get("time")); |
| | | map.put("data", list); |
| | | map.put("time", lists.get(0).get(i).get("time")); |
| | | rList.add(map); |
| | | } |
| | | |
| | | } else if (lists.size()==1 && lists.get(0)==null){ |
| | | } else if (lists.size() == 1 && lists.get(0) == null) { |
| | | rList.add(null); |
| | | }else { |
| | | } else { |
| | | for (int j = 0; j < lists.get(0).size(); j++) { |
| | | Map<String, Object> listMap = new HashMap(); |
| | | List<Map> mapList = new ArrayList<>(); |
| | |
| | | rList.add(listMap); |
| | | } |
| | | } |
| | | return new ResultBean<List<Map<String,Object>>>(rList); |
| | | return new ResultBean<List<Map<String, Object>>>(rList); |
| | | } |
| | | |
| | | @PostMapping("byAccountGetDevices") |
| | | public List<Device> byAccountGetDevices(@RequestBody Map<String, Object> parameters) { |
| | | String id =parameters.get("id").toString(); |
| | | List<Device> devicesList = deviceService.getDevicesByAccountId(id); |
| | | return devicesList; |
| | | } |
| | | |
| | | @GetMapping("/unorganizedEmissionsFiveMinute") |
| | | @ApiOperation(value = "无组织排放五分钟", notes = "无组织排放五分钟") |
| | | @ApiImplicitParams(value = { |
| | | @ApiImplicitParam(name = "monitorPointId", value = "公司Id", required = true, paramType = "query", dataType = "String"), |
| | | @ApiImplicitParam(name = "sensorKey", value = "因子", required = true, paramType = "query", dataType = "String"), |
| | | @ApiImplicitParam(name = "realTime", value = "实时", required = true, paramType = "query", dataType = "String"), |
| | | @ApiImplicitParam(name = "accountId", value = "用户id", required = false, paramType = "query", dataType = "String")}) |
| | | public ModelAndView unorganizedEmissionsBackupsV2(HttpServletRequest request, ModelAndView model) { |
| | | Map<String, Object> parameters = WebUtils.getParametersStartingWith(request, null); |
| | | String sensorKey = parameters.get("sensorKey").toString(); |
| | | //第一步,获取污染源点 |
| | | PollutionSourcePoint pollutionSourcePoint = pollutioSourcePointService.selectByMonitorPointId(539); |
| | | //获取站点的所有设备 |
| | | List<Device> deviceList = deviceService.getDevicesByMonitorPointId(539); |
| | | //获取五分钟数据 |
| | | Map<String,Object> pa = new HashMap<>(); |
| | | //获取开始时间和结束时间 |
| | | SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); |
| | | Calendar beforeTime = Calendar.getInstance(); |
| | | Date newTime = beforeTime.getTime(); |
| | | beforeTime.add(Calendar.MINUTE,-5); |
| | | Date startTime = beforeTime.getTime(); |
| | | beforeTime.add(Calendar.MINUTE,6); |
| | | Date endTime = beforeTime.getTime(); |
| | | //pa.put("sensorKey","e1"); |
| | | pa.put("yearAndMonth",sdf.format(newTime).substring(0,7).replace("-","")); |
| | | pa.put("startTime",startTime); |
| | | pa.put("endTime",endTime); |
| | | List<String> macs = new ArrayList<>(); |
| | | List<String> sensorKeys = new ArrayList<>(); |
| | | for (Device device:deviceList) { |
| | | macs.add(device.getMac()); |
| | | } |
| | | sensorKeys.add(sensorKey); |
| | | sensorKeys.add("e18"); |
| | | sensorKeys.add("e23"); |
| | | pa.put("macs",macs); |
| | | pa.put("sensorKeys",sensorKeys); |
| | | pa.put("macNumber",macs.size()); |
| | | List<Map<String, Object>> fiveMinuteDataList = historyFiveMinutelyService.getFiveMinutesDataByMacsAndTimeSolt(pa); |
| | | //声明数组,存放所有设备的数值 |
| | | double[] allDeviceData = new double[fiveMinuteDataList.size()]; |
| | | int i = 0; |
| | | //计算风向 |
| | | List<Map<String,Object>> windList = new ArrayList<>(); |
| | | for (Map map:fiveMinuteDataList) { |
| | | String[] wind_speed = map.get("e18").toString().split(","); |
| | | if (!map.containsKey("e23")){ |
| | | continue; |
| | | } |
| | | String[] wind_direction = map.get("e23").toString().split(","); |
| | | Map<String,Object> windMap = new HashMap<>(); |
| | | windMap.put("wind_speed",wind_speed[0].substring(1,wind_speed[0].length())); |
| | | windMap.put("wind_direction",wind_direction[0].substring(1,wind_direction[0].length())); |
| | | windList.add(windMap); |
| | | String[] sensorArr = map.get(sensorKey).toString().split(","); |
| | | double sensorData = Double.parseDouble(sensorArr[0].substring(1,sensorArr[0].length())); |
| | | allDeviceData[i] = sensorData; |
| | | i = i+1; |
| | | } |
| | | //计算平均风向和风速 |
| | | Map<String,Double> res = WindUtils.getWind_direction_speed(windList); |
| | | //计算该站点的点与污染源点的角度 |
| | | Map<String,Double> angleMap = new HashMap(); |
| | | MyLatLng pollutionSourcePoint_log_lat = new MyLatLng(pollutionSourcePoint.getLongitude(),pollutionSourcePoint.getLatitude()); |
| | | for (Device device:deviceList) { |
| | | MyLatLng device_log_lat = new MyLatLng(device.getLongitude(),device.getLatitude()); |
| | | //以设备为坐标原点,与污染源连线的角度 |
| | | double angle = mapUtils.getAngle(device_log_lat,pollutionSourcePoint_log_lat); |
| | | angleMap.put(device.getMac(),angle); |
| | | } |
| | | Map<String,Double> disparityMap = new HashMap<>(); |
| | | for (String key:angleMap.keySet()) { |
| | | double angleDisparity = Math.abs(angleMap.get(key)-res.get("wind_direction")); |
| | | if (angleDisparity>180){ |
| | | angleDisparity = 360-angleDisparity; |
| | | } |
| | | disparityMap.put(key,angleDisparity); |
| | | } |
| | | Optional<Map.Entry<String, Double>> minDisparity = disparityMap.entrySet() |
| | | .stream() |
| | | .min(Map.Entry.comparingByValue()); |
| | | //留下的任务:循环disparityMap,查出与minDisparity相等的值的key,以防出现两个点的角度差一样 |
| | | List<String> minAngleDisparityMacList = new ArrayList<>(); |
| | | for (String key:disparityMap.keySet()) { |
| | | if (disparityMap.get(key) == minDisparity.get().getValue()){ |
| | | minAngleDisparityMacList.add(minDisparity.get().getKey()); |
| | | } |
| | | } |
| | | //定义一个map,存放设备点 |
| | | Map<String,Object> fiveMinuteDataMap = new HashMap(); |
| | | if (minAngleDisparityMacList.size()<2){//只有一个点 |
| | | for (Map fiveMinuteData:fiveMinuteDataList) { |
| | | if (fiveMinuteData.get("mac").toString().equals(minAngleDisparityMacList.get(0))){ |
| | | fiveMinuteDataMap.putAll(fiveMinuteData); |
| | | break; |
| | | } |
| | | } |
| | | }else { |
| | | |
| | | } |
| | | Device referenceDevice = new Device(); |
| | | for (Device device:deviceList) { |
| | | if (device.getMac().equals(fiveMinuteDataMap.get("mac"))){ |
| | | referenceDevice = device; |
| | | } |
| | | } |
| | | //计算污染平均值 |
| | | double sum = 0; |
| | | for (int j=0;j<allDeviceData.length;j++) { |
| | | sum = sum+allDeviceData[j]; |
| | | } |
| | | double deviceDataAvg = sum/allDeviceData.length; |
| | | //计算污染源点与设备点之间的距离 |
| | | double distance = mapUtils.getDistance(pollutionSourcePoint.getLongitude(),pollutionSourcePoint.getLatitude(),referenceDevice.getLongitude(),referenceDevice.getLatitude()); |
| | | //已知距离,角度,求x,y |
| | | double x = Math.cos(Math.toRadians(minDisparity.get().getValue()))*distance; |
| | | double y = Math.sin(Math.toRadians(minDisparity.get().getValue()))*distance; |
| | | //获取设备的数值 |
| | | String[] fiveMinuteData = fiveMinuteDataMap.get(sensorKey).toString().split(","); |
| | | double c = Double.parseDouble(fiveMinuteData[0].substring(1,fiveMinuteData[0].length()))-deviceDataAvg; |
| | | //计算源强 |
| | | double pollutionSourceIntensity = EmissionDataUtil.getPollutionSourceIntensity(c,x,y,res.get("wind_speed")); |
| | | |
| | | //存放地图中心点 |
| | | Map<String,Object> center = new HashMap<>(); |
| | | center.put("lng",120.997119); |
| | | center.put("lat",31.451714); |
| | | |
| | | //存放各个点位经纬度及数值 |
| | | List<Map<String,Double>> numericalValueList = new ArrayList<>(); |
| | | Map<String,Double> numericalValueMap = new HashMap<>(); |
| | | numericalValueMap.put("lng",120.997119); |
| | | numericalValueMap.put("lat",31.451714); |
| | | numericalValueMap.put("count",0.027); |
| | | numericalValueList.add(numericalValueMap); |
| | | Map<String,Double> numericalValueMap2 = new HashMap<>(); |
| | | numericalValueMap2.put("lng",120.99516); |
| | | numericalValueMap2.put("lat",31.448664); |
| | | numericalValueMap2.put("count",0.029); |
| | | numericalValueList.add(numericalValueMap2); |
| | | Map<String,Double> numericalValueMap3 = new HashMap<>(); |
| | | numericalValueMap3.put("lng",120.998538); |
| | | numericalValueMap3.put("lat",31.449289); |
| | | numericalValueMap3.put("count",0.033); |
| | | numericalValueList.add(numericalValueMap3); |
| | | Map<String,Double> numericalValueMap4 = new HashMap<>(); |
| | | numericalValueMap4.put("lng",120.998628); |
| | | numericalValueMap4.put("lat",31.452027); |
| | | numericalValueMap4.put("count",0.025); |
| | | numericalValueList.add(numericalValueMap4); |
| | | Map<String,Double> numericalValueMap5 = new HashMap<>(); |
| | | numericalValueMap5.put("lng",121.000383); |
| | | numericalValueMap5.put("lat",31.451469); |
| | | numericalValueMap5.put("count",0.05); |
| | | numericalValueList.add(numericalValueMap5); |
| | | Map<String,Double> numericalValueMap6 = new HashMap<>(); |
| | | numericalValueMap6.put("lng",120.999908); |
| | | numericalValueMap6.put("lat",31.449389); |
| | | numericalValueMap6.put("count",0.04); |
| | | numericalValueList.add(numericalValueMap6); |
| | | Map<String,Double> numericalValueMap7 = new HashMap<>(); |
| | | numericalValueMap7.put("lng",120.998519); |
| | | numericalValueMap7.put("lat",31.450588); |
| | | numericalValueMap7.put("count",0.10); |
| | | numericalValueList.add(numericalValueMap7); |
| | | |
| | | |
| | | JSONObject params = new JSONObject(); |
| | | params.put("accountId",190); |
| | | params.put("level",17); |
| | | params.put("center",center); |
| | | params.put("points",numericalValueList); |
| | | |
| | | |
| | | |
| | | //获取公司信息 |
| | | //JSONObject params=monitorPointService.getMonitorPointById(monitPointId,Time,3,sensor); |
| | | // model.addObject("params",params); |
| | | model.addObject("params", params); |
| | | model.setViewName("unorganizedMapV2"); |
| | | return model; |
| | | } |
| | | } |