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; /** * 粮情分机-修改通道电缆 * * @author Andy */ public class CommandBuilder1126 extends CommandBuilder { private final static CommandBuilder1126 instance = new CommandBuilder1126(); private CommandBuilder1126() { } public static CommandBuilder1126 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); message.setCompanyId(hexCompanyId); message.setTargetId(BytesUtil.tran_LH(BytesUtil.getTargetId( request.getSerId(), true))); message.setMessageType(BytesUtil.tran_LH(ServerUtils.MSG_TYPE_1126)); } public void buildBody(Message message, GrainSerConfRequest request) { MessageBody body = new MessageBody(); body.setLength(5); StringBuilder bodyStr = new StringBuilder(); // 修改标识 bodyStr.append(BytesUtil.toHexString(request.getEditTag())); // 通道号 bodyStr.append(BytesUtil.toHexString(request.getPassCode())); // 列号 bodyStr.append(BytesUtil.toHexString(request.getEditCol())); // 点序号/原根号/起始根号/根序号 // 新点号/新根号/电缆层数/新根号 if (6 == request.getEditTag()) { bodyStr.append(BytesUtil.toHexString(request.getValue1())); bodyStr.append(BytesUtil.toHexString(request.getValue2())); } else if (5 == request.getEditTag()) { bodyStr.append(BytesUtil.toHexString(request.getValue1())); bodyStr.append(BytesUtil.toHexString(request.getValue2())); } else if (4 == request.getEditTag()) { bodyStr.append(BytesUtil.toHexString(request.getValue1())); bodyStr.append(BytesUtil.toHexString(request.getValue2())); } else if (2 == request.getEditTag()) { bodyStr.append(BytesUtil.toHexString(request.getValue1())); bodyStr.append(BytesUtil.toHexString(request.getValue2())); } else { bodyStr.append("00"); bodyStr.append("00"); } body.setContent(bodyStr.toString()); message.setBody(body); } }