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<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 response.getBody(); 
 | 
    } 
 | 
} 
 |