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();
|
}
|
}
|
}
|