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