From 53217a560fecddcf8ff5b7583532f49381b14d80 Mon Sep 17 00:00:00 2001 From: 于紫祥_1901 <email@yuzixiang_1910> Date: Mon, 24 Aug 2020 08:38:30 +0800 Subject: [PATCH] 风场图update --- src/main/resources/mapper/DeviceMapper.xml | 24 ++++++++ src/main/resources/mapper/MonitorPointMapper.xml | 3 src/main/java/com/moral/mapper/DeviceMapper.java | 6 + src/main/java/com/moral/service/impl/DeviceServiceImpl.java | 126 ++++++++++++++++++++++++++--------------- 4 files changed, 109 insertions(+), 50 deletions(-) diff --git a/src/main/java/com/moral/mapper/DeviceMapper.java b/src/main/java/com/moral/mapper/DeviceMapper.java index e396c9a..31e2069 100644 --- a/src/main/java/com/moral/mapper/DeviceMapper.java +++ b/src/main/java/com/moral/mapper/DeviceMapper.java @@ -65,10 +65,12 @@ DeviceAndWind getDeviceAndWindByMac(@Param("mac") String mac,@Param("time") String time, @Param("table") String table); - List<DeviceAndWind> byMonitorIdGetDeviceAndWind(@Param("id") int id,@Param("time") String time, - @Param("table") String table); + List<DeviceAndWind> byMonitorIdGetDeviceAndWind(@Param("id") int id,@Param("time") String time, @Param("table") String table); + DeviceAndWind byMacGetDeviceAndWind(@Param("mac") String mac,@Param("time") String time, @Param("table") String table); List<Device> getDeviceListByMonitorPointIds(List<Integer> list); Map<String, Object> selectAllFieldByMac(Map<String, Object> params); + + List getDeviceByCode(Map<String, Object> params); } \ No newline at end of file diff --git a/src/main/java/com/moral/service/impl/DeviceServiceImpl.java b/src/main/java/com/moral/service/impl/DeviceServiceImpl.java index 52bda83..139edf0 100644 --- a/src/main/java/com/moral/service/impl/DeviceServiceImpl.java +++ b/src/main/java/com/moral/service/impl/DeviceServiceImpl.java @@ -720,12 +720,10 @@ @Override public List byMonitorIdGetDeviceAndWind(String id,String time,String tab) { List<DeviceAndWind> deviceAndWinds=deviceMapper.byMonitorIdGetDeviceAndWind(Integer.parseInt(id),time,tab); - System.out.println(time); List loList=new ArrayList(); List laList=new ArrayList(); Double U=0.0; Double V=0.0; - log.info(deviceAndWinds.size()); List list=new ArrayList(); for (DeviceAndWind andWind : deviceAndWinds) { Double lo=andWind.getLongitude(); @@ -869,7 +867,6 @@ 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); @@ -879,25 +876,63 @@ @Override public List byMonitorIdGetDeviceAndWindSpecial(String id, String time, String tab) { - List<DeviceAndWind> deviceAndWinds=deviceMapper.byMonitorIdGetDeviceAndWind(Integer.parseInt(id),time,tab); + + MonitorPoint monitorPoint=monitorPointMapper.byIdGetMonitorPoint(Integer.parseInt(id)); + Integer areaCode=monitorPoint.getAreaCode(); + String townCode= monitorPoint.getTownCode()+""; + 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 { + 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); + 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); @@ -912,17 +947,15 @@ laLaMap.put("maxLa",lama); laLaMap.put("minLa",lami); - Double lo1=lomi-2000*0.00001141; - Double lo2=loma+2000*0.00001141; - Double la2=lami-2000*0.00000899; - Double la1=lama+2000*0.00000899; + 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*70; - Double dy=0.00000899*70; - + 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); - System.out.println(nx+"----"+ny); String header1 = "\"" + "header" + "\"" + ": " + "{" + "\"" + "parameterUnit" + "\"" + ": " + "\"" + "m/s" + "\"" + ", " + "\"" + "parameterNumber" + "\"" + ": " + 2 + ", " + "\"" + "dx" + "\"" + ": " + dx + ", " + "\"" + "dy" + "\"" + ": " + dy + ", " + "\"" + "parameterNumberName" + "\"" + ": " + "\"" + "eastward_wind" + "\"" + ", " + "\"" + "la1" + "\"" + ": " + la1 + ", " + "\"" + "la2" + "\"" + ": " + la2 + @@ -942,31 +975,30 @@ 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(); + 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(); - 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); - 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); + 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"); @@ -1023,7 +1055,7 @@ 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); diff --git a/src/main/resources/mapper/DeviceMapper.xml b/src/main/resources/mapper/DeviceMapper.xml index f62fd7a..a4412cf 100644 --- a/src/main/resources/mapper/DeviceMapper.xml +++ b/src/main/resources/mapper/DeviceMapper.xml @@ -524,4 +524,28 @@ FROM device WHERE mac = #{mac} </select> + <select id="getDeviceByCode" resultType="java.util.List" resultMap="BaseResultMap"> + select d.* from monitor_point as m,device as d where m.id=d.monitor_point_id + and m.id + in + (SELECT m.id where state!=4 + <if test="areaCode != null"> + and area_code = #{areaCode} + </if> + <if test="townCode != null"> + and town_code = #{townCode} + </if> + + + ) + </select> + <select id="byMacGetDeviceAndWind" resultType="com.moral.entity.DeviceAndWind"> + select d.longitude as longitude,d.latitude as latitude, + case when h.json->"$.e18[0]"=0 then 0.1 else h.json->"$.e18[0]" end + as windSpeed, h.json->"$.e23[0]" as windDir, + h.json->"$.e17[0]" as tVoc + from ${table} as h ,`device` as d + where d.mac=h.mac and h.time=#{time} + and d.mac=#{mac} + </select> </mapper> \ No newline at end of file diff --git a/src/main/resources/mapper/MonitorPointMapper.xml b/src/main/resources/mapper/MonitorPointMapper.xml index 90ddde8..b6a90f0 100644 --- a/src/main/resources/mapper/MonitorPointMapper.xml +++ b/src/main/resources/mapper/MonitorPointMapper.xml @@ -9,6 +9,7 @@ <result column="province_code" jdbcType="INTEGER" property="provinceCode"/> <result column="city_code" jdbcType="INTEGER" property="cityCode"/> <result column="area_code" jdbcType="INTEGER" property="areaCode"/> + <result column="town_code" jdbcType="INTEGER" property="townCode"/> <result column="organization_id" jdbcType="INTEGER" property="organizationId"/> <result column="address" jdbcType="VARCHAR" property="address"/> <result column="is_delete" jdbcType="CHAR" property="isDelete"/> @@ -172,7 +173,7 @@ and o.id=mp.organization_id and a.id=#{id}; </select> - <select id="byIdGetMonitorPoint" resultType="com.moral.entity.MonitorPoint"> + <select id="byIdGetMonitorPoint" resultType="com.moral.entity.MonitorPoint" resultMap="BaseResultMap"> SELECT * FROM `monitor_point` where id=#{id} </select> -- Gitblit v1.8.0