jiazx0107@163.com
2023-05-17 620eab6cca2bc9ef9ea6d3067a0a5ba1deadbd1c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
package com.ld.igds.io.fzzy;
 
 
import com.alibaba.fastjson.JSON;
import com.ld.igds.constant.RedisConst;
import com.ld.igds.io.fzzy.dto.IoMessage;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.RandomUtils;
 
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.Base64;
 
/**
 * 工具类
 *
 * @author vince
 */
@Slf4j
public class ServerUtils {
 
 
    public static final String VERSION_1 = "v1.0";
 
 
    public static final String SIGN_DEFAULT = "0000";
 
    public static final String CHARSET = "UTF-8";
    public static final String MSG_BEGIN = "<BHZN>";
    public static final String MSG_END = "<END>";
 
    //功能码
    public static final String FUNCTION_1001 = "1001";// 基础参数配置
    public static final String FUNCTION_2001 = "2001";// 开始检测
    public static final String FUNCTION_2002 = "2002";// 停止检测
    public static final String FUNCTION_2003 = "2003";// 进度查询
    public static final String FUNCTION_2004 = "2004";// 结果上报
    public static final String FUNCTION_2005 = "2005";// 坐标提取
    public static final String FUNCTION_2006 = "2006";// 远程抓拍
    public static final String FUNCTION_2007 = "2007";// 心跳维持
    public static final String FUNCTION_1002 = "1002";// 时间同步
    public static final String FUNCTION_1003 = "1003";// 设备登陆
 
 
    //响应码
    public static String RESP_0 = "0";//    成功
    public static String RESP_1 = "1";//    命令格式错误
    public static String RESP_2 = "2";//    命令数据检验异常
    public static String RESP_3 = "3";//    发送超时错误
    public static String RESP_4 = "4";//    终端设备不在线
    public static String RESP_5 = "5";//    终端设备执行中
    public static String RESP_6 = "6";//    终端设备抓拍失败
    public static String RESP_9 = "9";//    其它错误
 
    /**
     * 生成TCP连接的KEY
     *
     * @param ip
     * @param port
     * @return
     */
    public static String getServerKey(String ip, Integer port) {
        return ip + ":" + port;
    }
 
    /**
     * @param message
     * @return
     */
    public static IoMessage buildMessage(String message) throws Exception {
        IoMessage ioMessage = JSON.parseObject(message, IoMessage.class);
        return ioMessage;
    }
 
    /**
     * base64转为图片
     *
     * @param path   文件路径:到文件夹即可,代码里会在文件夹里生成对应的jpg文件
     * @param base64
     * @return
     */
    public static String base64ToJpg(String path, String fileName, String base64) {
        // 判断文件路径是否存在
        File filePath = new File(path);
        if (!filePath.exists()) {
            filePath.mkdirs();
        }
        // 创建文件
        String jpgFile = path + "\\" + fileName + ".jpg";
        File file = new File(jpgFile);
        boolean jpgFileExist = false;
        try {
            jpgFileExist = file.createNewFile();
            log.info("jpg文件创建成功");
        } catch (IOException e) {
            log.info("jpg文件创建失败");
            e.printStackTrace();
        }
        if (jpgFileExist) {
            // 解密
            Base64.Decoder decoder = Base64.getDecoder();
            // 去掉base64前缀 data:image/jpeg;base64,
            base64 = base64.substring(base64.indexOf(",", 1) + 1, base64.length());
            byte[] b = decoder.decode(base64);
            // 处理数据
            for (int i = 0; i < b.length; ++i) {
                if (b[i] < 0) {
                    b[i] += 256;
                }
            }
            // 保存图片
            try {
                FileOutputStream out = new FileOutputStream(jpgFile);
                out.write(b);
                out.flush();
                out.close();
                // 写入成功返回文件路径
                return jpgFile;
            } catch (FileNotFoundException e) {
                log.info("文件未找到");
                e.printStackTrace();
            } catch (IOException e) {
                log.info("写入失败");
                e.printStackTrace();
            }
        }
        return "文件不存在";
    }
 
    public static String buildRequestKey(String companyId, String sn) {
        return RedisConst.buildKey(companyId, sn);
    }
 
    public static String createOrderId() {
        return RandomUtils.nextInt(1000, 9999) + "";
    }
}