package com.ld.igds.protocol.iot.height.analysis.builder; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.ld.igds.protocol.iot.height.analysis.message.DeviceAttr; import com.ld.igds.protocol.iot.height.analysis.message.DeviceAttrInfo; import com.ld.igds.protocol.iot.height.analysis.message.IoMessage; import java.util.ArrayList; import java.util.List; /** * 根据接收到的信息进行封装 * * @author vince */ public class ReMessageBuilder { public static final String CHARSET = "UTF-8"; public static final String PREFIX = ""; public static final String SUFFIX = ""; public final static String ERROR_TAG = "null"; public final static String ERROR_STR = "#"; private final static ReMessageBuilder instance = new ReMessageBuilder(); private ReMessageBuilder() { } public static ReMessageBuilder getInstance() { return instance; } /** * @param ip * @param port * @param message * @return */ public DeviceAttr buildMessage( String ip, int port, String message) throws Exception { IoMessage ioMessage = JSON.parseObject(message, IoMessage.class); JSONArray passCodeArray = JSON.parseArray(ioMessage.getContent()); if (passCodeArray == null || passCodeArray .size() == 0) { return null; } List terminalAttrInfoList = new ArrayList<>(); JSONObject passCode = null; for(int i = 0; i< passCodeArray.size(); i++ ){ passCode = passCodeArray.getJSONObject(i); if(passCode == null){ continue; } DeviceAttrInfo terminalAttrInfo = new DeviceAttrInfo(); terminalAttrInfo.setPasscode(passCode.getString("passcode")); terminalAttrInfo.setTime(ioMessage.getTime()); String value = passCode.getString("value"); // null 值替换为#号 if(ERROR_TAG.equals(value))value = ERROR_STR; terminalAttrInfo.setValue(value); terminalAttrInfoList.add(terminalAttrInfo); } DeviceAttr request = new DeviceAttr(); request.setSn(ioMessage.getSn()); request.setOrderId(ioMessage.getOrderId()); request.setOrgId(ioMessage.getOrgId()); request.setGroupId(ioMessage.getGroupId()); request.setGatewayId(ioMessage.getIedId()); request.setDeviceId(ioMessage.getDeviceId()); request.setTerminalAttrInfoList(terminalAttrInfoList); return request; } }