package com.ld.igds.protocol.fzzy.builder; import com.ld.igds.models.DeviceSer; import com.ld.igds.protocol.fzzy.ServerUtils; import com.ld.igds.protocol.fzzy.dto.MessageInfo; import com.ld.igds.protocol.fzzy.dto.ReMessage; import com.ld.igds.protocol.fzzy.dto.SendMessage; import org.apache.commons.lang3.RandomUtils; /** * 系统接口 */ public class ObjectCommandBuilder extends CommandBuilder { private final static ObjectCommandBuilder instance = new ObjectCommandBuilder(); private ObjectCommandBuilder() { } public static ObjectCommandBuilder getInstance() { return instance; } public SendMessage buildMessage(DeviceSer deviceSer, String functionId, Object obj) { SendMessage message = new SendMessage(); message.setIp(deviceSer.getIp()); message.setPort(deviceSer.getPort()); message.setBegin(ServerUtils.MSG_BEGIN); // 调整信息 buildInfo(message, deviceSer, functionId, obj); message.setEnd(ServerUtils.MSG_END); // 生成整体命令信息和BYte信息 build(message); return message; } public SendMessage buildMessage(ReMessage reMessage, String functionId, Object obj) { SendMessage message = new SendMessage(); message.setIp(reMessage.getIp()); message.setPort(reMessage.getPort()); message.setBegin(ServerUtils.MSG_BEGIN); // 调整信息 buildInfo(message, reMessage, functionId, obj); message.setEnd(ServerUtils.MSG_END); // 生成整体命令信息和BYte信息 build(message); return message; } public void buildInfo(SendMessage message, ReMessage reMessage, String functionId, Object object) { MessageInfo info = new MessageInfo(); info.setSign(reMessage.getCompanyId()); info.setIedId(reMessage.getIedId()); info.setFunctionId(functionId); info.setRespCode("0000"); info.setOrderId(RandomUtils.nextInt(4000, 9999) + ""); info.setUserData("0"); info.setSign("0000"); info.setContent(object); message.setInfo(info); } public void buildInfo(SendMessage message, DeviceSer deviceSer, String functionId, Object object) { MessageInfo info = new MessageInfo(); info.setSign(deviceSer.getCompanyId()); info.setIedId(deviceSer.getId()); info.setFunctionId(functionId); info.setRespCode("0000"); info.setOrderId(RandomUtils.nextInt(4000, 9999) + ""); info.setUserData("0"); info.setSign("0000"); //封装消消息内容 info.setContent(object); message.setInfo(info); } }