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 = "<FZZY>";
|
public static final String SUFFIX = "<EEEE>";
|
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<DeviceAttrInfo> 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;
|
}
|
}
|