package com.ld.igds.protocol.bhzn.verb.builder; import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.serializer.SimplePropertyPreFilter; import com.ld.igds.io.request.BaseRequest; import com.ld.igds.protocol.bhzn.verb.dto.IoMessage; import com.ld.igds.protocol.bhzn.verb.server.BhznVerbServerUtils; /** * 命令生成 * * @author Andy */ public abstract class CommandBuilder { public IoMessage buildMessage(BaseRequest request) { IoMessage message = new IoMessage(); message.setIp(request.getIp()); message.setPort(request.getPort()); message.setBegin(BhznVerbServerUtils.MSG_START1); // 调整信息 buildInfo(message, request); message.setSign("0000"); message.setStNum(Integer.parseInt(request.getDepotId())); message.setVersion("V1.0000000"); message.setCmd(248); message.setResult(""); message.setOrderId(request.getOrderId()); message.setContent(null); message.setEnd(BhznVerbServerUtils.MSG_END); // 生成整体命令信息和BYte信息 build(message); return message; } public void buildInfo(IoMessage message, BaseRequest request) { } /** * 根据生成的命令,进行调整 * * @param message */ public void build(IoMessage message) { StringBuffer hexSb = new StringBuffer(); hexSb.append(message.getBegin()); SimplePropertyPreFilter filter = new SimplePropertyPreFilter(); filter.getExcludes().add("ip"); filter.getExcludes().add("port"); filter.getExcludes().add("companyId"); filter.getExcludes().add("strMsg"); filter.getExcludes().add("begin"); filter.getExcludes().add("end"); filter.getExcludes().add("byteMsg"); filter.getExcludes().add("contentSr"); message.setContent(JSONObject.parseObject(message.getContentStr())); message.setStrMsg(JSONObject.toJSONString(message,filter)); hexSb.append(message.getStrMsg()); hexSb.append(message.getEnd()); message.setByteMsg(hexSb.toString().getBytes()); } }