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