Pu Zhibing
2025-06-19 a05b419384e148fc950c77553816a2d05144f4ae
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
package com.ruoyi.dataInterchange.model;
 
import com.ruoyi.dataInterchange.pojo.BaseModel;
import com.ruoyi.dataInterchange.util.jtt809.common.Jtt809Util;
import io.netty.buffer.ByteBuf;
import io.netty.buffer.Unpooled;
import lombok.Data;
import org.springframework.data.elasticsearch.annotations.Document;
import org.springframework.data.elasticsearch.annotations.Field;
import org.springframework.data.elasticsearch.annotations.FieldType;
 
import java.util.ArrayList;
import java.util.List;
 
/**
 * 报警附件目录请求应答
 * @author zhibing.pu
 * @Date 2025/6/4 15:05
 */
@Data
@Document(indexName = "up_warn_msg_filelist_ack")
public class UpWarnMsgFileListAck extends BaseModel {
    /**
     * 车牌号
     */
    @Field(type = FieldType.Text)
    private String vehicleNo;
    /**
     * 车牌颜色
     */
    @Field(type = FieldType.Integer)
    private int vehicleColor;
    /**
     * 子业务类型标识
     */
    @Field(type = FieldType.Integer)
    private int dataType;
    /**
     * 后续数据长度
     */
    @Field(type = FieldType.Integer)
    private int dataLength;
    /**
     * 报警信息ID
     */
    @Field(type = FieldType.Text)
    private String infoId;
    /**
     * 附件服务器地址长度
     */
    @Field(type = FieldType.Integer)
    private int serverLength;
    /**
     * 附件服务器IP或域名
     */
    @Field(type = FieldType.Text)
    private String server;
    /**
     * 附件服务器FTP协议端口号
     */
    @Field(type = FieldType.Integer)
    private int port;
    /**
     * 用户名长度
     */
    @Field(type = FieldType.Integer)
    private int userNameLength;
    /**
     * 附件服务器用户名
     */
    @Field(type = FieldType.Text)
    private String userName;
    /**
     * 密码长度
     */
    @Field(type = FieldType.Integer)
    private int passwordLength;
    /**
     * 附件服务器密码
     */
    @Field(type = FieldType.Text)
    private String password;
    /**
     * 附件数量
     */
    @Field(type = FieldType.Integer)
    private int fileCount;
    /**
     * 附件列表数据
     */
    @Field(type = FieldType.Object)
    private List<File> fileList;
    
    
    /**
     * 解析报文
     */
    public UpWarnMsgFileListAck decode(WarnMsg warnMsg) {
        try {
            byte[] data = warnMsg.getData();
            ByteBuf byteBuf = Unpooled.wrappedBuffer(data);
            this.vehicleNo = warnMsg.getVehicleNo();
            this.vehicleColor = warnMsg.getVehicleColor();
            this.dataType = warnMsg.getDataType();
            this.dataLength = warnMsg.getDataLength();
            
            //信息ID
            this.infoId = Jtt809Util.readGBKString(byteBuf,32);
            //附件服务器地址长度
            this.serverLength = byteBuf.readByte();
            //附件服务器IP或域名
            this.server = Jtt809Util.readGBKString(byteBuf,serverLength);
            //附件服务器FTP协议端口号
            this.port = byteBuf.readShort();
            //用户名长度
            this.userNameLength = byteBuf.readByte();
            //附件服务器用户名
            this.userName = Jtt809Util.readGBKString(byteBuf,userNameLength);
            //密码长度
            this.passwordLength = byteBuf.readByte();
            //附件服务器密码
            this.password = Jtt809Util.readGBKString(byteBuf,passwordLength);
            //附件数量
            this.fileCount = byteBuf.readByte();
            List<File> list = new ArrayList<>();
            for (int i = 0; i < this.fileCount; i++) {
                list.add(new File().decode(byteBuf));
            }
            this.fileList = list;
        }catch (Exception e){
            e.printStackTrace();
        }
        return this;
    }
}