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 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 += (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 ;
|
}
|
|
}
|