liurunyu
6 天以前 4f99f59668c9160ca60958b7347944def26f2228
pipIrr-platform/pipIrr-common/src/main/java/com/dy/common/mw/protocol/Command.java
New file
@@ -0,0 +1,232 @@
package com.dy.common.mw.protocol;
import java.io.Serializable;
import com.alibaba.fastjson2.JSON ;
import com.alibaba.fastjson2.JSONObject;
public class Command implements Serializable{
   public static final long serialVersionUID;
   static {
      serialVersionUID = 201211292156L;
   }
   /**
    * 当命令结果返回的网址是此值时,忽略执行,例如中间件主动下发的命令,就不用返回命令结果
    */
   public static final String ignoreRtuResultSendWebUrl = "http://0.0.0.0" ;
   /**
    * 默认命令ID
    * 如果命令不在数据库中存储,或其他可以用defaultId
    */
   public static final String defaultId = "999999999" ;
   /**
    * 本条命令的ID
    * 一般是命令在数据库中存储记录ID的字符串形式
    */
   public String id;
   /**
    * RTU协议名称,这个可以为空,因为RTU上行数据解析出协议名称,然后系统把协议名称保存在RTU数据记录中,从此协议名称就不再空了
    */
   public String protocol;
   /**
    * RTU协议名称,这个可以为空
    */
   public Short protocolVersion;
   /**
    * RTU 地址
    */
   public String rtuAddr ;
   /**
    * 命令类型:Rtu命令、针对监控中间件的命令
    * 由com.dy.common.mw.protocol.CommandType类定义
    */
   public String type ;
   /**
    * 功能码
    */
   public String code ;
   /**
    * rtu返回命令结果 发向目的地web URL
    */
   public String rtuResultSendWebUrl ;
   /**
    * 具体参数数据
    */
   public Object param ;
   /**
    * 其他数据
    */
   public Object attachment ;
   public String toString(){
      String s = "命令id=" + id + "\n" ;
      s += (protocol == null ? "" : ("协议=" + protocol + "\n"));
      s += (protocolVersion == null ? "" : ("协议版本号=" + protocolVersion + "\n"));
      s += (rtuAddr == null ? "" : ("Rtu地址=" + rtuAddr + "\n"));
      s += "命令类型=" + (type.equals(CommandType.innerCommand)?"内部命令":"RTU命令") + "\n" ;
      s += (code == null ? "" : ("功能码=" + code + "\n")) ;
      s += (rtuResultSendWebUrl == null ? "" : ("回调网址=" + rtuResultSendWebUrl + "\n"));
      if(param != null){
         s += "参数:" + param  ;
      }
      if(attachment != null){
         s += "其他数据:" + attachment  ;
      }
      return s ;
   }
   /**
    * 对象转成json
    * @return json
    * @throws Exception 异常
    */
   @SuppressWarnings("unused")
   public String toJson()throws Exception{
      try{
         String json = JSON.toJSONString(this) ;
         return json ;
      }catch(Exception e){
         throw new Exception(e.getMessage() , e ) ;
      }
   }
   /**
    * json转成对象
    * @param json json
    * @return Command
    * @throws Exception 异常
    */
   @SuppressWarnings("unused")
   public static Command jsonToObject(String json)throws Exception{
      try{
         JSONObject jsonObject = JSON.parseObject(json);
         Command command = jsonObject.to(Command.class) ;
         //command.param = jsonObject.getObject("param", class);
         return command ;
      }catch(Exception e){
         throw new Exception(e.getMessage() , e ) ;
      }
   }
   /**
    * 创建返回的出错命令
    * @param error 错误消息
    * @param commandId 命令ID
    * @return Command
    */
   @SuppressWarnings("unused")
   public Command createReturnErrorCommand(String error , String commandId, String code){
      if(commandId == null){
         this.setId(defaultId) ;
      }else{
         this.setId(commandId) ;
      }
      this.code = code ;
      this.type = CommandType.resultCommand ;
      CommandBackParam p = new CommandBackParam() ;
      p.setSuccess(false) ;
      p.setMessage(error) ;
      this.param = p ;
      return this ;
   }
   /**
    * 创建返回的简单成功命令,针对监控中间件的命令
    * @param message 消息
    * @param commandId 命令ID
    * @param code 功能码
    * @return Command
    */
   @SuppressWarnings("unused")
   public Command createReturnSuccessCommand(String message , String commandId, String code){
      if(commandId == null){
         this.setId(defaultId) ;
      }else{
         this.setId(commandId) ;
      }
      this.code = code ;
      this.type = CommandType.resultCommand ;
      CommandBackParam p = new CommandBackParam() ;
      p.setSuccess(true) ;
      p.setMessage(message) ;
      this.param = p ;
      return this ;
   }
   public String getId() {
      return id;
   }
   public Command setId(String id) {
      this.id = id;
      return this ;
   }
   public String getRtuAddr() {
      return rtuAddr;
   }
   public Command setRtuAddr(String rtuAddr) {
      this.rtuAddr = rtuAddr;
      return this ;
   }
   public String getRtuResultSendWebUrl() {
      return rtuResultSendWebUrl;
   }
   public void setRtuResultSendWebUrl(String rtuResultSendWebUrl) {
      this.rtuResultSendWebUrl = rtuResultSendWebUrl;
   }
   public String getProtocol() {
      return protocol;
   }
   public void setProtocol(String protocol) {
      this.protocol = protocol;
   }
   public String getType() {
      return type;
   }
   public Command setType(String type) {
      this.type = type;
      return this ;
   }
   public String getCode() {
      return code;
   }
   public Command setCode(String code) {
      this.code = code;
      return this ;
   }
   public Object getParam() {
      return param;
   }
   public Command setParam(Object param) {
      this.param = param;
      return this ;
   }
   public Object getAttachment() {
      return attachment;
   }
   @SuppressWarnings("unused")
   public Command setAttachment(Object attachment) {
      this.attachment = attachment;
      return this ;
   }
}