修改仁科登录地址

This commit is contained in:
mi9688 2024-11-12 16:49:26 +08:00
parent 6e0082caa9
commit 56e1c37852
4 changed files with 37 additions and 57 deletions

View File

@ -6,5 +6,4 @@ package com.fastbee.deviceData.api.renke.constant;
public class RenKeDeviceTypeConstant { public class RenKeDeviceTypeConstant {
public static final String MET = "met";//气象设备 public static final String MET = "met";//气象设备
public static final String WORM = "wormFlagship";//虫情设备 public static final String WORM = "wormFlagship";//虫情设备
} }

View File

@ -4,7 +4,9 @@ import lombok.Data;
@Data @Data
public class WormOper { public class WormOper {
public String deviceAddr; public String deviceAddr;
public String module; public String module;
public String opt; public String opt;
} }

View File

@ -20,14 +20,14 @@ public class RenKeAuthorizationService {
@Autowired @Autowired
private StringRedisTemplate stringRedisTemplate; private StringRedisTemplate stringRedisTemplate;
private final static String AUTH_URL = "http://192.168.1.254:8080/api/v1/user/login"; private final static String AUTH_URL = "http://api.farm.0531yun.cn/api/v2.0/entrance/user/userLogin";
private final static String LOGIN_NAME = "heilongjiang"; private final static String LOGIN_NAME = "heilongjiang";
private final static String LOGIN_PWD = "123456"; private final static String LOGIN_PWD = "123456";
public String getToken(){ public String getToken(){
//判断token是否过期 //判断token是否过期
String cacheToken = stringRedisTemplate.opsForValue().get("rkckth:user:token"); String cacheToken = stringRedisTemplate.opsForValue().get("renke:user:token");
if (!Objects.isNull(cacheToken)){ if (!Objects.isNull(cacheToken)){
System.err.println("缓存中获取token:"+cacheToken); System.err.println("缓存中获取token:"+cacheToken);
return cacheToken; return cacheToken;

View File

@ -8,6 +8,7 @@ import cn.hutool.json.JSONArray;
import cn.hutool.json.JSONObject; import cn.hutool.json.JSONObject;
import cn.hutool.json.JSONUtil; import cn.hutool.json.JSONUtil;
import com.fastbee.deviceData.api.renke.constant.RenKeDeviceTypeConstant; import com.fastbee.deviceData.api.renke.constant.RenKeDeviceTypeConstant;
import com.fastbee.deviceData.api.renke.service.RenKeAuthorizationService;
import com.fastbee.deviceData.domain.DeviceRealtimedataMeteorology; import com.fastbee.deviceData.domain.DeviceRealtimedataMeteorology;
import com.fastbee.deviceData.domain.DeviceRealtimedataWorms; import com.fastbee.deviceData.domain.DeviceRealtimedataWorms;
import com.fastbee.deviceData.service.impl.DeviceRealtimeDataMeteorologyServiceImpl; import com.fastbee.deviceData.service.impl.DeviceRealtimeDataMeteorologyServiceImpl;
@ -15,6 +16,7 @@ import com.fastbee.deviceData.service.impl.DeviceRealtimeDataWormsServiceImpl;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.StringRedisTemplate; import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import java.util.HashMap; import java.util.HashMap;
@ -36,17 +38,22 @@ public class DeviceDateTask {
@Autowired @Autowired
private DeviceRealtimeDataMeteorologyServiceImpl deviceRealtimedataMeteorologyServiceImpl; private DeviceRealtimeDataMeteorologyServiceImpl deviceRealtimedataMeteorologyServiceImpl;
@Autowired
private RenKeAuthorizationService renKeAuthorizationService;
@Autowired
private ThreadPoolTaskExecutor threadPoolTaskExecutor;
/** /**
* 在执行定时任务中出现了异常会终止调度所以需要捕获异常以便于下一轮 * 在执行定时任务中出现了异常会终止调度所以需要捕获异常以便于下一轮
* 执行不会影响下一次执行 * 执行不会影响下一次执行
*/ */
public void getRenkeDeviceRealtimeData() throws Exception{ public void getRenkeDeviceRealtimeData() throws Exception{
//处理鉴权
String token = getAuth();
//获取设备实时数据 //获取设备实时数据
//请求参数 //请求参数
HttpResponse response = HttpRequest.get("http://api.farm.0531yun.cn/api/v2.0/entrance/device/getRealTimeData") HttpResponse response = HttpRequest.get("http://api.farm.0531yun.cn/api/v2.0/entrance/device/getRealTimeData")
.header("token", token) .header("token", renKeAuthorizationService.getToken())
.execute(); .execute();
String respBodyStr = response.body(); String respBodyStr = response.body();
if(StringUtils.isBlank(respBodyStr)) { if(StringUtils.isBlank(respBodyStr)) {
@ -54,60 +61,32 @@ public class DeviceDateTask {
} }
JSONObject respBody = JSONUtil.parseObj(respBodyStr); JSONObject respBody = JSONUtil.parseObj(respBodyStr);
JSONArray realtimeList = JSONUtil.parseArray(respBody.get("data")); JSONArray realtimeList = JSONUtil.parseArray(respBody.get("data"));
System.err.println("设备实时数据:"+realtimeList); threadPoolTaskExecutor.execute( () -> {System.err.println("设备实时数据:"+realtimeList);});
//TODO 解析实时数据保存到数据库 //TODO 解析实时数据保存到数据库
for (Object jsonObject : realtimeList){ // for (Object jsonObject : realtimeList){
JSONObject josnConversion = (JSONObject) jsonObject; // JSONObject josnConversion = (JSONObject) jsonObject;
if (RenKeDeviceTypeConstant.WORM.equals(josnConversion.get("deviceType"))){ // if (RenKeDeviceTypeConstant.WORM.equals(josnConversion.get("deviceType"))){
JSONObject josnArray = JSONUtil.parseObj(josnConversion.get("data")); // JSONObject josnArray = JSONUtil.parseObj(josnConversion.get("data"));
DeviceRealtimedataWorms deviceRealtimedataWorms = JSONUtil.toBean(josnArray, DeviceRealtimedataWorms.class); // DeviceRealtimedataWorms deviceRealtimedataWorms = JSONUtil.toBean(josnArray, DeviceRealtimedataWorms.class);
deviceRealtimedataWorms.setCreateTime(DateTime.now()); // deviceRealtimedataWorms.setCreateTime(DateTime.now());
if(deviceRealtimedataWormsServiceImpl.insertDeviceRealtimedataWorms(deviceRealtimedataWorms)==1){ // if(deviceRealtimedataWormsServiceImpl.insertDeviceRealtimedataWorms(deviceRealtimedataWorms)==1){
System.out.println("插入成功"); // System.out.println("插入成功");
}; // };
}else if (RenKeDeviceTypeConstant.MET.equals(josnConversion.get("deviceType"))){ // }else if (RenKeDeviceTypeConstant.MET.equals(josnConversion.get("deviceType"))){
JSONArray josnArray = JSONUtil.parseArray(josnConversion.get("data")); // JSONArray josnArray = JSONUtil.parseArray(josnConversion.get("data"));
for (Object json : josnArray){ // for (Object json : josnArray){
DeviceRealtimedataMeteorology deviceRealtimedataMeteorology = JSONUtil.toBean((JSONObject) json, DeviceRealtimedataMeteorology.class); // DeviceRealtimedataMeteorology deviceRealtimedataMeteorology = JSONUtil.toBean((JSONObject) json, DeviceRealtimedataMeteorology.class);
deviceRealtimedataMeteorology.setCreateTime(DateTime.now()); // deviceRealtimedataMeteorology.setCreateTime(DateTime.now());
if(deviceRealtimedataMeteorologyServiceImpl.insertDeviceRealtimedataMeteorology(deviceRealtimedataMeteorology)==1){ // if(deviceRealtimedataMeteorologyServiceImpl.insertDeviceRealtimedataMeteorology(deviceRealtimedataMeteorology)==1){
System.out.println("插入成功"); // System.out.println("插入成功");
} // }
} // }
//
} // }
} // }
} }
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();
}
} }