| | |
| | | |
| | | 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.*; |
| | | |
| | |
| | | @Api(tags = "Screen", description = "大屏接口") |
| | | public class ScreenController { |
| | | public static Logger log = Logger.getLogger(ScreenController.class); |
| | | |
| | | @Resource |
| | | private HistoryMapper historyMapper; |
| | | @Resource |
| | | AlarmConfigService alarmConfigService; |
| | | @Resource |
| | |
| | | @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<List<Map>>> monitorAVGData(HttpServletRequest request) throws Exception { |
| | | public ResultBean<List<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"); |
| | |
| | | String date1= simpleDateFormat.format(date); |
| | | String date2= simpleDateFormat.format(calendar.getTime()); |
| | | String[] mIds = monitorPointIds.split(","); |
| | | List<List<Map>> lists = new ArrayList<>(); |
| | | List<List<Map<String,Object>>> lists = new ArrayList<>(); |
| | | if (mIds.length==1 && mIds.length!=0){ |
| | | String mId = mIds[0]; |
| | | List<Map> 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")!=""){ |
| | | dailyAvgData = (Map<String, Object>) dataAvbByMIdAndTime.get(dataAvbByMIdAndTime.size() - 2).get("data"); |
| | | dailyAvgData.put("maxO3_8h",new BigDecimal(maxO3).setScale(4,BigDecimal.ROUND_HALF_UP).doubleValue()); |
| | | }else { |
| | | dailyAvgData= historyHourlyService.getAvgDataByMId(mId, date1, date2); |
| | | dailyAvgData.put("maxO3_8h",new BigDecimal(maxO3).setScale(4,BigDecimal.ROUND_HALF_UP).doubleValue()); |
| | | } |
| | | 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 (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")); |
| | | } |
| | | } |
| | | } |
| | | lists.add(dataAvbByMIdAndTime); |
| | | //List<Device> devicesByMonitorPointId = deviceService.getDevicesByMonitorPointId(Integer.valueOf(mId)); |
| | | }else { |
| | | for (int i = 0; i <mIds.length ; i++) { |
| | | List<Map> dataAvbByMIdAndTime = historyHourlyService.getDataAvbByMIdAndTime(mIds[i], date1, date2); |
| | | 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(4,BigDecimal.ROUND_HALF_UP).doubleValue()); |
| | | }else { |
| | | dailyAvgData= historyHourlyService.getAvgDataByMId(mIds[i], date1, date2); |
| | | dailyAvgData.put("maxO3_8h",new BigDecimal(maxO3).setScale(4,BigDecimal.ROUND_HALF_UP).doubleValue()); |
| | | } |
| | | 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); |
| | | lists.add(dataAvbByMIdAndTime); |
| | | } |
| | | List<Map<String, Object>> dataByMonitorPoints = historyHourlyService.getDataByMonitorPoints(mIds, date1, date2); |
| | | lists.add(dataByMonitorPoints); |
| | | } |
| | | return new ResultBean<List<List<Map>>>(lists); |
| | | return new ResultBean<List<List<Map<String,Object>>>>(lists); |
| | | } |
| | | } |