From f55f6e05bae945d275101592782fb3b8980d77cf Mon Sep 17 00:00:00 2001
From: ZhuDongming <773644075@qq.com>
Date: Sun, 28 Jun 2020 15:26:47 +0800
Subject: [PATCH] update风速风向显示设置

---
 src/main/webapp/img/icoWind06.png                            |    0 
 src/main/resources/mapper/DeviceMapper.xml                   |   19 ++++++
 src/main/webapp/img/icoWind04.png                            |    0 
 src/main/webapp/img/icoWind01.png                            |    0 
 src/main/webapp/js/newmoralmap.js                            |   93 +++++++++++++++++++++++--------
 src/main/webapp/img/icoWind08.png                            |    0 
 src/main/java/com/moral/service/impl/DeviceServiceImpl.java  |    8 ++
 src/main/webapp/view/newmap.jsp                              |    6 +
 src/main/java/com/moral/entity/Device.java                   |    3 +
 src/main/webapp/img/icoWind05.png                            |    0 
 /dev/null                                                    |    0 
 src/main/webapp/img/icoWind07.png                            |    0 
 src/main/webapp/img/icoWind02.png                            |    0 
 src/main/webapp/img/icoWind03.png                            |    0 
 src/main/java/com/moral/mapper/DeviceMapper.java             |    5 +
 src/main/java/com/moral/webSocketServer/WebSocketServer.java |   15 ++++
 src/main/java/com/moral/controller/ScreenController.java     |    9 +++
 17 files changed, 128 insertions(+), 30 deletions(-)

diff --git a/src/main/java/com/moral/controller/ScreenController.java b/src/main/java/com/moral/controller/ScreenController.java
index 030a524..8127aaa 100644
--- a/src/main/java/com/moral/controller/ScreenController.java
+++ b/src/main/java/com/moral/controller/ScreenController.java
@@ -620,6 +620,15 @@
 
     @RequestMapping(value = "/get-devices", method = RequestMethod.GET)
     @ResponseBody
+    @ApiOperation(value = "������������", notes = "������������")
+    @ApiImplicitParams(value = {
+            @ApiImplicitParam(name = "orgId",defaultValue = "5", value = "������Id", required = true, paramType = "query", dataType = "Integer"),
+            @ApiImplicitParam(name = "regionCode",defaultValue = "320583", value = "������������", required = true, paramType = "query", dataType = "String"),
+            @ApiImplicitParam(name = "Fe", defaultValue = "31.485018",value = "���������������", required = true, paramType = "query", dataType = "String"),
+            @ApiImplicitParam(name = "Ge", defaultValue = "121.378395",value = "���������������", required = true, paramType = "query", dataType = "String"),
+            @ApiImplicitParam(name = "Ke", defaultValue = "31.296614",value = "���������������", required = true, paramType = "query", dataType = "String"),
+            @ApiImplicitParam(name = "Le", defaultValue = "120.59651",value = "���������������", required = true, paramType = "query", dataType = "String")
+    })
     public ResultBean getDevices(@RequestParam("orgId") Integer orgId, MapBounds mapBounds,
                                  @RequestParam("regionCode") String regionCode) {
         ResultBean<List<Device>> resultBean = new ResultBean();
diff --git a/src/main/java/com/moral/entity/Device.java b/src/main/java/com/moral/entity/Device.java
index 1c01911..a69aa52 100644
--- a/src/main/java/com/moral/entity/Device.java
+++ b/src/main/java/com/moral/entity/Device.java
@@ -119,4 +119,7 @@
     private Profession profession;
     @Transient
     private DeviceProperty deviceProperty;
+
+	@Transient
+	private Boolean hasWindInfo;
 }
\ No newline at end of file
diff --git a/src/main/java/com/moral/mapper/DeviceMapper.java b/src/main/java/com/moral/mapper/DeviceMapper.java
index 90a7ac3..2aa2714 100644
--- a/src/main/java/com/moral/mapper/DeviceMapper.java
+++ b/src/main/java/com/moral/mapper/DeviceMapper.java
@@ -4,11 +4,10 @@
 import java.util.List;
 import java.util.Map;
 
-import org.apache.ibatis.annotations.Param;
-
 import com.moral.common.mapper.BaseMapper;
 import com.moral.entity.Device;
 
+import org.apache.ibatis.annotations.Param;
 import tk.mybatis.mapper.entity.Example;
 
 public interface DeviceMapper extends BaseMapper<Device>{
@@ -51,4 +50,6 @@
 	List<Device> getDeviceById2(@Param("id") int id);
 
 	List<Device> getDeviceById3(@Param("id") int id);
+
+	List<Integer> getHasWindDirAndWindSpeedDeviceVersion();
 }
\ 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 5311f2e..b3d7066 100644
--- a/src/main/java/com/moral/service/impl/DeviceServiceImpl.java
+++ b/src/main/java/com/moral/service/impl/DeviceServiceImpl.java
@@ -206,6 +206,7 @@
      */
     @Override
     public List<Device> query(Map<String, Object> params) {
+        List<Integer> dv = deviceMapper.getHasWindDirAndWindSpeedDeviceVersion();
         Object orgIdObj = params.get("orgId");
         List<Device> deviceList = null;
         if (orgIdObj != null) {
@@ -215,6 +216,13 @@
             deviceList = deviceMapper.selectByMap(params);
             // loadDeviceState(deviceList);
         }
+      for(Device d:deviceList){
+            if(dv.contains(d.getDeviceVersionId())){
+                d.setHasWindInfo(true);
+            }else{
+                d.setHasWindInfo(false);
+            }
+      }
         return deviceList;
     }
 
diff --git a/src/main/java/com/moral/webSocketServer/WebSocketServer.java b/src/main/java/com/moral/webSocketServer/WebSocketServer.java
index 33d06c8..59a9783 100644
--- a/src/main/java/com/moral/webSocketServer/WebSocketServer.java
+++ b/src/main/java/com/moral/webSocketServer/WebSocketServer.java
@@ -2,6 +2,7 @@
 
 import java.io.IOException;
 import java.util.concurrent.CopyOnWriteArraySet;
+import java.util.concurrent.TimeoutException;
 
 import javax.websocket.OnClose;
 import javax.websocket.OnError;
@@ -38,6 +39,10 @@
 
     private String regionCode;
 
+    private Connection connection;
+
+    private Channel channel;
+
     // ������session���������������������������
     private static CopyOnWriteArraySet<WebSocketServer> webSocketSet = new CopyOnWriteArraySet<WebSocketServer>();
 
@@ -64,8 +69,8 @@
             factory.setUsername("guest");
             factory.setPassword("guest_pass");
             String routingKey = orgId+".*";
-            Connection connection = factory.newConnection();
-            Channel channel = connection.createChannel();
+            connection = factory.newConnection();
+            channel = connection.createChannel();
             //���������������������������������������������������������������������������������������������������������
             channel.queueDeclare(QUEUE_NAME, false, false, true, null);
             channel.queueBind(QUEUE_NAME,"screens_data",routingKey);
@@ -93,6 +98,12 @@
     public void onClose() {
         /**���������Set��� ������������������������*/
         webSocketSet.remove(this);
+        try {
+            channel.close();
+            connection.close();
+        }catch (IOException | TimeoutException e){
+            log.error(e.getMessage());
+        }
     }
 
     @OnMessage
diff --git a/src/main/resources/mapper/DeviceMapper.xml b/src/main/resources/mapper/DeviceMapper.xml
index 5c53568..2d97897 100644
--- a/src/main/resources/mapper/DeviceMapper.xml
+++ b/src/main/resources/mapper/DeviceMapper.xml
@@ -440,5 +440,24 @@
 		SELECT d.* FROM `device` as d,monitor_point as mp,device_property as dp  where d.monitor_point_id=mp.id and d.id=dp.id and dp.device_tech=3 and d.monitor_point_id=#{id}
 	</select>
 
+	<select id="getHasWindDirAndWindSpeedDeviceVersion" resultType="integer">
+		SELECT id from
+		device_version
+		where id in
+		(SELECT s.device_version_id
+		from
+		(SELECT device_version_id
+		from
+		device_version_sensor
+		WHERE sensor_Id in
+		(SELECT id from
+		sensor
+		where
+		sensor_key='e18' or sensor_key='e23')) s
+		GROUP BY s.device_version_id
+		HAVING count(1)=2)
+		and is_delete=0;
+	</select>
+
 
 </mapper>
\ No newline at end of file
diff --git a/src/main/webapp/img/icoWind01.png b/src/main/webapp/img/icoWind01.png
new file mode 100644
index 0000000..994b975
--- /dev/null
+++ b/src/main/webapp/img/icoWind01.png
Binary files differ
diff --git a/src/main/webapp/img/icoWind02.png b/src/main/webapp/img/icoWind02.png
new file mode 100644
index 0000000..87a3356
--- /dev/null
+++ b/src/main/webapp/img/icoWind02.png
Binary files differ
diff --git a/src/main/webapp/img/icoWind03.png b/src/main/webapp/img/icoWind03.png
new file mode 100644
index 0000000..6cf20b9
--- /dev/null
+++ b/src/main/webapp/img/icoWind03.png
Binary files differ
diff --git a/src/main/webapp/img/icoWind04.png b/src/main/webapp/img/icoWind04.png
new file mode 100644
index 0000000..adc5281
--- /dev/null
+++ b/src/main/webapp/img/icoWind04.png
Binary files differ
diff --git a/src/main/webapp/img/icoWind05.png b/src/main/webapp/img/icoWind05.png
new file mode 100644
index 0000000..4d610e3
--- /dev/null
+++ b/src/main/webapp/img/icoWind05.png
Binary files differ
diff --git a/src/main/webapp/img/icoWind06.png b/src/main/webapp/img/icoWind06.png
new file mode 100644
index 0000000..0680e8f
--- /dev/null
+++ b/src/main/webapp/img/icoWind06.png
Binary files differ
diff --git a/src/main/webapp/img/icoWind07.png b/src/main/webapp/img/icoWind07.png
new file mode 100644
index 0000000..030a1d3
--- /dev/null
+++ b/src/main/webapp/img/icoWind07.png
Binary files differ
diff --git a/src/main/webapp/img/icoWind08.png b/src/main/webapp/img/icoWind08.png
new file mode 100644
index 0000000..636566d
--- /dev/null
+++ b/src/main/webapp/img/icoWind08.png
Binary files differ
diff --git a/src/main/webapp/img/wind_dir.png b/src/main/webapp/img/wind_dir.png
deleted file mode 100644
index a2e42b3..0000000
--- a/src/main/webapp/img/wind_dir.png
+++ /dev/null
Binary files differ
diff --git a/src/main/webapp/js/newmoralmap.js b/src/main/webapp/js/newmoralmap.js
index 3a90815..addf8f6 100644
--- a/src/main/webapp/js/newmoralmap.js
+++ b/src/main/webapp/js/newmoralmap.js
@@ -644,6 +644,7 @@
 
         return listView;
     }
+
     moralMap.MoralMarker = function (option) {
         var _option = option;
         var _pointObj = new BMap.Point(_option['longitude'], _option['latitude']);
@@ -696,21 +697,60 @@
         })
     }
 
-    moralMap.WindMarker = function (option, target) {
+    moralMap.WindMarker = function (option, moralMap) {
         var _option = option;
         var _pointObj = new BMap.Point(_option['longitude'], _option['latitude']);
-        var _iconObj = new BMap.Icon("/img/wind_dir.png", new BMap.Size(25, 25));
+        var _iconObj = _getWindIcon(1);
         this._point = _pointObj;
+
+        function _getWindIcon(speedLevel) {
+            speedLevel = speedLevel == null ? 0 : speedLevel;
+            var icon = _option["icon"];
+            var url = icon["url"] + speedLevel + ".png";
+            return new BMap.Icon(url, new BMap.Size(icon["width"], icon["height"]), {
+                imageSize: new BMap.Size(icon["width"], icon["height"])
+            });
+        }
 
         this.constructor.call(this, _pointObj, {
             icon: _iconObj,
-            offset: new BMap.Size(0, -35),
+            offset: new BMap.Size(0, -11),
             enableMassClear: true
         })
         return $.extend(this, {
-            refreshWindDir: function (windDir) {
+            refreshWindDir: function (windDir, windSpeed) {
                 //���������������������������������������������
-                this.setRotation(windDir);
+                if (windDir == undefined || windSpeed == undefined) {
+                    moralMap.removeOverlay(this);
+                } else {
+                    var speedLevel;
+                    if (windSpeed >= 0.0 && windSpeed <= 0.2) {
+                        speedLevel = 0;
+                    } else if (windSpeed >= 0.3 && windSpeed <= 1.5) {
+                        speedLevel = 1;
+                    } else if (windSpeed >= 1.6 && windSpeed <= 3.3) {
+                        speedLevel = 2;
+                    } else if (windSpeed >= 3.4 && windSpeed <= 5.4) {
+                        speedLevel = 3;
+                    } else if (windSpeed >= 5.5 && windSpeed <= 7.9) {
+                        speedLevel = 4;
+                    } else if (windSpeed >= 8.0 && windSpeed <= 10.7) {
+                        speedLevel = 5;
+                    } else if (windSpeed >= 10.8 && windSpeed <= 13.8) {
+                        speedLevel = 6;
+                    } else if (windSpeed >= 13.9 && windSpeed <= 17.1) {
+                        speedLevel = 7;
+                    } else if (windSpeed >= 17.2) {
+                        speedLevel = 8;
+                    }
+                }
+                if (speedLevel == 0) {
+                    moralMap.removeOverlay(this);
+                } else {
+                    var iconObj = _getWindIcon(speedLevel);
+                    this.setIcon(iconObj);
+                    this.setRotation(windDir);
+                }
             },
             getOption: function () {
                 return _option;
@@ -823,14 +863,19 @@
                 }
             }
         }
-        var windMarker = new moralMap.WindMarker(option);
+        var icon = {};
+        icon["url"] = "/img/icoWind0";
+        icon["width"] = 25;
+        icon["height"] = 25;
+        option["icon"] = icon;
+        var windMarker = new moralMap.WindMarker(option, moralMap);
         moralMap.putDevice(option['mac'], windMarker);
         var refreshWindMarker = windMarker.refreshWindDir;
         return $.extend(windMarker, {
             refreshWindDir: function (data) {
                 if (data != null && data != "") {
                     this.setData(data); //������������
-                    refreshWindMarker.call(this, data["e23"]);
+                    refreshWindMarker.call(this, data["e23"], data["e18"]);
                 }
             },
             setData: function (data) {
@@ -898,15 +943,15 @@
         }
         var mouseOverHandle = option['mouseover'];
         moralMarker.addEventListener("mouseover", function () {
-         /*   var obj = {};
-            obj['methodName'] = 'deliverMac';
-            obj['mac'] = option['mac'];
-            var objStr = JSON.stringify(obj);
-            if (!!window['external'] && !!window['external']['callWin']) {
-                window['external'].callWin(objStr);
-            } else {
-                alert(objStr);
-            }*/
+            /*   var obj = {};
+               obj['methodName'] = 'deliverMac';
+               obj['mac'] = option['mac'];
+               var objStr = JSON.stringify(obj);
+               if (!!window['external'] && !!window['external']['callWin']) {
+                   window['external'].callWin(objStr);
+               } else {
+                   alert(objStr);
+               }*/
 
             moralMap.showSensors = function (jsonData) {
                 var deviceSensors = jsonData;
@@ -958,14 +1003,14 @@
         });
 
         moralMarker.addEventListener("mouseout", function () {
-          /*  var obj = {};
-            obj['methodName'] = 'stopDeliverMac';
-            var objStr = JSON.stringify(obj);
-            if (!!window['external'] && !!window['external']['callWin']) {
-                window['external'].callWin(objStr);
-            } else {
-                alert(objStr);
-            }*/
+            /*  var obj = {};
+              obj['methodName'] = 'stopDeliverMac';
+              var objStr = JSON.stringify(obj);
+              if (!!window['external'] && !!window['external']['callWin']) {
+                  window['external'].callWin(objStr);
+              } else {
+                  alert(objStr);
+              }*/
             moralMap.closeInfoWindow();
         });
 
diff --git a/src/main/webapp/view/newmap.jsp b/src/main/webapp/view/newmap.jsp
index 7e39dbc..a7e50f0 100644
--- a/src/main/webapp/view/newmap.jsp
+++ b/src/main/webapp/view/newmap.jsp
@@ -487,9 +487,11 @@
                             }
                         }
                         var moralMask = new moralMap.Equipment(obj);
-                        var moralDeviceWind = new moralMap.Device(obj);
                         moralMap.addOverlay(moralMask);
-                        moralMap.addOverlay(moralDeviceWind);
+                        if (obj['hasWindInfo']) {
+                            var moralDeviceWind = new moralMap.Device(obj);
+                            moralMap.addOverlay(moralDeviceWind);
+                        }
                     }
                 }
             }

--
Gitblit v1.8.0