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 httpEntity = new HttpEntity<>(com, headers); ResponseEntity 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 httpEntity = new HttpEntity<>(vo, headers); ResponseEntity 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(); } } }