| | |
| | | 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 com.dy.pipIrrGlobal.util.OrgListenerSupport; |
| | | import org.springframework.core.env.Environment; |
| | | import org.springframework.http.HttpEntity; |
| | | import org.springframework.http.HttpHeaders; |
| | |
| | | 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 { |
| | | public abstract class Web2RtuMw extends OrgListenerSupport { |
| | | /** |
| | | * pro_mw:属性 |
| | | * tag从控制器中获取 |
| | |
| | | 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"; |
| | | /** |
| | |
| | | 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 param 请求参数 |
| | | * @param body 请求数据 |
| | | * @return |
| | | */ |
| | | protected BaseResponse sendRequest2Mw(RestTemplate restTemplate, String toMwUrl, Object param) { |
| | | protected BaseResponse sendPostRequest2Mw(RestTemplate restTemplate, String toMwUrl, Object body) { |
| | | String url = UriComponentsBuilder.fromUriString(toMwUrl) |
| | | .build() |
| | | .toUriString(); |
| | | HttpHeaders headers = new HttpHeaders(); |
| | | HttpEntity<?> httpEntity ; |
| | | if(param != null){ |
| | | httpEntity = new HttpEntity<>(param, headers); |
| | | }else{ |
| | | httpEntity = new HttpEntity<>(headers); |
| | | } |
| | | HttpEntity<?> httpEntity = new HttpEntity<>(body, headers); |
| | | ResponseEntity<BaseResponse> response = null; |
| | | try { |
| | | // 通过Post方式调用接口 |
| | |
| | | } |
| | | |
| | | /** |
| | | * 向通信中间件发送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 |