Commit 5399e5bba0d4673c763b90dc50ab38ec29a5dbbe

Authored by YunaiV
1 parent f9d782c7

reactor:【IoT 物联网】调整 ota 的 task 实体定义(暂时未处理 controller)

Showing 18 changed files with 151 additions and 366 deletions
yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/controller/admin/ota/IotOtaFirmwareController.java
... ... @@ -21,7 +21,7 @@ import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
21 21  
22 22 @Tag(name = "管理后台 - IoT OTA 固件")
23 23 @RestController
24   -@RequestMapping("/iot/ota-firmware")
  24 +@RequestMapping("/iot/ota/firmware")
25 25 @Validated
26 26 public class IotOtaFirmwareController {
27 27  
... ...
yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/controller/admin/ota/IotOtaUpgradeRecordController.java
... ... @@ -5,7 +5,7 @@ import cn.iocoder.yudao.framework.common.pojo.PageResult;
5 5 import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
6 6 import cn.iocoder.yudao.module.iot.controller.admin.ota.vo.upgrade.record.IotOtaUpgradeRecordPageReqVO;
7 7 import cn.iocoder.yudao.module.iot.controller.admin.ota.vo.upgrade.record.IotOtaUpgradeRecordRespVO;
8   -import cn.iocoder.yudao.module.iot.dal.dataobject.ota.IotOtaUpgradeRecordDO;
  8 +import cn.iocoder.yudao.module.iot.dal.dataobject.ota.IotOtaTaskRecordDO;
9 9 import cn.iocoder.yudao.module.iot.service.ota.IotOtaUpgradeRecordService;
10 10 import io.swagger.v3.oas.annotations.Operation;
11 11 import io.swagger.v3.oas.annotations.Parameter;
... ... @@ -50,7 +50,7 @@ public class IotOtaUpgradeRecordController {
50 50 @PreAuthorize("@ss.hasPermission('iot:ota-upgrade-record:query')")
51 51 public CommonResult<PageResult<IotOtaUpgradeRecordRespVO>> getUpgradeRecordPage(
52 52 @Valid IotOtaUpgradeRecordPageReqVO pageReqVO) {
53   - PageResult<IotOtaUpgradeRecordDO> pageResult = upgradeRecordService.getUpgradeRecordPage(pageReqVO);
  53 + PageResult<IotOtaTaskRecordDO> pageResult = upgradeRecordService.getUpgradeRecordPage(pageReqVO);
54 54 return success(BeanUtils.toBean(pageResult, IotOtaUpgradeRecordRespVO.class));
55 55 }
56 56  
... ... @@ -59,17 +59,8 @@ public class IotOtaUpgradeRecordController {
59 59 @PreAuthorize("@ss.hasPermission('iot:ota-upgrade-record:query')")
60 60 @Parameter(name = "id", description = "升级记录编号", required = true, example = "1024")
61 61 public CommonResult<IotOtaUpgradeRecordRespVO> getUpgradeRecord(@RequestParam("id") Long id) {
62   - IotOtaUpgradeRecordDO upgradeRecord = upgradeRecordService.getUpgradeRecord(id);
  62 + IotOtaTaskRecordDO upgradeRecord = upgradeRecordService.getUpgradeRecord(id);
63 63 return success(BeanUtils.toBean(upgradeRecord, IotOtaUpgradeRecordRespVO.class));
64 64 }
65 65  
66   - @PutMapping("/retry")
67   - @Operation(summary = "重试升级记录")
68   - @PreAuthorize("@ss.hasPermission('iot:ota-upgrade-record:retry')")
69   - @Parameter(name = "id", description = "升级记录编号", required = true, example = "1024")
70   - public CommonResult<Boolean> retryUpgradeRecord(@RequestParam("id") Long id) {
71   - upgradeRecordService.retryUpgradeRecord(id);
72   - return success(true);
73   - }
74   -
75 66 }
... ...
yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/controller/admin/ota/IotOtaUpgradeTaskController.java
... ... @@ -6,7 +6,7 @@ import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
6 6 import cn.iocoder.yudao.module.iot.controller.admin.ota.vo.upgrade.task.IotOtaUpgradeTaskPageReqVO;
7 7 import cn.iocoder.yudao.module.iot.controller.admin.ota.vo.upgrade.task.IotOtaUpgradeTaskRespVO;
8 8 import cn.iocoder.yudao.module.iot.controller.admin.ota.vo.upgrade.task.IotOtaUpgradeTaskSaveReqVO;
9   -import cn.iocoder.yudao.module.iot.dal.dataobject.ota.IotOtaUpgradeTaskDO;
  9 +import cn.iocoder.yudao.module.iot.dal.dataobject.ota.IotOtaTaskDO;
10 10 import cn.iocoder.yudao.module.iot.service.ota.IotOtaUpgradeTaskService;
11 11 import io.swagger.v3.oas.annotations.Operation;
12 12 import io.swagger.v3.oas.annotations.Parameter;
... ... @@ -48,7 +48,7 @@ public class IotOtaUpgradeTaskController {
48 48 @Operation(summary = "获得升级任务分页")
49 49 @PreAuthorize(value = "@ss.hasPermission('iot:ota-upgrade-task:query')")
50 50 public CommonResult<PageResult<IotOtaUpgradeTaskRespVO>> getUpgradeTaskPage(@Valid IotOtaUpgradeTaskPageReqVO pageReqVO) {
51   - PageResult<IotOtaUpgradeTaskDO> pageResult = upgradeTaskService.getUpgradeTaskPage(pageReqVO);
  51 + PageResult<IotOtaTaskDO> pageResult = upgradeTaskService.getUpgradeTaskPage(pageReqVO);
52 52 return success(BeanUtils.toBean(pageResult, IotOtaUpgradeTaskRespVO.class));
53 53 }
54 54  
... ... @@ -57,7 +57,7 @@ public class IotOtaUpgradeTaskController {
57 57 @Parameter(name = "id", description = "升级任务编号", required = true, example = "1024")
58 58 @PreAuthorize(value = "@ss.hasPermission('iot:ota-upgrade-task:query')")
59 59 public CommonResult<IotOtaUpgradeTaskRespVO> getUpgradeTask(@RequestParam("id") Long id) {
60   - IotOtaUpgradeTaskDO upgradeTask = upgradeTaskService.getUpgradeTask(id);
  60 + IotOtaTaskDO upgradeTask = upgradeTaskService.getUpgradeTask(id);
61 61 return success(BeanUtils.toBean(upgradeTask, IotOtaUpgradeTaskRespVO.class));
62 62 }
63 63  
... ...
yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/controller/admin/ota/vo/upgrade/record/IotOtaUpgradeRecordRespVO.java
... ... @@ -3,7 +3,8 @@ package cn.iocoder.yudao.module.iot.controller.admin.ota.vo.upgrade.record;
3 3 import cn.iocoder.yudao.module.iot.dal.dataobject.device.IotDeviceDO;
4 4 import cn.iocoder.yudao.module.iot.dal.dataobject.device.IotDeviceMessageDO;
5 5 import cn.iocoder.yudao.module.iot.dal.dataobject.ota.IotOtaFirmwareDO;
6   -import cn.iocoder.yudao.module.iot.dal.dataobject.ota.IotOtaUpgradeTaskDO;
  6 +import cn.iocoder.yudao.module.iot.dal.dataobject.ota.IotOtaTaskDO;
  7 +import cn.iocoder.yudao.module.iot.enums.ota.IotOtaTaskRecordStatusEnum;
7 8 import com.fhs.core.trans.anno.Trans;
8 9 import com.fhs.core.trans.constant.TransType;
9 10 import io.swagger.v3.oas.annotations.media.Schema;
... ... @@ -36,7 +37,7 @@ public class IotOtaUpgradeRecordRespVO {
36 37 /**
37 38 * 任务编号
38 39 * <p>
39   - * 关联 {@link IotOtaUpgradeTaskDO#getId()}
  40 + * 关联 {@link IotOtaTaskDO#getId()}
40 41 */
41 42 @Schema(description = "任务编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024")
42 43 private Long taskId;
... ... @@ -77,7 +78,7 @@ public class IotOtaUpgradeRecordRespVO {
77 78 /**
78 79 * 升级状态
79 80 * <p>
80   - * 关联 {@link cn.iocoder.yudao.module.iot.enums.ota.IotOtaUpgradeRecordStatusEnum}
  81 + * 关联 {@link IotOtaTaskRecordStatusEnum}
81 82 */
82 83 @Schema(description = "升级状态", requiredMode = Schema.RequiredMode.REQUIRED, allowableValues = {"0", "10", "20", "30", "40", "50"})
83 84 private Integer status;
... ...
yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/controller/admin/ota/vo/upgrade/task/IotOtaUpgradeTaskPageReqVO.java
... ... @@ -9,17 +9,11 @@ import lombok.Data;
9 9 @Schema(description = "管理后台 - IoT OTA 升级任务分页 Request VO")
10 10 public class IotOtaUpgradeTaskPageReqVO extends PageParam {
11 11  
12   - /**
13   - * 任务名称字段,用于描述任务的名称
14   - */
15   - @Schema(description = "任务名称", example = "升级任务")
16   - private String name;
17   -
18   - /**
19   - * 固件编号字段,用于唯一标识固件,不能为空
20   - */
21   - @NotNull(message = "固件编号不能为空")
22 12 @Schema(description = "固件编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024")
  13 + @NotNull(message = "固件编号不能为空")
23 14 private Long firmwareId;
24 15  
  16 + @Schema(description = "任务名称", example = "升级任务")
  17 + private String name;
  18 +
25 19 }
... ...
yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/controller/admin/ota/vo/upgrade/task/IotOtaUpgradeTaskRespVO.java
1 1 package cn.iocoder.yudao.module.iot.controller.admin.ota.vo.upgrade.task;
2 2  
3   -import cn.iocoder.yudao.module.iot.dal.dataobject.device.IotDeviceDO;
4   -import cn.iocoder.yudao.module.iot.dal.dataobject.ota.IotOtaFirmwareDO;
5 3 import com.fhs.core.trans.vo.VO;
6 4 import io.swagger.v3.oas.annotations.media.Schema;
7 5 import lombok.Data;
... ... @@ -13,69 +11,33 @@ import java.util.List;
13 11 @Schema(description = "管理后台 - IoT OTA 升级任务 Response VO")
14 12 public class IotOtaUpgradeTaskRespVO implements VO {
15 13  
16   - /**
17   - * 任务编号
18   - */
19 14 @Schema(description = "任务编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024")
20 15 private Long id;
21   - /**
22   - * 任务名称
23   - */
  16 +
24 17 @Schema(description = "任务名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "升级任务")
25 18 private String name;
26   - /**
27   - * 任务描述
28   - */
  19 +
29 20 @Schema(description = "任务描述", example = "升级任务")
30 21 private String description;
31   - /**
32   - * 固件编号
33   - * <p>
34   - * 关联 {@link IotOtaFirmwareDO#getId()}
35   - */
  22 +
36 23 @Schema(description = "固件编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024")
37 24 private Long firmwareId;
38   - /**
39   - * 任务状态
40   - * <p>
41   - * 关联 {@link cn.iocoder.yudao.module.iot.enums.ota.IotOtaUpgradeTaskStatusEnum}
42   - */
43   - @Schema(description = "任务状态", requiredMode = Schema.RequiredMode.REQUIRED, allowableValues = {"10", "20", "21", "30"})
  25 +
  26 + @Schema(description = "任务状态", requiredMode = Schema.RequiredMode.REQUIRED)
44 27 private Integer status;
45   - /**
46   - * 任务状态名称
47   - */
48   - @Schema(description = "任务状态名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "进行中")
49   - private String statusName;
50   - /**
51   - * 升级范围
52   - * <p>
53   - * 关联 {@link cn.iocoder.yudao.module.iot.enums.ota.IotOtaUpgradeTaskScopeEnum}
54   - */
  28 +
55 29 @Schema(description = "升级范围", requiredMode = Schema.RequiredMode.REQUIRED, allowableValues = {"1", "2"})
56 30 private Integer scope;
57   - /**
58   - * 设备数量
59   - */
  31 +
60 32 @Schema(description = "设备数量", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024")
61 33 private Long deviceCount;
62   - /**
63   - * 选中的设备编号数组
64   - * <p>
65   - * 关联 {@link IotDeviceDO#getId()}
66   - */
  34 +
67 35 @Schema(description = "选中的设备编号数组", example = "1024")
68 36 private List<Long> deviceIds;
69   - /**
70   - * 选中的设备名字数组
71   - * <p>
72   - * 关联 {@link IotDeviceDO#getDeviceName()}
73   - */
  37 +
74 38 @Schema(description = "选中的设备名字数组", example = "1024")
75 39 private List<String> deviceNames;
76   - /**
77   - * 创建时间
78   - */
  40 +
79 41 @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED, example = "2022-07-08 07:30:00")
80 42 private LocalDateTime createTime;
81 43  
... ...
yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/controller/admin/ota/vo/upgrade/task/IotOtaUpgradeTaskSaveReqVO.java
1 1 package cn.iocoder.yudao.module.iot.controller.admin.ota.vo.upgrade.task;
2 2  
3 3 import cn.iocoder.yudao.framework.common.validation.InEnum;
4   -import cn.iocoder.yudao.module.iot.dal.dataobject.device.IotDeviceDO;
5   -import cn.iocoder.yudao.module.iot.dal.dataobject.ota.IotOtaFirmwareDO;
6   -import cn.iocoder.yudao.module.iot.enums.ota.IotOtaUpgradeTaskScopeEnum;
  4 +import cn.iocoder.yudao.module.iot.enums.ota.IotOtaTaskDeviceScopeEnum;
7 5 import io.swagger.v3.oas.annotations.media.Schema;
8 6 import jakarta.validation.constraints.NotEmpty;
9 7 import jakarta.validation.constraints.NotNull;
... ... @@ -11,51 +9,27 @@ import lombok.Data;
11 9  
12 10 import java.util.List;
13 11  
14   -@Data
15 12 @Schema(description = "管理后台 - IoT OTA 升级任务创建/修改 Request VO")
  13 +@Data
16 14 public class IotOtaUpgradeTaskSaveReqVO {
17 15  
18   - // TODO @li:已经有注解,不用重复注释
19   - // TODO @li: @Schema 写在参数校验前面。先有定义;其他的,也检查下;
20   -
21   - /**
22   - * 任务名称
23   - */
24 16 @NotEmpty(message = "任务名称不能为空")
25 17 @Schema(description = "任务名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "升级任务")
26 18 private String name;
27 19  
28   - /**
29   - * 任务描述
30   - */
31 20 @Schema(description = "任务描述", example = "升级任务")
32 21 private String description;
33 22  
34   - /**
35   - * 固件编号
36   - * <p>
37   - * 关联 {@link IotOtaFirmwareDO#getId()}
38   - */
39   - @NotNull(message = "固件编号不能为空")
40 23 @Schema(description = "固件编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024")
  24 + @NotNull(message = "固件编号不能为空")
41 25 private Long firmwareId;
42 26  
43   - /**
44   - * 升级范围
45   - * <p>
46   - * 关联 {@link cn.iocoder.yudao.module.iot.enums.ota.IotOtaUpgradeTaskScopeEnum}
47   - */
48   - @NotNull(message = "升级范围不能为空")
49   - @InEnum(value = IotOtaUpgradeTaskScopeEnum.class)
50 27 @Schema(description = "升级范围", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
  28 + @NotNull(message = "升级范围不能为空")
  29 + @InEnum(value = IotOtaTaskDeviceScopeEnum.class)
51 30 private Integer scope;
52 31  
53   - /**
54   - * 选中的设备编号数组
55   - * <p>
56   - * 关联 {@link IotDeviceDO#getId()}
57   - */
58   - @Schema(description = "选中的设备编号数组", requiredMode = Schema.RequiredMode.REQUIRED, example = "[1,2,3,4]")
  32 + @Schema(description = "选中的设备编号数组", requiredMode = Schema.RequiredMode.REQUIRED, example = "1,2,3")
59 33 private List<Long> deviceIds;
60 34  
61 35 }
... ...
yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/dal/dataobject/ota/IotOtaUpgradeTaskDO.java renamed to yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/dal/dataobject/ota/IotOtaTaskDO.java
1 1 package cn.iocoder.yudao.module.iot.dal.dataobject.ota;
2 2  
3 3 import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
4   -import cn.iocoder.yudao.module.iot.dal.dataobject.device.IotDeviceDO;
  4 +import cn.iocoder.yudao.module.iot.enums.ota.IotOtaTaskDeviceScopeEnum;
  5 +import cn.iocoder.yudao.module.iot.enums.ota.IotOtaTaskStatusEnum;
5 6 import com.baomidou.mybatisplus.annotation.KeySequence;
6   -import com.baomidou.mybatisplus.annotation.TableField;
7 7 import com.baomidou.mybatisplus.annotation.TableId;
8 8 import com.baomidou.mybatisplus.annotation.TableName;
9   -import com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler;
10 9 import lombok.AllArgsConstructor;
11 10 import lombok.Builder;
12 11 import lombok.Data;
13 12 import lombok.NoArgsConstructor;
14 13  
15   -import java.util.List;
16   -
17 14 /**
18 15 * IoT OTA 升级任务 DO
19 16 *
20 17 * @author 芋道源码
21 18 */
22   -@TableName(value = "iot_ota_upgrade_task", autoResultMap = true)
23   -@KeySequence("iot_ota_upgrade_task_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。
  19 +@TableName(value = "iot_ota_task", autoResultMap = true)
  20 +@KeySequence("iot_ota_task_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。
24 21 @Data
25 22 @Builder
26 23 @NoArgsConstructor
27 24 @AllArgsConstructor
28   -public class IotOtaUpgradeTaskDO extends BaseDO {
  25 +public class IotOtaTaskDO extends BaseDO {
29 26  
30 27 /**
31 28 * 任务编号
... ... @@ -51,26 +48,23 @@ public class IotOtaUpgradeTaskDO extends BaseDO {
51 48 /**
52 49 * 任务状态
53 50 * <p>
54   - * 关联 {@link cn.iocoder.yudao.module.iot.enums.ota.IotOtaUpgradeTaskStatusEnum}
  51 + * 关联 {@link IotOtaTaskStatusEnum}
55 52 */
56 53 private Integer status;
57 54  
58 55 /**
59   - * 升级范围
  56 + * 设备升级范围
60 57 * <p>
61   - * 关联 {@link cn.iocoder.yudao.module.iot.enums.ota.IotOtaUpgradeTaskScopeEnum}
  58 + * 关联 {@link IotOtaTaskDeviceScopeEnum}
62 59 */
63   - private Integer scope;
  60 + private Integer deviceScope;
64 61 /**
65   - * 设备数量
  62 + * 设备总数数量
66 63 */
67   - private Long deviceCount;
  64 + private Long deviceTotalCount;
68 65 /**
69   - * 选中的设备编号数组
70   - * <p>
71   - * 关联 {@link IotDeviceDO#getId()}
  66 + * 设备成功数量
72 67 */
73   - @TableField(typeHandler = JacksonTypeHandler.class)
74   - private List<Long> deviceIds;
  68 + private Integer deviceSuccessCount;
75 69  
76 70 }
... ...
yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/dal/dataobject/ota/IotOtaUpgradeRecordDO.java renamed to yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/dal/dataobject/ota/IotOtaTaskRecordDO.java
... ... @@ -3,6 +3,7 @@ package cn.iocoder.yudao.module.iot.dal.dataobject.ota;
3 3 import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
4 4 import cn.iocoder.yudao.module.iot.dal.dataobject.device.IotDeviceDO;
5 5 import cn.iocoder.yudao.module.iot.dal.dataobject.device.IotDeviceMessageDO;
  6 +import cn.iocoder.yudao.module.iot.enums.ota.IotOtaTaskRecordStatusEnum;
6 7 import com.baomidou.mybatisplus.annotation.KeySequence;
7 8 import com.baomidou.mybatisplus.annotation.TableId;
8 9 import com.baomidou.mybatisplus.annotation.TableName;
... ... @@ -11,17 +12,17 @@ import lombok.*;
11 12 import java.time.LocalDateTime;
12 13  
13 14 /**
14   - * IoT OTA 升级记录 DO
  15 + * IoT OTA 升级任务记录 DO
15 16 *
16 17 * @author 芋道源码
17 18 */
18   -@TableName(value = "iot_ota_upgrade_record", autoResultMap = true)
19   -@KeySequence("iot_ota_upgrade_record_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。
  19 +@TableName(value = "iot_ota_task_record", autoResultMap = true)
  20 +@KeySequence("iot_ota_task_record_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。
20 21 @Data
21 22 @Builder
22 23 @NoArgsConstructor
23 24 @AllArgsConstructor
24   -public class IotOtaUpgradeRecordDO extends BaseDO {
  25 +public class IotOtaTaskRecordDO extends BaseDO {
25 26  
26 27 @TableId
27 28 private Long id;
... ... @@ -35,28 +36,16 @@ public class IotOtaUpgradeRecordDO extends BaseDO {
35 36 /**
36 37 * 任务编号
37 38 *
38   - * 关联 {@link IotOtaUpgradeTaskDO#getId()}
  39 + * 关联 {@link IotOtaTaskDO#getId()}
39 40 */
40 41 private Long taskId;
41 42  
42 43 /**
43   - * 产品标识
44   - *
45   - * 关联 {@link cn.iocoder.yudao.module.iot.dal.dataobject.product.IotProductDO#getId()}
46   - */
47   - private String productKey;
48   - /**
49   - * 设备名称
50   - *
51   - * 关联 {@link cn.iocoder.yudao.module.iot.dal.dataobject.device.IotDeviceDO#getId()}
52   - */
53   - private String deviceName;
54   - /**
55 44 * 设备编号
56 45 *
57   - * 关联 {@link cn.iocoder.yudao.module.iot.dal.dataobject.device.IotDeviceDO#getId()}
  46 + * 关联 {@link IotDeviceDO#getId()}
58 47 */
59   - private String deviceId;
  48 + private Long deviceId;
60 49 /**
61 50 * 来源的固件编号
62 51 *
... ... @@ -67,7 +56,7 @@ public class IotOtaUpgradeRecordDO extends BaseDO {
67 56 /**
68 57 * 升级状态
69 58 *
70   - * 关联 {@link cn.iocoder.yudao.module.iot.enums.ota.IotOtaUpgradeRecordStatusEnum}
  59 + * 关联 {@link IotOtaTaskRecordStatusEnum}
71 60 */
72 61 private Integer status;
73 62 /**
... ...
yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/dal/mysql/ota/IotOtaUpgradeRecordMapper.java
... ... @@ -4,7 +4,7 @@ import cn.iocoder.yudao.framework.common.pojo.PageResult;
4 4 import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
5 5 import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
6 6 import cn.iocoder.yudao.module.iot.controller.admin.ota.vo.upgrade.record.IotOtaUpgradeRecordPageReqVO;
7   -import cn.iocoder.yudao.module.iot.dal.dataobject.ota.IotOtaUpgradeRecordDO;
  7 +import cn.iocoder.yudao.module.iot.dal.dataobject.ota.IotOtaTaskRecordDO;
8 8 import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
9 9 import org.apache.ibatis.annotations.Mapper;
10 10 import org.apache.ibatis.annotations.Param;
... ... @@ -14,7 +14,7 @@ import java.util.List;
14 14 import java.util.Map;
15 15  
16 16 @Mapper
17   -public interface IotOtaUpgradeRecordMapper extends BaseMapperX<IotOtaUpgradeRecordDO> {
  17 +public interface IotOtaUpgradeRecordMapper extends BaseMapperX<IotOtaTaskRecordDO> {
18 18  
19 19 // TODO @li:selectByFirmwareIdAndTaskIdAndDeviceId;让方法自解释
20 20 /**
... ... @@ -25,12 +25,12 @@ public interface IotOtaUpgradeRecordMapper extends BaseMapperX&lt;IotOtaUpgradeReco
25 25 * @param deviceId 设备ID,可选参数,用于筛选设备ID匹配的记录
26 26 * @return 返回符合条件的单个OTA升级记录,如果不存在则返回null
27 27 */
28   - default IotOtaUpgradeRecordDO selectByConditions(Long firmwareId, Long taskId, String deviceId) {
  28 + default IotOtaTaskRecordDO selectByConditions(Long firmwareId, Long taskId, String deviceId) {
29 29 // 使用LambdaQueryWrapperX构建查询条件,根据传入的参数动态添加查询条件
30   - return selectOne(new LambdaQueryWrapperX<IotOtaUpgradeRecordDO>()
31   - .eqIfPresent(IotOtaUpgradeRecordDO::getFirmwareId, firmwareId)
32   - .eqIfPresent(IotOtaUpgradeRecordDO::getTaskId, taskId)
33   - .eqIfPresent(IotOtaUpgradeRecordDO::getDeviceId, deviceId));
  30 + return selectOne(new LambdaQueryWrapperX<IotOtaTaskRecordDO>()
  31 + .eqIfPresent(IotOtaTaskRecordDO::getFirmwareId, firmwareId)
  32 + .eqIfPresent(IotOtaTaskRecordDO::getTaskId, taskId)
  33 + .eqIfPresent(IotOtaTaskRecordDO::getDeviceId, deviceId));
34 34 }
35 35  
36 36 // TODO @li:这个是不是 groupby status 就 ok 拉?
... ... @@ -80,12 +80,12 @@ public interface IotOtaUpgradeRecordMapper extends BaseMapperX&lt;IotOtaUpgradeReco
80 80 * @return 返回分页查询结果,包含符合条件的 OTA升级记录列表
81 81 */
82 82 // TODO @li:selectPage 就 ok 拉。
83   - default PageResult<IotOtaUpgradeRecordDO> selectUpgradeRecordPage(IotOtaUpgradeRecordPageReqVO pageReqVO) {
  83 + default PageResult<IotOtaTaskRecordDO> selectUpgradeRecordPage(IotOtaUpgradeRecordPageReqVO pageReqVO) {
84 84 // TODO @li:这里的注释,可以去掉哈;然后下面的“如果”。。。也没必要注释
85 85 // 使用LambdaQueryWrapperX构建查询条件,并根据请求参数动态添加查询条件
86   - return selectPage(pageReqVO, new LambdaQueryWrapperX<IotOtaUpgradeRecordDO>()
87   - .likeIfPresent(IotOtaUpgradeRecordDO::getDeviceName, pageReqVO.getDeviceName()) // 如果设备名称存在,则添加模糊查询条件
88   - .eqIfPresent(IotOtaUpgradeRecordDO::getTaskId, pageReqVO.getTaskId())); // 如果任务ID存在,则添加等值查询条件
  86 + return selectPage(pageReqVO, new LambdaQueryWrapperX<IotOtaTaskRecordDO>()
  87 + .likeIfPresent(IotOtaTaskRecordDO::getDeviceName, pageReqVO.getDeviceName()) // 如果设备名称存在,则添加模糊查询条件
  88 + .eqIfPresent(IotOtaTaskRecordDO::getTaskId, pageReqVO.getTaskId())); // 如果任务ID存在,则添加等值查询条件
89 89 }
90 90  
91 91 // TODO @li:这里的注释,可以去掉哈
... ... @@ -101,59 +101,11 @@ public interface IotOtaUpgradeRecordMapper extends BaseMapperX&lt;IotOtaUpgradeReco
101 101 // TODO @li:改成 updateByTaskIdAndStatus(taskId, status, IotOtaUpgradeRecordDO) 更通用一些。
102 102 default void updateUpgradeRecordStatusByTaskIdAndStatus(Integer setStatus, Long taskId, Integer whereStatus) {
103 103 // 使用LambdaUpdateWrapper构建更新条件,将指定状态的记录更新为指定状态
104   - update(new LambdaUpdateWrapper<IotOtaUpgradeRecordDO>()
105   - .set(IotOtaUpgradeRecordDO::getStatus, setStatus)
106   - .eq(IotOtaUpgradeRecordDO::getTaskId, taskId)
107   - .eq(IotOtaUpgradeRecordDO::getStatus, whereStatus)
  104 + update(new LambdaUpdateWrapper<IotOtaTaskRecordDO>()
  105 + .set(IotOtaTaskRecordDO::getStatus, setStatus)
  106 + .eq(IotOtaTaskRecordDO::getTaskId, taskId)
  107 + .eq(IotOtaTaskRecordDO::getStatus, whereStatus)
108 108 );
109 109 }
110 110  
111   - // TODO @li:参考上面的建议,调整下这个方法
112   - /**
113   - * 根据状态查询符合条件的升级记录列表
114   - * <p>
115   - * 该函数使用LambdaQueryWrapperX构建查询条件,查询指定状态的升级记录。
116   - *
117   - * @param state 升级记录的状态,用于筛选符合条件的记录
118   - * @return 返回符合指定状态的升级记录列表,类型为List<IotOtaUpgradeRecordDO>
119   - */
120   - default List<IotOtaUpgradeRecordDO> selectUpgradeRecordListByState(Integer state) {
121   - // 使用LambdaQueryWrapperX构建查询条件,根据状态查询符合条件的升级记录
122   - return selectList(new LambdaQueryWrapperX<IotOtaUpgradeRecordDO>()
123   - .eq(IotOtaUpgradeRecordDO::getStatus, state));
124   - }
125   -
126   - // TODO @li:参考上面的建议,调整下这个方法
127   - /**
128   - * 更新升级记录状态
129   - * <p>
130   - * 该函数用于批量更新指定ID列表中的升级记录状态。通过传入的ID列表和状态值,使用LambdaUpdateWrapper构建更新条件,
131   - * 并执行更新操作。
132   - *
133   - * @param ids 需要更新的升级记录ID列表,类型为List<Long>。传入的ID列表中的记录将被更新。
134   - * @param status 要更新的状态值,类型为Integer。该值将被设置到符合条件的升级记录中。
135   - */
136   - default void updateUpgradeRecordStatus(List<Long> ids, Integer status) {
137   - // 使用LambdaUpdateWrapper构建更新条件,设置状态字段,并根据ID列表进行筛选
138   - update(new LambdaUpdateWrapper<IotOtaUpgradeRecordDO>()
139   - .set(IotOtaUpgradeRecordDO::getStatus, status)
140   - .in(IotOtaUpgradeRecordDO::getId, ids)
141   - );
142   - }
143   -
144   - // TODO @li:参考上面的建议,调整下这个方法
145   - /**
146   - * 根据任务ID查询升级记录列表
147   - * <p>
148   - * 该函数通过任务ID查询符合条件的升级记录,并返回查询结果列表。
149   - *
150   - * @param taskId 任务ID,用于筛选升级记录
151   - * @return 返回符合条件的升级记录列表,若未找到则返回空列表
152   - */
153   - default List<IotOtaUpgradeRecordDO> selectUpgradeRecordListByTaskId(Long taskId) {
154   - // 使用LambdaQueryWrapperX构建查询条件,根据任务ID查询符合条件的升级记录
155   - return selectList(new LambdaQueryWrapperX<IotOtaUpgradeRecordDO>()
156   - .eq(IotOtaUpgradeRecordDO::getTaskId, taskId));
157   - }
158   -
159 111 }
... ...
yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/dal/mysql/ota/IotOtaUpgradeTaskMapper.java
... ... @@ -4,7 +4,7 @@ import cn.iocoder.yudao.framework.common.pojo.PageResult;
4 4 import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
5 5 import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
6 6 import cn.iocoder.yudao.module.iot.controller.admin.ota.vo.upgrade.task.IotOtaUpgradeTaskPageReqVO;
7   -import cn.iocoder.yudao.module.iot.dal.dataobject.ota.IotOtaUpgradeTaskDO;
  7 +import cn.iocoder.yudao.module.iot.dal.dataobject.ota.IotOtaTaskDO;
8 8 import org.apache.ibatis.annotations.Mapper;
9 9  
10 10 import java.util.List;
... ... @@ -15,7 +15,7 @@ import java.util.List;
15 15 * @author Shelly
16 16 */
17 17 @Mapper
18   -public interface IotOtaUpgradeTaskMapper extends BaseMapperX<IotOtaUpgradeTaskDO> {
  18 +public interface IotOtaUpgradeTaskMapper extends BaseMapperX<IotOtaTaskDO> {
19 19  
20 20 /**
21 21 * 根据固件ID和任务名称查询升级任务列表。
... ... @@ -24,10 +24,10 @@ public interface IotOtaUpgradeTaskMapper extends BaseMapperX&lt;IotOtaUpgradeTaskDO
24 24 * @param name 任务名称,用于筛选升级任务
25 25 * @return 符合条件的升级任务列表
26 26 */
27   - default List<IotOtaUpgradeTaskDO> selectByFirmwareIdAndName(Long firmwareId, String name) {
28   - return selectList(new LambdaQueryWrapperX<IotOtaUpgradeTaskDO>()
29   - .eqIfPresent(IotOtaUpgradeTaskDO::getFirmwareId, firmwareId)
30   - .eqIfPresent(IotOtaUpgradeTaskDO::getName, name));
  27 + default List<IotOtaTaskDO> selectByFirmwareIdAndName(Long firmwareId, String name) {
  28 + return selectList(new LambdaQueryWrapperX<IotOtaTaskDO>()
  29 + .eqIfPresent(IotOtaTaskDO::getFirmwareId, firmwareId)
  30 + .eqIfPresent(IotOtaTaskDO::getName, name));
31 31 }
32 32  
33 33 /**
... ... @@ -36,10 +36,10 @@ public interface IotOtaUpgradeTaskMapper extends BaseMapperX&lt;IotOtaUpgradeTaskDO
36 36 * @param pageReqVO 分页查询请求对象,包含分页参数和筛选条件
37 37 * @return 分页结果,包含符合条件的升级任务列表
38 38 */
39   - default PageResult<IotOtaUpgradeTaskDO> selectUpgradeTaskPage(IotOtaUpgradeTaskPageReqVO pageReqVO) {
40   - return selectPage(pageReqVO, new LambdaQueryWrapperX<IotOtaUpgradeTaskDO>()
41   - .eqIfPresent(IotOtaUpgradeTaskDO::getFirmwareId, pageReqVO.getFirmwareId())
42   - .likeIfPresent(IotOtaUpgradeTaskDO::getName, pageReqVO.getName()));
  39 + default PageResult<IotOtaTaskDO> selectUpgradeTaskPage(IotOtaUpgradeTaskPageReqVO pageReqVO) {
  40 + return selectPage(pageReqVO, new LambdaQueryWrapperX<IotOtaTaskDO>()
  41 + .eqIfPresent(IotOtaTaskDO::getFirmwareId, pageReqVO.getFirmwareId())
  42 + .likeIfPresent(IotOtaTaskDO::getName, pageReqVO.getName()));
43 43 }
44 44  
45 45 /**
... ... @@ -50,8 +50,8 @@ public interface IotOtaUpgradeTaskMapper extends BaseMapperX&lt;IotOtaUpgradeTaskDO
50 50 * @param status 任务状态,用于筛选升级任务的状态值
51 51 * @return 返回符合条件的升级任务列表,列表中的每个元素为 IotOtaUpgradeTaskDO 对象
52 52 */
53   - default List<IotOtaUpgradeTaskDO> selectUpgradeTaskByState(Integer status) {
54   - return selectList(IotOtaUpgradeTaskDO::getStatus, status);
  53 + default List<IotOtaTaskDO> selectUpgradeTaskByState(Integer status) {
  54 + return selectList(IotOtaTaskDO::getStatus, status);
55 55 }
56 56  
57 57 }
... ...
yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/enums/ota/IotOtaUpgradeTaskScopeEnum.java renamed to yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/enums/ota/IotOtaTaskDeviceScopeEnum.java
... ... @@ -7,18 +7,19 @@ import lombok.RequiredArgsConstructor;
7 7 import java.util.Arrays;
8 8  
9 9 /**
10   - * IoT OTA 升级任务的范围枚举
  10 + * IoT OTA 升级任务的设备范围枚举
11 11 *
12 12 * @author haohao
13 13 */
14 14 @RequiredArgsConstructor
15 15 @Getter
16   -public enum IotOtaUpgradeTaskScopeEnum implements ArrayValuable<Integer> {
  16 +public enum IotOtaTaskDeviceScopeEnum implements ArrayValuable<Integer> {
17 17  
18 18 ALL(1), // 全部设备:只包括当前产品下的设备,不包括未来创建的设备
19 19 SELECT(2); // 指定设备
20 20  
21   - public static final Integer[] ARRAYS = Arrays.stream(values()).map(IotOtaUpgradeTaskScopeEnum::getScope).toArray(Integer[]::new);
  21 + public static final Integer[] ARRAYS = Arrays.stream(values())
  22 + .map(IotOtaTaskDeviceScopeEnum::getScope).toArray(Integer[]::new);
22 23  
23 24 /**
24 25 * 范围
... ...
yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/enums/ota/IotOtaUpgradeRecordStatusEnum.java renamed to yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/enums/ota/IotOtaTaskRecordStatusEnum.java
... ... @@ -8,25 +8,26 @@ import lombok.RequiredArgsConstructor;
8 8 import java.util.Arrays;
9 9  
10 10 /**
11   - * IoT OTA 升级记录的范围枚举
  11 + * IoT OTA 升级任务记录的状态枚举
12 12 *
13   - * @author haohao
  13 + * @author 芋道源码
14 14 */
15 15 @RequiredArgsConstructor
16 16 @Getter
17   -public enum IotOtaUpgradeRecordStatusEnum implements ArrayValuable<Integer> {
  17 +public enum IotOtaTaskRecordStatusEnum implements ArrayValuable<Integer> {
18 18  
19 19 PENDING(0), // 待推送
20 20 PUSHED(10), // 已推送
21 21 UPGRADING(20), // 升级中
22 22 SUCCESS(30), // 升级成功
23 23 FAILURE(40), // 升级失败
24   - CANCELED(50),; // 已取消
  24 + CANCELED(50),; // 升级取消
25 25  
26   - public static final Integer[] ARRAYS = Arrays.stream(values()).map(IotOtaUpgradeRecordStatusEnum::getStatus).toArray(Integer[]::new);
  26 + public static final Integer[] ARRAYS = Arrays.stream(values())
  27 + .map(IotOtaTaskRecordStatusEnum::getStatus).toArray(Integer[]::new);
27 28  
28 29 /**
29   - * 范围
  30 + * 状态
30 31 */
31 32 private final Integer status;
32 33  
... ...
yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/enums/ota/IotOtaUpgradeTaskStatusEnum.java renamed to yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/enums/ota/IotOtaTaskStatusEnum.java
... ... @@ -7,23 +7,23 @@ import lombok.RequiredArgsConstructor;
7 7 import java.util.Arrays;
8 8  
9 9 /**
10   - * IoT OTA 升级任务的范围枚举
  10 + * IoT OTA 升级任务的状态
11 11 *
12   - * @author haohao
  12 + * @author 芋道源码
13 13 */
14 14 @RequiredArgsConstructor
15 15 @Getter
16   -public enum IotOtaUpgradeTaskStatusEnum implements ArrayValuable<Integer> {
  16 +public enum IotOtaTaskStatusEnum implements ArrayValuable<Integer> {
17 17  
18   - IN_PROGRESS(10), // 进行中:升级中
19   - COMPLETED(20), // 已完成:已结束,全部升级完成
20   - INCOMPLETE(21), // 未完成:已结束,部分升级完成
21   - CANCELED(30),; // 已取消:一般是主动取消任务
  18 + IN_PROGRESS(10), // 进行中(升级中)
  19 + COMPLETED(20), // 已完成(包括全部成功、部分成功)
  20 + CANCELED(30),; // 已取消(一般是主动取消任务)
22 21  
23   - public static final Integer[] ARRAYS = Arrays.stream(values()).map(IotOtaUpgradeTaskStatusEnum::getStatus).toArray(Integer[]::new);
  22 + public static final Integer[] ARRAYS = Arrays.stream(values())
  23 + .map(IotOtaTaskStatusEnum::getStatus).toArray(Integer[]::new);
24 24  
25 25 /**
26   - * 范围
  26 + * 状态
27 27 */
28 28 private final Integer status;
29 29  
... ...
yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/service/ota/IotOtaUpgradeRecordService.java
... ... @@ -2,7 +2,7 @@ package cn.iocoder.yudao.module.iot.service.ota;
2 2  
3 3 import cn.iocoder.yudao.framework.common.pojo.PageResult;
4 4 import cn.iocoder.yudao.module.iot.controller.admin.ota.vo.upgrade.record.IotOtaUpgradeRecordPageReqVO;
5   -import cn.iocoder.yudao.module.iot.dal.dataobject.ota.IotOtaUpgradeRecordDO;
  5 +import cn.iocoder.yudao.module.iot.dal.dataobject.ota.IotOtaTaskRecordDO;
6 6 import jakarta.validation.Valid;
7 7  
8 8 import java.util.List;
... ... @@ -40,19 +40,12 @@ public interface IotOtaUpgradeRecordService {
40 40 Map<Integer, Long> getOtaUpgradeRecordStatistics(Long firmwareId);
41 41  
42 42 /**
43   - * 重试指定的 OTA 升级记录
44   - *
45   - * @param id 需要重试的升级记录的ID。
46   - */
47   - void retryUpgradeRecord(Long id);
48   -
49   - /**
50 43 * 获取指定 ID 的 OTA 升级记录的详细信息。
51 44 *
52 45 * @param id 需要查询的升级记录的ID。
53 46 * @return 返回包含升级记录详细信息的响应对象。
54 47 */
55   - IotOtaUpgradeRecordDO getUpgradeRecord(Long id);
  48 + IotOtaTaskRecordDO getUpgradeRecord(Long id);
56 49  
57 50 /**
58 51 * 分页查询 OTA 升级记录。
... ... @@ -60,7 +53,7 @@ public interface IotOtaUpgradeRecordService {
60 53 * @param pageReqVO 包含分页查询条件的请求对象,必须经过验证。
61 54 * @return 返回包含分页查询结果的响应对象。
62 55 */
63   - PageResult<IotOtaUpgradeRecordDO> getUpgradeRecordPage(@Valid IotOtaUpgradeRecordPageReqVO pageReqVO);
  56 + PageResult<IotOtaTaskRecordDO> getUpgradeRecordPage(@Valid IotOtaUpgradeRecordPageReqVO pageReqVO);
64 57  
65 58 /**
66 59 * 根据任务 ID 取消升级记录
... ... @@ -72,33 +65,4 @@ public interface IotOtaUpgradeRecordService {
72 65 */
73 66 void cancelUpgradeRecordByTaskId(Long taskId);
74 67  
75   - // TODO @li:不要的方法,可以删除下哈。
76   - /**
77   - * 根据升级状态获取升级记录列表
78   - *
79   - * @param state 升级状态,用于筛选符合条件的升级记录
80   - * @return 返回符合指定状态的升级记录列表,列表中的元素为 {@link IotOtaUpgradeRecordDO} 对象
81   - */
82   - List<IotOtaUpgradeRecordDO> getUpgradeRecordListByState(Integer state);
83   -
84   - /**
85   - * 更新升级记录的状态。
86   - * <p>
87   - * 该函数用于批量更新指定升级记录的状态。通过传入的ID列表和状态值,将对应的升级记录的状态更新为指定的值。
88   - *
89   - * @param ids 需要更新状态的升级记录的ID列表。列表中的每个元素代表一个升级记录的ID。
90   - * @param status 要更新的状态值。该值应为有效的状态标识符,通常为整数类型。
91   - */
92   - void updateUpgradeRecordStatus(List<Long> ids, Integer status);
93   -
94   - /**
95   - * 根据任务ID获取升级记录列表
96   - * <p>
97   - * 该函数通过给定的任务ID,查询并返回与该任务相关的所有升级记录。
98   - *
99   - * @param taskId 任务ID,用于指定需要查询的任务
100   - * @return 返回一个包含升级记录的列表,列表中的每个元素为IotOtaUpgradeRecordDO对象
101   - */
102   - List<IotOtaUpgradeRecordDO> getUpgradeRecordListByTaskId(Long taskId);
103   -
104 68 }
... ...
yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/service/ota/IotOtaUpgradeRecordServiceImpl.java
... ... @@ -6,14 +6,13 @@ import cn.iocoder.yudao.framework.common.util.object.ObjectUtils;
6 6 import cn.iocoder.yudao.module.iot.controller.admin.ota.vo.upgrade.record.IotOtaUpgradeRecordPageReqVO;
7 7 import cn.iocoder.yudao.module.iot.dal.dataobject.device.IotDeviceDO;
8 8 import cn.iocoder.yudao.module.iot.dal.dataobject.ota.IotOtaFirmwareDO;
9   -import cn.iocoder.yudao.module.iot.dal.dataobject.ota.IotOtaUpgradeRecordDO;
10   -import cn.iocoder.yudao.module.iot.dal.dataobject.ota.IotOtaUpgradeTaskDO;
  9 +import cn.iocoder.yudao.module.iot.dal.dataobject.ota.IotOtaTaskRecordDO;
  10 +import cn.iocoder.yudao.module.iot.dal.dataobject.ota.IotOtaTaskDO;
11 11 import cn.iocoder.yudao.module.iot.dal.mysql.ota.IotOtaUpgradeRecordMapper;
12   -import cn.iocoder.yudao.module.iot.enums.ota.IotOtaUpgradeRecordStatusEnum;
  12 +import cn.iocoder.yudao.module.iot.enums.ota.IotOtaTaskRecordStatusEnum;
13 13 import cn.iocoder.yudao.module.iot.service.device.IotDeviceService;
14 14 import jakarta.annotation.Resource;
15 15 import lombok.extern.slf4j.Slf4j;
16   -import org.springframework.context.annotation.Lazy;
17 16 import org.springframework.stereotype.Service;
18 17 import org.springframework.transaction.annotation.Transactional;
19 18 import org.springframework.validation.annotation.Validated;
... ... @@ -47,18 +46,18 @@ public class IotOtaUpgradeRecordServiceImpl implements IotOtaUpgradeRecordServic
47 46 deviceIds.forEach(deviceId -> validateUpgradeRecordDuplicate(firmwareId, upgradeTaskId, String.valueOf(deviceId)));
48 47  
49 48 // 2. 初始化OTA升级记录列表信息
50   - IotOtaUpgradeTaskDO upgradeTask = upgradeTaskService.getUpgradeTask(upgradeTaskId);
  49 + IotOtaTaskDO upgradeTask = upgradeTaskService.getUpgradeTask(upgradeTaskId);
51 50 IotOtaFirmwareDO firmware = firmwareService.getOtaFirmware(firmwareId);
52 51 List<IotDeviceDO> deviceList = deviceService.getDeviceListByIdList(deviceIds);
53   - List<IotOtaUpgradeRecordDO> upgradeRecordList = deviceList.stream().map(device -> {
54   - IotOtaUpgradeRecordDO upgradeRecord = new IotOtaUpgradeRecordDO();
  52 + List<IotOtaTaskRecordDO> upgradeRecordList = deviceList.stream().map(device -> {
  53 + IotOtaTaskRecordDO upgradeRecord = new IotOtaTaskRecordDO();
55 54 upgradeRecord.setFirmwareId(firmware.getId());
56 55 upgradeRecord.setTaskId(upgradeTask.getId());
57 56 upgradeRecord.setProductKey(device.getProductKey());
58 57 upgradeRecord.setDeviceName(device.getDeviceName());
59 58 upgradeRecord.setDeviceId(Convert.toStr(device.getId()));
60 59 upgradeRecord.setFromFirmwareId(Convert.toLong(device.getFirmwareId()));
61   - upgradeRecord.setStatus(IotOtaUpgradeRecordStatusEnum.PENDING.getStatus());
  60 + upgradeRecord.setStatus(IotOtaTaskRecordStatusEnum.PENDING.getStatus());
62 61 upgradeRecord.setProgress(0);
63 62 return upgradeRecord;
64 63 }).toList();
... ... @@ -88,14 +87,6 @@ public class IotOtaUpgradeRecordServiceImpl implements IotOtaUpgradeRecordServic
88 87 entry -> Convert.toLong(entry.getValue())));
89 88 }
90 89  
91   - // TODO @li:1)方法注释,简单写;2)父类写了注释,子类就不用写了。。。
92   - /**
93   - * 获取指定固件ID的OTA升级记录统计信息。
94   - * 该方法通过查询数据库,统计不同状态的OTA升级记录数量,并返回一个包含各状态数量的映射。
95   - *
96   - * @param firmwareId 固件ID,用于指定需要统计的固件升级记录。
97   - * @return 返回一个Map,其中键为升级记录状态(如PENDING、PUSHED等),值为对应状态的记录数量。
98   - */
99 90 @Override
100 91 @Transactional
101 92 public Map<Integer, Long> getOtaUpgradeRecordStatistics(Long firmwareId) {
... ... @@ -109,26 +100,12 @@ public class IotOtaUpgradeRecordServiceImpl implements IotOtaUpgradeRecordServic
109 100 }
110 101  
111 102 @Override
112   - public void retryUpgradeRecord(Long id) {
113   - // 1.1 校验升级记录信息是否存在
114   - IotOtaUpgradeRecordDO upgradeRecord = validateUpgradeRecordExists(id);
115   - // 1.2 校验升级记录是否可以重新升级
116   - validateUpgradeRecordCanRetry(upgradeRecord);
117   -
118   - // 2. 将一些数据重置,这样定时任务轮询就可以重启任务
119   - // TODO @li:更新的时候,wherestatus;
120   - upgradeRecordMapper.updateById(new IotOtaUpgradeRecordDO()
121   - .setId(upgradeRecord.getId()).setProgress(0)
122   - .setStatus(IotOtaUpgradeRecordStatusEnum.PENDING.getStatus()));
123   - }
124   -
125   - @Override
126   - public IotOtaUpgradeRecordDO getUpgradeRecord(Long id) {
  103 + public IotOtaTaskRecordDO getUpgradeRecord(Long id) {
127 104 return upgradeRecordMapper.selectById(id);
128 105 }
129 106  
130 107 @Override
131   - public PageResult<IotOtaUpgradeRecordDO> getUpgradeRecordPage(IotOtaUpgradeRecordPageReqVO pageReqVO) {
  108 + public PageResult<IotOtaTaskRecordDO> getUpgradeRecordPage(IotOtaUpgradeRecordPageReqVO pageReqVO) {
132 109 return upgradeRecordMapper.selectUpgradeRecordPage(pageReqVO);
133 110 }
134 111  
... ... @@ -136,23 +113,8 @@ public class IotOtaUpgradeRecordServiceImpl implements IotOtaUpgradeRecordServic
136 113 public void cancelUpgradeRecordByTaskId(Long taskId) {
137 114 // 暂定只有待推送的升级记录可以取消 TODO @芋艿:可以看看阿里云,哪些可以取消
138 115 upgradeRecordMapper.updateUpgradeRecordStatusByTaskIdAndStatus(
139   - IotOtaUpgradeRecordStatusEnum.CANCELED.getStatus(), taskId,
140   - IotOtaUpgradeRecordStatusEnum.PENDING.getStatus());
141   - }
142   -
143   - @Override
144   - public List<IotOtaUpgradeRecordDO> getUpgradeRecordListByState(Integer state) {
145   - return upgradeRecordMapper.selectUpgradeRecordListByState(state);
146   - }
147   -
148   - @Override
149   - public void updateUpgradeRecordStatus(List<Long> ids, Integer status) {
150   - upgradeRecordMapper.updateUpgradeRecordStatus(ids, status);
151   - }
152   -
153   - @Override
154   - public List<IotOtaUpgradeRecordDO> getUpgradeRecordListByTaskId(Long taskId) {
155   - return upgradeRecordMapper.selectUpgradeRecordListByTaskId(taskId);
  116 + IotOtaTaskRecordStatusEnum.CANCELED.getStatus(), taskId,
  117 + IotOtaTaskRecordStatusEnum.PENDING.getStatus());
156 118 }
157 119  
158 120 /**
... ... @@ -163,9 +125,9 @@ public class IotOtaUpgradeRecordServiceImpl implements IotOtaUpgradeRecordServic
163 125 * @param id 升级记录的唯一标识符,类型为Long。
164 126 * @throws cn.iocoder.yudao.framework.common.exception.ServiceException,则抛出异常,异常类型为OTA_UPGRADE_RECORD_NOT_EXISTS。
165 127 */
166   - private IotOtaUpgradeRecordDO validateUpgradeRecordExists(Long id) {
  128 + private IotOtaTaskRecordDO validateUpgradeRecordExists(Long id) {
167 129 // 根据ID查询升级记录
168   - IotOtaUpgradeRecordDO upgradeRecord = upgradeRecordMapper.selectById(id);
  130 + IotOtaTaskRecordDO upgradeRecord = upgradeRecordMapper.selectById(id);
169 131 // 如果查询结果为空,抛出异常
170 132 if (upgradeRecord == null) {
171 133 throw exception(OTA_UPGRADE_RECORD_NOT_EXISTS);
... ... @@ -185,11 +147,11 @@ public class IotOtaUpgradeRecordServiceImpl implements IotOtaUpgradeRecordServic
185 147 * @param deviceId 设备ID,用于标识特定的设备
186 148 */
187 149 private void validateUpgradeRecordDuplicate(Long firmwareId, Long taskId, String deviceId) {
188   - IotOtaUpgradeRecordDO upgradeRecord = upgradeRecordMapper.selectByConditions(firmwareId, taskId, deviceId);
  150 + IotOtaTaskRecordDO upgradeRecord = upgradeRecordMapper.selectByConditions(firmwareId, taskId, deviceId);
189 151 if (upgradeRecord == null) {
190 152 return;
191 153 }
192   - if (!Objects.equals(upgradeRecord.getStatus(), IotOtaUpgradeRecordStatusEnum.CANCELED.getStatus())) {
  154 + if (!Objects.equals(upgradeRecord.getStatus(), IotOtaTaskRecordStatusEnum.CANCELED.getStatus())) {
193 155 throw exception(OTA_UPGRADE_RECORD_DUPLICATE);
194 156 }
195 157 }
... ... @@ -205,11 +167,11 @@ public class IotOtaUpgradeRecordServiceImpl implements IotOtaUpgradeRecordServic
205 167 * @throws cn.iocoder.yudao.framework.common.exception.ServiceException,则抛出 OTA_UPGRADE_RECORD_CANNOT_RETRY 异常
206 168 */
207 169 // TODO @li:这种一次性的方法(不复用的),其实一步一定要抽成小方法;
208   - private void validateUpgradeRecordCanRetry(IotOtaUpgradeRecordDO upgradeRecord) {
  170 + private void validateUpgradeRecordCanRetry(IotOtaTaskRecordDO upgradeRecord) {
209 171 if (ObjectUtils.equalsAny(upgradeRecord.getStatus(),
210   - IotOtaUpgradeRecordStatusEnum.PENDING.getStatus(),
211   - IotOtaUpgradeRecordStatusEnum.PUSHED.getStatus(),
212   - IotOtaUpgradeRecordStatusEnum.UPGRADING.getStatus())) {
  172 + IotOtaTaskRecordStatusEnum.PENDING.getStatus(),
  173 + IotOtaTaskRecordStatusEnum.PUSHED.getStatus(),
  174 + IotOtaTaskRecordStatusEnum.UPGRADING.getStatus())) {
213 175 throw exception(OTA_UPGRADE_RECORD_CANNOT_RETRY);
214 176 }
215 177 }
... ...
yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/service/ota/IotOtaUpgradeTaskService.java
... ... @@ -3,7 +3,7 @@ package cn.iocoder.yudao.module.iot.service.ota;
3 3 import cn.iocoder.yudao.framework.common.pojo.PageResult;
4 4 import cn.iocoder.yudao.module.iot.controller.admin.ota.vo.upgrade.task.IotOtaUpgradeTaskPageReqVO;
5 5 import cn.iocoder.yudao.module.iot.controller.admin.ota.vo.upgrade.task.IotOtaUpgradeTaskSaveReqVO;
6   -import cn.iocoder.yudao.module.iot.dal.dataobject.ota.IotOtaUpgradeTaskDO;
  6 +import cn.iocoder.yudao.module.iot.dal.dataobject.ota.IotOtaTaskDO;
7 7 import jakarta.validation.Valid;
8 8  
9 9 import java.util.List;
... ... @@ -36,7 +36,7 @@ public interface IotOtaUpgradeTaskService {
36 36 * @param id OTA升级任务的ID
37 37 * @return OTA升级任务的详细信息对象
38 38 */
39   - IotOtaUpgradeTaskDO getUpgradeTask(Long id);
  39 + IotOtaTaskDO getUpgradeTask(Long id);
40 40  
41 41 /**
42 42 * 分页查询OTA升级任务
... ... @@ -44,7 +44,7 @@ public interface IotOtaUpgradeTaskService {
44 44 * @param pageReqVO OTA升级任务的分页查询请求对象,包含查询条件和分页信息
45 45 * @return 分页查询结果,包含OTA升级任务列表和总记录数
46 46 */
47   - PageResult<IotOtaUpgradeTaskDO> getUpgradeTaskPage(@Valid IotOtaUpgradeTaskPageReqVO pageReqVO);
  47 + PageResult<IotOtaTaskDO> getUpgradeTaskPage(@Valid IotOtaUpgradeTaskPageReqVO pageReqVO);
48 48  
49 49 /**
50 50 * 根据任务状态获取升级任务列表
... ... @@ -52,7 +52,7 @@ public interface IotOtaUpgradeTaskService {
52 52 * @param state 任务状态,用于筛选符合条件的升级任务
53 53 * @return 返回符合指定状态的升级任务列表,列表中的元素为 IotOtaUpgradeTaskDO 对象
54 54 */
55   - List<IotOtaUpgradeTaskDO> getUpgradeTaskByState(Integer state);
  55 + List<IotOtaTaskDO> getUpgradeTaskByState(Integer state);
56 56  
57 57 /**
58 58 * 更新升级任务的状态。
... ...
yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/service/ota/IotOtaUpgradeTaskServiceImpl.java
... ... @@ -8,10 +8,10 @@ import cn.iocoder.yudao.module.iot.controller.admin.ota.vo.upgrade.task.IotOtaUp
8 8 import cn.iocoder.yudao.module.iot.controller.admin.ota.vo.upgrade.task.IotOtaUpgradeTaskSaveReqVO;
9 9 import cn.iocoder.yudao.module.iot.dal.dataobject.device.IotDeviceDO;
10 10 import cn.iocoder.yudao.module.iot.dal.dataobject.ota.IotOtaFirmwareDO;
11   -import cn.iocoder.yudao.module.iot.dal.dataobject.ota.IotOtaUpgradeTaskDO;
  11 +import cn.iocoder.yudao.module.iot.dal.dataobject.ota.IotOtaTaskDO;
12 12 import cn.iocoder.yudao.module.iot.dal.mysql.ota.IotOtaUpgradeTaskMapper;
13   -import cn.iocoder.yudao.module.iot.enums.ota.IotOtaUpgradeTaskScopeEnum;
14   -import cn.iocoder.yudao.module.iot.enums.ota.IotOtaUpgradeTaskStatusEnum;
  13 +import cn.iocoder.yudao.module.iot.enums.ota.IotOtaTaskDeviceScopeEnum;
  14 +import cn.iocoder.yudao.module.iot.enums.ota.IotOtaTaskStatusEnum;
15 15 import cn.iocoder.yudao.module.iot.service.device.IotDeviceService;
16 16 import jakarta.annotation.Resource;
17 17 import lombok.extern.slf4j.Slf4j;
... ... @@ -61,7 +61,7 @@ public class IotOtaUpgradeTaskServiceImpl implements IotOtaUpgradeTaskService {
61 61 validateScopeAndDevice(createReqVO.getScope(), createReqVO.getDeviceIds(), firmware.getProductId());
62 62  
63 63 // 2. 保存 OTA 升级任务信息到数据库
64   - IotOtaUpgradeTaskDO upgradeTask = initOtaUpgradeTask(createReqVO, firmware.getProductId());
  64 + IotOtaTaskDO upgradeTask = initOtaUpgradeTask(createReqVO, firmware.getProductId());
65 65 upgradeTaskMapper.insert(upgradeTask);
66 66  
67 67 // 3. 生成设备升级记录信息并存储,等待定时任务轮询
... ... @@ -73,16 +73,16 @@ public class IotOtaUpgradeTaskServiceImpl implements IotOtaUpgradeTaskService {
73 73 @Transactional(rollbackFor = Exception.class)
74 74 public void cancelUpgradeTask(Long id) {
75 75 // 1.1 校验升级任务是否存在
76   - IotOtaUpgradeTaskDO upgradeTask = validateUpgradeTaskExists(id);
  76 + IotOtaTaskDO upgradeTask = validateUpgradeTaskExists(id);
77 77 // 1.2 校验升级任务是否可以取消
78 78 // TODO @li:ObjUtil notequals
79   - if (!Objects.equals(upgradeTask.getStatus(), IotOtaUpgradeTaskStatusEnum.IN_PROGRESS.getStatus())) {
  79 + if (!Objects.equals(upgradeTask.getStatus(), IotOtaTaskStatusEnum.IN_PROGRESS.getStatus())) {
80 80 throw exception(OTA_UPGRADE_TASK_CANNOT_CANCEL);
81 81 }
82 82  
83 83 // 2. 更新 OTA 升级任务状态为已取消
84   - upgradeTaskMapper.updateById(IotOtaUpgradeTaskDO.builder()
85   - .id(id).status(IotOtaUpgradeTaskStatusEnum.CANCELED.getStatus())
  84 + upgradeTaskMapper.updateById(IotOtaTaskDO.builder()
  85 + .id(id).status(IotOtaTaskStatusEnum.CANCELED.getStatus())
86 86 .build());
87 87  
88 88 // 3. 更新 OTA 升级记录状态为已取消
... ... @@ -90,30 +90,30 @@ public class IotOtaUpgradeTaskServiceImpl implements IotOtaUpgradeTaskService {
90 90 }
91 91  
92 92 @Override
93   - public IotOtaUpgradeTaskDO getUpgradeTask(Long id) {
  93 + public IotOtaTaskDO getUpgradeTask(Long id) {
94 94 return upgradeTaskMapper.selectById(id);
95 95 }
96 96  
97 97 @Override
98   - public PageResult<IotOtaUpgradeTaskDO> getUpgradeTaskPage(IotOtaUpgradeTaskPageReqVO pageReqVO) {
  98 + public PageResult<IotOtaTaskDO> getUpgradeTaskPage(IotOtaUpgradeTaskPageReqVO pageReqVO) {
99 99 return upgradeTaskMapper.selectUpgradeTaskPage(pageReqVO);
100 100 }
101 101  
102 102 @Override
103   - public List<IotOtaUpgradeTaskDO> getUpgradeTaskByState(Integer state) {
  103 + public List<IotOtaTaskDO> getUpgradeTaskByState(Integer state) {
104 104 return upgradeTaskMapper.selectUpgradeTaskByState(state);
105 105 }
106 106  
107 107 @Override
108 108 public void updateUpgradeTaskStatus(Long id, Integer status) {
109   - upgradeTaskMapper.updateById(IotOtaUpgradeTaskDO.builder().id(id).status(status).build());
  109 + upgradeTaskMapper.updateById(IotOtaTaskDO.builder().id(id).status(status).build());
110 110 }
111 111  
112 112 /**
113 113 * 校验固件升级任务是否重复
114 114 */
115 115 private void validateFirmwareTaskDuplicate(Long firmwareId, String taskName) {
116   - List<IotOtaUpgradeTaskDO> upgradeTaskList = upgradeTaskMapper.selectByFirmwareIdAndName(firmwareId, taskName);
  116 + List<IotOtaTaskDO> upgradeTaskList = upgradeTaskMapper.selectByFirmwareIdAndName(firmwareId, taskName);
117 117 if (CollUtil.isNotEmpty(upgradeTaskList)) {
118 118 throw exception(OTA_UPGRADE_TASK_NAME_DUPLICATE);
119 119 }
... ... @@ -128,14 +128,14 @@ public class IotOtaUpgradeTaskServiceImpl implements IotOtaUpgradeTaskService {
128 128 * @throws cn.iocoder.yudao.framework.common.exception.ServiceException,抛出相应的异常
129 129 */
130 130 private void validateScopeAndDevice(Integer scope, List<Long> deviceIds, Long productId) {
131   - if (Objects.equals(scope, IotOtaUpgradeTaskScopeEnum.SELECT.getScope())) {
  131 + if (Objects.equals(scope, IotOtaTaskDeviceScopeEnum.SELECT.getScope())) {
132 132 if (CollUtil.isEmpty(deviceIds)) {
133 133 throw exception(OTA_UPGRADE_TASK_DEVICE_IDS_EMPTY);
134 134 }
135 135 return;
136 136 }
137   -
138   - if (Objects.equals(scope, IotOtaUpgradeTaskScopeEnum.ALL.getScope())) {
  137 +
  138 + if (Objects.equals(scope, IotOtaTaskDeviceScopeEnum.ALL.getScope())) {
139 139 List<IotDeviceDO> deviceList = deviceService.getDeviceListByProductId(productId);
140 140 if (CollUtil.isEmpty(deviceList)) {
141 141 throw exception(OTA_UPGRADE_TASK_DEVICE_LIST_EMPTY);
... ... @@ -146,8 +146,8 @@ public class IotOtaUpgradeTaskServiceImpl implements IotOtaUpgradeTaskService {
146 146 /**
147 147 * 验证升级任务是否存在
148 148 */
149   - private IotOtaUpgradeTaskDO validateUpgradeTaskExists(Long id) {
150   - IotOtaUpgradeTaskDO upgradeTask = upgradeTaskMapper.selectById(id);
  149 + private IotOtaTaskDO validateUpgradeTaskExists(Long id) {
  150 + IotOtaTaskDO upgradeTask = upgradeTaskMapper.selectById(id);
151 151 if (Objects.isNull(upgradeTask)) {
152 152 throw exception(OTA_UPGRADE_TASK_NOT_EXISTS);
153 153 }
... ... @@ -157,14 +157,14 @@ public class IotOtaUpgradeTaskServiceImpl implements IotOtaUpgradeTaskService {
157 157 /**
158 158 * 初始化升级任务
159 159 */
160   - private IotOtaUpgradeTaskDO initOtaUpgradeTask(IotOtaUpgradeTaskSaveReqVO createReqVO, Long productId) {
161   - IotOtaUpgradeTaskDO upgradeTask = BeanUtils.toBean(createReqVO, IotOtaUpgradeTaskDO.class);
162   - upgradeTask.setDeviceCount(Convert.toLong(CollUtil.size(createReqVO.getDeviceIds())))
163   - .setStatus(IotOtaUpgradeTaskStatusEnum.IN_PROGRESS.getStatus());
164   -
165   - if (Objects.equals(createReqVO.getScope(), IotOtaUpgradeTaskScopeEnum.ALL.getScope())) {
  160 + private IotOtaTaskDO initOtaUpgradeTask(IotOtaUpgradeTaskSaveReqVO createReqVO, Long productId) {
  161 + IotOtaTaskDO upgradeTask = BeanUtils.toBean(createReqVO, IotOtaTaskDO.class);
  162 + upgradeTask.setDeviceTotalCount(Convert.toLong(CollUtil.size(createReqVO.getDeviceIds())))
  163 + .setStatus(IotOtaTaskStatusEnum.IN_PROGRESS.getStatus());
  164 +
  165 + if (Objects.equals(createReqVO.getScope(), IotOtaTaskDeviceScopeEnum.ALL.getScope())) {
166 166 List<IotDeviceDO> deviceList = deviceService.getDeviceListByProductId(productId);
167   - upgradeTask.setDeviceCount((long) deviceList.size());
  167 + upgradeTask.setDeviceTotalCount((long) deviceList.size());
168 168 upgradeTask.setDeviceIds(
169 169 deviceList.stream().map(IotDeviceDO::getId).collect(Collectors.toList()));
170 170 }
... ...