CZT
2023-09-06 71c4fa1e27f75ae4b765c95c67a3069c84dc72ba
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
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;
    }
}