From a69402c8b67d8ce4b698d0c394d15ff43b5d99d0 Mon Sep 17 00:00:00 2001
From: jiazx0107@163.com <jiazx0107@163.com>
Date: 星期四, 14 十二月 2023 23:17:41 +0800
Subject: [PATCH] 提交正来电子协议解析-3

---
 src/main/java/com/fzzy/api/entity/Api1308.java                             |   11 
 src/main/java/com/fzzy/gateway/service/GatewayDeviceTestPR.java            |   19 
 src/main/java/com/fzzy/api/entity/Api1111.java                             |    9 
 src/main/java/com/fzzy/api/entity/Api1105.java                             |   11 
 src/main/java/com/fzzy/api/entity/Api1102.java                             |    6 
 src/main/java/com/fzzy/api/entity/Api1108.java                             |    7 
 src/main/java/com/fzzy/gateway/view/GatewayDevice.view.xml                 |  381 +++++++++++++------
 src/main/java/com/fzzy/protocol/zldz/server/ZldzServerEngine.java          |   16 
 src/main/java/com/fzzy/api/entity/Api1208.java                             |   10 
 pom.xml                                                                    |    2 
 src/main/java/com/fzzy/protocol/fzzy/service/FzzyGatewayGrainService.java  |   26 +
 src/main/java/com/fzzy/protocol/bhzn/service/Bhzn2GatewayGrainService.java |   28 +
 src/main/java/com/fzzy/protocol/zldz/cmd/CommandBuilder1116_1.java         |  109 +++++
 src/main/java/com/fzzy/protocol/zldz/service/ZldzGatewayGrainService.java  |  111 +++++
 src/main/java/com/fzzy/api/entity/Api1307.java                             |    9 
 src/main/java/com/fzzy/api/entity/Api1501.java                             |    8 
 src/main/java/com/fzzy/api/entity/Api1104.java                             |    9 
 src/main/java/com/fzzy/api/entity/Api1301.java                             |   10 
 src/main/java/com/fzzy/protocol/zldz/cmd/CommandBuilder1122.java           |   47 ++
 src/main/java/com/fzzy/api/entity/Api1101.java                             |   10 
 src/main/java/com/fzzy/api/entity/Api1212.java                             |    2 
 src/main/java/com/fzzy/gateway/controller/GatewayDeviceController.java     |  145 +++++++
 src/main/java/com/fzzy/gateway/api/GatewaySyncGranService.java             |   36 +
 src/main/java/com/fzzy/protocol/zldz/cmd/CommandBuilder1116_0.java         |   70 +++
 src/main/java/com/fzzy/gateway/view/GatewayDevice.js                       |   20 +
 src/main/java/com/fzzy/api/entity/Api1110.java                             |    9 
 src/main/java/com/fzzy/api/entity/Api1103.java                             |    9 
 27 files changed, 951 insertions(+), 179 deletions(-)

diff --git a/pom.xml b/pom.xml
index cccd79b..6f34990 100644
--- a/pom.xml
+++ b/pom.xml
@@ -27,7 +27,7 @@
 		<dependency>
 			<groupId>com.bstek.dorado</groupId>
 			<artifactId>dorado-core</artifactId>
-			<version>7.6.0</version>
+			<version>7.6.0.2</version>
 			<exclusions>
 				<exclusion>
 					<groupId>org.slf4j</groupId>
diff --git a/src/main/java/com/fzzy/api/entity/Api1101.java b/src/main/java/com/fzzy/api/entity/Api1101.java
index f6dfcf5..469b1a8 100644
--- a/src/main/java/com/fzzy/api/entity/Api1101.java
+++ b/src/main/java/com/fzzy/api/entity/Api1101.java
@@ -3,14 +3,21 @@
 import com.alibaba.fastjson.annotation.JSONField;
 import com.bstek.dorado.annotation.PropertyDef;
 import com.fasterxml.jackson.annotation.JsonFormat;
+
 import lombok.Data;
 import lombok.EqualsAndHashCode;
+import lombok.Getter;
+import lombok.Setter;
+
 import org.springframework.format.annotation.DateTimeFormat;
+
 import javax.persistence.Column;
 import javax.persistence.Entity;
 import javax.persistence.Id;
 import javax.persistence.Table;
+
 import java.io.Serializable;
+import java.math.BigDecimal;
 import java.util.Date;
 
 /**
@@ -19,7 +26,8 @@
  * @author czt
  * @date 2023-10-18
  */
-@Data
+@Getter
+@Setter
 @Entity
 @Table(name = "API_1101")
 @EqualsAndHashCode(callSuper = false)
diff --git a/src/main/java/com/fzzy/api/entity/Api1102.java b/src/main/java/com/fzzy/api/entity/Api1102.java
index 92a190f..201d98c 100644
--- a/src/main/java/com/fzzy/api/entity/Api1102.java
+++ b/src/main/java/com/fzzy/api/entity/Api1102.java
@@ -5,6 +5,8 @@
 import com.fasterxml.jackson.annotation.JsonIgnore;
 
 import lombok.Data;
+import lombok.Getter;
+import lombok.Setter;
 
 import javax.persistence.Column;
 import javax.persistence.Entity;
@@ -12,12 +14,14 @@
 import javax.persistence.Table;
 
 import java.io.Serializable;
+import java.math.BigDecimal;
 import java.util.Date;
 
 /**
  * 鎺ュ彛琛�-搴撳尯淇℃伅
  */
-@Data
+@Getter
+@Setter
 @Entity
 @Table(name = "API_1102")
 public class Api1102 implements Serializable {
diff --git a/src/main/java/com/fzzy/api/entity/Api1103.java b/src/main/java/com/fzzy/api/entity/Api1103.java
index d510e2e..c06072a 100644
--- a/src/main/java/com/fzzy/api/entity/Api1103.java
+++ b/src/main/java/com/fzzy/api/entity/Api1103.java
@@ -2,19 +2,26 @@
 
 import com.alibaba.fastjson.annotation.JSONField;
 import com.bstek.dorado.annotation.PropertyDef;
+
 import lombok.Data;
 import lombok.EqualsAndHashCode;
+import lombok.Getter;
+import lombok.Setter;
+
 import javax.persistence.Column;
 import javax.persistence.Entity;
 import javax.persistence.Id;
 import javax.persistence.Table;
+
 import java.io.Serializable;
+import java.math.BigDecimal;
 import java.util.Date;
 
 /**
  * 鎺ュ彛琛�-浠撴埧淇℃伅
  */
-@Data
+@Getter
+@Setter
 @Entity
 @Table(name = "API_1103")
 @EqualsAndHashCode(callSuper=false)
diff --git a/src/main/java/com/fzzy/api/entity/Api1104.java b/src/main/java/com/fzzy/api/entity/Api1104.java
index f93ac1f..9c3931c 100644
--- a/src/main/java/com/fzzy/api/entity/Api1104.java
+++ b/src/main/java/com/fzzy/api/entity/Api1104.java
@@ -1,11 +1,17 @@
 package com.fzzy.api.entity;
 
 import java.io.Serializable;
+import java.math.BigDecimal;
 import java.util.Date;
+
 import com.alibaba.fastjson.annotation.JSONField;
 import com.bstek.dorado.annotation.PropertyDef;
+
 import lombok.Data;
 import lombok.EqualsAndHashCode;
+import lombok.Getter;
+import lombok.Setter;
+
 import javax.persistence.*;
 
 /**
@@ -14,7 +20,8 @@
  * @author chen
  * @date 2022-09-02 14:18
  */
-@Data
+@Getter
+@Setter
 @Entity
 @Table(name = "API_1104")
 @EqualsAndHashCode(callSuper = false)
diff --git a/src/main/java/com/fzzy/api/entity/Api1105.java b/src/main/java/com/fzzy/api/entity/Api1105.java
index c7d13ec..4856e46 100644
--- a/src/main/java/com/fzzy/api/entity/Api1105.java
+++ b/src/main/java/com/fzzy/api/entity/Api1105.java
@@ -2,22 +2,25 @@
 
 import com.alibaba.fastjson.annotation.JSONField;
 import com.bstek.dorado.annotation.PropertyDef;
-import lombok.Data;
-import lombok.EqualsAndHashCode;
+
+import lombok.Getter;
+import lombok.Setter;
+
 import javax.persistence.Column;
 import javax.persistence.Entity;
 import javax.persistence.Id;
 import javax.persistence.Table;
+
 import java.io.Serializable;
 import java.util.Date;
 
 /**
  * 鎺ュ彛琛�-璐т綅淇℃伅
  */
-@Data
+@Getter
+@Setter
 @Entity
 @Table(name = "API_1105")
-@EqualsAndHashCode(callSuper=false)
 public class Api1105 implements Serializable {
 
 	private static final long serialVersionUID = -6967028172020353365L;
diff --git a/src/main/java/com/fzzy/api/entity/Api1108.java b/src/main/java/com/fzzy/api/entity/Api1108.java
index a49e5d8..1ed5a9d 100644
--- a/src/main/java/com/fzzy/api/entity/Api1108.java
+++ b/src/main/java/com/fzzy/api/entity/Api1108.java
@@ -2,10 +2,10 @@
 
 import com.alibaba.fastjson.annotation.JSONField;
 import com.bstek.dorado.annotation.PropertyDef;
-import com.fasterxml.jackson.annotation.JsonFormat;
 import com.fasterxml.jackson.annotation.JsonIgnore;
 
-import lombok.Data;
+import lombok.Getter;
+import lombok.Setter;
 
 import javax.persistence.*;
 
@@ -15,7 +15,8 @@
 /**
  * 鎺ュ彛琛�-鑽墏淇℃伅
  */
-@Data
+@Getter
+@Setter
 @Entity
 @Table(name = "API_1108")
 public class Api1108 implements Serializable {
diff --git a/src/main/java/com/fzzy/api/entity/Api1110.java b/src/main/java/com/fzzy/api/entity/Api1110.java
index 1baa168..df75c85 100644
--- a/src/main/java/com/fzzy/api/entity/Api1110.java
+++ b/src/main/java/com/fzzy/api/entity/Api1110.java
@@ -2,17 +2,20 @@
 
 import com.alibaba.fastjson.annotation.JSONField;
 import com.bstek.dorado.annotation.PropertyDef;
-import com.fasterxml.jackson.annotation.JsonIgnore;
-import lombok.Data;
+
+import lombok.Getter;
+import lombok.Setter;
 
 import javax.persistence.*;
+
 import java.io.Serializable;
 import java.util.Date;
 
 /**
  * 鎺ュ彛琛�-搴撳尯鍥句粨鎴跨偣浣嶆爣娉�
  */
-@Data
+@Getter
+@Setter
 @Entity
 @Table(name = "API_1110")
 public class Api1110 implements Serializable {
diff --git a/src/main/java/com/fzzy/api/entity/Api1111.java b/src/main/java/com/fzzy/api/entity/Api1111.java
index e32784b..d63a2d7 100644
--- a/src/main/java/com/fzzy/api/entity/Api1111.java
+++ b/src/main/java/com/fzzy/api/entity/Api1111.java
@@ -2,17 +2,20 @@
 
 import com.alibaba.fastjson.annotation.JSONField;
 import com.bstek.dorado.annotation.PropertyDef;
-import com.fasterxml.jackson.annotation.JsonIgnore;
-import lombok.Data;
+
+import lombok.Getter;
+import lombok.Setter;
 
 import javax.persistence.*;
+
 import java.io.Serializable;
 import java.util.Date;
 
 /**
  * 鎺ュ彛琛�-搴撳尯鍥捐棰戠洃鎺ц澶囩偣浣嶆爣娉�
  */
-@Data
+@Getter
+@Setter
 @Entity
 @Table(name = "API_1111")
 public class Api1111  implements Serializable {
diff --git a/src/main/java/com/fzzy/api/entity/Api1208.java b/src/main/java/com/fzzy/api/entity/Api1208.java
index 686499a..00a301e 100644
--- a/src/main/java/com/fzzy/api/entity/Api1208.java
+++ b/src/main/java/com/fzzy/api/entity/Api1208.java
@@ -3,13 +3,11 @@
 import com.alibaba.fastjson.annotation.JSONField;
 import com.bstek.dorado.annotation.PropertyDef;
 
-import lombok.Data;
-import lombok.EqualsAndHashCode;
+import lombok.Getter;
+import lombok.Setter;
 
 import javax.persistence.Column;
 import javax.persistence.Entity;
-import javax.persistence.GeneratedValue;
-import javax.persistence.GenerationType;
 import javax.persistence.Id;
 import javax.persistence.Table;
 
@@ -19,10 +17,10 @@
 /**
  * 鎺ュ彛琛�-绮搴撳瓨
  */
-@Data
+@Getter
+@Setter
 @Entity
 @Table(name = "API_1208")
-@EqualsAndHashCode(callSuper = false)
 public class Api1208 extends ApiParent implements Serializable {
 
     public static String SORT_PROP = "rcsj";
diff --git a/src/main/java/com/fzzy/api/entity/Api1212.java b/src/main/java/com/fzzy/api/entity/Api1212.java
index ea6590c..e1a3293 100644
--- a/src/main/java/com/fzzy/api/entity/Api1212.java
+++ b/src/main/java/com/fzzy/api/entity/Api1212.java
@@ -8,8 +8,6 @@
 
 import javax.persistence.Column;
 import javax.persistence.Entity;
-import javax.persistence.GeneratedValue;
-import javax.persistence.GenerationType;
 import javax.persistence.Id;
 import javax.persistence.Table;
 
diff --git a/src/main/java/com/fzzy/api/entity/Api1301.java b/src/main/java/com/fzzy/api/entity/Api1301.java
index e797676..a791163 100644
--- a/src/main/java/com/fzzy/api/entity/Api1301.java
+++ b/src/main/java/com/fzzy/api/entity/Api1301.java
@@ -2,9 +2,12 @@
 
 import com.alibaba.fastjson.annotation.JSONField;
 import com.bstek.dorado.annotation.PropertyDef;
-import lombok.Data;
-import org.hibernate.annotations.GenericGenerator;
+
+import lombok.Getter;
+import lombok.Setter;
+
 import javax.persistence.*;
+
 import java.io.Serializable;
 import java.util.Date;
 
@@ -14,7 +17,8 @@
  * @author chen
  * @date 2022-09-02 16:06
  */
-@Data
+@Getter
+@Setter
 @Entity
 @Table(name = "API_1301")
 public class Api1301 implements Serializable {
diff --git a/src/main/java/com/fzzy/api/entity/Api1307.java b/src/main/java/com/fzzy/api/entity/Api1307.java
index b4712db..7ccbeae 100644
--- a/src/main/java/com/fzzy/api/entity/Api1307.java
+++ b/src/main/java/com/fzzy/api/entity/Api1307.java
@@ -3,10 +3,9 @@
 import com.alibaba.fastjson.annotation.JSONField;
 import com.bstek.dorado.annotation.PropertyDef;
 
-import lombok.Data;
-import lombok.EqualsAndHashCode;
+import lombok.Getter;
+import lombok.Setter;
 
-import org.hibernate.annotations.GenericGenerator;
 
 import javax.persistence.*;
 
@@ -19,10 +18,10 @@
  * @author chen
  * @date 2022-09-02 15:57
  */
-@Data
+@Getter
+@Setter
 @Entity
 @Table(name = "API_1307")
-@EqualsAndHashCode(callSuper=false)
 public class Api1307 implements Serializable {
 
     /**
diff --git a/src/main/java/com/fzzy/api/entity/Api1308.java b/src/main/java/com/fzzy/api/entity/Api1308.java
index e43284f..8b48e88 100644
--- a/src/main/java/com/fzzy/api/entity/Api1308.java
+++ b/src/main/java/com/fzzy/api/entity/Api1308.java
@@ -2,9 +2,13 @@
 
 import com.alibaba.fastjson.annotation.JSONField;
 import com.bstek.dorado.annotation.PropertyDef;
-import lombok.Data;
-import org.hibernate.annotations.GenericGenerator;
+
+import lombok.Getter;
+import lombok.Setter;
+
+
 import javax.persistence.*;
+
 import java.io.Serializable;
 import java.util.Date;
 
@@ -14,7 +18,8 @@
  * @author chen
  * @date 2022-09-02 15:59
  */
-@Data
+@Getter
+@Setter
 @Entity
 @Table(name = "API_1308")
 public class Api1308 implements Serializable {
diff --git a/src/main/java/com/fzzy/api/entity/Api1501.java b/src/main/java/com/fzzy/api/entity/Api1501.java
index 8d7569a..81a7176 100644
--- a/src/main/java/com/fzzy/api/entity/Api1501.java
+++ b/src/main/java/com/fzzy/api/entity/Api1501.java
@@ -3,8 +3,8 @@
 import com.alibaba.fastjson.annotation.JSONField;
 import com.bstek.dorado.annotation.PropertyDef;
 
-import lombok.Data;
-import lombok.EqualsAndHashCode;
+import lombok.Getter;
+import lombok.Setter;
 
 import javax.persistence.Column;
 import javax.persistence.Entity;
@@ -20,10 +20,10 @@
  *
  * @author he
  */
-@Data
+@Getter
+@Setter
 @Entity
 @Table(name = "API_1501")
-@EqualsAndHashCode(callSuper=false)
 public class Api1501 extends ApiParent implements Serializable {
     /**
 	 * 
diff --git a/src/main/java/com/fzzy/gateway/api/GatewaySyncGranService.java b/src/main/java/com/fzzy/gateway/api/GatewaySyncGranService.java
index 957b443..87f01a1 100644
--- a/src/main/java/com/fzzy/gateway/api/GatewaySyncGranService.java
+++ b/src/main/java/com/fzzy/gateway/api/GatewaySyncGranService.java
@@ -25,4 +25,40 @@
      * @return
      */
     public BaseResp syncGrain(BaseReqData reqData);
+
+
+    /**
+     *  鑾峰彇鎵ц鍒嗘満鐨勫弬鏁颁俊鎭紝濡傛灉璁惧涓嶆敮鎸佸垯鐩存帴杩斿洖涓嶆墽琛屽嵆鍙�
+     * @param reqData
+     * @return
+     */
+    public BaseResp syncConf(BaseReqData reqData);
+
+    /**
+     * 鍐欏弬鏁�
+     * @param reqData
+     * @return
+     */
+    public BaseResp writeConf(BaseReqData reqData);
+
+    /**
+     * 鍒濆鍖栧弬鏁�
+     * @param reqData
+     * @return
+     */
+    public BaseResp initCable(BaseReqData reqData);
+
+    /**
+     * 閽堝闀胯繛鎺ヨ澶囷紝鎵ц杩炴帴涓诲姩鏂紑
+     * @param reqData
+     * @return
+     */
+    public BaseResp disconnect(BaseReqData reqData);
+
+    /**
+     * 淇℃伅閫忎紶
+     * @param reqData
+     * @return
+     */
+    public BaseResp transparent(BaseReqData reqData);
 }
diff --git a/src/main/java/com/fzzy/gateway/controller/GatewayDeviceController.java b/src/main/java/com/fzzy/gateway/controller/GatewayDeviceController.java
index a29e503..c0612b4 100644
--- a/src/main/java/com/fzzy/gateway/controller/GatewayDeviceController.java
+++ b/src/main/java/com/fzzy/gateway/controller/GatewayDeviceController.java
@@ -71,6 +71,143 @@
         return "SUCCESS";
     }
 
+
+    /**
+     * 涓嬭鍒嗘満娴嬭瘯鍏ュ彛
+     *
+     * @param param
+     * @return
+     */
+    @PostMapping("/test/IDE")
+    public @ResponseBody
+    String testIDE(@RequestBody GateWayParam param) throws Exception {
+
+        if (StringUtils.isEmpty(param.getBizType())) {
+            return "ERROR:娌℃湁鑾峰彇鍒颁笟鍔$被鍨嬶紝鎵ц澶辫触";
+        }
+
+        //鑾峰彇鍒嗘満閰嶇疆
+        if ("syncConf".equals(param.getBizType())) {
+            return syncConf(param);
+        }
+
+        if ("writeConf".equals(param.getBizType())) {
+            return writeConf(param);
+        }
+
+        if ("initParam".equals(param.getBizType())) {
+            return initCable(param);
+        }
+
+        if ("disconnect".equals(param.getBizType())) {
+            return disconnect(param);
+        }
+
+        if ("transparent".equals(param.getBizType())) {
+            return transparent(param);
+        }
+
+        return "SUCCESS";
+    }
+
+
+    private String transparent(GateWayParam param) {
+
+        String deviceId = param.getDeviceId();
+
+        GatewayDevice device = GatewayUtils.getCacheByDeviceId(deviceId);
+
+        BaseReqData reqData = new BaseReqData();
+        reqData.setDeviceId(device.getDeviceId());
+        reqData.setProductId(device.getProductId());
+        reqData.setDeviceName(device.getDeviceName());
+        reqData.setDevice(device);
+        reqData.setAutoReplay(false);
+
+        BaseResp resp = gatewayRemoteManager.getSyncGrainService(device.getSyncProtocol()).transparent(reqData);
+        if (BaseResp.CODE_200 != resp.getCode()) {
+            return "ERROR锛�" + resp.getMsg();
+        }
+        return "SUCCESS";
+    }
+
+    private String disconnect(GateWayParam param) {
+        String deviceId = param.getDeviceId();
+
+        GatewayDevice device = GatewayUtils.getCacheByDeviceId(deviceId);
+
+        BaseReqData reqData = new BaseReqData();
+        reqData.setDeviceId(device.getDeviceId());
+        reqData.setProductId(device.getProductId());
+        reqData.setDeviceName(device.getDeviceName());
+        reqData.setDevice(device);
+        reqData.setAutoReplay(false);
+
+        BaseResp resp = gatewayRemoteManager.getSyncGrainService(device.getSyncProtocol()).disconnect(reqData);
+        if (BaseResp.CODE_200 != resp.getCode()) {
+            return "ERROR锛�" + resp.getMsg();
+        }
+        return "SUCCESS";
+    }
+
+    private String initCable(GateWayParam param) {
+        String deviceId = param.getDeviceId();
+
+        GatewayDevice device = GatewayUtils.getCacheByDeviceId(deviceId);
+
+        BaseReqData reqData = new BaseReqData();
+        reqData.setDeviceId(device.getDeviceId());
+        reqData.setProductId(device.getProductId());
+        reqData.setDeviceName(device.getDeviceName());
+        reqData.setDevice(device);
+        reqData.setAutoReplay(false);
+
+        BaseResp resp = gatewayRemoteManager.getSyncGrainService(device.getSyncProtocol()).initCable(reqData);
+        if (BaseResp.CODE_200 != resp.getCode()) {
+            return "ERROR锛�" + resp.getMsg();
+        }
+        return "SUCCESS";
+    }
+
+    private String syncConf(GateWayParam param) {
+
+        String deviceId = param.getDeviceId();
+
+        GatewayDevice device = GatewayUtils.getCacheByDeviceId(deviceId);
+
+        BaseReqData reqData = new BaseReqData();
+        reqData.setDeviceId(device.getDeviceId());
+        reqData.setProductId(device.getProductId());
+        reqData.setDeviceName(device.getDeviceName());
+        reqData.setDevice(device);
+        reqData.setAutoReplay(false);
+
+        BaseResp resp = gatewayRemoteManager.getSyncGrainService(device.getSyncProtocol()).syncConf(reqData);
+        if (BaseResp.CODE_200 != resp.getCode()) {
+            return "ERROR锛�" + resp.getMsg();
+        }
+        return "SUCCESS";
+    }
+
+    private String writeConf(GateWayParam param) {
+        String deviceId = param.getDeviceId();
+
+        GatewayDevice device = GatewayUtils.getCacheByDeviceId(deviceId);
+
+        BaseReqData reqData = new BaseReqData();
+        reqData.setDeviceId(device.getDeviceId());
+        reqData.setProductId(device.getProductId());
+        reqData.setDeviceName(device.getDeviceName());
+        reqData.setDevice(device);
+        reqData.setAutoReplay(false);
+
+        BaseResp resp = gatewayRemoteManager.getSyncGrainService(device.getSyncProtocol()).writeConf(reqData);
+        if (BaseResp.CODE_200 != resp.getCode()) {
+            return "ERROR锛�" + resp.getMsg();
+        }
+        return "SUCCESS";
+    }
+
     /**
      * 鍒濆鍖栬溅鐗岃瘑鍒�
      *
@@ -98,7 +235,7 @@
             reqData = new BaseReqData(device);
             reqData.setIndex(i);
             syncLprService = gatewayRemoteManager.getSyncLprService(device.getSyncProtocol());
-            if(null == syncLprService) continue;
+            if (null == syncLprService) continue;
             syncLprService.initLpr(reqData);
             i++;
         }
@@ -126,10 +263,10 @@
             return "ERROR锛氬綋鍓嶈澶囨病鏈夐厤缃竷绾胯鍒欙紝鏃犳硶鎵ц";
         }
 
-        BaseResp resp =null;
-        if(GatewayDeviceProtocol.DEVICE_TEST.getCode().equals(device.getSyncProtocol())){
+        BaseResp resp;
+        if (GatewayDeviceProtocol.DEVICE_TEST.getCode().equals(device.getSyncProtocol())) {
             resp = gatewayRemoteManager.getGatewayTestService(device.getPushProtocol()).testGrain(reqData);
-        }else{
+        } else {
             reqData.setAutoReplay(false);
             resp = gatewayRemoteManager.getSyncGrainService(device.getSyncProtocol()).syncGrain(reqData);
         }
diff --git a/src/main/java/com/fzzy/gateway/service/GatewayDeviceTestPR.java b/src/main/java/com/fzzy/gateway/service/GatewayDeviceTestPR.java
index 4061c62..c72c82a 100644
--- a/src/main/java/com/fzzy/gateway/service/GatewayDeviceTestPR.java
+++ b/src/main/java/com/fzzy/gateway/service/GatewayDeviceTestPR.java
@@ -290,7 +290,6 @@
     @Expose
     public String ajaxTestWeight(Map<String,Object> data) throws Exception {
         double weigh = (double) data.get("weight");
-        double deviceId = (double) data.get("deviceId");
 
 
         List<GatewayDevice> devices = listAll();
@@ -401,5 +400,23 @@
         log.info("-----------test-------------------");
         return "SUCCESS";
     }
+    
+    
+    /**
+     * 
+     * gatewayDeviceTestPR#testIde
+     * 娴嬭瘯涓嬭鍒嗘満
+     * @param data
+     * @return
+     */
+    @Expose
+    public String testIde(Map<String,Object> data) throws Exception {
+    	 String deviceId = (String) data.get("deviceId");
+    	 String bizType = (String) data.get("bizType");
+    	 
+    	 log.info("-----------涓嬭鍒嗘満璋冭瘯-璁惧={},浜嬩欢={}",deviceId,bizType);
+    	 
+        return "SUCCESS";
+    }
 
 }
diff --git a/src/main/java/com/fzzy/gateway/view/GatewayDevice.js b/src/main/java/com/fzzy/gateway/view/GatewayDevice.js
index fcb9f63..42b78ed 100644
--- a/src/main/java/com/fzzy/gateway/view/GatewayDevice.js
+++ b/src/main/java/com/fzzy/gateway/view/GatewayDevice.js
@@ -34,4 +34,24 @@
        	 $alert(result);
        }
    })
+}
+
+
+/**
+*
+* @param param
+*/
+testIde= function(param){
+   $.ajax({
+       type:"POST",
+       contentType:"application/json;charset=UTF-8",
+       url:"/gateway/test/IDE",
+       data:JSON.stringify(param),
+       success:function(result){
+            $alert(result);
+       },
+       error:function(result){
+       	 $alert(result);
+       }
+   })
 }
\ No newline at end of file
diff --git a/src/main/java/com/fzzy/gateway/view/GatewayDevice.view.xml b/src/main/java/com/fzzy/gateway/view/GatewayDevice.view.xml
index 89f3b83..d37fa01 100644
--- a/src/main/java/com/fzzy/gateway/view/GatewayDevice.view.xml
+++ b/src/main/java/com/fzzy/gateway/view/GatewayDevice.view.xml
@@ -25,7 +25,7 @@
       </PropertyDef>
       <PropertyDef name="depotId">
         <Property></Property>
-        <Property name="label">鎵�灞炰粨搴撶紪鐮�</Property>
+        <Property name="label">浠撳簱缂栫爜</Property>
       </PropertyDef>
       <PropertyDef name="type">
         <Property></Property>
@@ -78,7 +78,7 @@
       </PropertyDef>
       <PropertyDef name="httpUrl">
         <Property></Property>
-        <Property name="label">HTTP鍦板潃</Property>
+        <Property name="label">API璺緞</Property>
       </PropertyDef>
       <PropertyDef name="deviceSn">
         <Property></Property>
@@ -98,11 +98,11 @@
       </PropertyDef>
       <PropertyDef name="depotIdSys">
         <Property></Property>
-        <Property name="label">鑷畾涔変粨搴撶紪鐮�</Property>
+        <Property name="label">绯荤粺浠撳簱缂栫爜</Property>
       </PropertyDef>
       <PropertyDef name="productId">
         <Property></Property>
-        <Property name="label">璁惧绫诲瀷KEY</Property>
+        <Property name="label">璁惧KEY</Property>
       </PropertyDef>
       <PropertyDef name="cableRule">
         <Property></Property>
@@ -129,6 +129,26 @@
         <Property name="dataType">DateTime</Property>
         <Property name="label">鏈�鍚庝笂绾挎椂闂�</Property>
       </PropertyDef>
+      <PropertyDef name="cableStart">
+        <Property></Property>
+        <Property name="label">鐢电紗寮�濮�</Property>
+      </PropertyDef>
+      <PropertyDef name="cableEnd">
+        <Property></Property>
+        <Property name="label">鐢电紗鎴嚦</Property>
+      </PropertyDef>
+      <PropertyDef name="thAddr">
+        <Property></Property>
+        <Property name="label">娓╂箍搴﹀湴鍧�</Property>
+      </PropertyDef>
+      <PropertyDef name="cableFormat">
+        <Property></Property>
+        <Property name="label">鐢电紗鍒跺紡</Property>
+      </PropertyDef>
+      <PropertyDef name="cableType">
+        <Property></Property>
+        <Property name="label">鐢电紗绫诲瀷</Property>
+      </PropertyDef>
     </DataType>
     <DataType name="dtParam" parent="Map">
       <PropertyDef name="start">
@@ -153,6 +173,9 @@
         <Property></Property>
         <Property name="label">璁惧ID</Property>
         <Property name="required">true</Property>
+      </PropertyDef>
+      <PropertyDef name="bizType">
+        <Property name="label">鍔ㄤ綔浜嬩欢</Property>
       </PropertyDef>
     </DataType>
   </Model>
@@ -264,6 +287,60 @@
         <Property name="iconClass">fa fa-wrench</Property>
         <Property name="exClassName">toolbar-button-push</Property>
       </ToolBarButton>
+      <Separator/>
+      <MenuButton>
+        <Property name="caption">涓嬭鍒嗘満璋冭瘯</Property>
+        <Property name="exClassName">toolbar-button-push</Property>
+        <Property name="iconClass">fa fa-wrench</Property>
+        <MenuItem>
+          <ClientEvent name="onClick">var data = view.get(&quot;#dsMain.data:#&quot;);&#xD;
+var param = {&#xD;
+	deviceId:data.get(&quot;deviceId&quot;),&#xD;
+	bizType:&quot;syncConf&quot;&#xD;
+}&#xD;
+testIde(param);</ClientEvent>
+          <Property name="caption">杩滅▼鑾峰彇閰嶇疆</Property>
+        </MenuItem>
+        <MenuItem>
+          <ClientEvent name="onClick">var data = view.get(&quot;#dsMain.data:#&quot;);&#xD;
+var param = {&#xD;
+	deviceId:data.get(&quot;deviceId&quot;),&#xD;
+	bizType:&quot;writeConf&quot;&#xD;
+}&#xD;
+testIde(param);</ClientEvent>
+          <Property name="caption">鍐欏叆鍙傛暟</Property>
+        </MenuItem>
+        <MenuItem>
+          <ClientEvent name="onClick">var data = view.get(&quot;#dsMain.data:#&quot;);&#xD;
+var param = {&#xD;
+	deviceId:data.get(&quot;deviceId&quot;),&#xD;
+	bizType:&quot;initParam&quot;&#xD;
+}&#xD;
+&#xD;
+testIde(param);</ClientEvent>
+          <Property name="caption">鍒濆鍖栧垎鏈哄弬鏁�</Property>
+        </MenuItem>
+        <MenuItem>
+          <ClientEvent name="onClick">var data = view.get(&quot;#dsMain.data:#&quot;);&#xD;
+var param = {&#xD;
+	deviceId:data.get(&quot;deviceId&quot;),&#xD;
+	bizType:&quot;disconnect&quot;&#xD;
+}&#xD;
+&#xD;
+testIde(param);</ClientEvent>
+          <Property name="caption">涓诲姩鏂紑杩炴帴</Property>
+        </MenuItem>
+        <MenuItem>
+          <ClientEvent name="onClick">var data = view.get(&quot;#dsMain.data:#&quot;);&#xD;
+var param = {&#xD;
+	deviceId:data.get(&quot;deviceId&quot;),&#xD;
+	bizType:&quot;transparent&quot;&#xD;
+}&#xD;
+&#xD;
+testIde(param);</ClientEvent>
+          <Property name="caption">淇℃伅閫忎紶璋冭瘯</Property>
+        </MenuItem>
+      </MenuButton>
     </ToolBar>
     <DataGrid id="dgMain">
       <Property name="dataSet">dsMain</Property>
@@ -322,126 +399,178 @@
       </Buttons>
       <Children>
         <Container layout="regionPadding:10;padding:10">
-          <AutoForm>
-            <Property name="dataSet">dsMain</Property>
-            <Property name="cols">*,*,*</Property>
-            <Property name="labelWidth">125</Property>
-            <Property name="labelAlign">right</Property>
-            <Property name="labelSeparator">锛�</Property>
-            <Property name="labelPosition">left</Property>
-            <AutoFormElement layoutConstraint="colSpan:2">
-              <Property name="name">deviceId</Property>
-              <Property name="property">deviceId</Property>
-              <Editor/>
-            </AutoFormElement>
-            <AutoFormElement>
-              <Property name="name">deviceSn</Property>
-              <Property name="property">deviceSn</Property>
-              <Editor/>
-            </AutoFormElement>
-            <AutoFormElement>
-              <Property name="name">deviceName</Property>
-              <Property name="property">deviceName</Property>
-              <Editor/>
-            </AutoFormElement>
-            <AutoFormElement>
-              <Property name="name">type</Property>
-              <Property name="property">type</Property>
-              <Editor/>
-            </AutoFormElement>
-            <AutoFormElement>
-              <Property name="name">productId</Property>
-              <Property name="property">productId</Property>
-              <Editor/>
-            </AutoFormElement>
-            <AutoFormElement>
-              <Property name="name">orgId</Property>
-              <Property name="property">orgId</Property>
-              <Editor/>
-            </AutoFormElement>
-            <AutoFormElement>
-              <Property name="name">depotId</Property>
-              <Property name="property">depotId</Property>
-              <Editor/>
-            </AutoFormElement>
-            <AutoFormElement>
-              <Property name="name">depotIdSys</Property>
-              <Property name="property">depotIdSys</Property>
-              <Editor/>
-            </AutoFormElement>
-            <AutoFormElement>
-              <Property name="name">ip</Property>
-              <Property name="property">ip</Property>
-              <Editor/>
-            </AutoFormElement>
-            <AutoFormElement>
-              <Property name="name">port</Property>
-              <Property name="property">port</Property>
-              <Editor/>
-            </AutoFormElement>
-            <AutoFormElement>
-              <Property name="name">userName</Property>
-              <Property name="property">userName</Property>
-              <Editor/>
-            </AutoFormElement>
-            <AutoFormElement>
-              <Property name="name">password</Property>
-              <Property name="property">password</Property>
-              <Editor/>
-            </AutoFormElement>
-            <AutoFormElement>
-              <Property name="name">pushProtocol</Property>
-              <Property name="property">pushProtocol</Property>
-              <Editor/>
-            </AutoFormElement>
-            <AutoFormElement>
-              <Property name="name">syncProtocol</Property>
-              <Property name="property">syncProtocol</Property>
-              <Editor/>
-            </AutoFormElement>
-            <AutoFormElement>
-              <Property name="name">serPort</Property>
-              <Property name="property">serPort</Property>
-              <Property name="labelWidth">150</Property>
-              <Editor/>
-            </AutoFormElement>
-            <AutoFormElement layoutConstraint="colSpan:2">
-              <Property name="name">rtsp</Property>
-              <Property name="property">rtsp</Property>
-              <Editor/>
-            </AutoFormElement>
-            <AutoFormElement layoutConstraint="colSpan:2">
-              <Property name="name">httpUrl</Property>
-              <Property name="property">httpUrl</Property>
-              <Editor/>
-            </AutoFormElement>
-            <AutoFormElement>
-              <Property name="name">position</Property>
-              <Property name="property">position</Property>
-              <Editor/>
-            </AutoFormElement>
-            <AutoFormElement layoutConstraint="colSpan:3">
-              <Property name="name">remark</Property>
-              <Property name="property">remark</Property>
-              <Property name="editorType">TextArea</Property>
-              <Editor/>
-            </AutoFormElement>
-            <AutoFormElement>
-              <Property name="name">cableRule</Property>
-              <Property name="property">cableRule</Property>
-              <Editor/>
-            </AutoFormElement>
-            <AutoFormElement>
-              <Property name="name">cableCir</Property>
-              <Property name="property">cableCir</Property>
-              <Editor/>
-            </AutoFormElement>
-            <AutoFormElement>
-              <Property name="name">status</Property>
-              <Property name="property">status</Property>
-              <Editor/>
-            </AutoFormElement>
-          </AutoForm>
+          <FieldSet layout="padding:5">
+            <Property name="caption">缃戝叧璁惧閰嶇疆</Property>
+            <Buttons/>
+            <Children>
+              <AutoForm>
+                <Property name="dataSet">dsMain</Property>
+                <Property name="cols">*,*,*</Property>
+                <Property name="labelAlign">right</Property>
+                <Property name="labelSeparator">锛�</Property>
+                <Property name="labelPosition">left</Property>
+                <Property name="labelWidth">100</Property>
+                <AutoFormElement layoutConstraint="colSpan:2">
+                  <Property name="name">deviceId</Property>
+                  <Property name="property">deviceId</Property>
+                  <Editor/>
+                </AutoFormElement>
+                <AutoFormElement>
+                  <Property name="name">deviceName</Property>
+                  <Property name="property">deviceName</Property>
+                  <Editor/>
+                </AutoFormElement>
+                <AutoFormElement>
+                  <Property name="name">type</Property>
+                  <Property name="property">type</Property>
+                  <Editor/>
+                </AutoFormElement>
+                <AutoFormElement>
+                  <Property name="name">productId</Property>
+                  <Property name="property">productId</Property>
+                  <Editor/>
+                </AutoFormElement>
+                <AutoFormElement>
+                  <Property name="name">depotId</Property>
+                  <Property name="property">depotId</Property>
+                  <Editor/>
+                </AutoFormElement>
+                <AutoFormElement>
+                  <Property name="name">position</Property>
+                  <Property name="property">position</Property>
+                  <Editor/>
+                </AutoFormElement>
+                <AutoFormElement layoutConstraint="colSpan:2">
+                  <Property name="name">remark</Property>
+                  <Property name="property">remark</Property>
+                  <Editor/>
+                </AutoFormElement>
+              </AutoForm>
+            </Children>
+          </FieldSet>
+          <FieldSet layout="padding:5">
+            <Property name="caption">涓嬭閫氳璁惧閰嶇疆</Property>
+            <Buttons/>
+            <Children>
+              <AutoForm>
+                <Property name="dataSet">dsMain</Property>
+                <Property name="cols">*,*,*</Property>
+                <Property name="labelWidth">120</Property>
+                <Property name="labelAlign">right</Property>
+                <Property name="labelSeparator">锛�</Property>
+                <Property name="labelPosition">left</Property>
+                <AutoFormElement layoutConstraint="colSpan:2">
+                  <Property name="name">deviceSn</Property>
+                  <Property name="property">deviceSn</Property>
+                  <Editor/>
+                </AutoFormElement>
+                <AutoFormElement>
+                  <Property name="name">orgId</Property>
+                  <Property name="property">orgId</Property>
+                  <Editor/>
+                </AutoFormElement>
+                <AutoFormElement>
+                  <Property name="name">ip</Property>
+                  <Property name="property">ip</Property>
+                  <Editor/>
+                </AutoFormElement>
+                <AutoFormElement>
+                  <Property name="name">port</Property>
+                  <Property name="property">port</Property>
+                  <Editor/>
+                </AutoFormElement>
+                <AutoFormElement>
+                  <Property name="name">syncProtocol</Property>
+                  <Property name="property">syncProtocol</Property>
+                  <Editor/>
+                </AutoFormElement>
+                <AutoFormElement>
+                  <Property name="name">userName</Property>
+                  <Property name="property">userName</Property>
+                  <Editor/>
+                </AutoFormElement>
+                <AutoFormElement>
+                  <Property name="name">password</Property>
+                  <Property name="property">password</Property>
+                  <Editor/>
+                </AutoFormElement>
+                <AutoFormElement>
+                  <Property name="name">pushProtocol</Property>
+                  <Property name="property">pushProtocol</Property>
+                  <Editor/>
+                </AutoFormElement>
+                <AutoFormElement layoutConstraint="colSpan:2">
+                  <Property name="name">rtsp</Property>
+                  <Property name="property">rtsp</Property>
+                  <Editor/>
+                </AutoFormElement>
+                <AutoFormElement>
+                  <Property name="name">status</Property>
+                  <Property name="property">status</Property>
+                  <Editor/>
+                </AutoFormElement>
+                <AutoFormElement layoutConstraint="colSpan:2">
+                  <Property name="name">httpUrl</Property>
+                  <Property name="property">httpUrl</Property>
+                  <Editor/>
+                </AutoFormElement>
+              </AutoForm>
+            </Children>
+          </FieldSet>
+          <FieldSet layout="padding:5">
+            <Property name="caption">绮儏妫�娴嬪弬鏁伴厤缃�</Property>
+            <Buttons/>
+            <Children>
+              <AutoForm>
+                <Property name="dataSet">dsMain</Property>
+                <Property name="cols">*,*,*</Property>
+                <Property name="labelWidth">120</Property>
+                <Property name="labelAlign">right</Property>
+                <Property name="labelSeparator">锛�</Property>
+                <Property name="labelPosition">left</Property>
+                <AutoFormElement>
+                  <Property name="name">depotIdSys</Property>
+                  <Property name="property">depotIdSys</Property>
+                  <Editor/>
+                </AutoFormElement>
+                <AutoFormElement>
+                  <Property name="name">cableRule</Property>
+                  <Property name="property">cableRule</Property>
+                  <Editor/>
+                </AutoFormElement>
+                <AutoFormElement>
+                  <Property name="name">cableCir</Property>
+                  <Property name="property">cableCir</Property>
+                  <Editor/>
+                </AutoFormElement>
+                <AutoFormElement>
+                  <Property name="name">cableStart</Property>
+                  <Property name="property">cableStart</Property>
+                  <Editor/>
+                </AutoFormElement>
+                <AutoFormElement>
+                  <Property name="name">cableEnd</Property>
+                  <Property name="property">cableEnd</Property>
+                  <Editor/>
+                </AutoFormElement>
+                <AutoFormElement>
+                  <Property name="name">thAddr</Property>
+                  <Property name="property">thAddr</Property>
+                  <Editor/>
+                </AutoFormElement>
+                <AutoFormElement>
+                  <Property name="name">cableFormat</Property>
+                  <Property name="property">cableFormat</Property>
+                  <Editor/>
+                </AutoFormElement>
+                <AutoFormElement>
+                  <Property name="name">cableType</Property>
+                  <Property name="property">cableType</Property>
+                  <Editor/>
+                </AutoFormElement>
+              </AutoForm>
+            </Children>
+          </FieldSet>
         </Container>
       </Children>
       <Tools/>
@@ -561,5 +690,9 @@
       </Children>
       <Tools/>
     </Dialog>
+    <AjaxAction id="ajaxTestIDE">
+      <Property name="confirmMessage">纭畾瑕佹墽琛屼箞锛�</Property>
+      <Property name="service">gatewayDeviceTestPR#testIde</Property>
+    </AjaxAction>
   </View>
 </ViewConfig>
diff --git a/src/main/java/com/fzzy/protocol/bhzn/service/Bhzn2GatewayGrainService.java b/src/main/java/com/fzzy/protocol/bhzn/service/Bhzn2GatewayGrainService.java
index 76d3852..cbdc7ea 100644
--- a/src/main/java/com/fzzy/protocol/bhzn/service/Bhzn2GatewayGrainService.java
+++ b/src/main/java/com/fzzy/protocol/bhzn/service/Bhzn2GatewayGrainService.java
@@ -8,12 +8,9 @@
 import com.fzzy.gateway.data.BaseReqData;
 import com.fzzy.gateway.data.BaseResp;
 import com.fzzy.gateway.entity.GatewayDevice;
-import com.fzzy.io.request.BaseRequest;
 import com.fzzy.protocol.ProtocolUtils;
 import com.fzzy.protocol.bhzn.cmd.CommandBuild;
 import com.fzzy.protocol.bhzn.server.BhznGrainV2ServerEngine;
-import com.fzzy.protocol.bhzn.server.BhznGrainV2ServerUtils;
-import com.fzzy.protocol.zldz.data.Message;
 import com.ld.io.api.InvokeResult;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.stereotype.Component;
@@ -85,4 +82,29 @@
         }
         return resp;
     }
+
+    @Override
+    public BaseResp syncConf(BaseReqData reqData) {
+        return new BaseResp();
+    }
+
+    @Override
+    public BaseResp writeConf(BaseReqData reqData) {
+        return new BaseResp();
+    }
+
+    @Override
+    public BaseResp initCable(BaseReqData reqData) {
+        return new BaseResp();
+    }
+
+    @Override
+    public BaseResp disconnect(BaseReqData reqData) {
+        return new BaseResp();
+    }
+
+    @Override
+    public BaseResp transparent(BaseReqData reqData) {
+        return new BaseResp();
+    }
 }
diff --git a/src/main/java/com/fzzy/protocol/fzzy/service/FzzyGatewayGrainService.java b/src/main/java/com/fzzy/protocol/fzzy/service/FzzyGatewayGrainService.java
index bf7e2c3..af2f7cc 100644
--- a/src/main/java/com/fzzy/protocol/fzzy/service/FzzyGatewayGrainService.java
+++ b/src/main/java/com/fzzy/protocol/fzzy/service/FzzyGatewayGrainService.java
@@ -85,4 +85,30 @@
         }
         return resp;
     }
+
+    @Override
+    public BaseResp syncConf(BaseReqData reqData) {
+        return new BaseResp();
+    }
+
+    @Override
+    public BaseResp writeConf(BaseReqData reqData) {
+        return new BaseResp();
+    }
+
+    @Override
+    public BaseResp initCable(BaseReqData reqData) {
+        return new BaseResp();
+    }
+
+
+    @Override
+    public BaseResp disconnect(BaseReqData reqData) {
+        return new BaseResp();
+    }
+
+    @Override
+    public BaseResp transparent(BaseReqData reqData) {
+        return new BaseResp();
+    }
 }
diff --git a/src/main/java/com/fzzy/protocol/zldz/cmd/CommandBuilder1116_0.java b/src/main/java/com/fzzy/protocol/zldz/cmd/CommandBuilder1116_0.java
new file mode 100644
index 0000000..1124c5d
--- /dev/null
+++ b/src/main/java/com/fzzy/protocol/zldz/cmd/CommandBuilder1116_0.java
@@ -0,0 +1,70 @@
+package com.fzzy.protocol.zldz.cmd;
+
+
+import com.fzzy.api.utils.BytesUtil;
+import com.fzzy.io.request.BaseRequest;
+import com.fzzy.protocol.zldz.data.Message;
+import com.fzzy.protocol.zldz.data.MessageBody;
+import com.fzzy.protocol.zldz.server.ZldzServerUtil;
+
+/**
+ * @author Andy
+ */
+public class CommandBuilder1116_0 extends CommandBuilder {
+
+
+    private final static CommandBuilder1116_0 instance = new CommandBuilder1116_0();
+
+    private CommandBuilder1116_0() {
+
+    }
+
+    public static CommandBuilder1116_0 getInstance() {
+        return instance;
+    }
+
+    public Message buildMessage(BaseRequest request) {
+
+        Message message = new Message();
+
+        message.setBegin(ZldzServerUtil.MSG_START);
+
+        // 璋冩暣Message澶撮儴淇℃伅
+        buildHeader(message, request);
+
+        //鍖呭ご鏍¢獙
+        buildCrc8(message);
+
+        // 鍒涘缓娑堟伅浣�
+        buildBody(message, request);
+
+        // 娣诲姞鏍¢獙
+        buildCrc16(message);
+
+        message.setEnd(ZldzServerUtil.MSG_END);
+
+        // 鐢熸垚鏁翠綋鍛戒护淇℃伅鍜孊Yte淇℃伅
+        build(message);
+
+        return message;
+    }
+
+    public void buildHeader(Message message, BaseRequest request) {
+
+        message.setSourceId("0000");
+        message.setSendId("0000");
+        message.setCompanyId("0000");
+        message.setTargetId("FFFF");
+
+        message.setMessageType(BytesUtil.tran_LH(ZldzServerUtil.MSG_TYPE_1116));
+    }
+
+
+    public void buildBody(Message message, BaseRequest request) {
+        MessageBody body = new MessageBody();
+        body.setContent("0000000000000000000000000000");
+        body.setLength(14);
+        message.setBody(body);
+    }
+
+}
diff --git a/src/main/java/com/fzzy/protocol/zldz/cmd/CommandBuilder1116_1.java b/src/main/java/com/fzzy/protocol/zldz/cmd/CommandBuilder1116_1.java
new file mode 100644
index 0000000..b924b08
--- /dev/null
+++ b/src/main/java/com/fzzy/protocol/zldz/cmd/CommandBuilder1116_1.java
@@ -0,0 +1,109 @@
+package com.fzzy.protocol.zldz.cmd;
+
+import com.fzzy.api.Constant;
+import com.fzzy.api.data.ApiCommonDevice;
+import com.fzzy.api.utils.BytesUtil;
+import com.fzzy.gateway.entity.GatewayDevice;
+import com.fzzy.io.request.BaseRequest;
+import com.fzzy.protocol.zldz.data.Message;
+import com.fzzy.protocol.zldz.data.MessageBody;
+import com.fzzy.protocol.zldz.server.ZldzServerUtil;
+
+
+/**
+ * @author Andy
+ */
+public class CommandBuilder1116_1 extends CommandBuilder {
+
+
+    private final static CommandBuilder1116_1 instance = new CommandBuilder1116_1();
+
+    private CommandBuilder1116_1() {
+
+    }
+
+    public static CommandBuilder1116_1 getInstance() {
+        return instance;
+    }
+
+    public Message buildMessage(BaseRequest request, GatewayDevice device) {
+
+        Message message = new Message();
+
+        message.setBegin(ZldzServerUtil.MSG_START);
+
+        // 璋冩暣Message澶撮儴淇℃伅
+        buildHeader(message, request, device);
+
+        //鍖呭ご鏍¢獙
+        buildCrc8(message);
+
+        // 鍒涘缓娑堟伅浣�
+        buildBody(message, request, device);
+
+        // 娣诲姞鏍¢獙
+        buildCrc16(message);
+
+        message.setEnd(ZldzServerUtil.MSG_END);
+
+        // 鐢熸垚鏁翠綋鍛戒护淇℃伅鍜孊Yte淇℃伅
+        build(message);
+
+        return message;
+    }
+
+    public void buildHeader(Message message, BaseRequest request, GatewayDevice device) {
+
+        String hexCompanyId = BytesUtil.getTargetId(request.getCompanyId(), true);
+        hexCompanyId = BytesUtil.tran_LH(hexCompanyId);
+
+        message.setSourceId(hexCompanyId);
+        message.setSendId(hexCompanyId);
+
+        //鍙戦�佺殑蹇呴』鏄師鏉ョ殑缁勭粐缂栫爜
+        String orgId = BytesUtil.tran_LH(BytesUtil.getTargetId(device.getOrgId(), true));
+        message.setCompanyId(orgId);
+
+        message.setTargetId(BytesUtil.tran_LH(BytesUtil.getTargetId(request.getSerId(), true)));
+        message.setMessageType(BytesUtil.tran_LH(ZldzServerUtil.MSG_TYPE_1116));
+    }
+
+
+    public void buildBody(Message message, BaseRequest request, GatewayDevice device) {
+        MessageBody body = new MessageBody();
+        StringBuffer content = new StringBuffer();
+        content.append("01");//鍐欐爣璁�
+        content.append(message.getTargetId());
+        content.append(BytesUtil.getTargetId("01", false));//缃戠粶ID
+        content.append("0A");//榛樿10 淇¢亾
+        content.append(BytesUtil.getTargetId("03", false));//閫熺巼
+
+        ApiCommonDevice commonDevice = Constant.getCommonDeviceCacheByIp(device.getIp());
+
+        String cable = commonDevice.getCable();
+        if (null == cable) {
+            cable = device.getCableRule();
+        }
+        String[] attr = cable.split("-");
+        int z = Integer.valueOf(attr[0]);
+        int y = Integer.valueOf(attr[1]);
+        int x = Integer.valueOf(attr[2]);
+
+        content.append(BytesUtil.toHexString(z));
+        content.append(BytesUtil.toHexString(y));
+        content.append(BytesUtil.toHexString(x));
+
+        content.append(BytesUtil.getTargetId(device.getCableFormat(), false));
+        content.append(BytesUtil.getTargetId(device.getCableType(), false));
+
+        String powerModel = "02";
+        content.append(BytesUtil.getTargetId(powerModel, false));
+
+        content.append(message.getSourceId());
+
+        body.setContent(content.toString());
+        body.setLength(14);
+        message.setBody(body);
+    }
+
+}
diff --git a/src/main/java/com/fzzy/protocol/zldz/cmd/CommandBuilder1122.java b/src/main/java/com/fzzy/protocol/zldz/cmd/CommandBuilder1122.java
new file mode 100644
index 0000000..d7de2d8
--- /dev/null
+++ b/src/main/java/com/fzzy/protocol/zldz/cmd/CommandBuilder1122.java
@@ -0,0 +1,47 @@
+package com.fzzy.protocol.zldz.cmd;
+
+
+import com.fzzy.api.utils.BytesUtil;
+import com.fzzy.io.request.BaseRequest;
+import com.fzzy.protocol.zldz.data.Message;
+import com.fzzy.protocol.zldz.data.MessageBody;
+import com.fzzy.protocol.zldz.server.ZldzServerUtil;
+
+/**
+ * 鍒濆鍖栫數缂嗙數缂�
+ *
+ * @author Andy
+ */
+public class CommandBuilder1122 extends CommandBuilder {
+
+    private final static CommandBuilder1122 instance = new CommandBuilder1122();
+
+    private CommandBuilder1122() {
+
+    }
+
+    public static CommandBuilder1122 getInstance() {
+        return instance;
+    }
+
+    public void buildHeader(Message message, BaseRequest request) {
+
+        String hexCompanyId = BytesUtil.getTargetId(request.getCompanyId(), true);
+        hexCompanyId = BytesUtil.tran_LH(hexCompanyId);
+
+        message.setSourceId(hexCompanyId);
+        message.setSendId(hexCompanyId);
+        message.setCompanyId(hexCompanyId);
+
+        message.setTargetId(BytesUtil.tran_LH(BytesUtil.getTargetId(request.getSerId(), true)));
+        message.setMessageType(BytesUtil.tran_LH(ZldzServerUtil.MSG_TYPE_1122));
+    }
+
+    public void buildBody(Message message, BaseRequest request) {
+        MessageBody body = new MessageBody();
+        body.setContent("01");
+        body.setLength(1);
+        message.setBody(body);
+    }
+
+}
diff --git a/src/main/java/com/fzzy/protocol/zldz/server/ZldzServerEngine.java b/src/main/java/com/fzzy/protocol/zldz/server/ZldzServerEngine.java
index 78e0c88..cbb4f30 100644
--- a/src/main/java/com/fzzy/protocol/zldz/server/ZldzServerEngine.java
+++ b/src/main/java/com/fzzy/protocol/zldz/server/ZldzServerEngine.java
@@ -10,7 +10,6 @@
 
 /**
  * 閰嶇疆涓绘湇鍔′俊鎭�
- *
  */
 @Slf4j
 public class ZldzServerEngine {
@@ -82,4 +81,19 @@
         }
         return session.invoke(msg);
     }
+
+    public static void disconnect(String ip, Integer port) {
+        IoSessionQuery sessionFactory = ioServer.getSessionQuery();
+        List<IoSession> sessions = sessionFactory.getAllSession();
+        IoSession session = null;
+        for (IoSession ioSession : sessions) {
+            if (ServerUtils.getServerKey(ip, port).equals(ioSession.getBusinessKey())) {
+                session = ioSession;
+                break;
+            }
+        }
+        if (null != session) {
+            session.destroy();
+        }
+    }
 }
diff --git a/src/main/java/com/fzzy/protocol/zldz/service/ZldzGatewayGrainService.java b/src/main/java/com/fzzy/protocol/zldz/service/ZldzGatewayGrainService.java
index eb65882..366935a 100644
--- a/src/main/java/com/fzzy/protocol/zldz/service/ZldzGatewayGrainService.java
+++ b/src/main/java/com/fzzy/protocol/zldz/service/ZldzGatewayGrainService.java
@@ -12,9 +12,7 @@
 import com.fzzy.protocol.ProtocolUtils;
 import com.fzzy.protocol.bhzn.cmd.CommandBuild;
 import com.fzzy.protocol.bhzn.server.BhznGrainV2ServerEngine;
-import com.fzzy.protocol.zldz.cmd.CommandBuilder1115;
-import com.fzzy.protocol.zldz.cmd.CommandBuilder8815;
-import com.fzzy.protocol.zldz.cmd.CommandBuilder8817;
+import com.fzzy.protocol.zldz.cmd.*;
 import com.fzzy.protocol.zldz.data.Message;
 import com.fzzy.protocol.zldz.server.ZldzServerEngine;
 import com.fzzy.protocol.zldz.server.ZldzServerUtil;
@@ -92,6 +90,109 @@
         return resp;
     }
 
+    @Override
+    public BaseResp syncConf(BaseReqData reqData) {
+        BaseResp resp = new BaseResp();
+
+        GatewayDevice device = reqData.getDevice();
+        BaseRequest request = new BaseRequest();
+        request.setIp(device.getIp());
+        request.setPort(device.getPort());
+        request.setSerName(device.getDeviceName());
+
+        request.setCompanyId(ZldzServerUtil.DEFAULT_COMPANY);
+
+        // Step1 鐢熸垚鍛戒护
+        Message message = CommandBuilder1116_0.getInstance().buildMessage(request);
+        // 鍙戦�佸懡浠�
+        InvokeResult result = ZldzServerEngine.push(device.getIp(), device.getPort(), message.getByteMsg());
+
+        log.info("骞冲彴------>>>鍒嗘満锛�" + request.getSerName() + "-璇诲彇閰嶇疆鍛戒护=" + message);
+
+        //濡傛灉鍛戒护鍙戦�佸け璐ワ紝鐩存帴韪㈡帀杩炴帴
+        if (!InvokeResult.SUCCESS.getCode().equals(result.getCode())) {
+            resp.setCode(500);
+            resp.setMsg(result.getMessage());
+        }
+        return resp;
+    }
+
+    @Override
+    public BaseResp writeConf(BaseReqData reqData) {
+        BaseResp resp = new BaseResp();
+
+        GatewayDevice device = reqData.getDevice();
+        BaseRequest request = new BaseRequest();
+        request.setIp(device.getIp());
+        request.setPort(device.getPort());
+        request.setCompanyId(device.getOrgId());
+        request.setSerName(device.getDeviceName());
+
+        // Step1 鐢熸垚鍛戒护
+        Message message = CommandBuilder1116_1.getInstance().buildMessage(request,device);
+        // 鍙戦�佸懡浠�
+        InvokeResult result = ZldzServerEngine.push(device.getIp(), device.getPort(), message.getByteMsg());
+
+        log.info("骞冲彴------>>>鍒嗘満锛�" + request.getSerName() + "-鍐欏叆閰嶇疆鍛戒护=" + message);
+
+        //濡傛灉鍛戒护鍙戦�佸け璐ワ紝鐩存帴韪㈡帀杩炴帴
+        if (!InvokeResult.SUCCESS.getCode().equals(result.getCode())) {
+            resp.setCode(500);
+            resp.setMsg(result.getMessage());
+        }
+        return resp;
+    }
+
+    @Override
+    public BaseResp initCable(BaseReqData reqData) {
+        BaseResp resp = new BaseResp();
+
+        GatewayDevice device = reqData.getDevice();
+        BaseRequest request = new BaseRequest();
+        request.setIp(device.getIp());
+        request.setPort(device.getPort());
+        request.setCompanyId(device.getOrgId());
+        request.setSerName(device.getDeviceName());
+
+        // Step1
+        Message message = CommandBuilder1122.getInstance().buildMessage(request);
+        // 鍙戦�佸懡浠�
+        InvokeResult result = ZldzServerEngine.push(device.getIp(), device.getPort(), message.getByteMsg());
+
+        log.info("骞冲彴------>>>鍒嗘満锛�" + request.getSerName() + "-鍒濆鍖栫數缂嗗懡浠�=" + message);
+
+        //濡傛灉鍛戒护鍙戦�佸け璐ワ紝鐩存帴韪㈡帀杩炴帴
+        if (!InvokeResult.SUCCESS.getCode().equals(result.getCode())) {
+            resp.setCode(500);
+            resp.setMsg(result.getMessage());
+        }
+        return resp;
+    }
+
+    @Override
+    public BaseResp disconnect(BaseReqData reqData) {
+        BaseResp resp = new BaseResp();
+        GatewayDevice device = reqData.getDevice();
+
+        ApiCommonDevice commonDevice = Constant.getCommonDeviceCache(device.getDeviceSn());
+
+        if(null == commonDevice){
+            resp.setCode(500);
+            resp.setMsg("绯荤粺鏈彂鐜拌繛鎺ヨ澶囷紝鍙栨秷鎵ц");
+            return resp;
+        }
+
+        ZldzServerEngine.disconnect(commonDevice.getIp(),commonDevice.getPort());
+        return resp;
+    }
+
+    @Override
+    public BaseResp transparent(BaseReqData reqData) {
+        BaseResp resp = new BaseResp();
+
+        return resp;
+    }
+
     /**
      * 鏈嶅姟鍣ㄥ洖澶嶇粓绔殑鏀跺埌璇锋眰
      *
@@ -103,7 +204,7 @@
         Message message = CommandBuilder8815.getInstance().buildMessage(
                 request);
 
-        log.debug("骞冲彴------>>>鍒嗘満锛�" +request.getSerName() + "-绮儏鏈嶅姟绔洖澶嶅懡浠�=" + message.toString());
+        log.debug("骞冲彴------>>>鍒嗘満锛�" + request.getSerName() + "-绮儏鏈嶅姟绔洖澶嶅懡浠�=" + message.toString());
 
         // 鍙戦�佸懡浠�
         InvokeResult result = ZldzServerEngine.push(request.getIp(), request.getPort(), message.getByteMsg());
@@ -130,7 +231,7 @@
 
         Message message = CommandBuilder8817.getInstance().buildMessage(request);
 
-        log.debug("骞冲彴------>>>鍒嗘満锛�" +request.getSerName() + "-绮儏鏈嶅姟绔洖澶嶆敹鍒扮伯鎯呭寘鍛戒护=" + message.toString());
+        log.debug("骞冲彴------>>>鍒嗘満锛�" + request.getSerName() + "-绮儏鏈嶅姟绔洖澶嶆敹鍒扮伯鎯呭寘鍛戒护=" + message.toString());
 
         // 鍙戦�佸懡浠�
         InvokeResult result = ZldzServerEngine.push(request.getIp(), request.getPort(),

--
Gitblit v1.9.3