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 com.dy.pipIrrGlobal.util.OrgListenerSupport;
|
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;
|
|
import java.util.Iterator;
|
import java.util.Map;
|
|
/**
|
* @Author: liurunyu
|
* @Date: 2024/10/23 11:45
|
* @Description
|
*/
|
public abstract class Web2RtuMw extends OrgListenerSupport {
|
/**
|
* 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 ContextRegisterMsReceiverWebUrl = "/rtuMw/com/registerMsReceiverWebUrl";
|
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
|
* @param orgTag
|
* @return
|
*/
|
protected String get2MwUrl(Environment env, String orgTag) {
|
return env.getProperty(pro_mw + "." + orgTag + "." + pro_url);
|
}
|
/**
|
* 得到向通信中间件发送强制停止升级的命令URL
|
* @param env
|
* @param context
|
* @return
|
*/
|
protected String get2MwRequestUrl(Environment env, String context) {
|
return get2MwUrl(env) + context;
|
}
|
/**
|
* 得到向通信中间件发送强制停止升级的命令URL
|
* @param env
|
* @param orgTag
|
* @param context
|
* @return
|
*/
|
protected String get2MwRequestUrl(Environment env, String orgTag, String context) {
|
return get2MwUrl(env, orgTag) + 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) {
|
return sendGetRequest2Mw(restTemplate, toMwUrl, null);
|
}
|
|
/**
|
* 向通信中间件发送rtu远程升级任务
|
* @param restTemplate SpringBoot的RestTemplate
|
* @param toMwUrl 到通信中间件的web请求Url
|
* @param paramName 参数名称
|
* @param paramValue 参数
|
* @return
|
*/
|
protected BaseResponse sendGetRequest2Mw(RestTemplate restTemplate, String toMwUrl, String paramName, String paramValue) {
|
String url = UriComponentsBuilder.fromUriString(toMwUrl)
|
.build()
|
.toUriString();
|
|
UriComponentsBuilder builder = UriComponentsBuilder.fromHttpUrl(url) ;
|
if(paramName != null && !paramName.trim().equals("")){
|
builder.queryParam(paramName, paramValue==null?"":paramValue) ;
|
}
|
return sendGetRequest2Mw(restTemplate, builder);
|
}
|
|
/**
|
* 向通信中间件发送rtu远程升级任务
|
* @param restTemplate SpringBoot的RestTemplate
|
* @param toMwUrl 到通信中间件的web请求Url
|
* @param params 参数集合,参数名称是key,参数是value
|
* @return
|
*/
|
protected BaseResponse sendGetRequest2Mw(RestTemplate restTemplate, String toMwUrl, Map<String, String> params) {
|
String url = UriComponentsBuilder.fromUriString(toMwUrl)
|
.build()
|
.toUriString();
|
|
UriComponentsBuilder builder = UriComponentsBuilder.fromHttpUrl(url) ;
|
if(params != null && params.size() > 0){
|
Iterator<String> it = params.keySet().iterator() ;
|
String key ;
|
while (it.hasNext()){
|
key = it.next() ;
|
builder.queryParam(key, params.get(key)) ;
|
}
|
}
|
return sendGetRequest2Mw(restTemplate, builder);
|
}
|
|
/**
|
* 向通信中间件发送rtu远程升级任务
|
* @param restTemplate SpringBoot的RestTemplate
|
* @param builder
|
* @return
|
*/
|
protected BaseResponse sendGetRequest2Mw(RestTemplate restTemplate, UriComponentsBuilder builder) {
|
ResponseEntity<BaseResponse> response;
|
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 ;
|
}
|
|
}
|