package com.ld.igds.protocol.zldz.command.builder; import com.ld.igds.io.request.GrainSerConfRequest; import com.ld.igds.protocol.zldz.command.message.Message; import com.ld.igds.protocol.zldz.command.message.MessageBody; import com.ld.igds.protocol.zldz.util.ServerUtils; import com.ld.igds.util.BytesUtil; import org.apache.commons.lang3.StringUtils; /** * * @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(GrainSerConfRequest request) { Message message = new Message(); message.setBegin(ServerUtils.MSG_START); // 调整Message头部信息 buildHeader(message, request); //包头校验 buildCrc8(message); // 创建消息体 buildBody(message, request); // 添加校验 buildCrc16(message); message.setEnd(ServerUtils.MSG_END); // 生成整体命令信息和BYte信息 build(message); return message; } public void buildHeader(Message message, GrainSerConfRequest request) { 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(request.getOrgId(),true)); message.setCompanyId(orgId); message.setTargetId(BytesUtil.tran_LH(BytesUtil.getTargetId(request.getSerId(), true))); message.setMessageType(BytesUtil.tran_LH(ServerUtils.MSG_TYPE_1116)); } public void buildBody(Message message, GrainSerConfRequest request) { 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));//速率 content.append(BytesUtil.toHexString(request.getCableZ())); content.append(BytesUtil.toHexString(request.getCableY())); content.append(BytesUtil.toHexString(request.getCableX())); content.append(BytesUtil.getTargetId(request.getCableFormat(),false)); content.append(BytesUtil.getTargetId(request.getCableType(),false)); if(StringUtils.isEmpty(request.getPowerModel())){ request.setPowerModel("02"); } content.append(BytesUtil.getTargetId(request.getPowerModel(),false)); content.append(message.getSourceId()); body.setContent(content.toString()); body.setLength(14); message.setBody(body); } }