130 lines
4.8 KiB
Java
Raw Normal View History

2024-06-24 16:15:01 +08:00
package com.zhgd.xmgl.util;
import cn.hutool.core.util.StrUtil;
2025-12-08 10:23:59 +08:00
import cn.hutool.core.util.URLUtil;
2024-06-24 16:15:01 +08:00
import cn.hutool.http.HttpRequest;
import cn.hutool.http.HttpUtil;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
2025-12-08 10:23:59 +08:00
import com.gexin.fastjson.JSON;
import com.zhgd.jeecg.common.execption.OpenAlertException;
2024-06-24 16:15:01 +08:00
import lombok.extern.slf4j.Slf4j;
2025-12-08 10:23:59 +08:00
import java.nio.charset.StandardCharsets;
import java.util.HashMap;
import java.util.Map;
import java.util.Objects;
2024-06-24 16:15:01 +08:00
@Slf4j
public class RenZhiUtil {
public static final String host = "http://www.0531yun.com";
/**
* 根据设备地址查询实时数据
*
* @param devSns
* @param jnrzckAccount
* @param jnrzckPw
* @return
*/
public static JSONArray getRealTimeDataByDeviceAddr(String devSns, String jnrzckAccount, String jnrzckPw) {
String token = getToken(jnrzckAccount, jnrzckPw);
String url = StrUtil.format("{}/api/data/getRealTimeDataByDeviceAddr?deviceAddrs={}", host, devSns);
2024-06-29 16:49:17 +08:00
log.info("根据设备地址查询实时数据url:{},authorization:{}", url, token);
2024-06-24 16:15:01 +08:00
String rsp = HttpRequest.get(url)
.header("authorization", token)
.timeout(5000)//超时,毫秒
.execute().body();
JSONObject rspJo = JSONObject.parseObject(rsp);
2024-06-29 16:49:17 +08:00
log.info("根据设备地址查询实时数据rs:{}", rspJo.toJSONString());
2024-06-24 16:15:01 +08:00
try {
return rspJo.getJSONArray("data");
} catch (Exception e) {
throw new RuntimeException("根据设备地址查询实时数据失败:", e);
}
}
/**
* 获取报警数据列表
*
* @param devSn
* @param nodeId
* @return
*/
public static JSONArray getAlarmRecordList(String devSn, String token, Integer nodeId, String startTime, String endTime) {
String url = StrUtil.format("{}/api/data/alarmRecordList?deviceAddr={}&nodeId={}&startTime={}&endTime={}", host, devSn, nodeId, startTime, endTime);
2024-06-29 16:49:17 +08:00
log.info("获取报警数据列表url:{},authorization:{}", url, token);
2024-06-24 16:15:01 +08:00
String rsp = HttpRequest.get(url)
.header("authorization", token)
.timeout(5000)//超时,毫秒
.execute().body();
JSONObject rspJo = JSONObject.parseObject(rsp);
2024-06-29 16:49:17 +08:00
log.info("获取报警数据列表rs:{}", rspJo.toJSONString());
2024-06-24 16:15:01 +08:00
try {
return rspJo.getJSONArray("data");
} catch (Exception e) {
throw new RuntimeException("获取报警数据列表失败:", e);
}
}
/**
* 根据用户名和密码获取 token
*
* @param jnrzckAccount
* @param jnrzckPw
* @return
*/
public static String getToken(String jnrzckAccount, String jnrzckPw) {
String url = StrUtil.format("{}/api/getToken?loginName={}&password={}", host, jnrzckAccount, jnrzckPw);
log.info("url:{}", url);
String rsp = HttpUtil.get(url);
JSONObject rspJo = JSONObject.parseObject(rsp);
log.info("rs:{}", rspJo.toJSONString());
try {
return rspJo.getJSONObject("data").getString("token");
} catch (Exception e) {
throw new RuntimeException("获取token失败", e);
}
}
2025-12-08 10:23:59 +08:00
/**
* 继电器操作喷淋
*
* @param deviceId
* @param opt 设备操作 0闭合 1断开
* @param token
* @return
*/
public static JSONObject setRelay(String deviceId, Integer opt, String token) {
Map<String, Object> paramMap = new HashMap<>();
paramMap.put("deviceAddr", deviceId);
paramMap.put("opt", opt);
paramMap.put("relayNo", "1");//继电器编号
String url = "http://www.0531yun.com/api/device/setRelay";
log.info("继电器操作(喷淋),url:{},body:{}", url, JSON.toJSONString(paramMap));
String result = HttpRequest.post(url).form(paramMap).header("authorization", token).execute().body();
log.info("继电器操作(喷淋),rs:{}", result);
return JSONObject.parseObject(result);
}
2024-06-24 16:15:01 +08:00
2025-12-08 10:23:59 +08:00
/**
* http操作喷淋
*
* @param deviceId
* @param sprayStatus 喷淋状态1投运2未投运
* @param jnrzckAccount
* @param jnrzckPw
*/
public static void httpOptSpray(String deviceId, Integer sprayStatus, String jnrzckAccount, String jnrzckPw) {
String token = RenZhiUtil.getToken(jnrzckAccount, jnrzckPw);
if (StrUtil.isBlank(token)) {
throw new OpenAlertException("token获取失败");
}
Integer opt = Objects.equals(sprayStatus, 1) ? 0 : 1;
JSONObject jsonObject = RenZhiUtil.setRelay(deviceId, opt, token);
if (!Objects.equals(jsonObject.getInteger("code"), 1000)) {
throw new OpenAlertException("喷淋失败:" + jsonObject.getString("message"));
}
}
2024-06-24 16:15:01 +08:00
}