| 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)?"内部命令":(type.equals(CommandType.outerCommand)?"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 ; | 
|     } | 
|      | 
| } |