package cn.gistack.nky.service.impl;
|
|
import cn.gistack.common.utils.SpringContextUtil;
|
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 lombok.extern.slf4j.Slf4j;
|
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
|
@Slf4j
|
public class NkyServiceImpl implements INkyService {
|
|
|
private static final String API_PREFIX = "http://10.42.7.146:9503/";
|
private static final String LOCAL_API_PREFIX = "https://sk.hubeishuiyi.cn/warnIp/";
|
// ARIMA预测接口URL
|
private static final String ARIMA_PREDICT = "predict/arimaPredict";
|
// ARIMA预测结果接口
|
private static final String ARIMA_QUERY = "predict/arimaQuery";
|
// HST预测接口URL
|
private static final String HST_PREDICT = "predict/hstPredict";
|
// HST预测结果接口
|
private static final String HST_QUERY = "predict/hstQuery";
|
|
//按库传输数据接口
|
private static final String ORIGIN_BATCHDATA = "origin/batchData";
|
|
//判定异常
|
private static final String ALARM_GET = "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) {
|
|
// 获取环境
|
String activeProfile = SpringContextUtil.getActiveProfile();
|
if (activeProfile.equals("dev")) {
|
url = LOCAL_API_PREFIX+ url ;
|
}
|
if (activeProfile.equals("prod")) {
|
url = API_PREFIX+ url ;
|
}
|
if (activeProfile.equals("test")) {
|
url = API_PREFIX + url;
|
}
|
|
// 声明一个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);
|
log.info("请求地址:"+ url);
|
log.info("请求参数:"+ jsonparams);
|
RestTemplate template = new RestTemplate();
|
String resultStr = template.postForObject(url, httpEntity, String.class);
|
log.info("请求结果:"+ resultStr);
|
JSONObject jsonObject = JSONObject.parseObject(resultStr);
|
return jsonObject;
|
}
|
|
|
|
}
|