From a012007f36ba1ce44e9c932ea33120949835dfb7 Mon Sep 17 00:00:00 2001
From: 648540858 <456panlinlin>
Date: 星期一, 25 四月 2022 17:12:29 +0800
Subject: [PATCH] 多级虚拟组织处理修复

---
 src/main/java/com/genersoft/iot/vmp/gb28181/utils/XmlUtil.java |  115 +++++++++++++++++++++++++++++++++++++++++++++++++++++----
 1 files changed, 107 insertions(+), 8 deletions(-)

diff --git a/src/main/java/com/genersoft/iot/vmp/gb28181/utils/XmlUtil.java b/src/main/java/com/genersoft/iot/vmp/gb28181/utils/XmlUtil.java
index 079a78b..3da7217 100644
--- a/src/main/java/com/genersoft/iot/vmp/gb28181/utils/XmlUtil.java
+++ b/src/main/java/com/genersoft/iot/vmp/gb28181/utils/XmlUtil.java
@@ -2,6 +2,7 @@
 
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
+import com.genersoft.iot.vmp.gb28181.bean.DeviceChannel;
 import org.dom4j.Attribute;
 import org.dom4j.Document;
 import org.dom4j.DocumentException;
@@ -19,8 +20,8 @@
 
 /**
  * 鍩轰簬dom4j鐨勫伐鍏峰寘
- * 
- * 
+ *
+ *
  */
 public class XmlUtil {
     /**
@@ -30,9 +31,9 @@
 
     /**
      * 瑙f瀽XML涓篋ocument瀵硅薄
-     * 
+     *
      * @param xml 琚В鏋愮殑XMl
-     * 
+     *
      * @return Document
      */
     public static Element parseXml(String xml) {
@@ -50,7 +51,7 @@
 
     /**
      * 鑾峰彇element瀵硅薄鐨則ext鐨勫��
-     * 
+     *
      * @param em  鑺傜偣鐨勫璞�
      * @param tag 鑺傜偣鐨則ag
      * @return 鑺傜偣
@@ -61,12 +62,12 @@
         }
         Element e = em.element(tag);
         //
-        return null == e ? null : e.getText();
+        return null == e ? null : e.getText().trim();
     }
 
     /**
      * 閫掑綊瑙f瀽xml鑺傜偣锛岄�傜敤浜� 澶氳妭鐐规暟鎹�
-     * 
+     *
      * @param node     node
      * @param nodeName nodeName
      * @return List<Map<String, Object>>
@@ -105,7 +106,7 @@
 
     /**
      * xml杞琷son
-     * 
+     *
      * @param element
      * @param json
      */
@@ -178,4 +179,102 @@
         Document xml = reader.read(new ByteArrayInputStream(content));
         return xml.getRootElement();
     }
+
+    public static DeviceChannel channelContentHander(Element itemDevice){
+        Element channdelNameElement = itemDevice.element("Name");
+        String channelName = channdelNameElement != null ? channdelNameElement.getTextTrim().toString() : "";
+        Element statusElement = itemDevice.element("Status");
+        String status = statusElement != null ? statusElement.getTextTrim().toString() : "ON";
+        DeviceChannel deviceChannel = new DeviceChannel();
+        deviceChannel.setName(channelName);
+        Element channdelIdElement = itemDevice.element("DeviceID");
+        String channelId = channdelIdElement != null ? channdelIdElement.getTextTrim().toString() : "";
+        deviceChannel.setChannelId(channelId);
+        // ONLINE OFFLINE HIKVISION DS-7716N-E4 NVR鐨勫吋瀹规�у鐞�
+        if (status.equals("ON") || status.equals("On") || status.equals("ONLINE") || status.equals("OK")) {
+            deviceChannel.setStatus(1);
+        }
+        if (status.equals("OFF") || status.equals("Off") || status.equals("OFFLINE")) {
+            deviceChannel.setStatus(0);
+        }
+
+        deviceChannel.setManufacture(XmlUtil.getText(itemDevice, "Manufacturer"));
+        deviceChannel.setModel(XmlUtil.getText(itemDevice, "Model"));
+        deviceChannel.setOwner(XmlUtil.getText(itemDevice, "Owner"));
+        deviceChannel.setCivilCode(XmlUtil.getText(itemDevice, "CivilCode"));
+        deviceChannel.setBlock(XmlUtil.getText(itemDevice, "Block"));
+        deviceChannel.setAddress(XmlUtil.getText(itemDevice, "Address"));
+        if (XmlUtil.getText(itemDevice, "Parental") == null
+                || XmlUtil.getText(itemDevice, "Parental") == "") {
+            deviceChannel.setParental(0);
+        } else {
+            deviceChannel.setParental(Integer.parseInt(XmlUtil.getText(itemDevice, "Parental")));
+        }
+        deviceChannel.setParentId(XmlUtil.getText(itemDevice, "ParentID"));
+        String parentId = XmlUtil.getText(itemDevice, "ParentID");
+        if (parentId.contains("/")) {
+            String lastParentId = parentId.substring(parentId.lastIndexOf("/") + 1);
+            deviceChannel.setParentId(lastParentId);
+        }else {
+            deviceChannel.setParentId(parentId);
+        }
+
+        if (XmlUtil.getText(itemDevice, "SafetyWay") == null
+                || XmlUtil.getText(itemDevice, "SafetyWay") == "") {
+            deviceChannel.setSafetyWay(0);
+        } else {
+            deviceChannel.setSafetyWay(Integer.parseInt(XmlUtil.getText(itemDevice, "SafetyWay")));
+        }
+        if (XmlUtil.getText(itemDevice, "RegisterWay") == null
+                || XmlUtil.getText(itemDevice, "RegisterWay") == "") {
+            deviceChannel.setRegisterWay(1);
+        } else {
+            deviceChannel.setRegisterWay(Integer.parseInt(XmlUtil.getText(itemDevice, "RegisterWay")));
+        }
+        deviceChannel.setCertNum(XmlUtil.getText(itemDevice, "CertNum"));
+        if (XmlUtil.getText(itemDevice, "Certifiable") == null
+                || XmlUtil.getText(itemDevice, "Certifiable") == "") {
+            deviceChannel.setCertifiable(0);
+        } else {
+            deviceChannel.setCertifiable(Integer.parseInt(XmlUtil.getText(itemDevice, "Certifiable")));
+        }
+        if (XmlUtil.getText(itemDevice, "ErrCode") == null
+                || XmlUtil.getText(itemDevice, "ErrCode") == "") {
+            deviceChannel.setErrCode(0);
+        } else {
+            deviceChannel.setErrCode(Integer.parseInt(XmlUtil.getText(itemDevice, "ErrCode")));
+        }
+        deviceChannel.setEndTime(XmlUtil.getText(itemDevice, "EndTime"));
+        deviceChannel.setSecrecy(XmlUtil.getText(itemDevice, "Secrecy"));
+        deviceChannel.setIpAddress(XmlUtil.getText(itemDevice, "IPAddress"));
+        if (XmlUtil.getText(itemDevice, "Port") == null || XmlUtil.getText(itemDevice, "Port") == "") {
+            deviceChannel.setPort(0);
+        } else {
+            deviceChannel.setPort(Integer.parseInt(XmlUtil.getText(itemDevice, "Port")));
+        }
+        deviceChannel.setPassword(XmlUtil.getText(itemDevice, "Password"));
+        if (NumericUtil.isDouble(XmlUtil.getText(itemDevice, "Longitude"))) {
+            deviceChannel.setLongitude(Double.parseDouble(XmlUtil.getText(itemDevice, "Longitude")));
+        } else {
+            deviceChannel.setLongitude(0.00);
+        }
+        if (NumericUtil.isDouble(XmlUtil.getText(itemDevice, "Latitude"))) {
+            deviceChannel.setLatitude(Double.parseDouble(XmlUtil.getText(itemDevice, "Latitude")));
+        } else {
+            deviceChannel.setLatitude(0.00);
+        }
+        if (XmlUtil.getText(itemDevice, "PTZType") == null || "".equals(XmlUtil.getText(itemDevice, "PTZType"))) {
+            //鍏煎INFO涓殑淇℃伅
+            Element info = itemDevice.element("Info");
+            if(XmlUtil.getText(info, "PTZType") == null || "".equals(XmlUtil.getText(info, "PTZType"))){
+                deviceChannel.setPTZType(0);
+            }else{
+                deviceChannel.setPTZType(Integer.parseInt(XmlUtil.getText(info, "PTZType")));
+            }
+        } else {
+            deviceChannel.setPTZType(Integer.parseInt(XmlUtil.getText(itemDevice, "PTZType")));
+        }
+        deviceChannel.setHasAudio(true); // 榛樿鍚湁闊抽锛屾挱鏀炬椂鍐嶆鏌ユ槸鍚︽湁闊抽鍙婃槸鍚AC
+        return deviceChannel;
+    }
 }

--
Gitblit v1.8.0