南昌市物联网技防平台-公安版
zengh
2021-06-04 c926acaadc3d98fd8ba8926466b842f1edb3aee3
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
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
package org.springblade.onenetstudio.tm;
 
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.onenet.studio.acc.sdk.OpenApi;
import com.onenet.studio.acc.sdk.OpenApiExtention;
import com.onenet.studio.acc.sdk.dto.GeoLocationStructDTO;
import org.springblade.onenetstudio.entity.Equipments;
import org.springblade.onenetstudio.service.EquipmentService;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
 
import javax.annotation.PostConstruct;
import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
 
/**
 * 设备属性数据交互
 */
@Component
public class PropertyPost {
 
    @Resource
    private EquipmentService equipmentService;
 
    @Value("${sdk.api.url}")
    private String url;
 
    @PostConstruct
    public void init() {
        //查询设备
        List<Equipments> equipmentsList = equipmentService.selRegisterEqList();
        //有数据则创建openApi对象
        if (equipmentsList.size()>0){
            for (Equipments equipments:equipmentsList) {
                try {
                    OpenApi openApi = OpenApi.Builder.newBuilder()
                        .url(url)
                        .productId(equipments.getProId())
                        .devKey(equipments.getEqName())
                        .accessKey(equipments.getEqSecret())
    //                .caCrtFile(caCrtFile)
                        .build();
                    System.out.println("openApi = " + openApi);
                    OpenApiExtention extention = new OpenApiExtention(openApi);
                    //属性上报
                    propertyUp(extention,equipments);
                    //属性设置
                    //        propertySet(extention);
                    //属性获取
                    //        peropertyGet(extention);
                    //期望值获取
                    //        desiredGet(extention);
                    //期望值删除
                    //        desiredDel(extention);
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        }
    }
 
    /**
     * 属性上报
     *
     * @author wjl
     * @date 2020/12/29
     * @param extention 物模型扩展API
     **/
    public void propertyUp(OpenApiExtention extention,Equipments equipments) {
        //设置坐标数据
        GeoLocationStructDTO geoLocationStructDTO = new GeoLocationStructDTO();
        geoLocationStructDTO.setAltitude(100.00);
        geoLocationStructDTO.setLatitude(Double.parseDouble(String.format("%.2f", Double.parseDouble(equipments.getWd()))));
        geoLocationStructDTO.setLongitude(Double.parseDouble(String.format("%.2f", Double.parseDouble(equipments.getJd()))));
        geoLocationStructDTO.setCoordinateSystem(1);
        try {
            //设备数据上报
            int result = extention.propertyUpload(5000,
                                                0,
                                                100,
                                                geoLocationStructDTO,
                                                equipments.getDeviceName(),
                                                equipments.getNetType(),
                                                equipments.getSerialNumber(),
                                                equipments.getEqModel());
            //result 0 即为上报成功   1:失败
            System.out.println("up result : " + result);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
 
    /**
     * 属性设置
     *
     * @author wjl
     * @date 2020/12/29
     * @param extention 物模型扩展API
     **/
    public void propertySet(OpenApiExtention extention) {
//        try {
//            extention.propertySet(oneJson -> {
//                System.out.println("receive oneJson : " + oneJson);
//                JSONObject json = JSON.parseObject(oneJson);
//                try {
//                    extention.propertySetReply(json.getString("id"), 200, "success");
//                } catch (Exception e) {
//                    e.printStackTrace();
//                }
//            });
//        } catch (Exception e) {
//            e.printStackTrace();
//        }
    }
 
    /**
     * 属性获取
     *
     * @author wjl
     * @date 2020/12/29
     * @param extention 物模型扩展API
     **/
    public void peropertyGet(OpenApiExtention extention) {
        try {
            extention.propertyGet(oneJson -> {
                System.out.println("receive oneJson : " + oneJson);
                JSONObject json = JSON.parseObject(oneJson);
                try {
                    // 返回的属性与收到的属性要对应上,否则不成功
                    Map<String, Object> map = new HashMap<>();
                    map.put("DeviceStatus", 1);
                    extention.propertyGetReply(json.getString("id"), 200, "success", map);
                } catch (Exception e) {
                    e.printStackTrace();
                }
            });
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
 
    /**
     * 期望值获取
     *
     * @author wjl
     * @date 2020/12/29
     * @param extention 物模型扩展API
     **/
    public void desiredGet(OpenApiExtention extention) {
        List<String> list = new ArrayList<>();
        list.add("DeviceStatus");
 
        try {
            JSONObject get = extention.propertyDesiredGet(list.toArray(new String[list.size()]), 5000);
            System.out.println("desired get oneJson : " + get.toJSONString());
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
 
    /**
     * 期望值删除
     *
     * @author wjl
     * @date 2020/12/29
     * @param extention 物模型扩展API
     * @return void
     **/
    public void desiredDel(OpenApiExtention extention) {
        Map<String, Integer> map = new HashMap<>();
        map.put("DeviceStatus", 1);
        try {
            int result = extention.propertyDesiredDel(5000, map);
            System.out.println("desired del result : " + result);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}