package com.ld.igds.io.fzzy.command; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import com.ld.igds.io.fzzy.ServerUtils; import com.ld.igds.io.fzzy.dto.IoMessage; import com.ld.igds.io.fzzy.dto.Req1001; import com.ld.igds.io.fzzy.dto.Resp1002; import com.ld.igds.io.request.QuantityRequest; /** * 命令生成 * * @author vince */ public class CommandBuilder { /** * 下发配置 * * @param request * @return */ public IoMessage build1001Message(QuantityRequest request) { IoMessage message = new IoMessage(); // 调整信息 buildInfo(message, request); Req1001 req1001 = new Req1001(); req1001.setHeight(request.getHeight().intValue()); req1001.setOrien(1); req1001.setVoluWeight(request.getDensity().intValue()); req1001.setStorageType("01".equals(request.getDepotType()) ? 1 : 0); req1001.setWeightAdd(request.getWeightAdd().intValue()); req1001.setVolumeAdd(request.getVolumeAdd().intValue()); if ("01".equals(request.getDepotType())) { req1001.setStorageType(1); req1001.setLength(Integer.parseInt((request.getLength() * 100.00) + "")); req1001.setWidth(Integer.parseInt((request.getWidth() * 100.00) + "")); } else { req1001.setStorageType(0); req1001.setRadius(Integer.parseInt((request.getWidth() * 100.00) + "")); //筒仓时候宽度当作半径 } message.setContent(JSON.toJSONString(req1001)); message.setFunctionId(ServerUtils.FUNCTION_1001); return message; } /** * 回复时间 * * @return */ public IoMessage build1002Message(IoMessage message) { message.setFunctionId(ServerUtils.FUNCTION_1002); Resp1002 resp1002 = new Resp1002(); resp1002.setTime(System.currentTimeMillis()); message.setContent(JSON.toJSONString(resp1002)); return message; } /** * 回复登陆成功 * * @return */ public IoMessage build1003Message(IoMessage message) { message.setFunctionId(ServerUtils.FUNCTION_1003); message.setContent(null); return message; } /** * 开始检测 * * @param request * @return */ public IoMessage build2001Message(QuantityRequest request) { IoMessage message = new IoMessage(); // 调整信息 buildInfo(message, request); message.setFunctionId(ServerUtils.FUNCTION_2001); return message; } /** * 停止检测 * * @param request * @return */ public IoMessage build2002Message(QuantityRequest request) { IoMessage message = new IoMessage(); // 调整信息 buildInfo(message, request); message.setFunctionId(ServerUtils.FUNCTION_2002); return message; } /** * 进度查询 * * @param request * @return */ public IoMessage build2003Message(QuantityRequest request) { IoMessage message = new IoMessage(); // 调整信息 buildInfo(message, request); message.setFunctionId(ServerUtils.FUNCTION_2003); return message; } /** * 结果上报 * * @param * @return */ public IoMessage build2004Message(IoMessage message) { message.setFunctionId(ServerUtils.FUNCTION_2004); message.setContent(null); return message; } /** * 查询点位数据 * * @param request * @return */ public IoMessage build2005Message(QuantityRequest request) { IoMessage message = new IoMessage(); // 调整信息 buildInfo(message, request); message.setFunctionId(ServerUtils.FUNCTION_2005); return message; } /** * 抓拍 * * @param message * @return */ public IoMessage build2006Message(IoMessage message) { message.setFunctionId(ServerUtils.FUNCTION_2006); message.setContent(""); return message; } /** * 抓拍 * * @param request * @return */ public IoMessage build2006Message(QuantityRequest request) { IoMessage message = new IoMessage(); // 调整信息 buildInfo(message, request); message.setFunctionId(ServerUtils.FUNCTION_2006); return message; } /** * 心跳返回 * * @param message * @return */ public IoMessage build2007Message(IoMessage message) { //message.setFunctionId(ServerUtils.FUNCTION_2007); return message; } public void buildInfo(IoMessage message, QuantityRequest request) { message.setSn(request.getSn()); message.setOrderId(ServerUtils.createOrderId()); message.setSign(ServerUtils.SIGN_DEFAULT); message.setResult(ServerUtils.RESP_0); message.setVersion(ServerUtils.VERSION_1); } /** * 根据生成的命令,进行调整 * * @param message */ public String build(IoMessage message) { StringBuffer hexSb = new StringBuffer(); hexSb.append(ServerUtils.MSG_BEGIN); hexSb.append(JSONObject.toJSONString(message)); hexSb.append((ServerUtils.MSG_END)); return hexSb.toString(); } private static CommandBuilder instance = new CommandBuilder(); private CommandBuilder() { } public static CommandBuilder getInstance() { return instance; } }