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<MonitorPoint> randpoint = mgrService.randpoint();
|
|
LinkedHashMap<String, List<Equipment>> point_equ = new LinkedHashMap<String, List<Equipment>>();
|
|
|
for (MonitorPoint point:randpoint){
|
String name = point.getName();
|
List<Equipment> equipments = mgrService.pointequ(name);
|
if (equipments.size()>0){
|
point_equ.put(name,equipments);
|
}
|
}
|
|
|
Set<Map.Entry<String, List<Equipment>>> entries = point_equ.entrySet();
|
Iterator<Map.Entry<String, List<Equipment>>> iterator = entries.iterator();
|
|
ArrayList<PointAvg> pointAvgs = new ArrayList<PointAvg>();
|
|
//所有平均构成 最终的平均
|
double[] totle={0,0,0,0,0,0};// pm2.5 pm10,co,no2,so2,o3
|
while (iterator.hasNext()){ //点
|
Map.Entry<String, List<Equipment>> next = iterator.next();
|
String name = next.getKey();
|
List<Equipment> equipments = next.getValue();
|
|
//设备的平均-->组成监测点的平均
|
double[] equsv={0,0,0,0,0,0};
|
for(Equipment e:equipments ){ //设备
|
String mac = e.getMac();
|
List<State> 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 <equsv.length; i++) {
|
equsv[i]=equsv[i]/size;
|
}
|
|
for (int i = 0; i < totle.length; i++) {
|
totle[i]+=equsv[i];
|
}
|
|
//构建监测点
|
PointAvg pa = new PointAvg();
|
pa.setName(name);
|
pa.setPm25(equsv[0]);
|
pa.setPm10(equsv[1]);
|
pa.setCo(equsv[2]);
|
pa.setNo2(equsv[3]);
|
pa.setSo2(equsv[4]);
|
pa.setO3(equsv[5]);
|
pointAvgs.add(pa);
|
|
}
|
|
//总平均
|
int size = entries.size();
|
for (int i = 0; i < totle.length; i++) {
|
totle[i]=totle[i]/size;
|
totle[i] = Round.digit(totle[i], 0);
|
}
|
|
Map<String, Object> data = new LinkedHashMap<String, Object>();
|
data.put("data",pointAvgs);
|
data.put("avg",totle);
|
return data;
|
}
|
|
|
|
|
@RequestMapping(value = "top100")
|
@ResponseBody
|
public String top100(){
|
|
List<MonitorPoint> randpoint = mgrService.allpoint();
|
|
LinkedHashMap<String, List<Equipment>> point_equ = new LinkedHashMap<String, List<Equipment>>();
|
|
|
|
for (MonitorPoint point:randpoint){
|
String name = point.getName();
|
List<Equipment> equipments = mgrService.pointequ(name);
|
if (equipments.size()>0){
|
point_equ.put(name,equipments);
|
}
|
}
|
|
|
|
Set<Map.Entry<String, List<Equipment>>> entries = point_equ.entrySet();
|
Iterator<Map.Entry<String, List<Equipment>>> iterator = entries.iterator();
|
|
ArrayList<PointAvg> pointAvgs = new ArrayList<PointAvg>();
|
|
//所有平均构成 最终的平均
|
double[] totle={0,0,0,0,0,0};// pm2.5 pm10,co,no2,so2,o3
|
while (iterator.hasNext()){ //点
|
Map.Entry<String, List<Equipment>> next = iterator.next();
|
String name = next.getKey();
|
List<Equipment> equipments = next.getValue();
|
|
//设备的平均-->组成监测点的平均
|
double[] equsv={0,0,0,0,0,0};
|
for(Equipment e:equipments ){ //设备
|
String mac = e.getMac();
|
List<State> 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 <equsv.length; i++) {
|
equsv[i]=equsv[i]/size;
|
}
|
|
for (int i = 0; i < totle.length; i++) {
|
totle[i]+=equsv[i];
|
|
}
|
|
//构建监测点
|
PointAvg pa = new PointAvg();
|
pa.setName(name);
|
pa.setPm25(equsv[0]);
|
pa.setPm10(equsv[1]);
|
pa.setCo(equsv[2]);
|
pa.setNo2(equsv[3]);
|
pa.setSo2(equsv[4]);
|
pa.setO3(equsv[5]);
|
pointAvgs.add(pa);
|
|
}
|
|
//总平均
|
int size = entries.size();
|
for (int i = 0; i < totle.length; i++) {
|
totle[i]=totle[i]/size;
|
totle[i] = Round.digit(totle[i], 0);
|
}
|
|
|
|
Map<String, Object> data = new LinkedHashMap<String, Object>();
|
Collections.sort(pointAvgs);
|
|
ArrayList<PointAvg> top100 = new ArrayList<PointAvg>();
|
ArrayList<PointAvg> top10 = new ArrayList<PointAvg>();
|
ArrayList<PointAvg> last10 = new ArrayList<PointAvg>();
|
|
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<String, Object> map = new LinkedHashMap<String, Object>();
|
|
List<PointAvg> pointAvgs = mgrService.allPointsData(queryHelper);
|
|
int total = mgrService.pointcount(queryHelper);
|
|
for (PointAvg pointavg:pointAvgs){
|
String name = pointavg.getName();
|
List<Equipment> equipments = mgrService.pointequ(name);
|
|
|
|
//设备的平均-->组成监测点的平均
|
double[] equsv={0,0,0,0,0,0};
|
for(Equipment e:equipments ){ //设备
|
String mac = e.getMac();
|
List<State> 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 <equsv.length; i++) {
|
equsv[i]=equsv[i]/size;
|
}
|
pointavg.setPm25(equsv[0]);
|
pointavg.setPm10(equsv[0]);
|
pointavg.setCo(equsv[0]);
|
pointavg.setNo2(equsv[0]);
|
pointavg.setSo2(equsv[0]);
|
pointavg.setO3(equsv[0]);
|
pointavg.setEqucount(size);
|
}
|
|
}
|
|
|
map.put("rows",pointAvgs);
|
|
|
|
map.put("total",total);
|
|
System.out.println(1212);
|
return map;
|
}
|
|
|
|
|
|
|
}
|