‘liusuyi’
2023-10-07 bda682cfed723ca3be4ff39ab1972b8a69197bfb
取消mapper注解
HttpUtils替换RestTemplate
增加HttpUtils日志
1 files deleted
3 files added
6 files modified
492 ■■■■■ changed files
src/main/java/com/ard/alarm/camera/mapper/ArdCamerasMapper.java 5 ●●●●● patch | view | raw | blame | history
src/main/java/com/ard/alarm/external/mapper/ArdEquipExternalMapper.java 1 ●●●● patch | view | raw | blame | history
src/main/java/com/ard/alarm/radar/mapper/ArdEquipRadarMapper.java 1 ●●●● patch | view | raw | blame | history
src/main/java/com/ard/alarm/stealelec/service/StealElecAlarmService.java 8 ●●●●● patch | view | raw | blame | history
src/main/java/com/ard/config/ApplicationConfig.java 15 ●●●●● patch | view | raw | blame | history
src/main/java/com/ard/config/RestTemplateConfig.java 21 ●●●●● patch | view | raw | blame | history
src/main/java/com/ard/utils/Constants.java 137 ●●●●● patch | view | raw | blame | history
src/main/java/com/ard/utils/http/HttpUtils.java 276 ●●●●● patch | view | raw | blame | history
src/main/resources/application-dev.yml 9 ●●●●● patch | view | raw | blame | history
src/main/resources/logback-spring.xml 19 ●●●● patch | view | raw | blame | history
src/main/java/com/ard/alarm/camera/mapper/ArdCamerasMapper.java
@@ -1,9 +1,9 @@
package com.ard.alarm.camera.mapper;
import java.util.List;
import com.ard.alarm.camera.domain.ArdCameras;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Mapper;
/**
 * 相机设备Mapper接口
@@ -11,7 +11,6 @@
 * @author 刘苏义
 * @date 2023-02-11
 */
@Mapper
public interface ArdCamerasMapper extends BaseMapper<ArdCameras>
{
src/main/java/com/ard/alarm/external/mapper/ArdEquipExternalMapper.java
@@ -12,7 +12,6 @@
 * @author zj
 * @date 2023-03-13
 */
@Mapper
public interface ArdEquipExternalMapper extends BaseMapper<ArdEquipExternal>
{
    ///**
src/main/java/com/ard/alarm/radar/mapper/ArdEquipRadarMapper.java
@@ -11,7 +11,6 @@
 * @author zj
 * @date 2023-03-11
 */
@Mapper
public interface ArdEquipRadarMapper extends BaseMapper<ArdEquipRadar>
{
src/main/java/com/ard/alarm/stealelec/service/StealElecAlarmService.java
@@ -3,14 +3,13 @@
import com.alibaba.fastjson2.JSON;
import com.alibaba.fastjson2.JSONObject;
import com.ard.alarm.stealelec.domain.ArdAlarmStealelec;
import com.ard.utils.http.HttpUtils;
import com.ard.utils.mqtt.MqttConsumer;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.scheduling.annotation.Async;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Service;
import org.springframework.web.client.RestTemplate;
import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.List;
@@ -26,8 +25,7 @@
@Slf4j(topic = "stealAlarm")
@Service
public class StealElecAlarmService {
    @Resource
    RestTemplate restTemplate;
    @Value("${spring.stealelec.url}")
    private String stealElecUrl;
    @Value("${spring.stealelec.enabled}")
@@ -49,7 +47,7 @@
            if (!enabled) {
                return;
            }
            String allAlarmData = restTemplate.getForObject(stealElecUrl, String.class);
            String allAlarmData = HttpUtils.sendGet(stealElecUrl);
            //剔除所有\符号
            String message = allAlarmData.replaceAll("\\\\", "");
            //剔除整个字符串首尾双引号
src/main/java/com/ard/config/ApplicationConfig.java
New file
@@ -0,0 +1,15 @@
package com.ard.config;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.context.annotation.Configuration;
/**
 * @Description:
 * @ClassName: ApplicationConfig
 * @Author: 刘苏义
 * @Date: 2023年10月07日9:54:46
 **/
@Configuration
@MapperScan("com.ard.**.mapper")
public class ApplicationConfig {
}
src/main/java/com/ard/config/RestTemplateConfig.java
File was deleted
src/main/java/com/ard/utils/Constants.java
New file
@@ -0,0 +1,137 @@
package com.ard.utils;
/**
 * @Description: 通用常量信息
 * @ClassName: Constants
 * @Author: 刘苏义
 * @Date: 2023年10月07日10:04:02
 **/
public class Constants
{
    /**
     * UTF-8 字符集
     */
    public static final String UTF8 = "UTF-8";
    /**
     * GBK 字符集
     */
    public static final String GBK = "GBK";
    /**
     * www主域
     */
    public static final String WWW = "www.";
    /**
     * http请求
     */
    public static final String HTTP = "http://";
    /**
     * https请求
     */
    public static final String HTTPS = "https://";
    /**
     * 通用成功标识
     */
    public static final String SUCCESS = "0";
    /**
     * 通用失败标识
     */
    public static final String FAIL = "1";
    /**
     * 登录成功
     */
    public static final String LOGIN_SUCCESS = "Success";
    /**
     * 注销
     */
    public static final String LOGOUT = "Logout";
    /**
     * 注册
     */
    public static final String REGISTER = "Register";
    /**
     * 登录失败
     */
    public static final String LOGIN_FAIL = "Error";
    /**
     * 验证码有效期(分钟)
     */
    public static final Integer CAPTCHA_EXPIRATION = 2;
    /**
     * 令牌
     */
    public static final String TOKEN = "token";
    /**
     * 令牌前缀
     */
    public static final String TOKEN_PREFIX = "Bearer ";
    /**
     * 令牌前缀
     */
    public static final String LOGIN_USER_KEY = "login_user_key";
    /**
     * 用户ID
     */
    public static final String JWT_USERID = "userid";
    /**
     * 用户头像
     */
    public static final String JWT_AVATAR = "avatar";
    /**
     * 创建时间
     */
    public static final String JWT_CREATED = "created";
    /**
     * 用户权限
     */
    public static final String JWT_AUTHORITIES = "authorities";
    /**
     * 资源映射路径 前缀
     */
    public static final String RESOURCE_PREFIX = "/profile";
    /**
     * RMI 远程方法调用
     */
    public static final String LOOKUP_RMI = "rmi:";
    /**
     * LDAP 远程方法调用
     */
    public static final String LOOKUP_LDAP = "ldap:";
    /**
     * LDAPS 远程方法调用
     */
    public static final String LOOKUP_LDAPS = "ldaps:";
    /**
     * 定时任务白名单配置(仅允许访问的包名,如其他需要可以自行添加)
     */
    public static final String[] JOB_WHITELIST_STR = { "com.ruoyi" };
    /**
     * 定时任务违规的字符
     */
    public static final String[] JOB_ERROR_STR = { "java.net.URL", "javax.naming.InitialContext", "org.yaml.snakeyaml",
            "org.springframework", "org.apache", "com.ruoyi.common.utils.file", "com.ruoyi.common.config" };
}
src/main/java/com/ard/utils/http/HttpUtils.java
New file
@@ -0,0 +1,276 @@
package com.ard.utils.http;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.ConnectException;
import java.net.SocketTimeoutException;
import java.net.URL;
import java.net.URLConnection;
import java.nio.charset.StandardCharsets;
import java.security.cert.X509Certificate;
import javax.net.ssl.HostnameVerifier;
import javax.net.ssl.HttpsURLConnection;
import javax.net.ssl.SSLContext;
import javax.net.ssl.SSLSession;
import javax.net.ssl.TrustManager;
import javax.net.ssl.X509TrustManager;
import com.ard.utils.Constants;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
 * 通用http发送方法
 *
 * @author ruoyi
 */
@Slf4j(topic = "httpUtils")
public class HttpUtils
{
    /**
     * 向指定 URL 发送GET方法的请求
     *
     * @param url 发送请求的 URL
     * @return 所代表远程资源的响应结果
     */
    public static String sendGet(String url)
    {
        return sendGet(url, StringUtils.EMPTY);
    }
    /**
     * 向指定 URL 发送GET方法的请求
     *
     * @param url 发送请求的 URL
     * @param param 请求参数,请求参数应该是 name1=value1&name2=value2 的形式。
     * @return 所代表远程资源的响应结果
     */
    public static String sendGet(String url, String param)
    {
        return sendGet(url, param, Constants.UTF8);
    }
    /**
     * 向指定 URL 发送GET方法的请求
     *
     * @param url 发送请求的 URL
     * @param param 请求参数,请求参数应该是 name1=value1&name2=value2 的形式。
     * @param contentType 编码类型
     * @return 所代表远程资源的响应结果
     */
    public static String sendGet(String url, String param, String contentType)
    {
        StringBuilder result = new StringBuilder();
        BufferedReader in = null;
        try
        {
            String urlNameString = StringUtils.isNotBlank(param) ? url + "?" + param : url;
            log.debug("sendGet - {}", urlNameString);
            URL realUrl = new URL(urlNameString);
            URLConnection connection = realUrl.openConnection();
            connection.setRequestProperty("accept", "*/*");
            connection.setRequestProperty("connection", "Keep-Alive");
            connection.setRequestProperty("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)");
            connection.connect();
            in = new BufferedReader(new InputStreamReader(connection.getInputStream(), contentType));
            String line;
            while ((line = in.readLine()) != null)
            {
                result.append(line);
            }
            log.debug("recv - {}", result);
        }
        catch (ConnectException e)
        {
            log.error("调用HttpUtils.sendGet ConnectException, url=" + url + ",param=" + param, e);
        }
        catch (SocketTimeoutException e)
        {
            log.error("调用HttpUtils.sendGet SocketTimeoutException, url=" + url + ",param=" + param, e);
        }
        catch (IOException e)
        {
            log.error("调用HttpUtils.sendGet IOException, url=" + url + ",param=" + param, e);
        }
        catch (Exception e)
        {
            log.error("调用HttpsUtil.sendGet Exception, url=" + url + ",param=" + param, e);
        }
        finally
        {
            try
            {
                if (in != null)
                {
                    in.close();
                }
            }
            catch (Exception ex)
            {
                log.error("调用in.close Exception, url=" + url + ",param=" + param, ex);
            }
        }
        return result.toString();
    }
    /**
     * 向指定 URL 发送POST方法的请求
     *
     * @param url 发送请求的 URL
     * @param param 请求参数,请求参数应该是 name1=value1&name2=value2 的形式。
     * @return 所代表远程资源的响应结果
     */
    public static String sendPost(String url, String param)
    {
        PrintWriter out = null;
        BufferedReader in = null;
        StringBuilder result = new StringBuilder();
        try
        {
            log.debug("sendPost - {}", url);
            URL realUrl = new URL(url);
            URLConnection conn = realUrl.openConnection();
            conn.setRequestProperty("accept", "*/*");
            conn.setRequestProperty("connection", "Keep-Alive");
            conn.setRequestProperty("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)");
            conn.setRequestProperty("Accept-Charset", "utf-8");
            conn.setRequestProperty("contentType", "utf-8");
            conn.setDoOutput(true);
            conn.setDoInput(true);
            out = new PrintWriter(conn.getOutputStream());
            out.print(param);
            out.flush();
            in = new BufferedReader(new InputStreamReader(conn.getInputStream(), StandardCharsets.UTF_8));
            String line;
            while ((line = in.readLine()) != null)
            {
                result.append(line);
            }
            log.debug("recv - {}", result);
        }
        catch (ConnectException e)
        {
            log.error("调用HttpUtils.sendPost ConnectException, url=" + url + ",param=" + param, e);
        }
        catch (SocketTimeoutException e)
        {
            log.error("调用HttpUtils.sendPost SocketTimeoutException, url=" + url + ",param=" + param, e);
        }
        catch (IOException e)
        {
            log.error("调用HttpUtils.sendPost IOException, url=" + url + ",param=" + param, e);
        }
        catch (Exception e)
        {
            log.error("调用HttpsUtil.sendPost Exception, url=" + url + ",param=" + param, e);
        }
        finally
        {
            try
            {
                if (out != null)
                {
                    out.close();
                }
                if (in != null)
                {
                    in.close();
                }
            }
            catch (IOException ex)
            {
                log.error("调用in.close Exception, url=" + url + ",param=" + param, ex);
            }
        }
        return result.toString();
    }
    public static String sendSSLPost(String url, String param)
    {
        StringBuilder result = new StringBuilder();
        String urlNameString = url + "?" + param;
        try
        {
            log.debug("sendSSLPost - {}", urlNameString);
            SSLContext sc = SSLContext.getInstance("SSL");
            sc.init(null, new TrustManager[] { new TrustAnyTrustManager() }, new java.security.SecureRandom());
            URL console = new URL(urlNameString);
            HttpsURLConnection conn = (HttpsURLConnection) console.openConnection();
            conn.setRequestProperty("accept", "*/*");
            conn.setRequestProperty("connection", "Keep-Alive");
            conn.setRequestProperty("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)");
            conn.setRequestProperty("Accept-Charset", "utf-8");
            conn.setRequestProperty("contentType", "utf-8");
            conn.setDoOutput(true);
            conn.setDoInput(true);
            conn.setSSLSocketFactory(sc.getSocketFactory());
            conn.setHostnameVerifier(new TrustAnyHostnameVerifier());
            conn.connect();
            InputStream is = conn.getInputStream();
            BufferedReader br = new BufferedReader(new InputStreamReader(is));
            String ret = "";
            while ((ret = br.readLine()) != null)
            {
                if (ret != null && !"".equals(ret.trim()))
                {
                    result.append(new String(ret.getBytes(StandardCharsets.ISO_8859_1), StandardCharsets.UTF_8));
                }
            }
            log.debug("recv - {}", result);
            conn.disconnect();
            br.close();
        }
        catch (ConnectException e)
        {
            log.error("调用HttpUtils.sendSSLPost ConnectException, url=" + url + ",param=" + param, e);
        }
        catch (SocketTimeoutException e)
        {
            log.error("调用HttpUtils.sendSSLPost SocketTimeoutException, url=" + url + ",param=" + param, e);
        }
        catch (IOException e)
        {
            log.error("调用HttpUtils.sendSSLPost IOException, url=" + url + ",param=" + param, e);
        }
        catch (Exception e)
        {
            log.error("调用HttpsUtil.sendSSLPost Exception, url=" + url + ",param=" + param, e);
        }
        return result.toString();
    }
    private static class TrustAnyTrustManager implements X509TrustManager
    {
        @Override
        public void checkClientTrusted(X509Certificate[] chain, String authType)
        {
        }
        @Override
        public void checkServerTrusted(X509Certificate[] chain, String authType)
        {
        }
        @Override
        public X509Certificate[] getAcceptedIssuers()
        {
            return new X509Certificate[] {};
        }
    }
    private static class TrustAnyHostnameVerifier implements HostnameVerifier
    {
        @Override
        public boolean verify(String hostname, SSLSession session)
        {
            return true;
        }
    }
}
src/main/resources/application-dev.yml
@@ -39,7 +39,7 @@
  # mqtt配置
  mqtt:
    host: tcp://192.168.2.15:1883
    clientId: cc3
    clientId: c227
    username: admin
    password: admin
    topic: tube
@@ -48,7 +48,7 @@
    enabled: true
  # 盗电接口地址
  stealelec:
    enabled: false
    enabled: true
    url: http://iot.zhdk.net:8090/Warning/GetWarning?userName=cy4oil
  # 三厂数字化地址
  digitization3:
@@ -65,11 +65,12 @@
# 日志等级配置
logging:
  level:
    hikSdk: debug
    hikSdk: info
    mqtt: info
    netty: debug
    netty: info
    external: info
    camera: info
    tube: info
    digitization3: info
    stealAlarm: info
    httpUtils: info
src/main/resources/logback-spring.xml
@@ -141,7 +141,19 @@
            <pattern>${log.pattern}</pattern>
        </encoder>
    </appender>
    <!--httpUtils日志输出-->
    <appender name="httpUtils" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>${log.path}/httpUtils.log</file>
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <!--按天回滚daily-->
            <fileNamePattern>${log.path}/httpUtils.%d{yyyy-MM-dd}.log</fileNamePattern>
            <!--日志最大的历史60天-->
            <maxHistory>60</maxHistory>
        </rollingPolicy>
        <encoder>
            <pattern>${log.pattern}</pattern>
        </encoder>
    </appender>
    <root level="DEBUG">
        <appender-ref ref="console"/>
    </root>
@@ -182,6 +194,9 @@
    <logger name="stealAlarm" level="INFO">
        <appender-ref ref="stealAlarm"/>
    </logger>
    <!--HttpUtils操作日志-->
    <logger name="httpUtils" level="INFO">
        <appender-ref ref="httpUtils"/>
    </logger>
</configuration>