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 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"; /** * 得到向通信中间件发送数据的URL * @param env * @return */ protected String getToMwUrl(Environment env) { return env.getProperty(pro_mw + "." + DataSourceContext.get() + "." + key_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 response.getBody(); } }