Commit 4749d93d0e4b12dbfe772d9fa97b3c3ce442b061
1 parent
5399e5bb
reactor:【IoT 物联网】调整 ota 的 task 实体定义(暂时未处理 controller)x2
Showing
14 changed files
with
205 additions
and
348 deletions
yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/controller/admin/ota/IotOtaUpgradeTaskController.java renamed to yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/controller/admin/ota/IotOtaTaskController.java
| @@ -3,11 +3,11 @@ package cn.iocoder.yudao.module.iot.controller.admin.ota; | @@ -3,11 +3,11 @@ package cn.iocoder.yudao.module.iot.controller.admin.ota; | ||
| 3 | import cn.iocoder.yudao.framework.common.pojo.CommonResult; | 3 | import cn.iocoder.yudao.framework.common.pojo.CommonResult; |
| 4 | import cn.iocoder.yudao.framework.common.pojo.PageResult; | 4 | 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.task.IotOtaUpgradeTaskPageReqVO; | ||
| 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; | 6 | +import cn.iocoder.yudao.module.iot.controller.admin.ota.vo.task.IotOtaTaskPageReqVO; |
| 7 | +import cn.iocoder.yudao.module.iot.controller.admin.ota.vo.task.IotOtaTaskRespVO; | ||
| 8 | +import cn.iocoder.yudao.module.iot.controller.admin.ota.vo.task.IotOtaTaskCreateReqVO; | ||
| 9 | import cn.iocoder.yudao.module.iot.dal.dataobject.ota.IotOtaTaskDO; | 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.IotOtaTaskService; |
| 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; |
| 13 | import io.swagger.v3.oas.annotations.tags.Tag; | 13 | import io.swagger.v3.oas.annotations.tags.Tag; |
| @@ -21,44 +21,44 @@ import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; | @@ -21,44 +21,44 @@ 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-upgrade-task") | 24 | +@RequestMapping("/iot/ota/task") |
| 25 | @Validated | 25 | @Validated |
| 26 | -public class IotOtaUpgradeTaskController { | 26 | +public class IotOtaTaskController { |
| 27 | 27 | ||
| 28 | @Resource | 28 | @Resource |
| 29 | - private IotOtaUpgradeTaskService upgradeTaskService; | 29 | + private IotOtaTaskService otaTaskService; |
| 30 | 30 | ||
| 31 | @PostMapping("/create") | 31 | @PostMapping("/create") |
| 32 | - @Operation(summary = "创建升级任务") | ||
| 33 | - @PreAuthorize(value = "@ss.hasPermission('iot:ota-upgrade-task:create')") | ||
| 34 | - public CommonResult<Long> createUpgradeTask(@Valid @RequestBody IotOtaUpgradeTaskSaveReqVO createReqVO) { | ||
| 35 | - return success(upgradeTaskService.createUpgradeTask(createReqVO)); | 32 | + @Operation(summary = "创建 OTA 升级任务") |
| 33 | + @PreAuthorize(value = "@ss.hasPermission('iot:ota-task:create')") | ||
| 34 | + public CommonResult<Long> createOtaTask(@Valid @RequestBody IotOtaTaskCreateReqVO createReqVO) { | ||
| 35 | + return success(otaTaskService.createOtaTask(createReqVO)); | ||
| 36 | } | 36 | } |
| 37 | 37 | ||
| 38 | @PostMapping("/cancel") | 38 | @PostMapping("/cancel") |
| 39 | - @Operation(summary = "取消升级任务") | 39 | + @Operation(summary = "取消 OTA 升级任务") |
| 40 | @Parameter(name = "id", description = "升级任务编号", required = true) | 40 | @Parameter(name = "id", description = "升级任务编号", required = true) |
| 41 | - @PreAuthorize(value = "@ss.hasPermission('iot:ota-upgrade-task:cancel')") | ||
| 42 | - public CommonResult<Boolean> cancelUpgradeTask(@RequestParam("id") Long id) { | ||
| 43 | - upgradeTaskService.cancelUpgradeTask(id); | 41 | + @PreAuthorize(value = "@ss.hasPermission('iot:ota-task:cancel')") |
| 42 | + public CommonResult<Boolean> cancelOtaTask(@RequestParam("id") Long id) { | ||
| 43 | + otaTaskService.cancelOtaTask(id); | ||
| 44 | return success(true); | 44 | return success(true); |
| 45 | } | 45 | } |
| 46 | 46 | ||
| 47 | @GetMapping("/page") | 47 | @GetMapping("/page") |
| 48 | - @Operation(summary = "获得升级任务分页") | ||
| 49 | - @PreAuthorize(value = "@ss.hasPermission('iot:ota-upgrade-task:query')") | ||
| 50 | - public CommonResult<PageResult<IotOtaUpgradeTaskRespVO>> getUpgradeTaskPage(@Valid IotOtaUpgradeTaskPageReqVO pageReqVO) { | ||
| 51 | - PageResult<IotOtaTaskDO> pageResult = upgradeTaskService.getUpgradeTaskPage(pageReqVO); | ||
| 52 | - return success(BeanUtils.toBean(pageResult, IotOtaUpgradeTaskRespVO.class)); | 48 | + @Operation(summary = "获得 OTA 升级任务分页") |
| 49 | + @PreAuthorize(value = "@ss.hasPermission('iot:ota-task:query')") | ||
| 50 | + public CommonResult<PageResult<IotOtaTaskRespVO>> getOtaTaskPage(@Valid IotOtaTaskPageReqVO pageReqVO) { | ||
| 51 | + PageResult<IotOtaTaskDO> pageResult = otaTaskService.getOtaTaskPage(pageReqVO); | ||
| 52 | + return success(BeanUtils.toBean(pageResult, IotOtaTaskRespVO.class)); | ||
| 53 | } | 53 | } |
| 54 | 54 | ||
| 55 | @GetMapping("/get") | 55 | @GetMapping("/get") |
| 56 | - @Operation(summary = "获得升级任务") | 56 | + @Operation(summary = "获得 OTA 升级任务") |
| 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')") | ||
| 59 | - public CommonResult<IotOtaUpgradeTaskRespVO> getUpgradeTask(@RequestParam("id") Long id) { | ||
| 60 | - IotOtaTaskDO upgradeTask = upgradeTaskService.getUpgradeTask(id); | ||
| 61 | - return success(BeanUtils.toBean(upgradeTask, IotOtaUpgradeTaskRespVO.class)); | 58 | + @PreAuthorize(value = "@ss.hasPermission('iot:ota-task:query')") |
| 59 | + public CommonResult<IotOtaTaskRespVO> getOtaTask(@RequestParam("id") Long id) { | ||
| 60 | + IotOtaTaskDO upgradeTask = otaTaskService.getOtaTask(id); | ||
| 61 | + return success(BeanUtils.toBean(upgradeTask, IotOtaTaskRespVO.class)); | ||
| 62 | } | 62 | } |
| 63 | 63 | ||
| 64 | } | 64 | } |
yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/controller/admin/ota/IotOtaUpgradeRecordController.java renamed to yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/controller/admin/ota/IotOtaTaskRecordController.java
| @@ -3,10 +3,10 @@ package cn.iocoder.yudao.module.iot.controller.admin.ota; | @@ -3,10 +3,10 @@ package cn.iocoder.yudao.module.iot.controller.admin.ota; | ||
| 3 | import cn.iocoder.yudao.framework.common.pojo.CommonResult; | 3 | import cn.iocoder.yudao.framework.common.pojo.CommonResult; |
| 4 | import cn.iocoder.yudao.framework.common.pojo.PageResult; | 4 | 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; | ||
| 7 | -import cn.iocoder.yudao.module.iot.controller.admin.ota.vo.upgrade.record.IotOtaUpgradeRecordRespVO; | 6 | +import cn.iocoder.yudao.module.iot.controller.admin.ota.vo.task.record.IotOtaTaskRecordPageReqVO; |
| 7 | +import cn.iocoder.yudao.module.iot.controller.admin.ota.vo.task.record.IotOtaTaskRecordRespVO; | ||
| 8 | import cn.iocoder.yudao.module.iot.dal.dataobject.ota.IotOtaTaskRecordDO; | 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.IotOtaTaskRecordService; |
| 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; |
| 12 | import io.swagger.v3.oas.annotations.tags.Tag; | 12 | import io.swagger.v3.oas.annotations.tags.Tag; |
| @@ -20,47 +20,46 @@ import java.util.Map; | @@ -20,47 +20,46 @@ import java.util.Map; | ||
| 20 | 20 | ||
| 21 | import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; | 21 | import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; |
| 22 | 22 | ||
| 23 | -@Tag(name = "管理后台 - IoT OTA 升级记录") | 23 | +@Tag(name = "管理后台 - IoT OTA 升级任务记录") |
| 24 | @RestController | 24 | @RestController |
| 25 | -@RequestMapping("/iot/ota-upgrade-record") | 25 | +@RequestMapping("/iot/ota/task-record") |
| 26 | @Validated | 26 | @Validated |
| 27 | -public class IotOtaUpgradeRecordController { | 27 | +public class IotOtaTaskRecordController { |
| 28 | 28 | ||
| 29 | @Resource | 29 | @Resource |
| 30 | - private IotOtaUpgradeRecordService upgradeRecordService; | 30 | + private IotOtaTaskRecordService otaTaskRecordService; |
| 31 | 31 | ||
| 32 | @GetMapping("/get-statistics") | 32 | @GetMapping("/get-statistics") |
| 33 | @Operation(summary = "固件升级设备统计") | 33 | @Operation(summary = "固件升级设备统计") |
| 34 | - @PreAuthorize("@ss.hasPermission('iot:ota-upgrade-record:query')") | 34 | + @PreAuthorize("@ss.hasPermission('iot:ota-task-record:query')") |
| 35 | @Parameter(name = "firmwareId", description = "固件编号", required = true, example = "1024") | 35 | @Parameter(name = "firmwareId", description = "固件编号", required = true, example = "1024") |
| 36 | - public CommonResult<Map<Integer, Long>> getOtaUpgradeRecordStatistics(@RequestParam(value = "firmwareId") Long firmwareId) { | ||
| 37 | - return success(upgradeRecordService.getOtaUpgradeRecordStatistics(firmwareId)); | 36 | + public CommonResult<Map<Integer, Long>> getOtaTaskRecordStatistics(@RequestParam(value = "firmwareId") Long firmwareId) { |
| 37 | + return success(otaTaskRecordService.getOtaTaskRecordStatistics(firmwareId)); | ||
| 38 | } | 38 | } |
| 39 | 39 | ||
| 40 | @GetMapping("/get-count") | 40 | @GetMapping("/get-count") |
| 41 | @Operation(summary = "获得升级记录分页 tab 数量") | 41 | @Operation(summary = "获得升级记录分页 tab 数量") |
| 42 | - @PreAuthorize("@ss.hasPermission('iot:ota-upgrade-record:query')") | ||
| 43 | - public CommonResult<Map<Integer, Long>> getOtaUpgradeRecordCount( | ||
| 44 | - @Valid IotOtaUpgradeRecordPageReqVO pageReqVO) { | ||
| 45 | - return success(upgradeRecordService.getOtaUpgradeRecordCount(pageReqVO)); | 42 | + @PreAuthorize("@ss.hasPermission('iot:ota-task-record:query')") |
| 43 | + public CommonResult<Map<Integer, Long>> getOtaTaskRecordCount(@Valid IotOtaTaskRecordPageReqVO pageReqVO) { | ||
| 44 | + return success(otaTaskRecordService.getOtaTaskRecordCount(pageReqVO)); | ||
| 46 | } | 45 | } |
| 47 | 46 | ||
| 48 | @GetMapping("/page") | 47 | @GetMapping("/page") |
| 49 | @Operation(summary = "获得升级记录分页") | 48 | @Operation(summary = "获得升级记录分页") |
| 50 | @PreAuthorize("@ss.hasPermission('iot:ota-upgrade-record:query')") | 49 | @PreAuthorize("@ss.hasPermission('iot:ota-upgrade-record:query')") |
| 51 | - public CommonResult<PageResult<IotOtaUpgradeRecordRespVO>> getUpgradeRecordPage( | ||
| 52 | - @Valid IotOtaUpgradeRecordPageReqVO pageReqVO) { | ||
| 53 | - PageResult<IotOtaTaskRecordDO> pageResult = upgradeRecordService.getUpgradeRecordPage(pageReqVO); | ||
| 54 | - return success(BeanUtils.toBean(pageResult, IotOtaUpgradeRecordRespVO.class)); | 50 | + public CommonResult<PageResult<IotOtaTaskRecordRespVO>> getOtaTaskRecordPage( |
| 51 | + @Valid IotOtaTaskRecordPageReqVO pageReqVO) { | ||
| 52 | + PageResult<IotOtaTaskRecordDO> pageResult = otaTaskRecordService.getOtaTaskRecordPage(pageReqVO); | ||
| 53 | + return success(BeanUtils.toBean(pageResult, IotOtaTaskRecordRespVO.class)); | ||
| 55 | } | 54 | } |
| 56 | 55 | ||
| 57 | @GetMapping("/get") | 56 | @GetMapping("/get") |
| 58 | @Operation(summary = "获得升级记录") | 57 | @Operation(summary = "获得升级记录") |
| 59 | @PreAuthorize("@ss.hasPermission('iot:ota-upgrade-record:query')") | 58 | @PreAuthorize("@ss.hasPermission('iot:ota-upgrade-record:query')") |
| 60 | @Parameter(name = "id", description = "升级记录编号", required = true, example = "1024") | 59 | @Parameter(name = "id", description = "升级记录编号", required = true, example = "1024") |
| 61 | - public CommonResult<IotOtaUpgradeRecordRespVO> getUpgradeRecord(@RequestParam("id") Long id) { | ||
| 62 | - IotOtaTaskRecordDO upgradeRecord = upgradeRecordService.getUpgradeRecord(id); | ||
| 63 | - return success(BeanUtils.toBean(upgradeRecord, IotOtaUpgradeRecordRespVO.class)); | 60 | + public CommonResult<IotOtaTaskRecordRespVO> getOtaTaskRecord(@RequestParam("id") Long id) { |
| 61 | + IotOtaTaskRecordDO upgradeRecord = otaTaskRecordService.getOtaTaskRecord(id); | ||
| 62 | + return success(BeanUtils.toBean(upgradeRecord, IotOtaTaskRecordRespVO.class)); | ||
| 64 | } | 63 | } |
| 65 | 64 | ||
| 66 | } | 65 | } |
yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/controller/admin/ota/vo/upgrade/task/IotOtaUpgradeTaskSaveReqVO.java renamed to yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/controller/admin/ota/vo/task/IotOtaTaskCreateReqVO.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.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.enums.ota.IotOtaTaskDeviceScopeEnum; | 4 | import cn.iocoder.yudao.module.iot.enums.ota.IotOtaTaskDeviceScopeEnum; |
| @@ -9,9 +9,9 @@ import lombok.Data; | @@ -9,9 +9,9 @@ import lombok.Data; | ||
| 9 | 9 | ||
| 10 | import java.util.List; | 10 | import java.util.List; |
| 11 | 11 | ||
| 12 | -@Schema(description = "管理后台 - IoT OTA 升级任务创建/修改 Request VO") | 12 | +@Schema(description = "管理后台 - IoT OTA 升级任务创建 Request VO") |
| 13 | @Data | 13 | @Data |
| 14 | -public class IotOtaUpgradeTaskSaveReqVO { | 14 | +public class IotOtaTaskCreateReqVO { |
| 15 | 15 | ||
| 16 | @NotEmpty(message = "任务名称不能为空") | 16 | @NotEmpty(message = "任务名称不能为空") |
| 17 | @Schema(description = "任务名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "升级任务") | 17 | @Schema(description = "任务名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "升级任务") |
| @@ -27,7 +27,7 @@ public class IotOtaUpgradeTaskSaveReqVO { | @@ -27,7 +27,7 @@ public class IotOtaUpgradeTaskSaveReqVO { | ||
| 27 | @Schema(description = "升级范围", requiredMode = Schema.RequiredMode.REQUIRED, example = "1") | 27 | @Schema(description = "升级范围", requiredMode = Schema.RequiredMode.REQUIRED, example = "1") |
| 28 | @NotNull(message = "升级范围不能为空") | 28 | @NotNull(message = "升级范围不能为空") |
| 29 | @InEnum(value = IotOtaTaskDeviceScopeEnum.class) | 29 | @InEnum(value = IotOtaTaskDeviceScopeEnum.class) |
| 30 | - private Integer scope; | 30 | + private Integer deviceScope; |
| 31 | 31 | ||
| 32 | @Schema(description = "选中的设备编号数组", requiredMode = Schema.RequiredMode.REQUIRED, example = "1,2,3") | 32 | @Schema(description = "选中的设备编号数组", requiredMode = Schema.RequiredMode.REQUIRED, example = "1,2,3") |
| 33 | private List<Long> deviceIds; | 33 | private List<Long> deviceIds; |
yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/controller/admin/ota/vo/upgrade/task/IotOtaUpgradeTaskPageReqVO.java renamed to yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/controller/admin/ota/vo/task/IotOtaTaskPageReqVO.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.task; |
| 2 | 2 | ||
| 3 | import cn.iocoder.yudao.framework.common.pojo.PageParam; | 3 | import cn.iocoder.yudao.framework.common.pojo.PageParam; |
| 4 | import io.swagger.v3.oas.annotations.media.Schema; | 4 | import io.swagger.v3.oas.annotations.media.Schema; |
| 5 | -import jakarta.validation.constraints.NotNull; | ||
| 6 | import lombok.Data; | 5 | import lombok.Data; |
| 7 | 6 | ||
| 8 | -@Data | ||
| 9 | @Schema(description = "管理后台 - IoT OTA 升级任务分页 Request VO") | 7 | @Schema(description = "管理后台 - IoT OTA 升级任务分页 Request VO") |
| 10 | -public class IotOtaUpgradeTaskPageReqVO extends PageParam { | ||
| 11 | - | ||
| 12 | - @Schema(description = "固件编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024") | ||
| 13 | - @NotNull(message = "固件编号不能为空") | ||
| 14 | - private Long firmwareId; | 8 | +@Data |
| 9 | +public class IotOtaTaskPageReqVO extends PageParam { | ||
| 15 | 10 | ||
| 16 | @Schema(description = "任务名称", example = "升级任务") | 11 | @Schema(description = "任务名称", example = "升级任务") |
| 17 | private String name; | 12 | private String name; |
| 18 | 13 | ||
| 14 | + @Schema(description = "固件编号", example = "1024") | ||
| 15 | + private Long firmwareId; | ||
| 16 | + | ||
| 19 | } | 17 | } |
yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/controller/admin/ota/vo/upgrade/task/IotOtaUpgradeTaskRespVO.java renamed to yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/controller/admin/ota/vo/task/IotOtaTaskRespVO.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.task; |
| 2 | 2 | ||
| 3 | import com.fhs.core.trans.vo.VO; | 3 | import com.fhs.core.trans.vo.VO; |
| 4 | import io.swagger.v3.oas.annotations.media.Schema; | 4 | import io.swagger.v3.oas.annotations.media.Schema; |
| 5 | import lombok.Data; | 5 | import lombok.Data; |
| 6 | 6 | ||
| 7 | import java.time.LocalDateTime; | 7 | import java.time.LocalDateTime; |
| 8 | -import java.util.List; | ||
| 9 | 8 | ||
| 10 | -@Data | ||
| 11 | @Schema(description = "管理后台 - IoT OTA 升级任务 Response VO") | 9 | @Schema(description = "管理后台 - IoT OTA 升级任务 Response VO") |
| 12 | -public class IotOtaUpgradeTaskRespVO implements VO { | 10 | +@Data |
| 11 | +public class IotOtaTaskRespVO implements VO { | ||
| 13 | 12 | ||
| 14 | @Schema(description = "任务编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024") | 13 | @Schema(description = "任务编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024") |
| 15 | private Long id; | 14 | private Long id; |
| @@ -23,20 +22,17 @@ public class IotOtaUpgradeTaskRespVO implements VO { | @@ -23,20 +22,17 @@ public class IotOtaUpgradeTaskRespVO implements VO { | ||
| 23 | @Schema(description = "固件编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024") | 22 | @Schema(description = "固件编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024") |
| 24 | private Long firmwareId; | 23 | private Long firmwareId; |
| 25 | 24 | ||
| 26 | - @Schema(description = "任务状态", requiredMode = Schema.RequiredMode.REQUIRED) | 25 | + @Schema(description = "任务状态", requiredMode = Schema.RequiredMode.REQUIRED, example = "10") |
| 27 | private Integer status; | 26 | private Integer status; |
| 28 | 27 | ||
| 29 | - @Schema(description = "升级范围", requiredMode = Schema.RequiredMode.REQUIRED, allowableValues = {"1", "2"}) | ||
| 30 | - private Integer scope; | ||
| 31 | - | ||
| 32 | - @Schema(description = "设备数量", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024") | ||
| 33 | - private Long deviceCount; | 28 | + @Schema(description = "升级范围", requiredMode = Schema.RequiredMode.REQUIRED, example = "1") |
| 29 | + private Integer deviceScope; | ||
| 34 | 30 | ||
| 35 | - @Schema(description = "选中的设备编号数组", example = "1024") | ||
| 36 | - private List<Long> deviceIds; | 31 | + @Schema(description = "设备总共数量", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024") |
| 32 | + private Integer deviceTotalCount; | ||
| 37 | 33 | ||
| 38 | - @Schema(description = "选中的设备名字数组", example = "1024") | ||
| 39 | - private List<String> deviceNames; | 34 | + @Schema(description = "设备成功数量", requiredMode = Schema.RequiredMode.REQUIRED, example = "66") |
| 35 | + private Integer deviceSuccessCount; | ||
| 40 | 36 | ||
| 41 | @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED, example = "2022-07-08 07:30:00") | 37 | @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED, example = "2022-07-08 07:30:00") |
| 42 | private LocalDateTime createTime; | 38 | private LocalDateTime createTime; |
yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/controller/admin/ota/vo/upgrade/record/IotOtaUpgradeRecordPageReqVO.java renamed to yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/controller/admin/ota/vo/task/record/IotOtaTaskRecordPageReqVO.java
| 1 | -package cn.iocoder.yudao.module.iot.controller.admin.ota.vo.upgrade.record; | 1 | +package cn.iocoder.yudao.module.iot.controller.admin.ota.vo.task.record; |
| 2 | 2 | ||
| 3 | import cn.iocoder.yudao.framework.common.pojo.PageParam; | 3 | import cn.iocoder.yudao.framework.common.pojo.PageParam; |
| 4 | import io.swagger.v3.oas.annotations.media.Schema; | 4 | import io.swagger.v3.oas.annotations.media.Schema; |
| 5 | import jakarta.validation.constraints.NotNull; | 5 | import jakarta.validation.constraints.NotNull; |
| 6 | import lombok.Data; | 6 | import lombok.Data; |
| 7 | 7 | ||
| 8 | -@Data | ||
| 9 | @Schema(description = "管理后台 - IoT OTA 升级记录分页 Request VO") | 8 | @Schema(description = "管理后台 - IoT OTA 升级记录分页 Request VO") |
| 10 | -public class IotOtaUpgradeRecordPageReqVO extends PageParam { | 9 | +@Data |
| 10 | +public class IotOtaTaskRecordPageReqVO extends PageParam { | ||
| 11 | 11 | ||
| 12 | - // TODO @li:已经有注解,不用重复注释 | ||
| 13 | - /** | ||
| 14 | - * 升级任务编号字段。 | ||
| 15 | - * <p> | ||
| 16 | - * 该字段用于标识升级任务的唯一编号,不能为空。 | ||
| 17 | - */ | 12 | + // TODO @芋艿:分页条件字段梳理; |
| 18 | @Schema(description = "升级任务编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024") | 13 | @Schema(description = "升级任务编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024") |
| 19 | @NotNull(message = "升级任务编号不能为空") | 14 | @NotNull(message = "升级任务编号不能为空") |
| 20 | private Long taskId; | 15 | private Long taskId; |
| 21 | 16 | ||
| 22 | - /** | ||
| 23 | - * 设备标识字段。 | ||
| 24 | - * <p> | ||
| 25 | - * 该字段用于标识设备的名称,通常用于区分不同的设备。 | ||
| 26 | - */ | ||
| 27 | @Schema(description = "设备标识", requiredMode = Schema.RequiredMode.REQUIRED, example = "摄像头A1-1") | 17 | @Schema(description = "设备标识", requiredMode = Schema.RequiredMode.REQUIRED, example = "摄像头A1-1") |
| 28 | private String deviceName; | 18 | private String deviceName; |
| 29 | 19 |
yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/controller/admin/ota/vo/upgrade/record/IotOtaUpgradeRecordRespVO.java renamed to yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/controller/admin/ota/vo/task/record/IotOtaTaskRecordRespVO.java
| 1 | -package cn.iocoder.yudao.module.iot.controller.admin.ota.vo.upgrade.record; | ||
| 2 | - | ||
| 3 | -import cn.iocoder.yudao.module.iot.dal.dataobject.device.IotDeviceDO; | ||
| 4 | -import cn.iocoder.yudao.module.iot.dal.dataobject.device.IotDeviceMessageDO; | ||
| 5 | -import cn.iocoder.yudao.module.iot.dal.dataobject.ota.IotOtaFirmwareDO; | ||
| 6 | -import cn.iocoder.yudao.module.iot.dal.dataobject.ota.IotOtaTaskDO; | ||
| 7 | -import cn.iocoder.yudao.module.iot.enums.ota.IotOtaTaskRecordStatusEnum; | ||
| 8 | -import com.fhs.core.trans.anno.Trans; | ||
| 9 | -import com.fhs.core.trans.constant.TransType; | 1 | +package cn.iocoder.yudao.module.iot.controller.admin.ota.vo.task.record; |
| 2 | + | ||
| 10 | import io.swagger.v3.oas.annotations.media.Schema; | 3 | import io.swagger.v3.oas.annotations.media.Schema; |
| 11 | import lombok.Data; | 4 | import lombok.Data; |
| 12 | 5 | ||
| 13 | import java.time.LocalDateTime; | 6 | import java.time.LocalDateTime; |
| 14 | 7 | ||
| 15 | -@Data | ||
| 16 | @Schema(description = "管理后台 - IoT OTA 升级记录 Response VO") | 8 | @Schema(description = "管理后台 - IoT OTA 升级记录 Response VO") |
| 17 | -public class IotOtaUpgradeRecordRespVO { | 9 | +@Data |
| 10 | +public class IotOtaTaskRecordRespVO { | ||
| 11 | + | ||
| 12 | + // TODO @芋艿:梳理字段 | ||
| 18 | 13 | ||
| 19 | - /** | ||
| 20 | - * 升级记录编号 | ||
| 21 | - */ | ||
| 22 | @Schema(description = "升级记录编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024") | 14 | @Schema(description = "升级记录编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024") |
| 23 | private Long id; | 15 | private Long id; |
| 24 | - /** | ||
| 25 | - * 固件编号 | ||
| 26 | - * <p> | ||
| 27 | - * 关联 {@link IotOtaFirmwareDO#getId()} | ||
| 28 | - */ | 16 | + |
| 29 | @Schema(description = "固件编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024") | 17 | @Schema(description = "固件编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024") |
| 30 | - @Trans(type = TransType.SIMPLE, target = IotOtaFirmwareDO.class, fields = {"version"}, refs = {"firmwareVersion"}) | ||
| 31 | private Long firmwareId; | 18 | private Long firmwareId; |
| 32 | - /** | ||
| 33 | - * 固件版本 | ||
| 34 | - */ | 19 | + |
| 35 | @Schema(description = "固件版本", requiredMode = Schema.RequiredMode.REQUIRED, example = "v1.0.0") | 20 | @Schema(description = "固件版本", requiredMode = Schema.RequiredMode.REQUIRED, example = "v1.0.0") |
| 36 | private String firmwareVersion; | 21 | private String firmwareVersion; |
| 37 | - /** | ||
| 38 | - * 任务编号 | ||
| 39 | - * <p> | ||
| 40 | - * 关联 {@link IotOtaTaskDO#getId()} | ||
| 41 | - */ | 22 | + |
| 42 | @Schema(description = "任务编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024") | 23 | @Schema(description = "任务编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024") |
| 43 | private Long taskId; | 24 | private Long taskId; |
| 44 | - /** | ||
| 45 | - * 产品标识 | ||
| 46 | - * <p> | ||
| 47 | - * 关联 {@link cn.iocoder.yudao.module.iot.dal.dataobject.product.IotProductDO#getId()} | ||
| 48 | - */ | 25 | + |
| 49 | @Schema(description = "产品标识", requiredMode = Schema.RequiredMode.REQUIRED, example = "iot") | 26 | @Schema(description = "产品标识", requiredMode = Schema.RequiredMode.REQUIRED, example = "iot") |
| 50 | private String productKey; | 27 | private String productKey; |
| 51 | - /** | ||
| 52 | - * 设备名称 | ||
| 53 | - * <p> | ||
| 54 | - * 关联 {@link cn.iocoder.yudao.module.iot.dal.dataobject.device.IotDeviceDO#getId()} | ||
| 55 | - */ | 28 | + |
| 56 | @Schema(description = "设备名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "iot") | 29 | @Schema(description = "设备名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "iot") |
| 57 | private String deviceName; | 30 | private String deviceName; |
| 58 | - /** | ||
| 59 | - * 设备编号 | ||
| 60 | - * <p> | ||
| 61 | - * 关联 {@link cn.iocoder.yudao.module.iot.dal.dataobject.device.IotDeviceDO#getId()} | ||
| 62 | - */ | 31 | + |
| 63 | @Schema(description = "设备编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024") | 32 | @Schema(description = "设备编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024") |
| 64 | private String deviceId; | 33 | private String deviceId; |
| 65 | - /** | ||
| 66 | - * 来源的固件编号 | ||
| 67 | - * <p> | ||
| 68 | - * 关联 {@link IotDeviceDO#getFirmwareId()} | ||
| 69 | - */ | 34 | + |
| 70 | @Schema(description = "来源的固件编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024") | 35 | @Schema(description = "来源的固件编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024") |
| 71 | - @Trans(type = TransType.SIMPLE, target = IotOtaFirmwareDO.class, fields = {"version"}, refs = {"fromFirmwareVersion"}) | ||
| 72 | private Long fromFirmwareId; | 36 | private Long fromFirmwareId; |
| 73 | - /** | ||
| 74 | - * 来源的固件版本 | ||
| 75 | - */ | 37 | + |
| 76 | @Schema(description = "来源的固件版本", requiredMode = Schema.RequiredMode.REQUIRED, example = "v1.0.0") | 38 | @Schema(description = "来源的固件版本", requiredMode = Schema.RequiredMode.REQUIRED, example = "v1.0.0") |
| 77 | private String fromFirmwareVersion; | 39 | private String fromFirmwareVersion; |
| 78 | - /** | ||
| 79 | - * 升级状态 | ||
| 80 | - * <p> | ||
| 81 | - * 关联 {@link IotOtaTaskRecordStatusEnum} | ||
| 82 | - */ | ||
| 83 | - @Schema(description = "升级状态", requiredMode = Schema.RequiredMode.REQUIRED, allowableValues = {"0", "10", "20", "30", "40", "50"}) | 40 | + |
| 41 | + @Schema(description = "升级状态", requiredMode = Schema.RequiredMode.REQUIRED) | ||
| 84 | private Integer status; | 42 | private Integer status; |
| 85 | - /** | ||
| 86 | - * 升级进度,百分比 | ||
| 87 | - */ | 43 | + |
| 88 | @Schema(description = "升级进度,百分比", requiredMode = Schema.RequiredMode.REQUIRED, example = "10") | 44 | @Schema(description = "升级进度,百分比", requiredMode = Schema.RequiredMode.REQUIRED, example = "10") |
| 89 | private Integer progress; | 45 | private Integer progress; |
| 90 | - /** | ||
| 91 | - * 升级进度描述 | ||
| 92 | - * <p> | ||
| 93 | - * 注意,只记录设备最后一次的升级进度描述 | ||
| 94 | - * 如果想看历史记录,可以查看 {@link IotDeviceMessageDO} 设备日志 | ||
| 95 | - */ | 46 | + |
| 96 | @Schema(description = "升级进度描述", requiredMode = Schema.RequiredMode.REQUIRED, example = "10") | 47 | @Schema(description = "升级进度描述", requiredMode = Schema.RequiredMode.REQUIRED, example = "10") |
| 97 | private String description; | 48 | private String description; |
| 98 | - /** | ||
| 99 | - * 升级开始时间 | ||
| 100 | - */ | ||
| 101 | - @Schema(description = "升级开始时间", requiredMode = Schema.RequiredMode.REQUIRED, example = "2022-07-08 07:30:00") | 49 | + |
| 50 | + @Schema(description = "升级开始时间", requiredMode = Schema.RequiredMode.REQUIRED) | ||
| 102 | private LocalDateTime startTime; | 51 | private LocalDateTime startTime; |
| 103 | - /** | ||
| 104 | - * 升级结束时间 | ||
| 105 | - */ | ||
| 106 | - @Schema(description = "升级结束时间", requiredMode = Schema.RequiredMode.REQUIRED, example = "2022-07-08 07:30:00") | 52 | + |
| 53 | + @Schema(description = "升级结束时间", requiredMode = Schema.RequiredMode.REQUIRED) | ||
| 107 | private LocalDateTime endTime; | 54 | private LocalDateTime endTime; |
| 108 | 55 | ||
| 109 | } | 56 | } |
yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/dal/mysql/ota/IotOtaUpgradeTaskMapper.java renamed to yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/dal/mysql/ota/IotOtaTaskMapper.java
| @@ -3,55 +3,30 @@ package cn.iocoder.yudao.module.iot.dal.mysql.ota; | @@ -3,55 +3,30 @@ package cn.iocoder.yudao.module.iot.dal.mysql.ota; | ||
| 3 | import cn.iocoder.yudao.framework.common.pojo.PageResult; | 3 | 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.task.IotOtaTaskPageReqVO; |
| 7 | import cn.iocoder.yudao.module.iot.dal.dataobject.ota.IotOtaTaskDO; | 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; |
| 11 | 11 | ||
| 12 | /** | 12 | /** |
| 13 | - * OTA 升级任务Mapper | 13 | + * OTA 升级任务 Mapper |
| 14 | * | 14 | * |
| 15 | * @author Shelly | 15 | * @author Shelly |
| 16 | */ | 16 | */ |
| 17 | @Mapper | 17 | @Mapper |
| 18 | -public interface IotOtaUpgradeTaskMapper extends BaseMapperX<IotOtaTaskDO> { | 18 | +public interface IotOtaTaskMapper extends BaseMapperX<IotOtaTaskDO> { |
| 19 | 19 | ||
| 20 | - /** | ||
| 21 | - * 根据固件ID和任务名称查询升级任务列表。 | ||
| 22 | - * | ||
| 23 | - * @param firmwareId 固件ID,用于筛选升级任务 | ||
| 24 | - * @param name 任务名称,用于筛选升级任务 | ||
| 25 | - * @return 符合条件的升级任务列表 | ||
| 26 | - */ | ||
| 27 | default List<IotOtaTaskDO> selectByFirmwareIdAndName(Long firmwareId, String name) { | 20 | default List<IotOtaTaskDO> selectByFirmwareIdAndName(Long firmwareId, String name) { |
| 28 | return selectList(new LambdaQueryWrapperX<IotOtaTaskDO>() | 21 | return selectList(new LambdaQueryWrapperX<IotOtaTaskDO>() |
| 29 | .eqIfPresent(IotOtaTaskDO::getFirmwareId, firmwareId) | 22 | .eqIfPresent(IotOtaTaskDO::getFirmwareId, firmwareId) |
| 30 | .eqIfPresent(IotOtaTaskDO::getName, name)); | 23 | .eqIfPresent(IotOtaTaskDO::getName, name)); |
| 31 | } | 24 | } |
| 32 | 25 | ||
| 33 | - /** | ||
| 34 | - * 分页查询升级任务列表,支持根据固件ID和任务名称进行筛选。 | ||
| 35 | - * | ||
| 36 | - * @param pageReqVO 分页查询请求对象,包含分页参数和筛选条件 | ||
| 37 | - * @return 分页结果,包含符合条件的升级任务列表 | ||
| 38 | - */ | ||
| 39 | - default PageResult<IotOtaTaskDO> selectUpgradeTaskPage(IotOtaUpgradeTaskPageReqVO pageReqVO) { | 26 | + default PageResult<IotOtaTaskDO> selectUpgradeTaskPage(IotOtaTaskPageReqVO pageReqVO) { |
| 40 | return selectPage(pageReqVO, new LambdaQueryWrapperX<IotOtaTaskDO>() | 27 | return selectPage(pageReqVO, new LambdaQueryWrapperX<IotOtaTaskDO>() |
| 41 | .eqIfPresent(IotOtaTaskDO::getFirmwareId, pageReqVO.getFirmwareId()) | 28 | .eqIfPresent(IotOtaTaskDO::getFirmwareId, pageReqVO.getFirmwareId()) |
| 42 | .likeIfPresent(IotOtaTaskDO::getName, pageReqVO.getName())); | 29 | .likeIfPresent(IotOtaTaskDO::getName, pageReqVO.getName())); |
| 43 | } | 30 | } |
| 44 | 31 | ||
| 45 | - /** | ||
| 46 | - * 根据任务状态查询升级任务列表 | ||
| 47 | - * <p> | ||
| 48 | - * 该函数通过传入的任务状态,查询数据库中符合条件的升级任务列表。 | ||
| 49 | - * | ||
| 50 | - * @param status 任务状态,用于筛选升级任务的状态值 | ||
| 51 | - * @return 返回符合条件的升级任务列表,列表中的每个元素为 IotOtaUpgradeTaskDO 对象 | ||
| 52 | - */ | ||
| 53 | - default List<IotOtaTaskDO> selectUpgradeTaskByState(Integer status) { | ||
| 54 | - return selectList(IotOtaTaskDO::getStatus, status); | ||
| 55 | - } | ||
| 56 | - | ||
| 57 | } | 32 | } |
yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/dal/mysql/ota/IotOtaUpgradeRecordMapper.java
| @@ -3,7 +3,7 @@ package cn.iocoder.yudao.module.iot.dal.mysql.ota; | @@ -3,7 +3,7 @@ package cn.iocoder.yudao.module.iot.dal.mysql.ota; | ||
| 3 | import cn.iocoder.yudao.framework.common.pojo.PageResult; | 3 | 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.task.record.IotOtaTaskRecordPageReqVO; |
| 7 | import cn.iocoder.yudao.module.iot.dal.dataobject.ota.IotOtaTaskRecordDO; | 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; |
| @@ -80,11 +80,11 @@ public interface IotOtaUpgradeRecordMapper extends BaseMapperX<IotOtaTaskRecordD | @@ -80,11 +80,11 @@ public interface IotOtaUpgradeRecordMapper extends BaseMapperX<IotOtaTaskRecordD | ||
| 80 | * @return 返回分页查询结果,包含符合条件的 OTA升级记录列表 | 80 | * @return 返回分页查询结果,包含符合条件的 OTA升级记录列表 |
| 81 | */ | 81 | */ |
| 82 | // TODO @li:selectPage 就 ok 拉。 | 82 | // TODO @li:selectPage 就 ok 拉。 |
| 83 | - default PageResult<IotOtaTaskRecordDO> selectUpgradeRecordPage(IotOtaUpgradeRecordPageReqVO pageReqVO) { | 83 | + default PageResult<IotOtaTaskRecordDO> selectUpgradeRecordPage(IotOtaTaskRecordPageReqVO pageReqVO) { |
| 84 | // TODO @li:这里的注释,可以去掉哈;然后下面的“如果”。。。也没必要注释 | 84 | // TODO @li:这里的注释,可以去掉哈;然后下面的“如果”。。。也没必要注释 |
| 85 | // 使用LambdaQueryWrapperX构建查询条件,并根据请求参数动态添加查询条件 | 85 | // 使用LambdaQueryWrapperX构建查询条件,并根据请求参数动态添加查询条件 |
| 86 | return selectPage(pageReqVO, new LambdaQueryWrapperX<IotOtaTaskRecordDO>() | 86 | return selectPage(pageReqVO, new LambdaQueryWrapperX<IotOtaTaskRecordDO>() |
| 87 | - .likeIfPresent(IotOtaTaskRecordDO::getDeviceName, pageReqVO.getDeviceName()) // 如果设备名称存在,则添加模糊查询条件 | 87 | +// .likeIfPresent(IotOtaTaskRecordDO::getDeviceName, pageReqVO.getDeviceName()) // 如果设备名称存在,则添加模糊查询条件 |
| 88 | .eqIfPresent(IotOtaTaskRecordDO::getTaskId, pageReqVO.getTaskId())); // 如果任务ID存在,则添加等值查询条件 | 88 | .eqIfPresent(IotOtaTaskRecordDO::getTaskId, pageReqVO.getTaskId())); // 如果任务ID存在,则添加等值查询条件 |
| 89 | } | 89 | } |
| 90 | 90 |
yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/service/ota/IotOtaUpgradeRecordService.java renamed to yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/service/ota/IotOtaTaskRecordService.java
| 1 | package cn.iocoder.yudao.module.iot.service.ota; | 1 | 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.task.record.IotOtaTaskRecordPageReqVO; |
| 5 | import cn.iocoder.yudao.module.iot.dal.dataobject.ota.IotOtaTaskRecordDO; | 5 | import cn.iocoder.yudao.module.iot.dal.dataobject.ota.IotOtaTaskRecordDO; |
| 6 | import jakarta.validation.Valid; | 6 | import jakarta.validation.Valid; |
| 7 | 7 | ||
| @@ -13,7 +13,7 @@ import java.util.Map; | @@ -13,7 +13,7 @@ import java.util.Map; | ||
| 13 | * IotOtaUpgradeRecordService 接口定义了与物联网设备OTA升级记录相关的操作。 | 13 | * IotOtaUpgradeRecordService 接口定义了与物联网设备OTA升级记录相关的操作。 |
| 14 | * 该接口提供了创建、更新、查询、统计和重试升级记录的功能。 | 14 | * 该接口提供了创建、更新、查询、统计和重试升级记录的功能。 |
| 15 | */ | 15 | */ |
| 16 | -public interface IotOtaUpgradeRecordService { | 16 | +public interface IotOtaTaskRecordService { |
| 17 | 17 | ||
| 18 | /** | 18 | /** |
| 19 | * 批量创建 OTA 升级记录 | 19 | * 批量创建 OTA 升级记录 |
| @@ -23,37 +23,37 @@ public interface IotOtaUpgradeRecordService { | @@ -23,37 +23,37 @@ public interface IotOtaUpgradeRecordService { | ||
| 23 | * @param firmwareId 固件ID,表示要升级到的固件版本。 | 23 | * @param firmwareId 固件ID,表示要升级到的固件版本。 |
| 24 | * @param upgradeTaskId 升级任务ID,表示此次升级任务的唯一标识。 | 24 | * @param upgradeTaskId 升级任务ID,表示此次升级任务的唯一标识。 |
| 25 | */ | 25 | */ |
| 26 | - void createOtaUpgradeRecordBatch(List<Long> deviceIds, Long firmwareId, Long upgradeTaskId); | 26 | + void createOtaTaskRecordBatch(List<Long> deviceIds, Long firmwareId, Long upgradeTaskId); |
| 27 | 27 | ||
| 28 | /** | 28 | /** |
| 29 | * 获取 OTA 升级记录的数量统计 | 29 | * 获取 OTA 升级记录的数量统计 |
| 30 | * | 30 | * |
| 31 | * @return 返回一个 Map,其中键为状态码,值为对应状态的升级记录数量 | 31 | * @return 返回一个 Map,其中键为状态码,值为对应状态的升级记录数量 |
| 32 | */ | 32 | */ |
| 33 | - Map<Integer, Long> getOtaUpgradeRecordCount(@Valid IotOtaUpgradeRecordPageReqVO pageReqVO); | 33 | + Map<Integer, Long> getOtaTaskRecordCount(@Valid IotOtaTaskRecordPageReqVO pageReqVO); |
| 34 | 34 | ||
| 35 | /** | 35 | /** |
| 36 | - * 获取 OTA 升级记录的统计信息。 | 36 | + * 获取 OTA 升级记录的统计信息 |
| 37 | * | 37 | * |
| 38 | * @return 返回一个 Map,其中键为状态码,值为对应状态的升级记录统计信息 | 38 | * @return 返回一个 Map,其中键为状态码,值为对应状态的升级记录统计信息 |
| 39 | */ | 39 | */ |
| 40 | - Map<Integer, Long> getOtaUpgradeRecordStatistics(Long firmwareId); | 40 | + Map<Integer, Long> getOtaTaskRecordStatistics(Long firmwareId); |
| 41 | 41 | ||
| 42 | /** | 42 | /** |
| 43 | - * 获取指定 ID 的 OTA 升级记录的详细信息。 | 43 | + * 获取指定 ID 的 OTA 升级记录的详细信息 |
| 44 | * | 44 | * |
| 45 | - * @param id 需要查询的升级记录的ID。 | ||
| 46 | - * @return 返回包含升级记录详细信息的响应对象。 | 45 | + * @param id 需要查询的升级记录的 ID |
| 46 | + * @return 返回包含升级记录详细信息的响应对象 | ||
| 47 | */ | 47 | */ |
| 48 | - IotOtaTaskRecordDO getUpgradeRecord(Long id); | 48 | + IotOtaTaskRecordDO getOtaTaskRecord(Long id); |
| 49 | 49 | ||
| 50 | /** | 50 | /** |
| 51 | - * 分页查询 OTA 升级记录。 | 51 | + * 分页查询 OTA 升级记录 |
| 52 | * | 52 | * |
| 53 | * @param pageReqVO 包含分页查询条件的请求对象,必须经过验证。 | 53 | * @param pageReqVO 包含分页查询条件的请求对象,必须经过验证。 |
| 54 | * @return 返回包含分页查询结果的响应对象。 | 54 | * @return 返回包含分页查询结果的响应对象。 |
| 55 | */ | 55 | */ |
| 56 | - PageResult<IotOtaTaskRecordDO> getUpgradeRecordPage(@Valid IotOtaUpgradeRecordPageReqVO pageReqVO); | 56 | + PageResult<IotOtaTaskRecordDO> getOtaTaskRecordPage(@Valid IotOtaTaskRecordPageReqVO pageReqVO); |
| 57 | 57 | ||
| 58 | /** | 58 | /** |
| 59 | * 根据任务 ID 取消升级记录 | 59 | * 根据任务 ID 取消升级记录 |
yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/service/ota/IotOtaUpgradeRecordServiceImpl.java renamed to yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/service/ota/IotOtaTaskRecordServiceImpl.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.hutool.core.convert.Convert; | 3 | import cn.hutool.core.convert.Convert; |
| 4 | import cn.iocoder.yudao.framework.common.pojo.PageResult; | 4 | import cn.iocoder.yudao.framework.common.pojo.PageResult; |
| 5 | import cn.iocoder.yudao.framework.common.util.object.ObjectUtils; | 5 | 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.task.record.IotOtaTaskRecordPageReqVO; |
| 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.IotOtaTaskRecordDO; | 9 | import cn.iocoder.yudao.module.iot.dal.dataobject.ota.IotOtaTaskRecordDO; |
| @@ -29,40 +29,39 @@ import static cn.iocoder.yudao.module.iot.enums.ErrorCodeConstants.*; | @@ -29,40 +29,39 @@ import static cn.iocoder.yudao.module.iot.enums.ErrorCodeConstants.*; | ||
| 29 | @Slf4j | 29 | @Slf4j |
| 30 | @Service | 30 | @Service |
| 31 | @Validated | 31 | @Validated |
| 32 | -public class IotOtaUpgradeRecordServiceImpl implements IotOtaUpgradeRecordService { | 32 | +public class IotOtaTaskRecordServiceImpl implements IotOtaTaskRecordService { |
| 33 | 33 | ||
| 34 | @Resource | 34 | @Resource |
| 35 | - private IotOtaUpgradeRecordMapper upgradeRecordMapper; | 35 | + private IotOtaUpgradeRecordMapper iotOtaUpgradeRecordMapper; |
| 36 | + | ||
| 36 | @Resource | 37 | @Resource |
| 37 | private IotDeviceService deviceService; | 38 | private IotDeviceService deviceService; |
| 38 | @Resource | 39 | @Resource |
| 39 | private IotOtaFirmwareService firmwareService; | 40 | private IotOtaFirmwareService firmwareService; |
| 40 | @Resource | 41 | @Resource |
| 41 | - private IotOtaUpgradeTaskService upgradeTaskService; | 42 | + private IotOtaTaskService upgradeTaskService; |
| 42 | 43 | ||
| 43 | @Override | 44 | @Override |
| 44 | - public void createOtaUpgradeRecordBatch(List<Long> deviceIds, Long firmwareId, Long upgradeTaskId) { | 45 | + public void createOtaTaskRecordBatch(List<Long> deviceIds, Long firmwareId, Long upgradeTaskId) { |
| 45 | // 1. 校验升级记录信息是否存在,并且已经取消的任务可以重新开始 | 46 | // 1. 校验升级记录信息是否存在,并且已经取消的任务可以重新开始 |
| 46 | deviceIds.forEach(deviceId -> validateUpgradeRecordDuplicate(firmwareId, upgradeTaskId, String.valueOf(deviceId))); | 47 | deviceIds.forEach(deviceId -> validateUpgradeRecordDuplicate(firmwareId, upgradeTaskId, String.valueOf(deviceId))); |
| 47 | 48 | ||
| 48 | // 2. 初始化OTA升级记录列表信息 | 49 | // 2. 初始化OTA升级记录列表信息 |
| 49 | - IotOtaTaskDO upgradeTask = upgradeTaskService.getUpgradeTask(upgradeTaskId); | 50 | + IotOtaTaskDO upgradeTask = upgradeTaskService.getOtaTask(upgradeTaskId); |
| 50 | IotOtaFirmwareDO firmware = firmwareService.getOtaFirmware(firmwareId); | 51 | IotOtaFirmwareDO firmware = firmwareService.getOtaFirmware(firmwareId); |
| 51 | List<IotDeviceDO> deviceList = deviceService.getDeviceListByIdList(deviceIds); | 52 | List<IotDeviceDO> deviceList = deviceService.getDeviceListByIdList(deviceIds); |
| 52 | List<IotOtaTaskRecordDO> upgradeRecordList = deviceList.stream().map(device -> { | 53 | List<IotOtaTaskRecordDO> upgradeRecordList = deviceList.stream().map(device -> { |
| 53 | IotOtaTaskRecordDO upgradeRecord = new IotOtaTaskRecordDO(); | 54 | IotOtaTaskRecordDO upgradeRecord = new IotOtaTaskRecordDO(); |
| 54 | upgradeRecord.setFirmwareId(firmware.getId()); | 55 | upgradeRecord.setFirmwareId(firmware.getId()); |
| 55 | upgradeRecord.setTaskId(upgradeTask.getId()); | 56 | upgradeRecord.setTaskId(upgradeTask.getId()); |
| 56 | - upgradeRecord.setProductKey(device.getProductKey()); | ||
| 57 | - upgradeRecord.setDeviceName(device.getDeviceName()); | ||
| 58 | - upgradeRecord.setDeviceId(Convert.toStr(device.getId())); | 57 | + upgradeRecord.setDeviceId(device.getId()); |
| 59 | upgradeRecord.setFromFirmwareId(Convert.toLong(device.getFirmwareId())); | 58 | upgradeRecord.setFromFirmwareId(Convert.toLong(device.getFirmwareId())); |
| 60 | upgradeRecord.setStatus(IotOtaTaskRecordStatusEnum.PENDING.getStatus()); | 59 | upgradeRecord.setStatus(IotOtaTaskRecordStatusEnum.PENDING.getStatus()); |
| 61 | upgradeRecord.setProgress(0); | 60 | upgradeRecord.setProgress(0); |
| 62 | return upgradeRecord; | 61 | return upgradeRecord; |
| 63 | }).toList(); | 62 | }).toList(); |
| 64 | // 3. 保存数据 | 63 | // 3. 保存数据 |
| 65 | - upgradeRecordMapper.insertBatch(upgradeRecordList); | 64 | + iotOtaUpgradeRecordMapper.insertBatch(upgradeRecordList); |
| 66 | // TODO @芋艿:在这里需要处理推送升级任务的逻辑 | 65 | // TODO @芋艿:在这里需要处理推送升级任务的逻辑 |
| 67 | } | 66 | } |
| 68 | 67 | ||
| @@ -76,9 +75,9 @@ public class IotOtaUpgradeRecordServiceImpl implements IotOtaUpgradeRecordServic | @@ -76,9 +75,9 @@ public class IotOtaUpgradeRecordServiceImpl implements IotOtaUpgradeRecordServic | ||
| 76 | */ | 75 | */ |
| 77 | @Override | 76 | @Override |
| 78 | @Transactional | 77 | @Transactional |
| 79 | - public Map<Integer, Long> getOtaUpgradeRecordCount(IotOtaUpgradeRecordPageReqVO pageReqVO) { | 78 | + public Map<Integer, Long> getOtaTaskRecordCount(IotOtaTaskRecordPageReqVO pageReqVO) { |
| 80 | // 分别查询不同状态的OTA升级记录数量 | 79 | // 分别查询不同状态的OTA升级记录数量 |
| 81 | - List<Map<String, Object>> upgradeRecordCountList = upgradeRecordMapper.selectOtaUpgradeRecordCount( | 80 | + List<Map<String, Object>> upgradeRecordCountList = iotOtaUpgradeRecordMapper.selectOtaUpgradeRecordCount( |
| 82 | pageReqVO.getTaskId(), pageReqVO.getDeviceName()); | 81 | pageReqVO.getTaskId(), pageReqVO.getDeviceName()); |
| 83 | Map<String, Object> upgradeRecordCountMap = ObjectUtils.defaultIfNull(upgradeRecordCountList.get(0)); | 82 | Map<String, Object> upgradeRecordCountMap = ObjectUtils.defaultIfNull(upgradeRecordCountList.get(0)); |
| 84 | Objects.requireNonNull(upgradeRecordCountMap); | 83 | Objects.requireNonNull(upgradeRecordCountMap); |
| @@ -89,9 +88,9 @@ public class IotOtaUpgradeRecordServiceImpl implements IotOtaUpgradeRecordServic | @@ -89,9 +88,9 @@ public class IotOtaUpgradeRecordServiceImpl implements IotOtaUpgradeRecordServic | ||
| 89 | 88 | ||
| 90 | @Override | 89 | @Override |
| 91 | @Transactional | 90 | @Transactional |
| 92 | - public Map<Integer, Long> getOtaUpgradeRecordStatistics(Long firmwareId) { | 91 | + public Map<Integer, Long> getOtaTaskRecordStatistics(Long firmwareId) { |
| 93 | // 查询并统计不同状态的OTA升级记录数量 | 92 | // 查询并统计不同状态的OTA升级记录数量 |
| 94 | - List<Map<String, Object>> upgradeRecordStatisticsList = upgradeRecordMapper.selectOtaUpgradeRecordStatistics(firmwareId); | 93 | + List<Map<String, Object>> upgradeRecordStatisticsList = iotOtaUpgradeRecordMapper.selectOtaUpgradeRecordStatistics(firmwareId); |
| 95 | Map<String, Object> upgradeRecordStatisticsMap = ObjectUtils.defaultIfNull(upgradeRecordStatisticsList.get(0)); | 94 | Map<String, Object> upgradeRecordStatisticsMap = ObjectUtils.defaultIfNull(upgradeRecordStatisticsList.get(0)); |
| 96 | Objects.requireNonNull(upgradeRecordStatisticsMap); | 95 | Objects.requireNonNull(upgradeRecordStatisticsMap); |
| 97 | return upgradeRecordStatisticsMap.entrySet().stream().collect(Collectors.toMap( | 96 | return upgradeRecordStatisticsMap.entrySet().stream().collect(Collectors.toMap( |
| @@ -100,19 +99,19 @@ public class IotOtaUpgradeRecordServiceImpl implements IotOtaUpgradeRecordServic | @@ -100,19 +99,19 @@ public class IotOtaUpgradeRecordServiceImpl implements IotOtaUpgradeRecordServic | ||
| 100 | } | 99 | } |
| 101 | 100 | ||
| 102 | @Override | 101 | @Override |
| 103 | - public IotOtaTaskRecordDO getUpgradeRecord(Long id) { | ||
| 104 | - return upgradeRecordMapper.selectById(id); | 102 | + public IotOtaTaskRecordDO getOtaTaskRecord(Long id) { |
| 103 | + return iotOtaUpgradeRecordMapper.selectById(id); | ||
| 105 | } | 104 | } |
| 106 | 105 | ||
| 107 | @Override | 106 | @Override |
| 108 | - public PageResult<IotOtaTaskRecordDO> getUpgradeRecordPage(IotOtaUpgradeRecordPageReqVO pageReqVO) { | ||
| 109 | - return upgradeRecordMapper.selectUpgradeRecordPage(pageReqVO); | 107 | + public PageResult<IotOtaTaskRecordDO> getOtaTaskRecordPage(IotOtaTaskRecordPageReqVO pageReqVO) { |
| 108 | + return iotOtaUpgradeRecordMapper.selectUpgradeRecordPage(pageReqVO); | ||
| 110 | } | 109 | } |
| 111 | 110 | ||
| 112 | @Override | 111 | @Override |
| 113 | public void cancelUpgradeRecordByTaskId(Long taskId) { | 112 | public void cancelUpgradeRecordByTaskId(Long taskId) { |
| 114 | // 暂定只有待推送的升级记录可以取消 TODO @芋艿:可以看看阿里云,哪些可以取消 | 113 | // 暂定只有待推送的升级记录可以取消 TODO @芋艿:可以看看阿里云,哪些可以取消 |
| 115 | - upgradeRecordMapper.updateUpgradeRecordStatusByTaskIdAndStatus( | 114 | + iotOtaUpgradeRecordMapper.updateUpgradeRecordStatusByTaskIdAndStatus( |
| 116 | IotOtaTaskRecordStatusEnum.CANCELED.getStatus(), taskId, | 115 | IotOtaTaskRecordStatusEnum.CANCELED.getStatus(), taskId, |
| 117 | IotOtaTaskRecordStatusEnum.PENDING.getStatus()); | 116 | IotOtaTaskRecordStatusEnum.PENDING.getStatus()); |
| 118 | } | 117 | } |
| @@ -127,7 +126,7 @@ public class IotOtaUpgradeRecordServiceImpl implements IotOtaUpgradeRecordServic | @@ -127,7 +126,7 @@ public class IotOtaUpgradeRecordServiceImpl implements IotOtaUpgradeRecordServic | ||
| 127 | */ | 126 | */ |
| 128 | private IotOtaTaskRecordDO validateUpgradeRecordExists(Long id) { | 127 | private IotOtaTaskRecordDO validateUpgradeRecordExists(Long id) { |
| 129 | // 根据ID查询升级记录 | 128 | // 根据ID查询升级记录 |
| 130 | - IotOtaTaskRecordDO upgradeRecord = upgradeRecordMapper.selectById(id); | 129 | + IotOtaTaskRecordDO upgradeRecord = iotOtaUpgradeRecordMapper.selectById(id); |
| 131 | // 如果查询结果为空,抛出异常 | 130 | // 如果查询结果为空,抛出异常 |
| 132 | if (upgradeRecord == null) { | 131 | if (upgradeRecord == null) { |
| 133 | throw exception(OTA_UPGRADE_RECORD_NOT_EXISTS); | 132 | throw exception(OTA_UPGRADE_RECORD_NOT_EXISTS); |
| @@ -147,7 +146,7 @@ public class IotOtaUpgradeRecordServiceImpl implements IotOtaUpgradeRecordServic | @@ -147,7 +146,7 @@ public class IotOtaUpgradeRecordServiceImpl implements IotOtaUpgradeRecordServic | ||
| 147 | * @param deviceId 设备ID,用于标识特定的设备 | 146 | * @param deviceId 设备ID,用于标识特定的设备 |
| 148 | */ | 147 | */ |
| 149 | private void validateUpgradeRecordDuplicate(Long firmwareId, Long taskId, String deviceId) { | 148 | private void validateUpgradeRecordDuplicate(Long firmwareId, Long taskId, String deviceId) { |
| 150 | - IotOtaTaskRecordDO upgradeRecord = upgradeRecordMapper.selectByConditions(firmwareId, taskId, deviceId); | 149 | + IotOtaTaskRecordDO upgradeRecord = iotOtaUpgradeRecordMapper.selectByConditions(firmwareId, taskId, deviceId); |
| 151 | if (upgradeRecord == null) { | 150 | if (upgradeRecord == null) { |
| 152 | return; | 151 | return; |
| 153 | } | 152 | } |
yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/service/ota/IotOtaTaskService.java
0 → 100644
| 1 | +package cn.iocoder.yudao.module.iot.service.ota; | ||
| 2 | + | ||
| 3 | +import cn.iocoder.yudao.framework.common.pojo.PageResult; | ||
| 4 | +import cn.iocoder.yudao.module.iot.controller.admin.ota.vo.task.IotOtaTaskCreateReqVO; | ||
| 5 | +import cn.iocoder.yudao.module.iot.controller.admin.ota.vo.task.IotOtaTaskPageReqVO; | ||
| 6 | +import cn.iocoder.yudao.module.iot.dal.dataobject.ota.IotOtaTaskDO; | ||
| 7 | +import jakarta.validation.Valid; | ||
| 8 | + | ||
| 9 | +/** | ||
| 10 | + * IoT OTA 升级任务 Service 接口 | ||
| 11 | + * | ||
| 12 | + * @author Shelly Chan | ||
| 13 | + */ | ||
| 14 | +public interface IotOtaTaskService { | ||
| 15 | + | ||
| 16 | + /** | ||
| 17 | + * 创建 OTA升 级任务 | ||
| 18 | + * | ||
| 19 | + * @param createReqVO 创建请求对象 | ||
| 20 | + * @return 升级任务编号 | ||
| 21 | + */ | ||
| 22 | + Long createOtaTask(@Valid IotOtaTaskCreateReqVO createReqVO); | ||
| 23 | + | ||
| 24 | + /** | ||
| 25 | + * 取消 OTA 升级任务 | ||
| 26 | + * | ||
| 27 | + * @param id 升级任务编号 | ||
| 28 | + */ | ||
| 29 | + void cancelOtaTask(Long id); | ||
| 30 | + | ||
| 31 | + /** | ||
| 32 | + * 获取 OTA 升级任务 | ||
| 33 | + * | ||
| 34 | + * @param id 升级任务编号 | ||
| 35 | + * @return 升级任务 | ||
| 36 | + */ | ||
| 37 | + IotOtaTaskDO getOtaTask(Long id); | ||
| 38 | + | ||
| 39 | + /** | ||
| 40 | + * 分页查询 OTA 升级任务 | ||
| 41 | + * | ||
| 42 | + * @param pageReqVO 分页查询请求 | ||
| 43 | + * @return 升级任务分页结果 | ||
| 44 | + */ | ||
| 45 | + PageResult<IotOtaTaskDO> getOtaTaskPage(@Valid IotOtaTaskPageReqVO pageReqVO); | ||
| 46 | + | ||
| 47 | +} |
yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/service/ota/IotOtaUpgradeTaskServiceImpl.java renamed to yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/service/ota/IotOtaTaskServiceImpl.java
| @@ -4,12 +4,12 @@ import cn.hutool.core.collection.CollUtil; | @@ -4,12 +4,12 @@ import cn.hutool.core.collection.CollUtil; | ||
| 4 | import cn.hutool.core.convert.Convert; | 4 | import cn.hutool.core.convert.Convert; |
| 5 | import cn.iocoder.yudao.framework.common.pojo.PageResult; | 5 | import cn.iocoder.yudao.framework.common.pojo.PageResult; |
| 6 | import cn.iocoder.yudao.framework.common.util.object.BeanUtils; | 6 | import cn.iocoder.yudao.framework.common.util.object.BeanUtils; |
| 7 | -import cn.iocoder.yudao.module.iot.controller.admin.ota.vo.upgrade.task.IotOtaUpgradeTaskPageReqVO; | ||
| 8 | -import cn.iocoder.yudao.module.iot.controller.admin.ota.vo.upgrade.task.IotOtaUpgradeTaskSaveReqVO; | 7 | +import cn.iocoder.yudao.module.iot.controller.admin.ota.vo.task.IotOtaTaskCreateReqVO; |
| 8 | +import cn.iocoder.yudao.module.iot.controller.admin.ota.vo.task.IotOtaTaskPageReqVO; | ||
| 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.IotOtaTaskDO; | 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.IotOtaTaskMapper; |
| 13 | import cn.iocoder.yudao.module.iot.enums.ota.IotOtaTaskDeviceScopeEnum; | 13 | import cn.iocoder.yudao.module.iot.enums.ota.IotOtaTaskDeviceScopeEnum; |
| 14 | import cn.iocoder.yudao.module.iot.enums.ota.IotOtaTaskStatusEnum; | 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; |
| @@ -22,56 +22,54 @@ import org.springframework.validation.annotation.Validated; | @@ -22,56 +22,54 @@ import org.springframework.validation.annotation.Validated; | ||
| 22 | 22 | ||
| 23 | import java.util.List; | 23 | import java.util.List; |
| 24 | import java.util.Objects; | 24 | import java.util.Objects; |
| 25 | -import java.util.stream.Collectors; | ||
| 26 | 25 | ||
| 27 | import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; | 26 | import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; |
| 28 | import static cn.iocoder.yudao.module.iot.enums.ErrorCodeConstants.*; | 27 | import static cn.iocoder.yudao.module.iot.enums.ErrorCodeConstants.*; |
| 29 | 28 | ||
| 30 | /** | 29 | /** |
| 31 | - * IoT OTA升级任务 Service 实现类 | 30 | + * IoT OTA 升级任务 Service 实现类 |
| 32 | * | 31 | * |
| 33 | * @author Shelly Chan | 32 | * @author Shelly Chan |
| 34 | */ | 33 | */ |
| 35 | @Service | 34 | @Service |
| 36 | @Validated | 35 | @Validated |
| 37 | @Slf4j | 36 | @Slf4j |
| 38 | -public class IotOtaUpgradeTaskServiceImpl implements IotOtaUpgradeTaskService { | 37 | +public class IotOtaTaskServiceImpl implements IotOtaTaskService { |
| 39 | 38 | ||
| 40 | @Resource | 39 | @Resource |
| 41 | - private IotOtaUpgradeTaskMapper upgradeTaskMapper; | 40 | + private IotOtaTaskMapper otaTaskMapper; |
| 42 | 41 | ||
| 43 | @Resource | 42 | @Resource |
| 44 | - @Lazy | ||
| 45 | private IotDeviceService deviceService; | 43 | private IotDeviceService deviceService; |
| 46 | @Resource | 44 | @Resource |
| 47 | - @Lazy | ||
| 48 | - private IotOtaFirmwareService firmwareService; | 45 | + private IotOtaFirmwareService otaFirmwareService; |
| 49 | @Resource | 46 | @Resource |
| 50 | - @Lazy | ||
| 51 | - private IotOtaUpgradeRecordService upgradeRecordService; | 47 | + @Lazy // 延迟,避免循环依赖报错 |
| 48 | + private IotOtaTaskRecordService otaUpgradeRecordService; | ||
| 52 | 49 | ||
| 53 | @Override | 50 | @Override |
| 54 | @Transactional(rollbackFor = Exception.class) | 51 | @Transactional(rollbackFor = Exception.class) |
| 55 | - public Long createUpgradeTask(IotOtaUpgradeTaskSaveReqVO createReqVO) { | 52 | + public Long createOtaTask(IotOtaTaskCreateReqVO createReqVO) { |
| 56 | // 1.1 校验同一固件的升级任务名称不重复 | 53 | // 1.1 校验同一固件的升级任务名称不重复 |
| 57 | validateFirmwareTaskDuplicate(createReqVO.getFirmwareId(), createReqVO.getName()); | 54 | validateFirmwareTaskDuplicate(createReqVO.getFirmwareId(), createReqVO.getName()); |
| 58 | // 1.2 校验固件信息是否存在 | 55 | // 1.2 校验固件信息是否存在 |
| 59 | - IotOtaFirmwareDO firmware = firmwareService.validateFirmwareExists(createReqVO.getFirmwareId()); | 56 | + IotOtaFirmwareDO firmware = otaFirmwareService.validateFirmwareExists(createReqVO.getFirmwareId()); |
| 60 | // 1.3 补全设备范围信息,并且校验是否又设备可以升级,如果没有设备可以升级,则报错 | 57 | // 1.3 补全设备范围信息,并且校验是否又设备可以升级,如果没有设备可以升级,则报错 |
| 61 | - validateScopeAndDevice(createReqVO.getScope(), createReqVO.getDeviceIds(), firmware.getProductId()); | 58 | + validateScopeAndDevice(createReqVO.getDeviceScope(), createReqVO.getDeviceIds(), firmware.getProductId()); |
| 62 | 59 | ||
| 63 | // 2. 保存 OTA 升级任务信息到数据库 | 60 | // 2. 保存 OTA 升级任务信息到数据库 |
| 64 | IotOtaTaskDO upgradeTask = initOtaUpgradeTask(createReqVO, firmware.getProductId()); | 61 | IotOtaTaskDO upgradeTask = initOtaUpgradeTask(createReqVO, firmware.getProductId()); |
| 65 | - upgradeTaskMapper.insert(upgradeTask); | 62 | + otaTaskMapper.insert(upgradeTask); |
| 66 | 63 | ||
| 67 | // 3. 生成设备升级记录信息并存储,等待定时任务轮询 | 64 | // 3. 生成设备升级记录信息并存储,等待定时任务轮询 |
| 68 | - upgradeRecordService.createOtaUpgradeRecordBatch(upgradeTask.getDeviceIds(), firmware.getId(), upgradeTask.getId()); | 65 | + // TODO @芋艿:在处理; |
| 66 | +// otaUpgradeRecordService.createOtaUpgradeRecordBatch(upgradeTask.getDeviceIds(), firmware.getId(), upgradeTask.getId()); | ||
| 69 | return upgradeTask.getId(); | 67 | return upgradeTask.getId(); |
| 70 | } | 68 | } |
| 71 | 69 | ||
| 72 | @Override | 70 | @Override |
| 73 | @Transactional(rollbackFor = Exception.class) | 71 | @Transactional(rollbackFor = Exception.class) |
| 74 | - public void cancelUpgradeTask(Long id) { | 72 | + public void cancelOtaTask(Long id) { |
| 75 | // 1.1 校验升级任务是否存在 | 73 | // 1.1 校验升级任务是否存在 |
| 76 | IotOtaTaskDO upgradeTask = validateUpgradeTaskExists(id); | 74 | IotOtaTaskDO upgradeTask = validateUpgradeTaskExists(id); |
| 77 | // 1.2 校验升级任务是否可以取消 | 75 | // 1.2 校验升级任务是否可以取消 |
| @@ -81,52 +79,34 @@ public class IotOtaUpgradeTaskServiceImpl implements IotOtaUpgradeTaskService { | @@ -81,52 +79,34 @@ public class IotOtaUpgradeTaskServiceImpl implements IotOtaUpgradeTaskService { | ||
| 81 | } | 79 | } |
| 82 | 80 | ||
| 83 | // 2. 更新 OTA 升级任务状态为已取消 | 81 | // 2. 更新 OTA 升级任务状态为已取消 |
| 84 | - upgradeTaskMapper.updateById(IotOtaTaskDO.builder() | 82 | + otaTaskMapper.updateById(IotOtaTaskDO.builder() |
| 85 | .id(id).status(IotOtaTaskStatusEnum.CANCELED.getStatus()) | 83 | .id(id).status(IotOtaTaskStatusEnum.CANCELED.getStatus()) |
| 86 | .build()); | 84 | .build()); |
| 87 | 85 | ||
| 88 | // 3. 更新 OTA 升级记录状态为已取消 | 86 | // 3. 更新 OTA 升级记录状态为已取消 |
| 89 | - upgradeRecordService.cancelUpgradeRecordByTaskId(id); | 87 | + otaUpgradeRecordService.cancelUpgradeRecordByTaskId(id); |
| 90 | } | 88 | } |
| 91 | 89 | ||
| 92 | @Override | 90 | @Override |
| 93 | - public IotOtaTaskDO getUpgradeTask(Long id) { | ||
| 94 | - return upgradeTaskMapper.selectById(id); | 91 | + public IotOtaTaskDO getOtaTask(Long id) { |
| 92 | + return otaTaskMapper.selectById(id); | ||
| 95 | } | 93 | } |
| 96 | 94 | ||
| 97 | @Override | 95 | @Override |
| 98 | - public PageResult<IotOtaTaskDO> getUpgradeTaskPage(IotOtaUpgradeTaskPageReqVO pageReqVO) { | ||
| 99 | - return upgradeTaskMapper.selectUpgradeTaskPage(pageReqVO); | ||
| 100 | - } | ||
| 101 | - | ||
| 102 | - @Override | ||
| 103 | - public List<IotOtaTaskDO> getUpgradeTaskByState(Integer state) { | ||
| 104 | - return upgradeTaskMapper.selectUpgradeTaskByState(state); | ||
| 105 | - } | ||
| 106 | - | ||
| 107 | - @Override | ||
| 108 | - public void updateUpgradeTaskStatus(Long id, Integer status) { | ||
| 109 | - upgradeTaskMapper.updateById(IotOtaTaskDO.builder().id(id).status(status).build()); | 96 | + public PageResult<IotOtaTaskDO> getOtaTaskPage(IotOtaTaskPageReqVO pageReqVO) { |
| 97 | + return otaTaskMapper.selectUpgradeTaskPage(pageReqVO); | ||
| 110 | } | 98 | } |
| 111 | 99 | ||
| 112 | /** | 100 | /** |
| 113 | * 校验固件升级任务是否重复 | 101 | * 校验固件升级任务是否重复 |
| 114 | */ | 102 | */ |
| 115 | private void validateFirmwareTaskDuplicate(Long firmwareId, String taskName) { | 103 | private void validateFirmwareTaskDuplicate(Long firmwareId, String taskName) { |
| 116 | - List<IotOtaTaskDO> upgradeTaskList = upgradeTaskMapper.selectByFirmwareIdAndName(firmwareId, taskName); | 104 | + List<IotOtaTaskDO> upgradeTaskList = otaTaskMapper.selectByFirmwareIdAndName(firmwareId, taskName); |
| 117 | if (CollUtil.isNotEmpty(upgradeTaskList)) { | 105 | if (CollUtil.isNotEmpty(upgradeTaskList)) { |
| 118 | throw exception(OTA_UPGRADE_TASK_NAME_DUPLICATE); | 106 | throw exception(OTA_UPGRADE_TASK_NAME_DUPLICATE); |
| 119 | } | 107 | } |
| 120 | } | 108 | } |
| 121 | 109 | ||
| 122 | - /** | ||
| 123 | - * 验证升级任务的范围和设备列表的有效性。 | ||
| 124 | - * | ||
| 125 | - * @param scope 升级任务的范围,参考 IotOtaUpgradeTaskScopeEnum 枚举值 | ||
| 126 | - * @param deviceIds 设备ID列表,当范围为"选择设备"时,该列表不能为空 | ||
| 127 | - * @param productId 产品ID,当范围为"所有设备"时,用于获取设备列表 | ||
| 128 | - * @throws cn.iocoder.yudao.framework.common.exception.ServiceException,抛出相应的异常 | ||
| 129 | - */ | ||
| 130 | private void validateScopeAndDevice(Integer scope, List<Long> deviceIds, Long productId) { | 110 | private void validateScopeAndDevice(Integer scope, List<Long> deviceIds, Long productId) { |
| 131 | if (Objects.equals(scope, IotOtaTaskDeviceScopeEnum.SELECT.getScope())) { | 111 | if (Objects.equals(scope, IotOtaTaskDeviceScopeEnum.SELECT.getScope())) { |
| 132 | if (CollUtil.isEmpty(deviceIds)) { | 112 | if (CollUtil.isEmpty(deviceIds)) { |
| @@ -143,30 +123,24 @@ public class IotOtaUpgradeTaskServiceImpl implements IotOtaUpgradeTaskService { | @@ -143,30 +123,24 @@ public class IotOtaUpgradeTaskServiceImpl implements IotOtaUpgradeTaskService { | ||
| 143 | } | 123 | } |
| 144 | } | 124 | } |
| 145 | 125 | ||
| 146 | - /** | ||
| 147 | - * 验证升级任务是否存在 | ||
| 148 | - */ | ||
| 149 | private IotOtaTaskDO validateUpgradeTaskExists(Long id) { | 126 | private IotOtaTaskDO validateUpgradeTaskExists(Long id) { |
| 150 | - IotOtaTaskDO upgradeTask = upgradeTaskMapper.selectById(id); | 127 | + IotOtaTaskDO upgradeTask = otaTaskMapper.selectById(id); |
| 151 | if (Objects.isNull(upgradeTask)) { | 128 | if (Objects.isNull(upgradeTask)) { |
| 152 | throw exception(OTA_UPGRADE_TASK_NOT_EXISTS); | 129 | throw exception(OTA_UPGRADE_TASK_NOT_EXISTS); |
| 153 | } | 130 | } |
| 154 | return upgradeTask; | 131 | return upgradeTask; |
| 155 | } | 132 | } |
| 156 | 133 | ||
| 157 | - /** | ||
| 158 | - * 初始化升级任务 | ||
| 159 | - */ | ||
| 160 | - private IotOtaTaskDO initOtaUpgradeTask(IotOtaUpgradeTaskSaveReqVO createReqVO, Long productId) { | 134 | + private IotOtaTaskDO initOtaUpgradeTask(IotOtaTaskCreateReqVO createReqVO, Long productId) { |
| 161 | IotOtaTaskDO upgradeTask = BeanUtils.toBean(createReqVO, IotOtaTaskDO.class); | 135 | IotOtaTaskDO upgradeTask = BeanUtils.toBean(createReqVO, IotOtaTaskDO.class); |
| 162 | upgradeTask.setDeviceTotalCount(Convert.toLong(CollUtil.size(createReqVO.getDeviceIds()))) | 136 | upgradeTask.setDeviceTotalCount(Convert.toLong(CollUtil.size(createReqVO.getDeviceIds()))) |
| 163 | .setStatus(IotOtaTaskStatusEnum.IN_PROGRESS.getStatus()); | 137 | .setStatus(IotOtaTaskStatusEnum.IN_PROGRESS.getStatus()); |
| 164 | 138 | ||
| 165 | - if (Objects.equals(createReqVO.getScope(), IotOtaTaskDeviceScopeEnum.ALL.getScope())) { | 139 | + if (Objects.equals(createReqVO.getDeviceScope(), IotOtaTaskDeviceScopeEnum.ALL.getScope())) { |
| 166 | List<IotDeviceDO> deviceList = deviceService.getDeviceListByProductId(productId); | 140 | List<IotDeviceDO> deviceList = deviceService.getDeviceListByProductId(productId); |
| 167 | upgradeTask.setDeviceTotalCount((long) deviceList.size()); | 141 | upgradeTask.setDeviceTotalCount((long) deviceList.size()); |
| 168 | - upgradeTask.setDeviceIds( | ||
| 169 | - deviceList.stream().map(IotDeviceDO::getId).collect(Collectors.toList())); | 142 | +// upgradeTask.setDeviceIds( |
| 143 | +// deviceList.stream().map(IotDeviceDO::getId).collect(Collectors.toList())); | ||
| 170 | } | 144 | } |
| 171 | return upgradeTask; | 145 | return upgradeTask; |
| 172 | } | 146 | } |
yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/service/ota/IotOtaUpgradeTaskService.java deleted
| 1 | -package cn.iocoder.yudao.module.iot.service.ota; | ||
| 2 | - | ||
| 3 | -import cn.iocoder.yudao.framework.common.pojo.PageResult; | ||
| 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; | ||
| 6 | -import cn.iocoder.yudao.module.iot.dal.dataobject.ota.IotOtaTaskDO; | ||
| 7 | -import jakarta.validation.Valid; | ||
| 8 | - | ||
| 9 | -import java.util.List; | ||
| 10 | - | ||
| 11 | -/** | ||
| 12 | - * IoT OTA升级任务 Service 接口 | ||
| 13 | - * | ||
| 14 | - * @author Shelly Chan | ||
| 15 | - */ | ||
| 16 | -public interface IotOtaUpgradeTaskService { | ||
| 17 | - | ||
| 18 | - /** | ||
| 19 | - * 创建OTA升级任务 | ||
| 20 | - * | ||
| 21 | - * @param createReqVO OTA升级任务的创建请求对象,包含创建任务所需的信息 | ||
| 22 | - * @return 创建成功的OTA升级任务的ID | ||
| 23 | - */ | ||
| 24 | - Long createUpgradeTask(@Valid IotOtaUpgradeTaskSaveReqVO createReqVO); | ||
| 25 | - | ||
| 26 | - /** | ||
| 27 | - * 取消OTA升级任务 | ||
| 28 | - * | ||
| 29 | - * @param id 要取消的OTA升级任务的ID | ||
| 30 | - */ | ||
| 31 | - void cancelUpgradeTask(Long id); | ||
| 32 | - | ||
| 33 | - /** | ||
| 34 | - * 根据ID获取OTA升级任务的详细信息 | ||
| 35 | - * | ||
| 36 | - * @param id OTA升级任务的ID | ||
| 37 | - * @return OTA升级任务的详细信息对象 | ||
| 38 | - */ | ||
| 39 | - IotOtaTaskDO getUpgradeTask(Long id); | ||
| 40 | - | ||
| 41 | - /** | ||
| 42 | - * 分页查询OTA升级任务 | ||
| 43 | - * | ||
| 44 | - * @param pageReqVO OTA升级任务的分页查询请求对象,包含查询条件和分页信息 | ||
| 45 | - * @return 分页查询结果,包含OTA升级任务列表和总记录数 | ||
| 46 | - */ | ||
| 47 | - PageResult<IotOtaTaskDO> getUpgradeTaskPage(@Valid IotOtaUpgradeTaskPageReqVO pageReqVO); | ||
| 48 | - | ||
| 49 | - /** | ||
| 50 | - * 根据任务状态获取升级任务列表 | ||
| 51 | - * | ||
| 52 | - * @param state 任务状态,用于筛选符合条件的升级任务 | ||
| 53 | - * @return 返回符合指定状态的升级任务列表,列表中的元素为 IotOtaUpgradeTaskDO 对象 | ||
| 54 | - */ | ||
| 55 | - List<IotOtaTaskDO> getUpgradeTaskByState(Integer state); | ||
| 56 | - | ||
| 57 | - /** | ||
| 58 | - * 更新升级任务的状态。 | ||
| 59 | - * <p> | ||
| 60 | - * 该函数用于根据任务ID更新指定升级任务的状态。通常用于在任务执行过程中 | ||
| 61 | - * 更新任务的状态,例如从“进行中”变为“已完成”或“失败”。 | ||
| 62 | - * | ||
| 63 | - * @param id 升级任务的唯一标识符,类型为Long。不能为null。 | ||
| 64 | - * @param status 要更新的任务状态,类型为Integer。通常表示任务的状态码,如0表示未开始,1表示进行中,2表示已完成等。 | ||
| 65 | - */ | ||
| 66 | - void updateUpgradeTaskStatus(Long id, Integer status); | ||
| 67 | - | ||
| 68 | -} |