2025-12-08 10:23:59 +08:00

130 lines
4.8 KiB
Java
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

package com.zhgd.xmgl.util;
import cn.hutool.core.util.StrUtil;
import cn.hutool.core.util.URLUtil;
import cn.hutool.http.HttpRequest;
import cn.hutool.http.HttpUtil;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.gexin.fastjson.JSON;
import com.zhgd.jeecg.common.execption.OpenAlertException;
import lombok.extern.slf4j.Slf4j;
import java.nio.charset.StandardCharsets;
import java.util.HashMap;
import java.util.Map;
import java.util.Objects;
@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);
log.info("根据设备地址查询实时数据url:{},authorization:{}", url, token);
String rsp = HttpRequest.get(url)
.header("authorization", token)
.timeout(5000)//超时,毫秒
.execute().body();
JSONObject rspJo = JSONObject.parseObject(rsp);
log.info("根据设备地址查询实时数据rs:{}", rspJo.toJSONString());
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);
log.info("获取报警数据列表url:{},authorization:{}", url, token);
String rsp = HttpRequest.get(url)
.header("authorization", token)
.timeout(5000)//超时,毫秒
.execute().body();
JSONObject rspJo = JSONObject.parseObject(rsp);
log.info("获取报警数据列表rs:{}", rspJo.toJSONString());
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);
}
}
/**
* 继电器操作(喷淋)
*
* @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);
}
/**
* 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"));
}
}
}