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