获取仁科token组件

This commit is contained in:
mi9688 2024-11-12 10:13:27 +08:00
parent 61e3e76116
commit 6e0082caa9
10 changed files with 115 additions and 154 deletions

View File

@ -13,6 +13,7 @@ import com.fastbee.common.utils.RotateImageUtils;
import com.fastbee.common.utils.file.FileUploadUtils;
import com.fastbee.common.utils.poi.ExcelUtil;
import com.fastbee.deviceData.api.renke.domin.*;
import com.fastbee.deviceData.api.renke.service.RenKeAuthorizationService;
import com.fastbee.deviceData.api.renke.service.RenkeMetDeviceService;
import com.fastbee.deviceData.api.renke.service.RenkeWormSituationDeviceService;
import io.swagger.annotations.Api;
@ -50,6 +51,7 @@ public class test extends BaseController {
@Autowired
private RenkeMetDeviceService renkeMetDeviceService;
/**
* 查询设备告警上传列表
*/
@ -60,21 +62,20 @@ public class test extends BaseController {
String deviceAddr= "1017240042";
String groupId = "1";
String recordIds = "1";
String token = "199491731313034631";
String beginTime = "2024-10-30 10:00:00",
endTime = "2024-11-12 10:00:00";
Integer pages = 1;
Integer limit = 1;
String nodeId = "1";
String enable = "1";
return renkeMetDeviceService.getWormDataList(deviceAddr,nodeId,beginTime,endTime,pages,limit,token);
return renkeMetDeviceService.getWormDataList(deviceAddr,nodeId,beginTime,endTime,pages,limit);
}
@PostMapping("/testJosn")
public Object testJosn(@RequestBody UpdateNodeInfo json) {
String token = "91191731304831841";
return renkeMetDeviceService.updateNodeInfo(json,token);
return renkeMetDeviceService.updateNodeInfo(json);
}
}

View File

@ -4,10 +4,12 @@ import lombok.Data;
@Data
public class UpdateDevice {
public String deviceAddr;
public String deviceName;
public Double lng;
public Double lat;
public String saveDateInterval;
public String offlineInterval;
}

View File

@ -0,0 +1,57 @@
package com.fastbee.deviceData.api.renke.service;
import cn.hutool.http.HttpRequest;
import cn.hutool.http.HttpResponse;
import cn.hutool.json.JSONObject;
import cn.hutool.json.JSONUtil;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.stereotype.Component;
import java.util.HashMap;
import java.util.Map;
import java.util.Objects;
import java.util.concurrent.TimeUnit;
@Component
public class RenKeAuthorizationService {
@Autowired
private StringRedisTemplate stringRedisTemplate;
private final static String AUTH_URL = "http://192.168.1.254:8080/api/v1/user/login";
private final static String LOGIN_NAME = "heilongjiang";
private final static String LOGIN_PWD = "123456";
public String getToken(){
//判断token是否过期
String cacheToken = stringRedisTemplate.opsForValue().get("rkckth:user:token");
if (!Objects.isNull(cacheToken)){
System.err.println("缓存中获取token:"+cacheToken);
return cacheToken;
}
//获取token
//构建请求体
Map<String,Object> reqBody =new HashMap<>();
reqBody.put("loginName",LOGIN_NAME);
reqBody.put("loginPwd",LOGIN_PWD);
HttpResponse response = HttpRequest.post(AUTH_URL)
.body(JSONUtil.toJsonStr(reqBody)).execute();
String resultObjectStr = response.body();
if(StringUtils.isBlank(response.toString())){
throw new RuntimeException("获取token失败!");
}
JSONObject resultObject = JSONUtil.parseObj(resultObjectStr);
JSONObject tokenObject = JSONUtil.parseObj(resultObject.get("data"));
int currDate = Integer.parseInt(tokenObject.get("currDate").toString());
int expDate = Integer.parseInt(tokenObject.get("expDate").toString());
Integer periodValidity= expDate - currDate;
//将token存入redis
stringRedisTemplate.opsForValue().set("renke:user:token", tokenObject.get("token").toString(),2, TimeUnit.HOURS);
System.err.println("请求获取到token:"+tokenObject.get("token").toString());
return stringRedisTemplate.opsForValue().get("renke:user:token");
}
}

View File

@ -7,19 +7,13 @@ import cn.hutool.json.JSONObject;
import cn.hutool.json.JSONUtil;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.stereotype.Service;
import java.util.HashMap;
import java.util.Map;
import java.util.Objects;
import java.util.concurrent.TimeUnit;
@Service
public class RenkeDeviceDataService {
@Autowired
private StringRedisTemplate stringRedisTemplate;
@Autowired
private RenKeAuthorizationService authenticationService;
/**
* 获取设备实时数据
@ -27,7 +21,7 @@ public class RenkeDeviceDataService {
*/
public void getDeviceRealtimeData(String deviceAddrs) {
//处理鉴权
String token = getAuth();
String token = authenticationService.getToken();
//获取设备实时数据
HttpResponse response = HttpRequest.get("http://api.farm.0531yun.cn/api/v2.0/entrance/device/getRealTimeData")
.header("token", token)
@ -43,34 +37,5 @@ public class RenkeDeviceDataService {
}
//获取token
private String getAuth(){
//判断token是否过期
String cacheToken = stringRedisTemplate.opsForValue().get("rkckth:user:token");
if (!Objects.isNull(cacheToken)){
System.err.println("缓存中获取token:"+cacheToken);
return cacheToken;
}
//获取token
//构建请求体
Map<String,Object> reqBody =new HashMap<>();
reqBody.put("loginName","heilongjiang");
reqBody.put("loginPwd","123456");
HttpResponse response = HttpRequest.post("http://api.farm.0531yun.cn/api/v2.0/entrance/user/userLogin")
.body(JSONUtil.toJsonStr(reqBody)).execute();
System.err.println("响应:"+response.body());
String resultObjectStr = response.body();
if(StringUtils.isBlank(response.toString())){
throw new RuntimeException("获取token失败!");
}
JSONObject resultObject = JSONUtil.parseObj(resultObjectStr);
JSONObject tokenObject = JSONUtil.parseObj(resultObject.get("data"));
int currDate = Integer.parseInt(tokenObject.get("currDate").toString());
int expDate = Integer.parseInt(tokenObject.get("expDate").toString());
Integer periodValidity= expDate - currDate;
//将token存入redis
stringRedisTemplate.opsForValue().set("rkckth:user:token", tokenObject.get("token").toString(),2, TimeUnit.HOURS);
System.err.println("请求获取到token:"+tokenObject.get("token").toString());
return stringRedisTemplate.opsForValue().get("rkckth:user:token").toString();
}
}

View File

@ -7,12 +7,9 @@ import cn.hutool.json.JSONUtil;
import com.fastbee.deviceData.api.renke.domin.UpdateDevice;
import com.fastbee.deviceData.api.renke.domin.UpdateNodeInfo;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.lang.reflect.Field;
import java.net.URLEncoder;
import java.util.HashMap;
import java.util.Map;
/**
* 建大仁科气象设备服务
@ -20,71 +17,64 @@ import java.util.Map;
@Service
public class RenkeMetDeviceService {
@Autowired
private RenKeAuthorizationService authorizationService;
/**
* 获取气象设备全部信息
* @param deviceStr
* @param token
* @return
* @param deviceStr 设备地址支持多个用英文逗号分隔
* @return JSONObject
*/
public JSONObject getDeviceAllInfo(String deviceStr,String token){
public JSONObject getDeviceAllInfo(String deviceStr){
HttpResponse response = HttpRequest.get("http://api.farm.0531yun.cn/api/v2.0/met/device/getDeviceAllInfo?deviceStr="+deviceStr)
.header("token", token)
.header("token", authorizationService.getToken())
.execute();
String respBodyStr = response.body();
if(StringUtils.isBlank(respBodyStr)) {
throw new RuntimeException("获取设备实时数据失败!");
}
JSONObject jsonObject = JSONUtil.parseObj(respBodyStr);
return jsonObject;
return JSONUtil.parseObj(respBodyStr);
}
/**
* 根据气象设备地址获取节点信息
* @param deviceAddr
* @param token
* @return
*/
public JSONObject getAllInsectEquipmentInformation(String deviceAddr,String token){
public JSONObject getAllInsectEquipmentInformation(String deviceAddr){
//获取设备实时数据
//请求参数
HttpResponse response = HttpRequest.get("http://api.farm.0531yun.cn/api/v2.0/met/device/listTargetNodeInfo?deviceAddr="+deviceAddr)
.header("token", token)
.header("token", authorizationService.getToken())
.execute();
String respBodyStr = response.body();
if(StringUtils.isBlank(respBodyStr)) {
throw new RuntimeException("获取设备实时数据失败!");
}
JSONObject jsonObject = JSONUtil.parseObj(respBodyStr);
return jsonObject;
return JSONUtil.parseObj(respBodyStr);
}
/**
* 根据气象设备地址获取已启用的节点信息
* @param deviceAddr
* @param token
* @return
*/
public JSONObject listTargetEnabledNode(String deviceAddr,String token){
public JSONObject listTargetEnabledNode(String deviceAddr){
//获取设备实时数据
//请求参数
HttpResponse response = HttpRequest.get("http://api.farm.0531yun.cn/api/v2.0/met/device/listTargetEnabledNode?deviceAddr="+deviceAddr)
.header("token", token)
.header("token", authorizationService.getToken())
.execute();
String respBodyStr = response.body();
if(StringUtils.isBlank(respBodyStr)) {
throw new RuntimeException("获取设备实时数据失败!");
}
JSONObject jsonObject = JSONUtil.parseObj(respBodyStr);
return jsonObject;
return JSONUtil.parseObj(respBodyStr);
}
/**
* 根据气象节点编号获取遥调信息
* @param deviceAddr
* @param token
* @return
*/
public JSONObject listTargetEnabledNode(String deviceAddr,String nodeId,String token){
public JSONObject listTargetEnabledNode(String deviceAddr,String nodeId){
// 请求基础URL
String baseUrl = "http://api.farm.0531yun.cn/api/v2.0/met/device/listTargetEnabledNode";
@ -96,24 +86,20 @@ public class RenkeMetDeviceService {
if (queryParams.length() > 0) queryParams.append("&");
queryParams.append("nodeId=").append(URLEncoder.encode(nodeId));
}
String fullUrl = baseUrl + "?" + queryParams.toString();
String fullUrl = baseUrl + "?" + queryParams;
HttpResponse response = HttpRequest.get(fullUrl)
.header("token", token)
.header("token", authorizationService.getToken())
.execute();
String respBodyStr = response.body();
if(StringUtils.isBlank(respBodyStr)) {
throw new RuntimeException("获取虫情设备历史记录失败!");
}
JSONObject jsonObject = JSONUtil.parseObj(respBodyStr);
return jsonObject;
return JSONUtil.parseObj(respBodyStr);
}
/**
* 修改指定气象设备全部节点的可用状态
* @param deviceAddr
* @param token
* @return
*/
public JSONObject updateAllOfNodesEnable(String deviceAddr,String enable,String token){
public JSONObject updateAllOfNodesEnable(String deviceAddr,String enable){
// 请求基础URL
String baseUrl = "http://api.farm.0531yun.cn/api/v2.0/met/device/updateAllOfNodesEnable";
@ -127,63 +113,50 @@ public class RenkeMetDeviceService {
}
String fullUrl = baseUrl + "?" + queryParams.toString();
HttpResponse response = HttpRequest.get(fullUrl)
.header("token", token)
.header("token", authorizationService.getToken())
.execute();
String respBodyStr = response.body();
if(StringUtils.isBlank(respBodyStr)) {
throw new RuntimeException("获取虫情设备历史记录失败!");
}
JSONObject jsonObject = JSONUtil.parseObj(respBodyStr);
return jsonObject;
return JSONUtil.parseObj(respBodyStr);
}
/**
* 修改气象设备信息
* @param updateDevice
* @param token
* @return
*/
public JSONObject updateDevice(UpdateDevice updateDevice, String token){
public JSONObject updateDevice(UpdateDevice updateDevice){
//获取设备实时数据
//请求参数
Map<String,Object> reqBody =getObjectProperties(updateDevice);
HttpResponse response = HttpRequest.post("http://api.farm.0531yun.cn/api/v2.0/met/device/updateDevice")
.header("token", token).body(JSONUtil.toJsonStr(reqBody))
.header("token", authorizationService.getToken()).body(JSONUtil.toJsonStr(updateDevice))
.execute();
String respBodyStr = response.body();
if(StringUtils.isBlank(respBodyStr)) {
throw new RuntimeException("修改气象设备信息失败!");
}
JSONObject jsonObject = JSONUtil.parseObj(respBodyStr);
return jsonObject;
return JSONUtil.parseObj(respBodyStr);
}
/**
* 更新气象节点信息
* @param updateNodeInfo
* @param token
* @return
*/
public JSONObject updateNodeInfo(UpdateNodeInfo updateNodeInfo, String token){
public JSONObject updateNodeInfo(UpdateNodeInfo updateNodeInfo){
//获取设备实时数据
//请求参数
Map<String,Object> reqBody =getObjectProperties(updateNodeInfo);
HttpResponse response = HttpRequest.post("http://api.farm.0531yun.cn/api/v2.0/met/device/updateNodeInfo")
.header("token", token).body(JSONUtil.toJsonStr(reqBody))
.header("token", authorizationService.getToken()).body(JSONUtil.toJsonStr(updateNodeInfo))
.execute();
String respBodyStr = response.body();
if(StringUtils.isBlank(respBodyStr)) {
throw new RuntimeException("修改气象设备信息失败!");
}
JSONObject jsonObject = JSONUtil.parseObj(respBodyStr);
return jsonObject;
return JSONUtil.parseObj(respBodyStr);
}
/**
* 根据条件获取历史数据
* @param token
* @return
*/
public JSONObject getWormDataList(String deviceAddr,String nodeId,String beginTime,String endTime,Integer pages,Integer limit,String token){
public JSONObject getWormDataList(String deviceAddr,String nodeId,String beginTime,String endTime,Integer pages,Integer limit){
// 请求基础URL
String baseUrl = "http://api.farm.0531yun.cn/api/v2.0/met/history/getHistoryDataList";
@ -209,50 +182,13 @@ public class RenkeMetDeviceService {
}
String fullUrl = baseUrl + "?" + queryParams.toString();
HttpResponse response = HttpRequest.get(fullUrl)
.header("token", token)
.header("token", authorizationService.getToken())
.execute();
String respBodyStr = response.body();
if(StringUtils.isBlank(respBodyStr)) {
throw new RuntimeException("获取虫情设备历史记录失败!");
}
JSONObject jsonObject = JSONUtil.parseObj(respBodyStr);
return jsonObject;
return JSONUtil.parseObj(respBodyStr);
}
/**
* 通过反射获取对象的所有属性和值并存储到Map中
*
* @param obj 目标对象
* @return 包含属性和值的Map
*/
public static Map<String, Object> getObjectProperties(Object obj) {
Map<String, Object> propertiesMap = new HashMap<>();
// 获取对象的类类型
Class<?> clazz = obj.getClass();
// 获取类的所有字段包括私有字段
Field[] fields = clazz.getDeclaredFields();
// 遍历字段
for (Field field : fields) {
// 设置字段为可访问即使它是私有的
field.setAccessible(true);
try {
// 获取字段的名称
String fieldName = field.getName();
// 获取字段的值从目标对象中
Object fieldValue = field.get(obj);
// 将字段名称和值存入Map中
propertiesMap.put(fieldName, fieldValue);
} catch (IllegalAccessException e) {
// 理论上不应该发生因为我们已经设置了setAccessible(true)
e.printStackTrace();
}
}
return propertiesMap;
}
}

View File

@ -50,10 +50,8 @@ public class RenkeWormSituationDeviceService {
*/
public JSONObject updateDevice(UpdateDevice updateDevice, String token){
//获取设备实时数据
//请求参数
Map<String,Object> reqBody =getObjectProperties(updateDevice);
HttpResponse response = HttpRequest.post("http://api.farm.0531yun.cn/api/v2.0/worm/device/updateDevice")
.header("token", token).body(JSONUtil.toJsonStr(reqBody))
.header("token", token).body(JSONUtil.toJsonStr(updateDevice))
.execute();
String respBodyStr = response.body();
if(StringUtils.isBlank(respBodyStr)) {

View File

@ -9,7 +9,7 @@ import com.fastbee.deviceData.domain.DeviceRealtimedataMeteorology;
* @author kerwincui
* @date 2024-11-08
*/
public interface IDeviceRealtimedataMeteorologyService
public interface IDeviceRealtimedataMeteorologyService
{
/**
* 查询气象设备实时数据

View File

@ -2,11 +2,12 @@ package com.fastbee.deviceData.service.impl;
import java.util.List;
import com.fastbee.common.utils.DateUtils;
import com.fastbee.deviceData.service.IDeviceRealtimedataMeteorologyService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.fastbee.deviceData.mapper.DeviceRealtimedataMeteorologyMapper;
import com.fastbee.deviceData.domain.DeviceRealtimedataMeteorology;
import com.fastbee.deviceData.service.IDeviceRealtimedataMeteorologyService;
/**
* 气象设备实时数据Service业务层处理
@ -15,7 +16,7 @@ import com.fastbee.deviceData.service.IDeviceRealtimedataMeteorologyService;
* @date 2024-11-08
*/
@Service
public class DeviceRealtimedataMeteorologyServiceImpl implements IDeviceRealtimedataMeteorologyService
public class DeviceRealtimeDataMeteorologyServiceImpl implements IDeviceRealtimedataMeteorologyService
{
@Autowired
private DeviceRealtimedataMeteorologyMapper deviceRealtimedataMeteorologyMapper;

View File

@ -1,11 +1,13 @@
package com.fastbee.deviceData.service.impl;
import java.util.List;
import com.fastbee.deviceData.service.IDeviceRealtimedataWormsService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.fastbee.deviceData.mapper.DeviceRealtimedataWormsMapper;
import com.fastbee.deviceData.domain.DeviceRealtimedataWorms;
import com.fastbee.deviceData.service.IDeviceRealtimedataWormsService;
/**
* 虫情设备实时数据Service业务层处理
@ -14,14 +16,14 @@ import com.fastbee.deviceData.service.IDeviceRealtimedataWormsService;
* @date 2024-11-07
*/
@Service
public class DeviceRealtimedataWormsServiceImpl implements IDeviceRealtimedataWormsService
public class DeviceRealtimeDataWormsServiceImpl implements IDeviceRealtimedataWormsService
{
@Autowired
private DeviceRealtimedataWormsMapper deviceRealtimedataWormsMapper;
/**
* 查询虫情设备实时数据
*
*
* @param id 虫情设备实时数据主键
* @return 虫情设备实时数据
*/

View File

@ -10,8 +10,8 @@ import cn.hutool.json.JSONUtil;
import com.fastbee.deviceData.api.renke.constant.RenKeDeviceTypeConstant;
import com.fastbee.deviceData.domain.DeviceRealtimedataMeteorology;
import com.fastbee.deviceData.domain.DeviceRealtimedataWorms;
import com.fastbee.deviceData.service.impl.DeviceRealtimedataMeteorologyServiceImpl;
import com.fastbee.deviceData.service.impl.DeviceRealtimedataWormsServiceImpl;
import com.fastbee.deviceData.service.impl.DeviceRealtimeDataMeteorologyServiceImpl;
import com.fastbee.deviceData.service.impl.DeviceRealtimeDataWormsServiceImpl;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.StringRedisTemplate;
@ -32,9 +32,9 @@ public class DeviceDateTask {
@Autowired
private StringRedisTemplate stringRedisTemplate;
@Autowired
private DeviceRealtimedataWormsServiceImpl deviceRealtimedataWormsServiceImpl;
private DeviceRealtimeDataWormsServiceImpl deviceRealtimedataWormsServiceImpl;
@Autowired
private DeviceRealtimedataMeteorologyServiceImpl deviceRealtimedataMeteorologyServiceImpl;
private DeviceRealtimeDataMeteorologyServiceImpl deviceRealtimedataMeteorologyServiceImpl;
/**
* 在执行定时任务中出现了异常会终止调度所以需要捕获异常以便于下一轮
@ -72,14 +72,13 @@ public class DeviceDateTask {
deviceRealtimedataMeteorology.setCreateTime(DateTime.now());
if(deviceRealtimedataMeteorologyServiceImpl.insertDeviceRealtimedataMeteorology(deviceRealtimedataMeteorology)==1){
System.out.println("插入成功");
};
}
}
}
}
}
private String getAuth(){
//判断token是否过期
String cacheToken = stringRedisTemplate.opsForValue().get("rkckth:user:token");