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 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.http.HttpMethod; 
 | 
import org.springframework.http.ResponseEntity; 
 | 
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 extends OrgListenerSupport { 
 | 
    /** 
 | 
     * pro_mw:属性 
 | 
     * tag从控制器中获取 
 | 
     * key_mw:url的key 
 | 
     */ 
 | 
    private static final String pro_mw = "mw"; 
 | 
    private static final String pro_url = "url"; 
 | 
  
 | 
    protected static final String ContextComSend = "/rtuMw/com/send"; 
 | 
  
 | 
    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"; 
 | 
    /** 
 | 
     * 得到向通信中间件发送数据的URL 
 | 
     * @param env 
 | 
     * @return 
 | 
     */ 
 | 
    protected String get2MwUrl(Environment env) { 
 | 
        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 body 请求数据 
 | 
     * @return 
 | 
     */ 
 | 
    protected BaseResponse sendPostRequest2Mw(RestTemplate restTemplate, String toMwUrl, Object body) { 
 | 
        String url = UriComponentsBuilder.fromUriString(toMwUrl) 
 | 
                .build() 
 | 
                .toUriString(); 
 | 
        HttpHeaders headers = new HttpHeaders(); 
 | 
        HttpEntity<?> httpEntity = new HttpEntity<>(body, 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 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 
 | 
     */ 
 | 
    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 ; 
 | 
    } 
 | 
  
 | 
} 
 |