jiazx0107@163.com
2023-12-14 a69402c8b67d8ce4b698d0c394d15ff43b5d99d0
提交正来电子协议解析-3
已修改24个文件
已添加3个文件
948 ■■■■■ 文件已修改
pom.xml 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/fzzy/api/entity/Api1101.java 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/fzzy/api/entity/Api1102.java 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/fzzy/api/entity/Api1103.java 9 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/fzzy/api/entity/Api1104.java 9 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/fzzy/api/entity/Api1105.java 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/fzzy/api/entity/Api1108.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/fzzy/api/entity/Api1110.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/fzzy/api/entity/Api1111.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/fzzy/api/entity/Api1208.java 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/fzzy/api/entity/Api1212.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/fzzy/api/entity/Api1301.java 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/fzzy/api/entity/Api1307.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/fzzy/api/entity/Api1308.java 11 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/fzzy/api/entity/Api1501.java 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/fzzy/gateway/api/GatewaySyncGranService.java 36 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/fzzy/gateway/controller/GatewayDeviceController.java 139 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/fzzy/gateway/service/GatewayDeviceTestPR.java 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/fzzy/gateway/view/GatewayDevice.js 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/fzzy/gateway/view/GatewayDevice.view.xml 209 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/fzzy/protocol/bhzn/service/Bhzn2GatewayGrainService.java 28 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/fzzy/protocol/fzzy/service/FzzyGatewayGrainService.java 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/fzzy/protocol/zldz/cmd/CommandBuilder1116_0.java 70 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/fzzy/protocol/zldz/cmd/CommandBuilder1116_1.java 109 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/fzzy/protocol/zldz/cmd/CommandBuilder1122.java 47 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/fzzy/protocol/zldz/server/ZldzServerEngine.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/fzzy/protocol/zldz/service/ZldzGatewayGrainService.java 107 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
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>
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)
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 {
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)
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)
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;
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 {
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 {
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 {
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";
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;
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 {
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 {
    /**
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 {
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 {
    /**
     * 
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);
}
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";
    }
    /**
     * åˆå§‹åŒ–车牌识别
     *
@@ -126,7 +263,7 @@
            return "ERROR:当前设备没有配置布线规则,无法执行";
        }
        BaseResp resp =null;
        BaseResp resp;
        if(GatewayDeviceProtocol.DEVICE_TEST.getCode().equals(device.getSyncProtocol())){
            resp = gatewayRemoteManager.getGatewayTestService(device.getPushProtocol()).testGrain(reqData);
        }else{
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();
@@ -402,4 +401,22 @@
        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";
    }
}
src/main/java/com/fzzy/gateway/view/GatewayDevice.js
@@ -35,3 +35,23 @@
       }
   })
}
/**
*
* @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);
       }
   })
}
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,21 +399,20 @@
      </Buttons>
      <Children>
        <Container layout="regionPadding:10;padding:10">
          <FieldSet layout="padding:5">
            <Property name="caption">网关设备配置</Property>
            <Buttons/>
            <Children>
          <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>
                <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">deviceSn</Property>
              <Property name="property">deviceSn</Property>
              <Editor/>
            </AutoFormElement>
            <AutoFormElement>
@@ -355,18 +431,42 @@
              <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>
                  <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>
@@ -377,6 +477,11 @@
            <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>
@@ -394,20 +499,14 @@
              <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>
                  <Property name="name">status</Property>
                  <Property name="property">status</Property>
              <Editor/>
            </AutoFormElement>
            <AutoFormElement layoutConstraint="colSpan:2">
@@ -415,15 +514,23 @@
              <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">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>
                  <Property name="name">depotIdSys</Property>
                  <Property name="property">depotIdSys</Property>
              <Editor/>
            </AutoFormElement>
            <AutoFormElement>
@@ -437,11 +544,33 @@
              <Editor/>
            </AutoFormElement>
            <AutoFormElement>
              <Property name="name">status</Property>
              <Property name="property">status</Property>
                  <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>
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();
    }
}
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();
    }
}
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);
        // ç”Ÿæˆæ•´ä½“命令信息和BYte信息
        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);
    }
}
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);
        // ç”Ÿæˆæ•´ä½“命令信息和BYte信息
        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);
    }
}
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);
    }
}
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();
        }
    }
}
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;
    }
    /**
     * æœåŠ¡å™¨å›žå¤ç»ˆç«¯çš„æ”¶åˆ°è¯·æ±‚
     *