package cn.gistack.nky.service.impl;
|
|
import cn.gistack.nky.entity.AlarmGet;
|
import cn.gistack.nky.entity.ArimaPredict;
|
import cn.gistack.nky.entity.HstPredict;
|
import cn.gistack.nky.requestpojo.*;
|
import cn.gistack.nky.service.INkyService;
|
import com.alibaba.fastjson.JSON;
|
import com.alibaba.fastjson.JSONArray;
|
import com.alibaba.fastjson.JSONObject;
|
import lombok.AllArgsConstructor;
|
import org.springframework.http.*;
|
import org.springframework.stereotype.Service;
|
import org.springframework.web.client.RestTemplate;
|
|
import java.util.List;
|
|
|
/**
|
* @PROJECT_NAME: skjcmanager
|
* @DESCRIPTION:
|
* @USER: aix
|
* @DATE: 2023/7/31 14:19
|
*/
|
@Service
|
@AllArgsConstructor
|
public class NkyServiceImpl implements INkyService {
|
|
|
private static final String API_PREFIX = "https://sk.hubeishuiyi.cn/warnIp/";
|
// ARIMA预测接口URL
|
private static final String ARIMA_PREDICT = API_PREFIX + "predict/arimaPredict";
|
// ARIMA预测结果接口
|
private static final String ARIMA_QUERY = API_PREFIX+"predict/arimaQuery";
|
// HST预测接口URL
|
private static final String HST_PREDICT =API_PREFIX+ "predict/hstPredict";
|
// HST预测结果接口
|
private static final String HST_QUERY =API_PREFIX+ "predict/hstQuery";
|
|
//按库传输数据接口
|
private static final String ORIGIN_BATCHDATA = API_PREFIX + "origin/batchData";
|
|
//判定异常
|
private static final String ALARM_GET = API_PREFIX+"alarm/get";
|
|
@Override
|
public Boolean arimaPredict(ArimaPredictReqPo po) {
|
JSONObject jsonObject = requestNkyApi(ARIMA_PREDICT, JSON.toJSONString(po));
|
return jsonObject.get("status").equals(200);
|
}
|
|
@Override
|
public Boolean hstPredict(HstPredictReqPo po) {
|
JSONObject jsonObject = requestNkyApi(HST_PREDICT, JSON.toJSONString(po));
|
return jsonObject.get("status").equals(200);
|
}
|
|
@Override
|
public ArimaPredict arimaQuery(QueryReqPo po) {
|
JSONObject jsonObject = requestNkyApi(ARIMA_QUERY, JSON.toJSONString(po));
|
JSONArray data = jsonObject.getJSONArray("data");
|
if (data.size()>0){
|
ArimaPredict arimaPredict = data.getJSONObject(0).toJavaObject(ArimaPredict.class);
|
return arimaPredict;
|
}else {
|
return null;
|
}
|
}
|
|
@Override
|
public HstPredict hstQuery(QueryReqPo po) {
|
JSONObject jsonObject = requestNkyApi(HST_QUERY, JSON.toJSONString(po));
|
if (jsonObject == null){
|
return null;
|
}
|
JSONArray data = jsonObject.getJSONArray("data");
|
|
if (data.size()>0){
|
HstPredict hstPredict = data.getJSONObject(0).toJavaObject(HstPredict.class);
|
return hstPredict;
|
|
}else {
|
return null;
|
}
|
|
}
|
|
@Override
|
public Boolean batchData(BatchDataPo po) {
|
JSONObject jsonObject = requestNkyApi(ORIGIN_BATCHDATA, JSON.toJSONString(po));
|
return jsonObject.get("status").equals(200);
|
}
|
|
@Override
|
public AlarmGet alarmGetData(AlarmGetPo alarmGetPo) {
|
JSONObject jsonObject = requestNkyApi(ALARM_GET,JSON.toJSONString(alarmGetPo));
|
AlarmGet alarmGet = jsonObject.toJavaObject(AlarmGet.class);
|
return alarmGet;
|
}
|
|
/**
|
* 请求南科院接口
|
* @param url
|
* @param jsonparams
|
* @return
|
*/
|
private JSONObject requestNkyApi(String url, String jsonparams) {
|
// 声明一个header变量
|
HttpHeaders headers = new HttpHeaders();
|
// 设置为json格式
|
MediaType mediaType = MediaType.parseMediaType("application/json;charset=utf-8");
|
headers.setContentType(mediaType);
|
headers.add("Accept", MediaType.APPLICATION_JSON.toString());
|
|
HttpEntity<String> httpEntity = new HttpEntity(jsonparams, headers);
|
System.out.println("请求参数:"+ jsonparams);
|
RestTemplate template = new RestTemplate();
|
String resultStr = template.postForObject(url, httpEntity, String.class);
|
System.out.println(resultStr);
|
JSONObject jsonObject = JSONObject.parseObject(resultStr);
|
return jsonObject;
|
}
|
|
|
|
}
|