| | |
| | | |
| | | import java.io.*; |
| | | import java.lang.reflect.Array; |
| | | import java.math.BigDecimal; |
| | | import java.net.URLEncoder; |
| | | import java.text.DateFormat; |
| | | import java.text.DecimalFormat; |
| | |
| | | import com.alibaba.fastjson.JSONArray; |
| | | |
| | | import com.alibaba.fastjson.JSONObject; |
| | | import com.fasterxml.jackson.databind.ObjectMapper; |
| | | import com.googlecode.aviator.AviatorEvaluator; |
| | | import com.googlecode.aviator.Expression; |
| | | import com.moral.common.bean.Constants; |
| | |
| | | import com.moral.entity.alarm.AlarmSensorLevel; |
| | | import com.moral.entity.charts.DataSortCondition; |
| | | import com.moral.entity.layout.RealTimeDeviceLayout; |
| | | import com.moral.mapper.HistoryMapper; |
| | | import com.moral.service.*; |
| | | import com.moral.util.*; |
| | | |
| | | import com.rabbitmq.client.*; |
| | | import com.rabbitmq.client.Channel; |
| | | |
| | | import io.swagger.annotations.Api; |
| | | import io.swagger.annotations.ApiImplicitParam; |
| | | import io.swagger.annotations.ApiImplicitParams; |
| | |
| | | import io.swagger.models.auth.In; |
| | | import jdk.nashorn.internal.runtime.regexp.joni.Regex; |
| | | import net.sf.json.JSONString; |
| | | |
| | | import org.apache.commons.collections.CollectionUtils; |
| | | import org.apache.commons.collections.MapUtils; |
| | | import org.apache.commons.net.ftp.FTPClient; |
| | |
| | | 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; |
| | | import static java.util.Calendar.*; |
| | |
| | | @Api(tags = "Screen", description = "大屏接口") |
| | | public class ScreenController { |
| | | public static Logger log = Logger.getLogger(ScreenController.class); |
| | | |
| | | @Resource |
| | | private HistoryMapper historyMapper; |
| | | @Resource |
| | | AlarmConfigService alarmConfigService; |
| | | @Resource |
| | |
| | | //该方法用于判断时间是具体到年月日 |
| | | ParameterUtils.getTimeType4Time(parameters); |
| | | String time1 = (String) parameters.get("time"); |
| | | time1 = time1.replaceAll(" ", ""); |
| | | parameters.put("time",time1); |
| | | |
| | | String mac1 = (String) parameters.get("mac"); |
| | | List<Map<String, Object>> list = null; |
| | | if (mac1 != null && mac1.equals("p5dnd7a0392018") && time1.substring(0, 4).equals("2019")) { |
| | |
| | | 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); |
| | | } |
| | | //} |
| | | /*改动范围end-------------------------------------------------------------------------*/ |
| | | |
| | | |
| | | for (Map<String, Object> map : list) { |
| | | String time = map.get("time").toString(); |
| | | time = time.substring(time.length() - 2); |
| | | map.put("time", Integer.valueOf(time)); |
| | | if (parameters.get("type").equals("day")) { |
| | | /* if (parameters.get("type").equals("day")) { |
| | | map.put("time", Integer.valueOf(time) + 1); |
| | | } |
| | | }*/ |
| | | map.put("value", map.remove(sensorKey)); |
| | | } |
| | | } |
| | |
| | | public ModelAndView pollutionSource(ModelAndView model, HttpServletRequest request) throws Exception { |
| | | Map<String, Object> parameters = WebUtils.getParametersStartingWith(request, null); |
| | | String timeStr = parameters.get("time").toString(); |
| | | String YearAndDay = timeStr.substring(0, timeStr.lastIndexOf("-")); |
| | | String yearAndDay = timeStr.substring(0, timeStr.lastIndexOf("-")); |
| | | String Hour = timeStr.substring(timeStr.lastIndexOf("-") + 1); |
| | | String time = YearAndDay + " " + Hour + ":00:00"; |
| | | String time = yearAndDay + " " + Hour + ":00:00"; |
| | | 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); |
| | | Point dirPoint = historyHourlyService.getDirPoint(parameters); |
| | | Map<String, Object> getPollutionSourceData = historyHourlyService.getPollutionSourceDataByHour(parameters); |
| | | if (MapUtils.isEmpty(getPollutionSourceData)) { |
| | |
| | | } else { |
| | | mon = "" + month; |
| | | } |
| | | String table = "history_minutely_" + year + mon; |
| | | List list = deviceService.byMonitorIdGetDeviceAndWind(monitorPointId,table); |
| | | String table = "history_five_minutely_" + year + mon; |
| | | List list = deviceService.byMonitorIdGetDeviceAndWind(monitorPointId, table); |
| | | return list; |
| | | } |
| | | |
| | |
| | | } else { |
| | | mon = "" + month; |
| | | } |
| | | String table = "history_minutely_" + year + mon; |
| | | List list = deviceService.byMonitorIdGetDeviceAndWindSpecial(monitorPointId,table); |
| | | String table = "history_five_minutely_" + year + mon; |
| | | List list = deviceService.byMonitorIdGetDeviceAndWindSpecial(monitorPointId, table); |
| | | return list; |
| | | } |
| | | |
| | |
| | | @ApiOperation(value = "预测和实际臭氧对比", notes = "预测和实际臭氧对比") |
| | | @ApiImplicitParams(value = { |
| | | @ApiImplicitParam(name = "monitorPointId", defaultValue = "1", value = "监控站id", required = true, paramType = "query", dataType = "String"), |
| | | @ApiImplicitParam(name = "time", value = "时6间(格式:2020-03-19)", 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>>> getWeatherNextDayDataByRegion(HttpServletRequest request) throws Exception { |
| | | Map<String, Object> parameters = getParametersStartingWith(request, null); |
| | | List<String> sensorKeys=new ArrayList<>(); |
| | | sensorKeys.add("e15"); |
| | | parameters.put("sensorKeys",sensorKeys); |
| | | List<Map<String, Object>> resultList = weatherService.getForecastAndReal(parameters); |
| | | return new ResultBean<List<Map<String, Object>>>(resultList); |
| | | } |
| | | |
| | | |
| | | @GetMapping("forecastPM") |
| | | @ApiOperation(value = "预测和实测颗粒物对比", notes = "预测和实测颗粒物对比") |
| | | @ApiImplicitParams(value = { |
| | | @ApiImplicitParam(name = "monitorPointId", defaultValue = "1", value = "监控站id", 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>>> getForecastAndRealPM(HttpServletRequest request) throws Exception { |
| | | Map<String, Object> parameters = getParametersStartingWith(request, null); |
| | | List<String> sensorKeys=new ArrayList<>(); |
| | | sensorKeys.add("e1"); |
| | | sensorKeys.add("e2"); |
| | | parameters.put("sensorKeys",sensorKeys); |
| | | List<Map<String, Object>> resultList = weatherService.getForecastAndReal(parameters); |
| | | return new ResultBean<List<Map<String, Object>>>(resultList); |
| | | } |
| | |
| | | for (Map<String, Object> dataMap : dataList) { |
| | | JSONObject dataJson = JSONObject.parseObject(dataMap.get("json").toString()); |
| | | if (dataMap.get("time").toString().equals(day + " 00:00:00.0")) { |
| | | oneSensorMap.put(dataMap.get("time").toString().substring(0, 10), dataJson.getJSONArray(key).get(2)); |
| | | oneSensorMap.put(dataMap.get("time").toString().substring(0, 10), dataJson.getJSONArray(key).get(0)); |
| | | break; |
| | | } else { |
| | | continue; |
| | |
| | | for (Map sameDayHourlyMap : sameDayHourlyList) { |
| | | List<Double> arr = new ArrayList<>(); |
| | | JSONObject hourlyJson = JSONObject.parseObject(sameDayHourlyMap.get("json").toString()); |
| | | arr.add(Double.parseDouble(hourlyJson.getJSONArray(key).get(2).toString())); |
| | | arr.add(Double.parseDouble(hourlyJson.getJSONArray(key).get(0).toString())); |
| | | Double sum = 0.0; |
| | | for (int i = 0; i < arr.size(); i++) { |
| | | sum += arr.get(i); |
| | |
| | | for (Map<String, Object> hourlyMap : hourlyList) { |
| | | JSONObject dataJson = JSONObject.parseObject(hourlyMap.get("json").toString()); |
| | | if (hourlyMap.get("time").toString().equals(hour + ".0")) { |
| | | oneSensorMap.put(hourlyMap.get("time").toString().substring(0, 19), dataJson.getJSONArray(key).get(2)); |
| | | break; |
| | | if (dataJson.getJSONArray(key) != null) { |
| | | oneSensorMap.put(hourlyMap.get("time").toString().substring(0, 19), dataJson.getJSONArray(key).get(0)); |
| | | break; |
| | | } |
| | | } else { |
| | | continue; |
| | | } |
| | |
| | | return deviceList; |
| | | } |
| | | |
| | | @RequestMapping("/getBiaoZhun") |
| | | @ResponseBody |
| | | 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; |
| | | } |
| | | if (mill.length()<2){ |
| | | mill="0"+mill; |
| | | } |
| | | if (second.length()<2){ |
| | | second="0"+second; |
| | | } |
| | | String time = hour+":"+mill+":"+second; |
| | | Map<String, String> value = deviceAdjustValueTiming.getValue(); |
| | | Collection<String> values = value.values(); |
| | | deviceAdjustValueTiming.setSeconds(time); |
| | | } |
| | | return dataByDeviceid; |
| | | } |
| | | |
| | | |
| | | @RequestMapping("/getSensor") |
| | | @ResponseBody |
| | | 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); |
| | | return i; |
| | | } |
| | | |
| | | |
| | | @GetMapping("/monitorAVGData") |
| | | @ApiOperation(value = "monitor平均数据导出", notes = "monitor平均数据导出") |
| | | @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 { |
| | | Map<String, Object> parameters = getParametersStartingWith(request, null); |
| | | String monitorPointIds = (String) parameters.get("monitorPointIds"); |
| | | String time = (String) parameters.get("time"); |
| | | 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()); |
| | | String[] mIds = monitorPointIds.split(","); |
| | | 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); |
| | | 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")!=""){ |
| | | 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 = new HashMap<>(); |
| | | 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)); |
| | | dataAvbByMIdAndTime.add(dayMap); |
| | | 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")); |
| | | } |
| | | }else { |
| | | Map<String, Object> map1 = AQICalculation2.dayAQI((Map<String, Object>) dataAvbByMIdAndTime.get(i).get("data")); |
| | | 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")); |
| | | } |
| | | } |
| | | } |
| | | List timeList = new ArrayList(); |
| | | for (int q = 0; q < dataAvbByMIdAndTime.size(); q++) { |
| | | timeList.add(dataAvbByMIdAndTime.get(q).get("time")); |
| | | } |
| | | if (dataAvbByMIdAndTime.size()<25){ |
| | | for (int j = 1; j < 25; j++) { |
| | | Map<String,Object> map = null; |
| | | for (int q = 0; q < dataAvbByMIdAndTime.size(); q++) { |
| | | 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; |
| | | } |
| | | } |
| | | if (!timeList.contains(sj)){ |
| | | map = new HashMap<>(); |
| | | 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); |
| | | dataAvbByMIdAndTime.add(map); |
| | | break; |
| | | }else { |
| | | break; |
| | | } |
| | | } |
| | | } |
| | | } |
| | | } |
| | | /* for (int i1 = 0; i1 < dataAvbByMIdAndTime.size(); i1++) { |
| | | System.out.println(dataAvbByMIdAndTime.get(i1)); |
| | | }*/ |
| | | 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 |
| | | 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){ |
| | | Map map2 = dataAvbByMIdAndTime.get(j); |
| | | dataAvbByMIdAndTime.remove(j); |
| | | dataAvbByMIdAndTime.add(map2); |
| | | } |
| | | } |
| | | 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); |
| | | 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")!=""){ |
| | | 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 = new HashMap<>(); |
| | | 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)); |
| | | 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){ |
| | | for (int j = 1; j < 25; j++) { |
| | | Map<String,Object> map = null; |
| | | for (int q = 0; q < dataAvbByMIdAndTime.size(); q++) { |
| | | 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; |
| | | } |
| | | } |
| | | if (!timeList.contains(sj)){ |
| | | map = new HashMap<>(); |
| | | 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); |
| | | dataAvbByMIdAndTime.add(map); |
| | | break; |
| | | }else { |
| | | break; |
| | | } |
| | | } |
| | | } |
| | | |
| | | } |
| | | } |
| | | 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 |
| | | 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){ |
| | | Map map2 = dataAvbByMIdAndTime.get(j); |
| | | dataAvbByMIdAndTime.remove(j); |
| | | dataAvbByMIdAndTime.add(map2); |
| | | } |
| | | } |
| | | lists.add(dataAvbByMIdAndTime); |
| | | } |
| | | 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){ |
| | | 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")); |
| | | rList.add(map); |
| | | } |
| | | |
| | | } else if (lists.size()==1 && lists.get(0)==null){ |
| | | rList.add(null); |
| | | }else { |
| | | for (int j = 0; j < lists.get(0).size(); j++) { |
| | | Map<String, Object> listMap = new HashMap(); |
| | | List<Map> mapList = new ArrayList<>(); |
| | | if (lists.get(0).size() == 1) { |
| | | mapList.add(null); |
| | | } else { |
| | | mapList.add((Map) lists.get(0).get(j).get("data")); |
| | | } |
| | | for (int i = 1; i < lists.size(); i++) { |
| | | if (lists.get(i).size() == 1) { |
| | | mapList.add(null); |
| | | listMap.put("data", mapList); |
| | | } else { |
| | | if (lists.get(0).get(j).get("time").equals(lists.get(i).get(j).get("time"))) { |
| | | mapList.add((Map) lists.get(i).get(j).get("data")); |
| | | } |
| | | listMap.put("time", lists.get(0).get(j).get("time")); |
| | | listMap.put("data", mapList); |
| | | } |
| | | } |
| | | rList.add(listMap); |
| | | } |
| | | } |
| | | 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; |
| | | } |
| | | } |