package com.dy.pipIrrGlobal.rtuMw;
|
|
import com.dy.common.multiDataSource.DataSourceContext;
|
import com.dy.common.mw.protocol.Command;
|
import com.dy.common.mw.protocol.CommandType;
|
import com.dy.common.webUtil.BaseResponse;
|
import com.dy.common.webUtil.BaseResponseUtils;
|
import org.springframework.core.env.Environment;
|
import org.springframework.http.HttpEntity;
|
import org.springframework.http.HttpHeaders;
|
import org.springframework.http.HttpMethod;
|
import org.springframework.http.ResponseEntity;
|
import org.springframework.web.client.RestTemplate;
|
import org.springframework.web.util.UriComponentsBuilder;
|
|
/**
|
* @Author: liurunyu
|
* @Date: 2024/10/23 11:45
|
* @Description
|
*/
|
public abstract class Web2RtuMw {
|
/**
|
* pro_mw:属性
|
* tag从控制器中获取
|
* key_mw:url的key
|
*/
|
private static final String pro_mw = "mw";
|
private static final String pro_url = "url";
|
|
protected static final String ContextComSend = "/rtuMw/com/send";
|
|
protected static final String ContextRtuLogFile = "/rtuMw/com/rtuLogFile";
|
protected static final String ContextRtuLogText = "/rtuMw/com/rtuLogText";
|
|
protected static final String ContextUgTaskSend = "/rtuMw/com/upgradeRtu";
|
protected static final String ContextUgForceOver = "/rtuMw/com/ugForceOver";
|
/**
|
* 得到向通信中间件发送数据的URL
|
* @param env
|
* @return
|
*/
|
protected String get2MwUrl(Environment env) {
|
return env.getProperty(pro_mw + "." + DataSourceContext.get() + "." + pro_url);
|
}
|
/**
|
* 得到向通信中间件发送强制停止升级的命令URL
|
* @param env
|
* @return
|
*/
|
protected String get2MwRequestUrl(Environment env, String context) {
|
return get2MwUrl(env) + context;
|
}
|
|
|
/**
|
* 向通信中间件发送rtu远程升级任务
|
* @param restTemplate SpringBoot的RestTemplate
|
* @param toMwUrl 到通信中间件的web请求Url
|
* @param body 请求数据
|
* @return
|
*/
|
protected BaseResponse sendPostRequest2Mw(RestTemplate restTemplate, String toMwUrl, Object body) {
|
String url = UriComponentsBuilder.fromUriString(toMwUrl)
|
.build()
|
.toUriString();
|
HttpHeaders headers = new HttpHeaders();
|
HttpEntity<?> httpEntity = new HttpEntity<>(body, headers);
|
ResponseEntity<BaseResponse> response = null;
|
try {
|
// 通过Post方式调用接口
|
response = restTemplate.exchange(url, HttpMethod.POST, httpEntity, BaseResponse.class);
|
} catch (Exception e) {
|
e.printStackTrace();
|
return BaseResponseUtils.buildError("后端系统出错,中间件调用异常");
|
}
|
if(response == null){
|
return BaseResponseUtils.buildError("后端系统出错,中间件调用异常");
|
}else{
|
return response.getBody();
|
}
|
}
|
|
/**
|
* 向通信中间件发送rtu远程升级任务
|
* @param restTemplate SpringBoot的RestTemplate
|
* @param toMwUrl 到通信中间件的web请求Url
|
* @return
|
*/
|
protected BaseResponse sendGetRequest2Mw(RestTemplate restTemplate, String toMwUrl) {
|
String url = UriComponentsBuilder.fromUriString(toMwUrl)
|
.build()
|
.toUriString();
|
|
//UriComponentsBuilder builder = UriComponentsBuilder.fromHttpUrl(url)
|
// .queryParam("test", test);
|
UriComponentsBuilder builder = UriComponentsBuilder.fromHttpUrl(url) ;
|
|
ResponseEntity<BaseResponse> response = null;
|
try {
|
// 通过Get方式调用接口
|
response = restTemplate.exchange(builder.toUriString(),
|
HttpMethod.GET,
|
new HttpEntity<>(new HttpHeaders()),
|
BaseResponse.class);
|
} catch (Exception e) {
|
e.printStackTrace();
|
return BaseResponseUtils.buildError("后端系统出错,中间件调用异常");
|
}
|
if(response == null){
|
return BaseResponseUtils.buildError("后端系统出错,中间件调用异常");
|
}else{
|
return response.getBody();
|
}
|
}
|
|
/**
|
* 创建外部命令(发给控制器)
|
* @param code 命令code
|
* @return
|
*/
|
protected Command createOuterCommand(String comId, String code) {
|
Command com = new Command();
|
com.id = comId;
|
com.code = code ;
|
com.type = CommandType.outerCommand;
|
return com ;
|
}
|
|
/**
|
* 创建内部
|
* @param code 命令code
|
* @return
|
*/
|
protected Command createInnerCommand(String code) {
|
Command com = new Command();
|
com.id = Command.defaultId;
|
com.code = code ;
|
com.type = CommandType.innerCommand;
|
return com ;
|
}
|
|
}
|