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.softUpgrade.state.UpgradeTaskVo;
|
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 ToRtuMwCom {
|
/**
|
* pro_mw:属性
|
* tag从控制器中获取
|
* key_mw:url的key
|
*/
|
private static final String pro_mw = "mw";
|
private static final String key_mw = "comSendUrl";
|
private static final String keyUg_mw = "ugTaskSendUrl";
|
|
|
/**
|
* 得到向通信中间件发送数据的URL
|
* @param env
|
* @return
|
*/
|
protected String getToMwUrl(Environment env) {
|
return env.getProperty(pro_mw + "." + DataSourceContext.get() + "." + key_mw);
|
}
|
|
/**
|
* 得到向通信中间件发送数据的URL
|
* @param env
|
* @return
|
*/
|
protected String getToMwUgUrl(Environment env) {
|
return env.getProperty(pro_mw + "." + DataSourceContext.get() + "." + keyUg_mw);
|
}
|
|
/**
|
* 创建外部命令(发给控制器)
|
* @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 ;
|
}
|
|
/**
|
* 发送命令
|
*
|
* @return
|
*/
|
protected BaseResponse sendCom2Mw(RestTemplate restTemplate, String comSendUrl, Command com) {
|
String url = UriComponentsBuilder.fromUriString(comSendUrl)
|
.build()
|
.toUriString();
|
HttpHeaders headers = new HttpHeaders();
|
HttpEntity<Command> httpEntity = new HttpEntity<>(com, 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
|
* @param comSendUrl
|
* @param vo
|
* @return
|
*/
|
protected BaseResponse sendUpgradeTask2Mw(RestTemplate restTemplate, String comSendUrl, UpgradeTaskVo vo) {
|
String url = UriComponentsBuilder.fromUriString(comSendUrl)
|
.build()
|
.toUriString();
|
HttpHeaders headers = new HttpHeaders();
|
HttpEntity<UpgradeTaskVo> httpEntity = new HttpEntity<>(vo, 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();
|
}
|
}
|
}
|