feat(mqtt): 添加设备程序文件上传和升级功能

- 在FileDto中新增压缩方式、文件大小、文件个数等文件传输相关字段
- 在MqttMessageHandler中添加4664消息类型处理设备程序文件单帧上送
- 实现文件校验码验证和程序升级请求逻辑
- 添加UpgradeDevDto用于程序升级相关的数据传输
- 在CsDevModelServiceImpl异常处理中清理上传状态缓存
- 添加程序升级(type 32)消息类型定义
- 集成csEdDataFeignClient进行设备数据查询
- 实现升级结果确认和设备端升级流程控制
This commit is contained in:
xy
2026-07-22 08:54:08 +08:00
parent 759a811247
commit 20e5bb3e93
6 changed files with 129 additions and 1 deletions

View File

@@ -45,11 +45,13 @@ public enum TypeEnum {
TYPE_29("9217","设备心跳请求"),
TYPE_30("4865","设备数据主动上送"),
TYPE_31("8503","设备控制命令"),
TYPE_32("8504","程序升级"),
READ_FILE_DIR("1101", "读取文件目录"),
FILE_DOWNLOAD("1102", "文件下载"),
FIXED_VALUE("1103", "定值读取/写入"),
INNER_FIXED_VALUE("1104", "内部定值读取/写入"),
WORKING_LOG("1111","设备运行日志"),
DEVICE_VERSION("1112","设备版本信息"),
DEVICE_REBOOT("1114","设备重启"),

View File

@@ -0,0 +1,48 @@
package com.njcn.access.pojo.dto;
import com.alibaba.nacos.shaded.com.google.gson.annotations.SerializedName;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* @author xy
*/
@Data
public class UpgradeDevDto {
@SerializedName("CmpAlg")
@ApiModelProperty("压缩方式0-无1-zip2-tar")
private Integer cmpAlg;
@SerializedName("RawSize")
@ApiModelProperty("压缩前全部文件总大小(单位字节)")
private Integer rawSize;
@SerializedName("FileCnt")
@ApiModelProperty("压缩前全部文件个数")
private Integer fileCnt;
@SerializedName("Name")
@ApiModelProperty("文件名称,全路径")
private String name;
@SerializedName("FileSize")
@ApiModelProperty("文件总大小(单位字节)")
private Integer fileSize;
@SerializedName("Offset")
@ApiModelProperty("当前上送数据包在文件中偏移位置")
private Integer offset;
@SerializedName("Len")
@ApiModelProperty("当前上送数据包长度")
private Integer len;
@SerializedName("Data")
@ApiModelProperty("文件包数据")
private String data;
@SerializedName("Chk")
@ApiModelProperty("确认升级0-取消升级1-确认升级)")
private Integer chk;
}

View File

@@ -69,6 +69,30 @@ public class FileDto implements Serializable {
@SerializedName("Offset")
private Integer offset;
@SerializedName("CmpAlg")
@ApiModelProperty("压缩方式0-无1-zip2-tar")
private Integer cmpAlg;
@SerializedName("RawSize")
@ApiModelProperty("压缩前全部文件总大小(单位字节)")
private Integer rawSize;
@SerializedName("FileCnt")
@ApiModelProperty("压缩前全部文件个数")
private Integer fileCnt;
@SerializedName("Len")
@ApiModelProperty("当前上送数据包长度大小限定每包不超过50KB")
private Integer len;
@SerializedName("FileName")
@ApiModelProperty("文件名")
private String fileName;
@SerializedName("FileCrc")
@ApiModelProperty("文件校验码")
private String fileCrc;
}
@Data