package com.moral.monitor.controller; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.serializer.SerializerFeature; import com.moral.monitor.entity.*; import com.moral.monitor.service.MgrService; import com.moral.monitor.util.Round; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody; import javax.annotation.Resource; import java.util.*; /** * Created by a on 2017/7/19. */ @Controller public class MgrController { @Resource MgrService mgrService; @RequestMapping(value = "randpoint") @ResponseBody public Map randpoint(){ List randpoint = mgrService.randpoint(); LinkedHashMap> point_equ = new LinkedHashMap>(); for (MonitorPoint point:randpoint){ String name = point.getName(); List equipments = mgrService.pointequ(name); if (equipments.size()>0){ point_equ.put(name,equipments); } } Set>> entries = point_equ.entrySet(); Iterator>> iterator = entries.iterator(); ArrayList pointAvgs = new ArrayList(); //所有平均构成 最终的平均 double[] totle={0,0,0,0,0,0};// pm2.5 pm10,co,no2,so2,o3 while (iterator.hasNext()){ //点 Map.Entry> next = iterator.next(); String name = next.getKey(); List equipments = next.getValue(); //设备的平均-->组成监测点的平均 double[] equsv={0,0,0,0,0,0}; for(Equipment e:equipments ){ //设备 String mac = e.getMac(); List equsensorstate = mgrService.equsensorstate(mac); for (State s:equsensorstate){ //设备传感器 String sensor = s.getSensor(); if (sensor.equals("Pm2.5")){ double mac_value = s.getMac_value(); equsv[0]+=mac_value; }else if (sensor.equals("Pm10")){ double mac_value = s.getMac_value(); equsv[1]+=mac_value; }else if (sensor.equals("一氧化碳(CO)")){ double mac_value = s.getMac_value(); equsv[2]+=mac_value; }else if (sensor.equals("二氧化氮(NO2)")){ double mac_value = s.getMac_value(); equsv[3]+=mac_value; }else if (sensor.equals("二氧化硫(SO2)")){ double mac_value = s.getMac_value(); equsv[4]+=mac_value; }else if (sensor.equals("臭氧(O3)")){ double mac_value = s.getMac_value(); equsv[5]+=mac_value; } } } int size = equipments.size(); for (int i = 0; i data = new LinkedHashMap(); data.put("data",pointAvgs); data.put("avg",totle); return data; } @RequestMapping(value = "top100") @ResponseBody public String top100(){ List randpoint = mgrService.allpoint(); LinkedHashMap> point_equ = new LinkedHashMap>(); for (MonitorPoint point:randpoint){ String name = point.getName(); List equipments = mgrService.pointequ(name); if (equipments.size()>0){ point_equ.put(name,equipments); } } Set>> entries = point_equ.entrySet(); Iterator>> iterator = entries.iterator(); ArrayList pointAvgs = new ArrayList(); //所有平均构成 最终的平均 double[] totle={0,0,0,0,0,0};// pm2.5 pm10,co,no2,so2,o3 while (iterator.hasNext()){ //点 Map.Entry> next = iterator.next(); String name = next.getKey(); List equipments = next.getValue(); //设备的平均-->组成监测点的平均 double[] equsv={0,0,0,0,0,0}; for(Equipment e:equipments ){ //设备 String mac = e.getMac(); List equsensorstate = mgrService.equsensorstate(mac); for (State s:equsensorstate){ //设备传感器 String sensor = s.getSensor(); if (sensor.equals("Pm2.5")){ double mac_value = s.getMac_value(); equsv[0]+=mac_value; }else if (sensor.equals("Pm10")){ double mac_value = s.getMac_value(); equsv[1]+=mac_value; }else if (sensor.equals("一氧化碳(CO)")){ double mac_value = s.getMac_value(); equsv[2]+=mac_value; }else if (sensor.equals("二氧化氮(NO2)")){ double mac_value = s.getMac_value(); equsv[3]+=mac_value; }else if (sensor.equals("二氧化硫(SO2)")){ double mac_value = s.getMac_value(); equsv[4]+=mac_value; }else if (sensor.equals("臭氧(O3)")){ double mac_value = s.getMac_value(); equsv[5]+=mac_value; } } } int size = equipments.size(); for (int i = 0; i data = new LinkedHashMap(); Collections.sort(pointAvgs); ArrayList top100 = new ArrayList(); ArrayList top10 = new ArrayList(); ArrayList last10 = new ArrayList(); int s = pointAvgs.size(); if(s<=100){ //取出所有 for(PointAvg i:pointAvgs){ top100.add(i); } }else { for (int i=0;i<100;i++){ //取出前100 PointAvg v = pointAvgs.get(i); top100.add(v); } } //前十后十 if(s<=10){ for(PointAvg i:pointAvgs){ //取出前10 top10.add(i); } //取出last10 for (int i =s-1; i >= 0; i--) { PointAvg v = pointAvgs.get(i); last10.add(v); } }else { for (int i=0;i<10;i++){ //取出前10 PointAvg v = pointAvgs.get(i); top10.add(v); } //取出last10 for (int i =s-1; i >=s-10; i--) { PointAvg v = pointAvgs.get(i); last10.add(v); } } data.put("top100",top100); data.put("top10",top10); data.put("last10",last10); String s1 = JSON.toJSONString(data, SerializerFeature.DisableCircularReferenceDetect); System.out.println(s1); return s1; } @RequestMapping("/allPointInstantData") @ResponseBody public Map allPointInstantData(@RequestBody QueryHelper queryHelper){ String search = queryHelper.getSearch(); String trim = queryHelper.getSearch().trim(); if(trim.equals("")){ queryHelper.setSearch(""); } LinkedHashMap map = new LinkedHashMap(); List pointAvgs = mgrService.allPointsData(queryHelper); int total = mgrService.pointcount(queryHelper); for (PointAvg pointavg:pointAvgs){ String name = pointavg.getName(); List equipments = mgrService.pointequ(name); //设备的平均-->组成监测点的平均 double[] equsv={0,0,0,0,0,0}; for(Equipment e:equipments ){ //设备 String mac = e.getMac(); List equsensorstate = mgrService.equsensorstate(mac); for (State s:equsensorstate){ //设备传感器 String sensor = s.getSensor(); if (sensor.equals("Pm2.5")){ double mac_value = s.getMac_value(); equsv[0]+=mac_value; }else if (sensor.equals("Pm10")){ double mac_value = s.getMac_value(); equsv[1]+=mac_value; }else if (sensor.equals("一氧化碳(CO)")){ double mac_value = s.getMac_value(); equsv[2]+=mac_value; }else if (sensor.equals("二氧化氮(NO2)")){ double mac_value = s.getMac_value(); equsv[3]+=mac_value; }else if (sensor.equals("二氧化硫(SO2)")){ double mac_value = s.getMac_value(); equsv[4]+=mac_value; }else if (sensor.equals("臭氧(O3)")){ double mac_value = s.getMac_value(); equsv[5]+=mac_value; } } } int size = equipments.size(); if(size>0){ for (int i = 0; i