From 69a3e436bedfc828930e08cbbac7df57f4fd83cb Mon Sep 17 00:00:00 2001 From: ZhuDongming <773644075@qq.com> Date: Fri, 12 Jun 2020 16:46:03 +0800 Subject: [PATCH] update去除站点层,更改设备图标为站点图标 --- src/main/java/com/moral/controller/ScreenController.java | 342 ++++++++++++++++++++++++++++++++++++-------------------- 1 files changed, 219 insertions(+), 123 deletions(-) diff --git a/src/main/java/com/moral/controller/ScreenController.java b/src/main/java/com/moral/controller/ScreenController.java index 0a39b4f..23c06ea 100644 --- a/src/main/java/com/moral/controller/ScreenController.java +++ b/src/main/java/com/moral/controller/ScreenController.java @@ -9,35 +9,20 @@ import java.text.SimpleDateFormat; import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; -import java.util.*; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collection; +import java.util.Date; +import java.util.HashMap; +import java.util.Iterator; +import java.util.LinkedHashMap; +import java.util.List; +import java.util.Map; +import java.util.Optional; import java.util.stream.Collectors; import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; - -import org.apache.commons.collections.CollectionUtils; -import org.apache.commons.collections.MapUtils; -import org.apache.commons.net.ftp.FTPClient; -import org.apache.log4j.Logger; -import org.dom4j.Document; -import org.dom4j.Element; -import org.dom4j.io.SAXReader; -import org.springframework.beans.factory.annotation.Value; -import org.springframework.cglib.beans.BeanMap; -import org.springframework.data.redis.core.RedisTemplate; -import org.springframework.security.access.prepost.PreAuthorize; -import org.springframework.util.ObjectUtils; -import org.springframework.web.bind.annotation.CrossOrigin; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RequestMethod; -import org.springframework.web.bind.annotation.RequestParam; -import org.springframework.web.bind.annotation.ResponseBody; -import org.springframework.web.bind.annotation.RestController; -import org.springframework.web.servlet.ModelAndView; -import org.xml.sax.InputSource; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONArray; @@ -94,6 +79,29 @@ import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParams; import io.swagger.annotations.ApiOperation; +import org.apache.commons.collections.CollectionUtils; +import org.apache.commons.collections.MapUtils; +import org.apache.commons.net.ftp.FTPClient; +import org.apache.log4j.Logger; +import org.dom4j.Document; +import org.dom4j.Element; +import org.dom4j.io.SAXReader; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.cglib.beans.BeanMap; +import org.springframework.data.redis.core.RedisTemplate; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.util.ObjectUtils; +import org.springframework.web.bind.annotation.CrossOrigin; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.ResponseBody; +import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.servlet.ModelAndView; +import org.xml.sax.InputSource; import static com.moral.common.util.ResourceUtil.getValue; import static com.moral.common.util.WebUtils.getParametersStartingWith; @@ -838,119 +846,131 @@ parameters.put("monitorPointId", parameters.remove("monitorPoint")); parameters.put("areaCode", parameters.remove("areaCode")); String[] sensorKeys = parameters.remove("sensorKey").toString().split(","); + String type = parameters.get("type").toString(); String s = sensorKeys[0]; parameters.put("sensors", Arrays.asList(sensorKeys)); parameters.put("sensors2", s); - List<Map<String, Object>> monitorList = historyMinutelyService.getMonitorPointOrDeviceAvgData(parameters); - for (Map<String, Object> monitorMap : monitorList) { - String time = monitorMap.get("time").toString(); - time = time.substring(time.length() - 2); - monitorMap.put("time", Integer.valueOf(time)); - } - Integer maxTime = 0; - Integer max1 = 0; - if (monitorList.size() != 0) { - Map<String, Object> monitorMap = monitorList.get(monitorList.size() - 1); - max1 = Integer.valueOf(monitorMap.get("time").toString()); - } else { - max1 = 0; - } - String sensorKey1 = s; - switch (s) { - case "e1": - sensorKey1 = "PM2_5"; - break; - case "e2": - sensorKey1 = "PM10"; - break; - case "e10": - sensorKey1 = "CO"; - break; - case "e11": - sensorKey1 = "SO2"; - break; - case "e15": - sensorKey1 = "O3"; - break; - case "e16": - sensorKey1 = "NO2"; - break; - default: - break; - } - - parameters.put("sensors1", sensorKey1); - - List<Map<String, Object>> areaList = historyMinutelyService.getAreaAvgDataByAreaCode(parameters); - - if (areaList.isEmpty()) { - Integer areaCode = Integer.valueOf(request.getParameter("areaCode")); - areaCode = hangzhouAqiService.queryCityCode(areaCode); - parameters.remove("areaCode"); - parameters.put("areaCode", String.valueOf(areaCode)); - areaList = historyMinutelyService.getAreaAvgDataByAreaCode(parameters); - } - - for (Map<String, Object> areaMap : areaList) { - String time = areaMap.get("time").toString(); - time = time.substring(time.length() - 2); - areaMap.put("time", Integer.valueOf(time)); - } - - Integer max = 0; - if (areaList.size() != 0) { - Map<String, Object> areaMap = areaList.get(areaList.size() - 1); - max = Integer.valueOf(areaMap.get("time").toString()); - } else { - max = 0; - } - - if (max1 >= max) { - maxTime = max1; - } else { - maxTime = max; - } ArrayList<Map<String, Object>> resultList = new ArrayList<>(); - for (int i = 0; i <= maxTime; i++) { - resultList.add(null); + List<Map<String, Object>> monitorList = historyMinutelyService.getMonitorPointOrDeviceAvgData(parameters); + List<Map<String, Object>> areaList = hangzhouAqiService.getAreaAvgDataByAreaCode(parameters); + + if (areaList.isEmpty() && monitorList.isEmpty()) { + return new ResultBean<List<Map<String, Object>>>(resultList); + } else if (areaList.isEmpty()) { + resultList.addAll(monitorList); + for (Map<String, Object> resultMap : resultList) { + String time = resultMap.get("time").toString(); + time = time.substring(time.length() - 2); + resultMap.put("time", Integer.valueOf(time)); + List<String> values = new ArrayList<>(); + values.add(""); + values.add(resultMap.remove(s).toString()); + resultMap.put("values", values); + } + return new ResultBean<List<Map<String, Object>>>(resultList); + } else if (monitorList.isEmpty()) { + resultList.addAll(areaList); + for (Map<String, Object> resultMap : resultList) { + String time = resultMap.get("time").toString(); + time = time.substring(time.length() - 2); + resultMap.put("time", Integer.valueOf(time)); + List<String> values = new ArrayList<>(); + values.add(resultMap.remove(s).toString()); + values.add(""); + resultMap.put("values", values); + } + return new ResultBean<List<Map<String, Object>>>(resultList); } - for (Map<String, Object> areaMap : areaList) { - Integer time = Integer.valueOf(areaMap.get("time").toString()); - resultList.set(time, areaMap); + for (Map<String, Object> map : areaList) { + String time = map.get("time").toString(); + time = time.substring(time.length() - 2); + map.put("time", Integer.valueOf(time)); } - for (Map<String, Object> resultMap : resultList) { - for (Map<String, Object> monitorMap : monitorList) { - ArrayList<String> values = new ArrayList<>(); - String monitorTime = monitorMap.get("time").toString(); - if (resultMap != null) { - String resultTime = resultMap.get("time").toString(); - if (resultTime.equals(monitorTime)) { - String value = resultMap.remove(s).toString(); - String value1 = monitorMap.get(s).toString(); - values.add(value); - values.add(value1); - resultMap.put("values", values); - } - } else { - String value1 = monitorMap.get(s).toString(); - values.add(null); - values.add(value1); - } + for (Map<String, Object> m : monitorList) { + String time = m.get("time").toString(); + time = time.substring(time.length() - 2); + m.put("time", Integer.valueOf(time)); + } + + Integer maxTime; + Map<String, Object> areaMap = areaList.get(areaList.size() - 1); + Integer areaMax = Integer.valueOf(areaMap.get("time").toString()); + Map<String, Object> monitorMap = monitorList.get(monitorList.size() - 1); + Integer monitorMax = Integer.valueOf(monitorMap.get("time").toString()); + + if (type.equals("day")) { + if (areaMax >= monitorMax) { + maxTime = areaMax + 1; + } else { + maxTime = monitorMax + 1; + } + } else { + if (areaMax >= monitorMax) { + maxTime = areaMax; + } else { + maxTime = monitorMax; } } - resultList.removeAll(Collections.singleton(null)); + for (int i = 0; i < maxTime; i++) { + resultList.add(null); + } - for (Map<String, Object> resultMap : resultList) { - if (resultMap.containsKey(s)) { + for (Map<String, Object> map : areaList) { + Integer time = Integer.valueOf(map.get("time").toString()); + if (type.equals("day")) { + resultList.set(time, map); + } else { + resultList.set(time - 1, map); + } + } + + for (int i = 0; i <resultList.size() ; i++) { + if (resultList.get(i) == null) { + Map<String, Object> hashMap = new HashMap<>(); + if(type.equals("day")){ + hashMap.put("time", i); + }else { + hashMap.put("time", i + 1); + } + hashMap.put(s, ""); + resultList.set(i, hashMap); + } + } + + for (Map<String, Object> map1 : monitorList) { + ArrayList<String> values = new ArrayList<>(); + Integer time = Integer.valueOf(map1.get("time").toString()); + Map<String, Object> map; + if (type.equals("day")) { + map = resultList.get(time); + } else { + map = resultList.get(time - 1); + } + values.add(map.remove(s).toString()); + values.add(map1.get(s).toString()); + map.put("values", values); + } + + for (Map<String, Object> map : resultList) { + if (map.containsKey(s)) { ArrayList<String> values = new ArrayList<>(); - values.add(resultMap.remove(s).toString()); - values.add(null); - resultMap.put("values", values); + values.add(map.remove(s).toString()); + values.add(""); + map.put("values",values); + } + } + + Iterator<Map<String, Object>> it = resultList.iterator(); + while(it.hasNext()){ + Map<String, Object> next = it.next(); + ArrayList<String> values = (ArrayList<String>)next.get("values"); + if(values.get(0).equals("")&&values.get(1).equals("")){ + it.remove(); } } return new ResultBean<List<Map<String, Object>>>(resultList); @@ -1512,6 +1532,54 @@ } } + @GetMapping("/trajectoryDataShow") + @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 trajectoryDataShow(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 endHour = et.substring(et.lastIndexOf("-") + 1); + int endHourValue = Integer.valueOf(endHour); + int startHourValue = Integer.valueOf(startHour); + if (endHourValue <= startHourValue) { + endHourValue = startHourValue + 1; + } + String endTime = startYearAndDay + " " + endHourValue + ":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("trajectoryParams", paramsJson); + model.setViewName("trajectorydatashow"); + return model; + } else { + StringBuilder msg = new StringBuilder(); + msg.append(" param[0] mac:"); + msg.append(mac); + log.warn(msg); + model.setViewName("403"); + return model; + } + } + @GetMapping("device-excel") @ApiOperation(value = "������������������������", notes = "������������������������") @ApiImplicitParams(value = { @@ -1539,4 +1607,32 @@ return new ResultBean<List<Map<String, Object>>>(list); } + @RequestMapping(value = "/newMap-page", method = RequestMethod.GET) + public ModelAndView newMap(ModelAndView model, @RequestParam("areaCode") long code, + @RequestParam("accountId") int accountId) { + Account account = accountService.getAccountById(accountId); + String regionName = areaService.queryFullNameByCode(code); + if (account != null && regionName != null) { + Object sensors = sensorService.queryAll(); + JSONObject params = new JSONObject(); + params.put("regionCode", code); + params.put("regionName", regionName); + params.put("accountId", accountId); + params.put("orgId", account.getOrganizationId()); + params.put("sensors", sensors); + String paramsJson = params.toJSONString(); + model.addObject("mapParams", paramsJson); + model.setViewName("newmap"); + return model; + } else { + StringBuilder msg = new StringBuilder(); + msg.append(" param[0] areaCode:"); + msg.append(code); + msg.append(" param[0] accountId:"); + msg.append(accountId); + log.warn(msg); + model.setViewName("403"); + return model; + } + } } -- Gitblit v1.8.0