Commit 00edd5a7246b5c5dd91f6d7f88723c6a0a22495a
1 parent
b46e6309
【功能新增】IoT:增加 ota 的表结构设计(90%)
Showing
5 changed files
with
229 additions
and
0 deletions
yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/dal/dataobject/ota/IotOtaFirmwareDO.java
0 → 100644
| 1 | +package cn.iocoder.yudao.module.iot.dal.dataobject.ota; | |
| 2 | + | |
| 3 | +import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; | |
| 4 | +import com.baomidou.mybatisplus.annotation.KeySequence; | |
| 5 | +import com.baomidou.mybatisplus.annotation.TableField; | |
| 6 | +import com.baomidou.mybatisplus.annotation.TableName; | |
| 7 | +import lombok.*; | |
| 8 | + | |
| 9 | +/** | |
| 10 | + * IoT OTA 固件 DO | |
| 11 | + * | |
| 12 | + * @see <a href="阿里云 IoT - OTA 升级">https://help.aliyun.com/zh/iot/user-guide/ota-upgrade-overview</a> | |
| 13 | + * | |
| 14 | + * @author 芋道源码 | |
| 15 | + */ | |
| 16 | +@TableName(value = "iot_ota_firmware", autoResultMap = true) | |
| 17 | +@KeySequence("iot_ota_firmware_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 | |
| 18 | +@Data | |
| 19 | +@EqualsAndHashCode(callSuper = true) | |
| 20 | +@ToString(callSuper = true) | |
| 21 | +@Builder | |
| 22 | +@NoArgsConstructor | |
| 23 | +@AllArgsConstructor | |
| 24 | +public class IotOtaFirmwareDO extends BaseDO { | |
| 25 | + | |
| 26 | + /** | |
| 27 | + * 固件编号 | |
| 28 | + */ | |
| 29 | + @TableField | |
| 30 | + private Long id; | |
| 31 | + /** | |
| 32 | + * 固件名称 | |
| 33 | + */ | |
| 34 | + private String name; | |
| 35 | + /** | |
| 36 | + * 固件版本 | |
| 37 | + */ | |
| 38 | + private String description; | |
| 39 | + /** | |
| 40 | + * 版本号 | |
| 41 | + */ | |
| 42 | + private String version; | |
| 43 | + | |
| 44 | + /** | |
| 45 | + * 产品编号 | |
| 46 | + * | |
| 47 | + * 关联 {@link cn.iocoder.yudao.module.iot.dal.dataobject.product.IotProductDO#getId()} | |
| 48 | + */ | |
| 49 | + private String productId; | |
| 50 | + /** | |
| 51 | + * 产品标识 | |
| 52 | + * | |
| 53 | + * 冗余 {@link cn.iocoder.yudao.module.iot.dal.dataobject.product.IotProductDO#getProductKey()} | |
| 54 | + */ | |
| 55 | + private String productKey; | |
| 56 | + | |
| 57 | + /** | |
| 58 | + * 签名方式 | |
| 59 | + * | |
| 60 | + * 例如说:MD5、SHA256 | |
| 61 | + */ | |
| 62 | + private String signMethod; | |
| 63 | + /** | |
| 64 | + * 固件文件签名 | |
| 65 | + */ | |
| 66 | + private String fileSign; | |
| 67 | + /** | |
| 68 | + * 固件文件大小 | |
| 69 | + */ | |
| 70 | + private Long fileSize; | |
| 71 | + /** | |
| 72 | + * 固件文件 URL | |
| 73 | + */ | |
| 74 | + private String fileUrl; | |
| 75 | + | |
| 76 | + /** | |
| 77 | + * 自定义信息,建议使用 JSON 格式 | |
| 78 | + */ | |
| 79 | + private String information; | |
| 80 | + | |
| 81 | +} | |
| 0 | 82 | \ No newline at end of file | ... | ... |
yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/dal/dataobject/ota/IotOtaUpgradeRecordDO.java
0 → 100644
| 1 | +package cn.iocoder.yudao.module.iot.dal.dataobject.ota; | |
| 2 | + | |
| 3 | +import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; | |
| 4 | +import com.baomidou.mybatisplus.annotation.KeySequence; | |
| 5 | +import com.baomidou.mybatisplus.annotation.TableId; | |
| 6 | +import com.baomidou.mybatisplus.annotation.TableName; | |
| 7 | +import lombok.*; | |
| 8 | + | |
| 9 | +import java.time.LocalDateTime; | |
| 10 | + | |
| 11 | +/** | |
| 12 | + * IoT OTA 升级记录 DO | |
| 13 | + * | |
| 14 | + * @author 芋道源码 | |
| 15 | + */ | |
| 16 | +@TableName(value = "iot_ota_upgrade_record", autoResultMap = true) | |
| 17 | +@KeySequence("iot_ota_upgrade_record_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 | |
| 18 | +@Data | |
| 19 | +@EqualsAndHashCode(callSuper = true) | |
| 20 | +@ToString(callSuper = true) | |
| 21 | +@Builder | |
| 22 | +@NoArgsConstructor | |
| 23 | +@AllArgsConstructor | |
| 24 | +public class IotOtaUpgradeRecordDO extends BaseDO { | |
| 25 | + | |
| 26 | + @TableId | |
| 27 | + private Long id; | |
| 28 | + | |
| 29 | + /** | |
| 30 | + * 固件编号 | |
| 31 | + * | |
| 32 | + * 关联 {@link IotOtaFirmwareDO#getId()} | |
| 33 | + */ | |
| 34 | + private Long firmwareId; | |
| 35 | + /** | |
| 36 | + * 任务编号 | |
| 37 | + * | |
| 38 | + * 关联 {@link IotOtaUpgradeTaskDO#getId()} | |
| 39 | + */ | |
| 40 | + private Long taskId; | |
| 41 | + | |
| 42 | + /** | |
| 43 | + * 升级状态 | |
| 44 | + * | |
| 45 | + * TODO | |
| 46 | + */ | |
| 47 | + private Integer status; | |
| 48 | + /** | |
| 49 | + * 升级进度,百分比 | |
| 50 | + */ | |
| 51 | + private Integer progress; | |
| 52 | + | |
| 53 | + /** | |
| 54 | + * 产品标识 | |
| 55 | + * | |
| 56 | + * 关联 {@link cn.iocoder.yudao.module.iot.dal.dataobject.product.IotProductDO#getId()} | |
| 57 | + */ | |
| 58 | + private String productKey; | |
| 59 | + /** | |
| 60 | + * 设备名称 | |
| 61 | + * | |
| 62 | + * 关联 {@link cn.iocoder.yudao.module.iot.dal.dataobject.device.IotDeviceDO#getId()} | |
| 63 | + */ | |
| 64 | + private String deviceName; | |
| 65 | + /** | |
| 66 | + * 设备编号 | |
| 67 | + * | |
| 68 | + * 关联 {@link cn.iocoder.yudao.module.iot.dal.dataobject.device.IotDeviceDO#getId()} | |
| 69 | + */ | |
| 70 | + private String deviceId; | |
| 71 | + | |
| 72 | + /** | |
| 73 | + * 升级开始时间 | |
| 74 | + */ | |
| 75 | + private LocalDateTime startTime; | |
| 76 | + /** | |
| 77 | + * 升级结束时间 | |
| 78 | + */ | |
| 79 | + private LocalDateTime endTime; | |
| 80 | + | |
| 81 | + | |
| 82 | + | |
| 83 | +} | |
| 0 | 84 | \ No newline at end of file | ... | ... |
yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/dal/dataobject/ota/IotOtaUpgradeTaskDO.java
0 → 100644
| 1 | +package cn.iocoder.yudao.module.iot.dal.dataobject.ota; | |
| 2 | + | |
| 3 | +import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; | |
| 4 | +import cn.iocoder.yudao.module.iot.dal.dataobject.device.IotDeviceDO; | |
| 5 | +import com.baomidou.mybatisplus.annotation.KeySequence; | |
| 6 | +import com.baomidou.mybatisplus.annotation.TableField; | |
| 7 | +import com.baomidou.mybatisplus.annotation.TableName; | |
| 8 | +import com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler; | |
| 9 | +import lombok.*; | |
| 10 | + | |
| 11 | +import java.util.List; | |
| 12 | + | |
| 13 | +/** | |
| 14 | + * IoT OTA 升级任务 DO | |
| 15 | + * | |
| 16 | + * @author 芋道源码 | |
| 17 | + */ | |
| 18 | +@TableName(value = "iot_ota_upgrade_task", autoResultMap = true) | |
| 19 | +@KeySequence("iot_ota_upgrade_task_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 | |
| 20 | +@Data | |
| 21 | +@EqualsAndHashCode(callSuper = true) | |
| 22 | +@ToString(callSuper = true) | |
| 23 | +@Builder | |
| 24 | +@NoArgsConstructor | |
| 25 | +@AllArgsConstructor | |
| 26 | +public class IotOtaUpgradeTaskDO extends BaseDO { | |
| 27 | + | |
| 28 | + /** | |
| 29 | + * 任务编号 | |
| 30 | + */ | |
| 31 | + @TableField | |
| 32 | + private Long id; | |
| 33 | + /** | |
| 34 | + * 任务名称 | |
| 35 | + */ | |
| 36 | + private String name; | |
| 37 | + /** | |
| 38 | + * 任务描述 | |
| 39 | + */ | |
| 40 | + private String description; | |
| 41 | + | |
| 42 | + /** | |
| 43 | + * 固件编号 | |
| 44 | + * | |
| 45 | + * 关联 {@link IotOtaFirmwareDO#getId()} | |
| 46 | + */ | |
| 47 | + private Long firmwareId; | |
| 48 | + | |
| 49 | + /** | |
| 50 | + * 任务类型 | |
| 51 | + * | |
| 52 | + * TODO @芋艿:1-全部、2-指定设备 | |
| 53 | + */ | |
| 54 | + private Integer type; | |
| 55 | + /** | |
| 56 | + * 选中的设备名字数组 | |
| 57 | + * | |
| 58 | + * 关联 {@link IotDeviceDO#getDeviceName()} | |
| 59 | + */ | |
| 60 | + @TableField(typeHandler = JacksonTypeHandler.class) | |
| 61 | + private List<String> deviceNames; | |
| 62 | + | |
| 63 | +} | |
| 0 | 64 | \ No newline at end of file | ... | ... |
yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/dal/dataobject/rule/IotAlertRecordDO.java
yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/service/device/control/IotDeviceDownstreamServiceImpl.java
| ... | ... | @@ -57,6 +57,7 @@ public class IotDeviceDownstreamServiceImpl implements IotDeviceDownstreamServic |
| 57 | 57 | public IotDeviceMessage downstreamDevice(IotDeviceDownstreamReqVO downstreamReqVO) { |
| 58 | 58 | // 校验设备是否存在 |
| 59 | 59 | IotDeviceDO device = deviceService.validateDeviceExists(downstreamReqVO.getId()); |
| 60 | + // TODO @芋艿:离线设备,不允许推送 | |
| 60 | 61 | // TODO 芋艿:父设备的处理 |
| 61 | 62 | IotDeviceDO parentDevice = null; |
| 62 | 63 | ... | ... |