You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
183 lines
7.5 KiB
183 lines
7.5 KiB
package com.example.zxweb.utils;
|
|
|
|
import com.alibaba.fastjson.JSONArray;
|
|
import com.alibaba.fastjson.JSONObject;
|
|
import com.example.zxweb.common.constant.DevConstant;
|
|
import com.example.zxweb.common.constant.enums.IotApiEnum;
|
|
import com.example.zxweb.exception.BusinessException;
|
|
import lombok.extern.slf4j.Slf4j;
|
|
import org.apache.commons.lang3.StringUtils;
|
|
import org.springframework.stereotype.Component;
|
|
import org.springframework.util.CollectionUtils;
|
|
|
|
import java.util.ArrayList;
|
|
import java.util.List;
|
|
|
|
/**
|
|
* @Description ios 设备请求工具
|
|
* @Author ZhouWenTao
|
|
* @Date 2023/9/8 11:59
|
|
*/
|
|
@Component
|
|
@Slf4j
|
|
public class IotUtils {
|
|
//请求服务地址 https://10.0.10.153:2443/api/iot/v1
|
|
private static final String API_PREFIX = "https://10.0.10.153:2443/api/iot/v1";
|
|
private static String serial = DevConstant.gateway.gateway_5lqh;
|
|
private static final JSONObject headers=JSONObject.parseObject("{\"x-consumer-username\":\"dwVendor\",\"appCode\":\"42142fd0jkbf4515853b7fcec64748f6\"}");
|
|
|
|
public static List<JSONObject> devicesMethodsNews(JSONObject queryData){
|
|
String serial = queryData.getString("serial");
|
|
String[] serials = serial.split(",");
|
|
List<JSONObject> list=new ArrayList<>();
|
|
for (String s : serials) {
|
|
String url = API_PREFIX + IotApiEnum.getPathByText("查询方法历史数据") + "?serial=" + s;
|
|
if (!StringUtils.isEmpty(queryData.getString("methodName"))) {
|
|
url+="&methodName="+queryData.getString("methodName");
|
|
}
|
|
JSONObject jsonObject = RestUtil.get(url, null, null, headers);
|
|
Integer code = jsonObject.getInteger("code");
|
|
if (code==0) {
|
|
if (jsonObject.getJSONObject("data")==null) {
|
|
continue;
|
|
}
|
|
JSONArray jsonArray = jsonObject.getJSONObject("data").getJSONArray("methods");
|
|
if (CollectionUtils.isEmpty(jsonArray)) {
|
|
continue;
|
|
}
|
|
list.add(jsonArray.getJSONObject(0));
|
|
}
|
|
}
|
|
return list;
|
|
}
|
|
|
|
/**
|
|
* {"serial":"0cefafd605f7","productId":"", "methodName":"celueSet","inputData":{"devid":"0cefafd605f7","celueid":"100000000003","name":"策略3","triggereTime":"20 18 * * 1,4,6","action":"e826ecfeff81f68c.light.controlLight.ctrl_ch0_status=\"0\"","startTime":"2023-09-12 10:00:00","endTime":"2023-09-30 11:30:00" }}
|
|
* @param requestBody
|
|
* @return
|
|
*/
|
|
public static boolean celueSet(JSONObject requestBody){
|
|
JSONObject responseBody = postApi(IotApiEnum.getPathByText("向设备发送方法"), requestBody);
|
|
try {
|
|
if (responseBody!=null) {
|
|
JSONObject data = responseBody.getJSONObject("data");
|
|
if (data!=null) {
|
|
JSONObject outputData = data.getJSONObject("outputData");
|
|
if (outputData!=null) {
|
|
Integer code = outputData.getInteger("code");
|
|
if (code==1) {
|
|
return true;
|
|
}
|
|
}else{
|
|
throw new BusinessException(outputData.getString("message"));
|
|
}
|
|
}
|
|
}
|
|
}catch (Exception e){
|
|
throw new BusinessException(e.getMessage());
|
|
}
|
|
return false;
|
|
}
|
|
|
|
/**
|
|
* 更改策略状态
|
|
* @param celueId 策略id
|
|
* @param status 1-启动 0-停止
|
|
* @return true/false
|
|
*/
|
|
public static boolean editCelueStatus(String celueId,String status){
|
|
String serial = DevConstant.gateway.gateway_5lqh;
|
|
JSONObject requestBody=JSONObject.parseObject(String.format("{\t\"serial\":\"%s\",\t\"productId\":\"\",\t\"methodName\":\"celueCmd\",\t\"inputData\":{\t\t\"devid\":\"%s\",\t\t\"celueid\":\"%s\",\t\t\"startStop\":\"%s\"\t}}",serial,serial,celueId,status));
|
|
System.out.println(requestBody.toJSONString());
|
|
try {
|
|
JSONObject jsonObject = postApi(IotApiEnum.getPathByText("向设备发送方法"), requestBody);
|
|
log.info(jsonObject.toJSONString());
|
|
JSONObject data = jsonObject.getJSONObject("data");
|
|
if (data!=null) {
|
|
JSONObject outputData = data.getJSONObject("outputData");
|
|
if (outputData!=null) {
|
|
Integer code1 = outputData.getInteger("code");
|
|
if (code1!=null && 1==code1) {
|
|
return true;//更改成功
|
|
}else{
|
|
throw new BusinessException(outputData.getString("message"));
|
|
}
|
|
}
|
|
}
|
|
}catch (Exception e){
|
|
throw new BusinessException(e.getMessage());
|
|
}
|
|
return false;
|
|
}
|
|
|
|
/**
|
|
* 获取策略的状态
|
|
* @param celueId 策略id
|
|
* @return 1-运行中,0-停止中
|
|
*/
|
|
public static String getCelueStatus(String celueId){
|
|
String str=String.format("{\"serial\":\"%s\",\"productId\":\"\",\"methodName\":\"celueStatusQuery\",\"inputData\":{\"devid\":\"%s\",\"celueid\":\"%s\"}}",serial,serial,celueId);
|
|
System.out.println("-----------------");
|
|
System.out.println(str);
|
|
JSONObject requestBody = JSONObject.parseObject(str);
|
|
JSONObject responseBody = IotUtils.getApi(IotApiEnum.getPathByText("查询方法历史数据"), requestBody);
|
|
JSONObject data = responseBody.getJSONObject("data");
|
|
try {
|
|
if (data!=null) {
|
|
JSONObject outputData = data.getJSONObject("outputData");
|
|
if (outputData!=null) {
|
|
return outputData.getString("status");
|
|
}
|
|
}
|
|
}catch (Exception e){
|
|
throw new BusinessException(e.getMessage());
|
|
}
|
|
return "0";
|
|
}
|
|
|
|
/**
|
|
* 删除策略
|
|
* @param celueId 策略id
|
|
*/
|
|
public static boolean deleteCelue(String celueId) {
|
|
String request=String.format("{\"serial\":\"%s\",\"productId\":\"\",\"methodName\":\"celueDelete\",\"inputData\":{\"devid\":\"%s\",\t\"celueid\":\"%s\"}}",serial,serial,celueId);
|
|
try {
|
|
JSONObject requestBody = JSONObject.parseObject(request);
|
|
JSONObject responseBody = postApi(IotApiEnum.getPathByText("向设备发送方法"), requestBody);
|
|
JSONObject data = responseBody.getJSONObject("data");
|
|
if (data!=null) {
|
|
JSONObject outputData = data.getJSONObject("outputData");
|
|
if (outputData != null) {
|
|
Integer code = outputData.getInteger("code");
|
|
return code == 1;
|
|
}else{
|
|
throw new BusinessException(outputData.getString("message"));
|
|
}
|
|
}
|
|
}catch (Exception e){
|
|
throw new BusinessException(e);
|
|
}
|
|
return false;
|
|
}
|
|
|
|
public static JSONObject getApi(String apiUrl,JSONObject queryData) {
|
|
|
|
StringBuilder sb=new StringBuilder();
|
|
int i=0;
|
|
for (String field : queryData.keySet()) {
|
|
String value = (String) queryData.get(field);
|
|
if (StringUtils.isEmpty(value)) {
|
|
continue;
|
|
}
|
|
sb.append(i==0?"?":"&");
|
|
sb.append(field).append("=").append(value);
|
|
i++;
|
|
}
|
|
return RestUtil.get(API_PREFIX+apiUrl+sb,null,null,headers);
|
|
}
|
|
|
|
public static JSONObject postApi(String apiUrl,JSONObject requestBody){
|
|
return RestUtil.post(API_PREFIX+apiUrl,requestBody,headers);
|
|
}
|
|
}
|