From d7ee12cb208473741f79b64505adccd0653e4654 Mon Sep 17 00:00:00 2001
From: jinpengyong <jpy123456>
Date: Tue, 27 Oct 2020 13:44:28 +0800
Subject: [PATCH] vue页面增加误差率参数,沧州剔除非本公司设备显示,报表接口更新
---
src/main/java/com/moral/service/impl/DeviceServiceImpl.java | 433 +++++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 427 insertions(+), 6 deletions(-)
diff --git a/src/main/java/com/moral/service/impl/DeviceServiceImpl.java b/src/main/java/com/moral/service/impl/DeviceServiceImpl.java
index 830090e..dbcb957 100644
--- a/src/main/java/com/moral/service/impl/DeviceServiceImpl.java
+++ b/src/main/java/com/moral/service/impl/DeviceServiceImpl.java
@@ -1,16 +1,12 @@
package com.moral.service.impl;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Date;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
import java.util.stream.Collectors;
import javax.annotation.Resource;
import javax.validation.constraints.NotNull;
+import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.TypeReference;
import com.github.pagehelper.Page;
import com.github.pagehelper.PageHelper;
@@ -22,7 +18,9 @@
import com.moral.common.util.RedisUtils;
import com.moral.common.util.ValidateUtil;
import com.moral.entity.Device;
+import com.moral.entity.DeviceAndWind;
import com.moral.entity.DeviceProperty;
+import com.moral.entity.MonitorPoint;
import com.moral.mapper.DeviceMapper;
import com.moral.mapper.DevicePropertyMapper;
import com.moral.mapper.DeviceVersionMapper;
@@ -31,6 +29,7 @@
import com.moral.mapper.OrganizationMapper;
import com.moral.service.AccountService;
import com.moral.service.DeviceService;
+import com.moral.util.LatLngTransformation;
import com.moral.util.TkMybatisUtils;
import org.apache.commons.collections.MapUtils;
@@ -213,6 +212,7 @@
Integer orgId = Integer.parseInt(orgIdObj.toString());
List<Integer> orgIds = orgMapper.selectLowerOrgIds(orgId);
params.put("orgIds", orgIds);
+ System.out.println(params);
deviceList = deviceMapper.selectByMap(params);
// loadDeviceState(deviceList);
}
@@ -220,6 +220,10 @@
Example.Criteria deviceCriteria = deviceExample.createCriteria();
deviceCriteria.orEqualTo("isDelete", Constants.IS_DELETE_FALSE);
List<Device> devicesInfo = deviceMapper.selectByExample(deviceExample);
+ Example monitorExample = new Example(MonitorPoint.class);//���������
+ Example.Criteria monitorCriteria = monitorExample.createCriteria();
+ monitorCriteria.orEqualTo("isDelete", Constants.IS_DELETE_FALSE);
+ List<MonitorPoint> monitorsInfo = monitorPointMapper.selectByExample(monitorExample);
for (Device d : deviceList) {
if (dv.contains(d.getDeviceVersionId())) {
d.setHasWindInfo(true);
@@ -229,6 +233,11 @@
for (Device temp : devicesInfo) {
if (d.getId().equals(temp.getId())) {
d.setState(temp.getState());
+ }
+ }
+ for (MonitorPoint mp : monitorsInfo) {
+ if (d.getMonitorPointId().equals(mp.getId())) {
+ d.setMonitorPoint(mp);
}
}
}
@@ -667,4 +676,416 @@
public List<Device> getDeviceById3(int id) {
return deviceMapper.getDeviceById3(id);
}
+
+ @Override
+ public List<Device> queryDevice(Map<String, Object> params) {
+ List<Integer> dv = deviceMapper.getHasWindDirAndWindSpeedDeviceVersion();
+ Object orgIdObj = params.get("orgId");
+ List<Device> deviceList = null;
+ if (orgIdObj != null) {
+ Integer orgId = Integer.parseInt(orgIdObj.toString());
+ List<Integer> orgIds = orgMapper.selectLowerOrgIds(orgId);
+ params.put("orgIds", orgIds);
+ deviceList = deviceMapper.selectDevicesAll(params);
+ }
+ List<Device> deviceListHasWind=new ArrayList<>();
+ for (Device d : deviceList) {
+ if (dv.contains(d.getDeviceVersionId())) {
+ deviceListHasWind.add(d);
+ }
+ }
+ return deviceListHasWind;
+ }
+
+ @Override
+ public Map<String, Object> getAllFieldByMac(Map<String, Object> parameters) {
+ Map<String, Object> deviceMap = deviceMapper.selectAllFieldByMac(parameters);
+ return deviceMap;
+ }
+
+ @Override
+ public List<DeviceAndWind> getAllDevice() {
+ return deviceMapper.getAllDevice();
+ }
+
+ @Override
+ public List<String> getAllMac() {
+ return deviceMapper.getAllMac();
+ }
+
+ @Override
+ public Device byMacGetDevice(String mac) {
+ return deviceMapper.byMacGetDevice(mac);
+ }
+
+ @Override
+ public List byMonitorIdGetDeviceAndWind(String id,String time,String tab) {
+ List<DeviceAndWind> deviceAndWinds=deviceMapper.byMonitorIdGetDeviceAndWind(Integer.parseInt(id),time,tab);
+ List loList=new ArrayList();
+ List laList=new ArrayList();
+ Double U=0.0;
+ Double V=0.0;
+ List list=new ArrayList();
+ for (DeviceAndWind andWind : deviceAndWinds) {
+ Double lo=andWind.getLongitude();
+ Double la=andWind.getLatitude();
+ List tranlist= LatLngTransformation.Convert_BD09_To_GCJ02(la,lo);
+ Double transLo=(Double) tranlist.get(0);
+ Double transLa=(Double) tranlist.get(1);
+ loList.add(transLo);
+ laList.add(transLa);
+ }
+ Double loma= 0.0;
+ Double lomi= 0.0;
+ Double lama= 0.0;
+ Double lami= 0.0;
+ if (loList.size()>0){
+ loma= (Double) Collections.max(loList);
+ lomi= (Double) Collections.min(loList);
+ }
+ if (laList.size()>0){
+ lama= (Double) Collections.max(laList);
+ lami= (Double) Collections.min(laList);
+ }
+ Map laLaMap=new HashMap();
+ laLaMap.put("maxLo",loma);
+ laLaMap.put("minLo",lomi);
+ laLaMap.put("maxLa",lama);
+ laLaMap.put("minLa",lami);
+
+ Double lo1=lomi-250*0.00001141;
+ Double lo2=loma+250*0.00001141;
+ Double la2=lami-250*0.00000899;
+ Double la1=lama+250*0.00000899;
+
+ Double dx=0.00001141*20;
+ Double dy=0.00000899*20;
+ int nx=(int) Math.floor((lo2-lo1)/dx);
+ int ny=(int) Math.floor((la1-la2)/dy);
+ String header1 = "\"" + "header" + "\"" + ": " + "{" + "\"" + "parameterUnit" + "\"" + ": " + "\"" + "m/s" + "\"" + ", " + "\"" + "parameterNumber" + "\"" + ": " + 2 +
+ ", " + "\"" + "dx" + "\"" + ": " + dx + ", " + "\"" + "dy" + "\"" + ": " + dy +
+ ", " + "\"" + "parameterNumberName" + "\"" + ": " + "\"" + "eastward_wind" + "\"" + ", " + "\"" + "la1" + "\"" + ": " + la1 + ", " + "\"" + "la2" + "\"" + ": " + la2 +
+ ", " + "\"" + "parameterCategory" + "\"" + ": " + 2 + ", " + "\"" + "lo1" + "\"" + ": " + lo1 + ", " + "\"" + "lo2" + "\"" + ": " + lo2 +
+ ", " + "\"" + "nx" + "\"" + ": " + nx + ", " + "\"" + "ny" + "\"" + ": " + ny + ", " + "\"" + "refTime" + "\"" + ": " + "\"" + "2020-07-22 23:00:00" + "\"" + "}";
+
+ String header2 = "\"" + "header" + "\"" + ": " + "{" + "\"" + "parameterUnit" + "\"" + ": " + "\"" + "m/s" + "\"" + ", " + "\"" + "parameterNumber" + "\"" + ": " + 3 +
+ ", " + "\"" + "dx" + "\"" + ": " + dx + ", " + "\"" + "dy" + "\"" + ": " + dy +
+ ", " + "\"" + "parameterNumberName" + "\"" + ": " + "\"" + "eastward_wind" + "\"" + ", " + "\"" + "la1" + "\"" + ": " + la1 + ", " + "\"" + "la2" + "\"" + ": " + la2 +
+ ", " + "\"" + "parameterCategory" + "\"" + ": " + 2 + ", " + "\"" + "lo1" + "\"" + ": " + lo1 + ", " + "\"" + "lo2" + "\"" + ": " + lo2 +
+ ", " + "\"" + "nx" + "\"" + ": " + nx + ", " + "\"" + "ny" + "\"" + ": " + ny + ", " + "\"" + "refTime" + "\"" + ": " + "\"" + "2020-07-22 23:00:00" + "\"" + "}";
+
+ List<Double> uList=new ArrayList<Double> ();
+ List<Double> vList=new ArrayList<Double> ();
+ int x=0;
+ int y=0;
+ List<Map> mapList=new ArrayList<Map>();
+
+ for (int j = 0; j <deviceAndWinds.size() ; j++) {
+ Map<String,Double> map=new HashMap<String,Double> ();
+ Double windDir= deviceAndWinds.get(j).getWindDir();
+
+ Double windSpeed=deviceAndWinds.get(j).getWindSpeed();
+ if (windDir==null){
+ windDir=0.0;
+ windSpeed=0.0;
+ }
+ Double tvoc=deviceAndWinds.get(j).getTVoc();
+
+ List tranlist= LatLngTransformation.Convert_BD09_To_GCJ02(deviceAndWinds.get(j).getLatitude(),deviceAndWinds.get(j).getLongitude());
+ Double transLo=(Double) tranlist.get(0);
+ Double transLa=(Double) tranlist.get(1);
+ if (tvoc==null){
+ tvoc=0.0;
+ }
+ Double dir = (270.0 - windDir * Math.PI / 180.0);
+
+ U = windSpeed * Math.cos(dir);
+ V = windSpeed * Math.sin(dir);
+ map.put("lo",transLo);
+ map.put("la",transLa);
+ map.put("U",U);
+ map.put("V",V);
+ mapList.add(map);
+ }
+ for (int i = 0; i <mapList.size() ; i++) {
+ Double lo= (Double) mapList.get(i).get("lo");
+ Double la= (Double) mapList.get(i).get("la");
+ x= (int) Math.floor((lo-lo1)/dx);
+ y=Math.abs((int)Math.floor((la-la1)/dy));
+ //y=Math.floor(Math.abs(la-la1)/dy);
+ U=(Double) mapList.get(i).get("U");
+ V=(Double) mapList.get(i).get("V");
+ if (i==0){
+ for (int j = 0; j <nx*ny ; j++) {
+ uList.add(0.0);
+ vList.add(0.0);
+ }
+ }
+ for (int j = 0; j <nx*ny ; j++) {
+ if (i==0){
+ if ((y>=2 && j==(y)*nx+x)){
+ int k;
+ for (k = j-2*nx; k <=j+2*nx ;k=k+nx) {
+ uList.set(k,U);
+ uList.set(k-1,U);
+ uList.set(k-2,U);
+ uList.set(k+1,U);
+ uList.set(k+2,U);
+ vList.set(k,V);
+ vList.set(k-1,V);
+ vList.set(k-2,V);
+ vList.set(k+1,V);
+ vList.set(k+2,V);
+ }
+ }
+ }else {
+ if (y>=1 && j==y*nx+x){
+ int k;
+ for (k = j-2*nx; k <=j+2*nx ;) {
+ uList.set(k-1,U);
+ uList.set(k-2,U);
+ uList.set(k+1,U);
+ uList.set(k+2,U);
+ vList.set(k-1,V);
+ vList.set(k-2,V);
+ vList.set(k+1,V);
+ vList.set(k+2,V);
+ k=k+nx;
+ }
+ uList.set(j,U);
+ vList.set(j,V);
+ }
+ }
+ }
+ }
+ String uData = "\"" + "data" + "\"" + ": " + uList;
+ String vData = "\"" + "data" + "\"" + ": " + vList;
+ String s1 = "[" + "{" + header1 + ", " + uData + "}" + ", " + "{" + header2 + ", " + vData + "}" + "]";
+ JSONArray jsonArray = JSONArray.parseArray(s1);
+ MonitorPoint monitorPoint=monitorPointMapper.byIdGetMonitorPoint(Integer.parseInt(id));
+ Double monitorLo=monitorPoint.getLongitude();
+ Double monitorLa=monitorPoint.getLatitude();
+ List transList= LatLngTransformation.Convert_BD09_To_GCJ02(monitorLa,monitorLo);
+ Double transLo=(Double) transList.get(0);
+ Double transLa=(Double) transList.get(1);
+ list.add(jsonArray);
+ list.add(transLo);
+ list.add(transLa);
+ list.add(laLaMap);
+ return list;
+ }
+
+ @Override
+ public List byMonitorIdGetDeviceAndWindSpecial(String id, String time, String tab) {
+ MonitorPoint monitorPoint=monitorPointMapper.byIdGetMonitorPoint(Integer.parseInt(id));
+ Integer areaCode=monitorPoint.getAreaCode();
+ String townCode= monitorPoint.getTownCode()+"";
+ int monitorPointId=monitorPoint.getId();
+ Map<String, Object> parm=new HashMap<>();
+ List<DeviceAndWind> deviceAndWinds=new ArrayList<>();
+ Double loma= 0.0;
+ Double lomi= 0.0;
+ Double lama= 0.0;
+ Double lami= 0.0;
+
+ int length=1;
+ int perdlen=1;
+ if (areaCode==320581){
+ parm.put("areaCode",areaCode);
+ List<Device> deviceList=deviceMapper.getDeviceByCode(parm);
+ for (Device d : deviceList) {
+ String mac=d.getMac();
+ DeviceAndWind deviceAndWind = deviceMapper.byMacGetDeviceAndWind(mac,time,tab);
+ if (deviceAndWind!=null){
+ deviceAndWinds.add(deviceAndWind);
+ }
+ }
+ length=8000;
+ perdlen=2200;
+ }else if ((areaCode == 320583) && (townCode.equals("320583108000"))){
+ parm.put("townCode",townCode);
+ List<Device> deviceList=deviceMapper.getDeviceByCode(parm);
+ for (Device d : deviceList) {
+ String mac=d.getMac();
+ DeviceAndWind deviceAndWind = deviceMapper.byMacGetDeviceAndWind(mac,time,tab);
+ if (deviceAndWind!=null){
+ deviceAndWinds.add(deviceAndWind);
+ }
+ }
+ length=2000;
+ perdlen=280;
+ }else if(monitorPointId==35){
+ DeviceAndWind deviceAndWind=deviceMapper.getDeviceAndWindByMac("898607b0101730392253",time,tab);
+ DeviceAndWind deviceAndWind1=deviceMapper.getDeviceAndWindByMac("p5dnd7a0392083",time,tab);
+ deviceAndWinds.add(deviceAndWind);
+ deviceAndWinds.add(deviceAndWind1);
+ length=2000;
+ perdlen=50;
+
+ }else {
+ deviceAndWinds=deviceMapper.byMonitorIdGetDeviceAndWind(Integer.parseInt(id),time,tab);
+ length=2000;
+ perdlen=80;
+ }
+ List loList=new ArrayList();
+ List laList=new ArrayList();
+ Double U=0.0;
+ Double V=0.0;
+ List list=new ArrayList();
+ for (DeviceAndWind andWind : deviceAndWinds) {
+ Double lo=andWind.getLongitude();
+ Double la=andWind.getLatitude();
+ List tranlist= LatLngTransformation.Convert_BD09_To_GCJ02(la,lo);
+ Double transLo=(Double) tranlist.get(0);
+ Double transLa=(Double) tranlist.get(1);
+ loList.add(transLo);
+ laList.add(transLa);
+ }
+
+ if (loList.size()>0){
+ loma= (Double) Collections.max(loList);
+ lomi= (Double) Collections.min(loList);
+ }
+ if (laList.size()>0){
+ lama= (Double) Collections.max(laList);
+ lami= (Double) Collections.min(laList);
+ }
+ Map laLaMap=new HashMap();
+ laLaMap.put("maxLo",loma);
+ laLaMap.put("minLo",lomi);
+ laLaMap.put("maxLa",lama);
+ laLaMap.put("minLa",lami);
+
+ Double lo1=lomi-length*0.00001141;
+ Double lo2=loma+length*0.00001141;
+ Double la2=lami-length*0.00000899;
+ Double la1=lama+length*0.00000899;
+
+ Double dx=0.00001141*perdlen;
+ Double dy=0.00000899*perdlen;
+ int nx=(int) Math.floor((lo2-lo1)/dx);
+ int ny=(int) Math.floor((la1-la2)/dy);
+ String header1 = "\"" + "header" + "\"" + ": " + "{" + "\"" + "parameterUnit" + "\"" + ": " + "\"" + "m/s" + "\"" + ", " + "\"" + "parameterNumber" + "\"" + ": " + 2 +
+ ", " + "\"" + "dx" + "\"" + ": " + dx + ", " + "\"" + "dy" + "\"" + ": " + dy +
+ ", " + "\"" + "parameterNumberName" + "\"" + ": " + "\"" + "eastward_wind" + "\"" + ", " + "\"" + "la1" + "\"" + ": " + la1 + ", " + "\"" + "la2" + "\"" + ": " + la2 +
+ ", " + "\"" + "parameterCategory" + "\"" + ": " + 2 + ", " + "\"" + "lo1" + "\"" + ": " + lo1 + ", " + "\"" + "lo2" + "\"" + ": " + lo2 +
+ ", " + "\"" + "nx" + "\"" + ": " + nx + ", " + "\"" + "ny" + "\"" + ": " + ny + ", " + "\"" + "refTime" + "\"" + ": " + "\"" + "2020-07-22 23:00:00" + "\"" + "}";
+
+ String header2 = "\"" + "header" + "\"" + ": " + "{" + "\"" + "parameterUnit" + "\"" + ": " + "\"" + "m/s" + "\"" + ", " + "\"" + "parameterNumber" + "\"" + ": " + 3 +
+ ", " + "\"" + "dx" + "\"" + ": " + dx + ", " + "\"" + "dy" + "\"" + ": " + dy +
+ ", " + "\"" + "parameterNumberName" + "\"" + ": " + "\"" + "eastward_wind" + "\"" + ", " + "\"" + "la1" + "\"" + ": " + la1 + ", " + "\"" + "la2" + "\"" + ": " + la2 +
+ ", " + "\"" + "parameterCategory" + "\"" + ": " + 2 + ", " + "\"" + "lo1" + "\"" + ": " + lo1 + ", " + "\"" + "lo2" + "\"" + ": " + lo2 +
+ ", " + "\"" + "nx" + "\"" + ": " + nx + ", " + "\"" + "ny" + "\"" + ": " + ny + ", " + "\"" + "refTime" + "\"" + ": " + "\"" + "2020-07-22 23:00:00" + "\"" + "}";
+
+ List<Double> uList=new ArrayList<Double> ();
+ List<Double> vList=new ArrayList<Double> ();
+ int x=0;
+ int y=0;
+ List<Map> mapList=new ArrayList<Map>();
+
+ for (int j = 0; j <deviceAndWinds.size() ; j++) {
+ Map<String,Double> map=new HashMap<String,Double> ();
+ Double windDir= deviceAndWinds.get(j).getWindDir();
+ Double windSpeed=deviceAndWinds.get(j).getWindSpeed();
+ if (windDir==null){
+ windDir=0.0;
+ windSpeed=0.0;
+ }
+ Double tvoc=deviceAndWinds.get(j).getTVoc();
+
+ List tranlist= LatLngTransformation.Convert_BD09_To_GCJ02(deviceAndWinds.get(j).getLatitude(),deviceAndWinds.get(j).getLongitude());
+ Double transLo=(Double) tranlist.get(0);
+ Double transLa=(Double) tranlist.get(1);
+ if (tvoc==null){
+ tvoc=0.0;
+ }
+ Double dir = (270.0 - windDir * Math.PI / 180.0);
+
+ U = windSpeed * Math.cos(dir);
+ V = windSpeed * Math.sin(dir);
+ map.put("lo",transLo);
+ map.put("la",transLa);
+ map.put("U",U);
+ map.put("V",V);
+ mapList.add(map);
+ }
+ for (int i = 0; i <mapList.size() ; i++) {
+ Double lo= (Double) mapList.get(i).get("lo");
+ Double la= (Double) mapList.get(i).get("la");
+ x= (int) Math.floor((lo-lo1)/dx);
+ y=Math.abs((int)Math.floor((la-la1)/dy));
+ //y=Math.floor(Math.abs(la-la1)/dy);
+ U=(Double) mapList.get(i).get("U");
+ V=(Double) mapList.get(i).get("V");
+ if (i==0){
+ for (int j = 0; j <nx*ny ; j++) {
+ uList.add(0.0);
+ vList.add(0.0);
+ }
+ }
+ for (int j = 0; j <nx*ny ; j++) {
+ if (i==0){
+ if ((y>=2 && j==(y)*nx+x)){
+ int k;
+ for (k = j-2*nx; k <=j+2*nx ;k=k+nx) {
+ uList.set(k,U);
+ uList.set(k-1,U);
+ uList.set(k-2,U);
+ uList.set(k+1,U);
+ uList.set(k+2,U);
+ vList.set(k,V);
+ vList.set(k-1,V);
+ vList.set(k-2,V);
+ vList.set(k+1,V);
+ vList.set(k+2,V);
+ }
+ }
+ }else {
+ if (y>=1 && j==y*nx+x){
+ int k;
+ for (k = j-2*nx; k <=j+2*nx ;) {
+ uList.set(k-1,U);
+ uList.set(k-2,U);
+ uList.set(k+1,U);
+ uList.set(k+2,U);
+ vList.set(k-1,V);
+ vList.set(k-2,V);
+ vList.set(k+1,V);
+ vList.set(k+2,V);
+ k=k+nx;
+ }
+ uList.set(j,U);
+ vList.set(j,V);
+ }
+ }
+ }
+ }
+ String uData = "\"" + "data" + "\"" + ": " + uList;
+ String vData = "\"" + "data" + "\"" + ": " + vList;
+ String s1 = "[" + "{" + header1 + ", " + uData + "}" + ", " + "{" + header2 + ", " + vData + "}" + "]";
+ JSONArray jsonArray = JSONArray.parseArray(s1);
+
+ Double monitorLo=monitorPoint.getLongitude();
+ Double monitorLa=monitorPoint.getLatitude();
+ List transList= LatLngTransformation.Convert_BD09_To_GCJ02(monitorLa,monitorLo);
+ Double transLo=(Double) transList.get(0);
+ Double transLa=(Double) transList.get(1);
+
+ list.add(jsonArray);
+ list.add(transLo);
+ list.add(transLa);
+ list.add(laLaMap);
+ return list;
+ }
+
+ @Override
+ public List<Device> getDeviceByCodeAndId(String code, String id) {
+ return deviceMapper.getDeviceByCodeAndId(code,id);
+ }
+
+ @Override
+ public String byMacGetOrgId(String mac) {
+ return deviceMapper.byMacGetOrgId(mac);
+ }
+
}
--
Gitblit v1.8.0