Commit f6366d9b550117a450915a2dd1ce9fde01939419
1 parent
f14cc470
【功能修改】IoT:设备状态从 status 到 state,移除已禁用
Showing
11 changed files
with
42 additions
and
104 deletions
yudao-module-iot/yudao-module-iot-api/src/main/java/cn/iocoder/yudao/module/iot/api/device/dto/IotDeviceStatusUpdateReqDTO.java
| 1 | package cn.iocoder.yudao.module.iot.api.device.dto; | 1 | package cn.iocoder.yudao.module.iot.api.device.dto; |
| 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.device.IotDeviceStatusEnum; | 4 | +import cn.iocoder.yudao.module.iot.enums.device.IotDeviceStateEnum; |
| 5 | import jakarta.validation.constraints.NotEmpty; | 5 | import jakarta.validation.constraints.NotEmpty; |
| 6 | import lombok.Data; | 6 | import lombok.Data; |
| 7 | import lombok.NoArgsConstructor; | 7 | import lombok.NoArgsConstructor; |
| @@ -19,7 +19,7 @@ public class IotDeviceStatusUpdateReqDTO extends IotDeviceUpstreamAbstractReqDTO | @@ -19,7 +19,7 @@ public class IotDeviceStatusUpdateReqDTO extends IotDeviceUpstreamAbstractReqDTO | ||
| 19 | * 设备状态 | 19 | * 设备状态 |
| 20 | */ | 20 | */ |
| 21 | @NotEmpty(message = "设备状态不能为空") | 21 | @NotEmpty(message = "设备状态不能为空") |
| 22 | - @InEnum(IotDeviceStatusEnum.class) // 只使用:在线、离线 | 22 | + @InEnum(IotDeviceStateEnum.class) // 只使用:在线、离线 |
| 23 | private Integer status; | 23 | private Integer status; |
| 24 | 24 | ||
| 25 | } | 25 | } |
yudao-module-iot/yudao-module-iot-api/src/main/java/cn/iocoder/yudao/module/iot/enums/DictTypeConstants.java
| @@ -14,6 +14,6 @@ public class DictTypeConstants { | @@ -14,6 +14,6 @@ public class DictTypeConstants { | ||
| 14 | public static final String DATA_FORMAT = "iot_data_format"; | 14 | public static final String DATA_FORMAT = "iot_data_format"; |
| 15 | public static final String VALIDATE_TYPE = "iot_validate_type"; | 15 | public static final String VALIDATE_TYPE = "iot_validate_type"; |
| 16 | 16 | ||
| 17 | - public static final String DEVICE_STATUS = "iot_device_status"; | 17 | + public static final String DEVICE_STATE = "iot_device_state"; |
| 18 | 18 | ||
| 19 | } | 19 | } |
yudao-module-iot/yudao-module-iot-api/src/main/java/cn/iocoder/yudao/module/iot/enums/device/IotDeviceStatusEnum.java renamed to yudao-module-iot/yudao-module-iot-api/src/main/java/cn/iocoder/yudao/module/iot/enums/device/IotDeviceStateEnum.java
| @@ -2,6 +2,7 @@ package cn.iocoder.yudao.module.iot.enums.device; | @@ -2,6 +2,7 @@ package cn.iocoder.yudao.module.iot.enums.device; | ||
| 2 | 2 | ||
| 3 | import cn.iocoder.yudao.framework.common.core.ArrayValuable; | 3 | import cn.iocoder.yudao.framework.common.core.ArrayValuable; |
| 4 | import lombok.Getter; | 4 | import lombok.Getter; |
| 5 | +import lombok.RequiredArgsConstructor; | ||
| 5 | 6 | ||
| 6 | import java.util.Arrays; | 7 | import java.util.Arrays; |
| 7 | 8 | ||
| @@ -10,43 +11,25 @@ import java.util.Arrays; | @@ -10,43 +11,25 @@ import java.util.Arrays; | ||
| 10 | * | 11 | * |
| 11 | * @author haohao | 12 | * @author haohao |
| 12 | */ | 13 | */ |
| 14 | +@RequiredArgsConstructor | ||
| 13 | @Getter | 15 | @Getter |
| 14 | -public enum IotDeviceStatusEnum implements ArrayValuable<Integer> { | 16 | +public enum IotDeviceStateEnum implements ArrayValuable<Integer> { |
| 15 | 17 | ||
| 16 | INACTIVE(0, "未激活"), | 18 | INACTIVE(0, "未激活"), |
| 17 | ONLINE(1, "在线"), | 19 | ONLINE(1, "在线"), |
| 18 | - OFFLINE(2, "离线"), | ||
| 19 | - DISABLED(3, "已禁用"); | 20 | + OFFLINE(2, "离线"); |
| 20 | 21 | ||
| 21 | - public static final Integer[] ARRAYS = Arrays.stream(values()).map(IotDeviceStatusEnum::getStatus).toArray(Integer[]::new); | 22 | + public static final Integer[] ARRAYS = Arrays.stream(values()).map(IotDeviceStateEnum::getState).toArray(Integer[]::new); |
| 22 | 23 | ||
| 23 | /** | 24 | /** |
| 24 | * 状态 | 25 | * 状态 |
| 25 | */ | 26 | */ |
| 26 | - private final Integer status; | 27 | + private final Integer state; |
| 27 | /** | 28 | /** |
| 28 | * 状态名 | 29 | * 状态名 |
| 29 | */ | 30 | */ |
| 30 | private final String name; | 31 | private final String name; |
| 31 | 32 | ||
| 32 | - IotDeviceStatusEnum(Integer status, String name) { | ||
| 33 | - this.status = status; | ||
| 34 | - this.name = name; | ||
| 35 | - } | ||
| 36 | - | ||
| 37 | - public static IotDeviceStatusEnum fromStatus(Integer status) { | ||
| 38 | - for (IotDeviceStatusEnum value : values()) { | ||
| 39 | - if (value.getStatus().equals(status)) { | ||
| 40 | - return value; | ||
| 41 | - } | ||
| 42 | - } | ||
| 43 | - return null; | ||
| 44 | - } | ||
| 45 | - | ||
| 46 | - public static boolean isValidStatus(Integer status) { | ||
| 47 | - return fromStatus(status) != null; | ||
| 48 | - } | ||
| 49 | - | ||
| 50 | @Override | 33 | @Override |
| 51 | public Integer[] array() { | 34 | public Integer[] array() { |
| 52 | return ARRAYS; | 35 | return ARRAYS; |
yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/controller/admin/device/IotDeviceController.java
| @@ -45,14 +45,6 @@ public class IotDeviceController { | @@ -45,14 +45,6 @@ public class IotDeviceController { | ||
| 45 | return success(deviceService.createDevice(createReqVO)); | 45 | return success(deviceService.createDevice(createReqVO)); |
| 46 | } | 46 | } |
| 47 | 47 | ||
| 48 | - @PutMapping("/update-status") | ||
| 49 | - @Operation(summary = "更新设备状态") | ||
| 50 | - @PreAuthorize("@ss.hasPermission('iot:device:update')") | ||
| 51 | - public CommonResult<Boolean> updateDeviceStatus(@Valid @RequestBody IotDeviceStatusUpdateReqVO updateReqVO) { | ||
| 52 | - deviceService.updateDeviceStatus(updateReqVO); | ||
| 53 | - return success(true); | ||
| 54 | - } | ||
| 55 | - | ||
| 56 | @PutMapping("/update") | 48 | @PutMapping("/update") |
| 57 | @Operation(summary = "更新设备") | 49 | @Operation(summary = "更新设备") |
| 58 | @PreAuthorize("@ss.hasPermission('iot:device:update')") | 50 | @PreAuthorize("@ss.hasPermission('iot:device:update')") |
yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/controller/admin/device/vo/device/IotDevicePageReqVO.java
| @@ -2,7 +2,7 @@ package cn.iocoder.yudao.module.iot.controller.admin.device.vo.device; | @@ -2,7 +2,7 @@ package cn.iocoder.yudao.module.iot.controller.admin.device.vo.device; | ||
| 2 | 2 | ||
| 3 | import cn.iocoder.yudao.framework.common.pojo.PageParam; | 3 | import cn.iocoder.yudao.framework.common.pojo.PageParam; |
| 4 | import cn.iocoder.yudao.framework.common.validation.InEnum; | 4 | import cn.iocoder.yudao.framework.common.validation.InEnum; |
| 5 | -import cn.iocoder.yudao.module.iot.enums.device.IotDeviceStatusEnum; | 5 | +import cn.iocoder.yudao.module.iot.enums.device.IotDeviceStateEnum; |
| 6 | import cn.iocoder.yudao.module.iot.enums.product.IotProductDeviceTypeEnum; | 6 | import cn.iocoder.yudao.module.iot.enums.product.IotProductDeviceTypeEnum; |
| 7 | import io.swagger.v3.oas.annotations.media.Schema; | 7 | import io.swagger.v3.oas.annotations.media.Schema; |
| 8 | import lombok.Data; | 8 | import lombok.Data; |
| @@ -25,7 +25,7 @@ public class IotDevicePageReqVO extends PageParam { | @@ -25,7 +25,7 @@ public class IotDevicePageReqVO extends PageParam { | ||
| 25 | private Integer deviceType; | 25 | private Integer deviceType; |
| 26 | 26 | ||
| 27 | @Schema(description = "设备状态", example = "1") | 27 | @Schema(description = "设备状态", example = "1") |
| 28 | - @InEnum(IotDeviceStatusEnum.class) | 28 | + @InEnum(IotDeviceStateEnum.class) |
| 29 | private Integer status; | 29 | private Integer status; |
| 30 | 30 | ||
| 31 | @Schema(description = "设备分组编号", example = "1024") | 31 | @Schema(description = "设备分组编号", example = "1024") |
yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/controller/admin/device/vo/device/IotDeviceRespVO.java
| @@ -10,7 +10,7 @@ import lombok.Data; | @@ -10,7 +10,7 @@ import lombok.Data; | ||
| 10 | import java.time.LocalDateTime; | 10 | import java.time.LocalDateTime; |
| 11 | import java.util.Set; | 11 | import java.util.Set; |
| 12 | 12 | ||
| 13 | -import static cn.iocoder.yudao.module.iot.enums.DictTypeConstants.DEVICE_STATUS; | 13 | +import static cn.iocoder.yudao.module.iot.enums.DictTypeConstants.DEVICE_STATE; |
| 14 | 14 | ||
| 15 | @Schema(description = "管理后台 - IoT 设备 Response VO") | 15 | @Schema(description = "管理后台 - IoT 设备 Response VO") |
| 16 | @Data | 16 | @Data |
| @@ -60,20 +60,16 @@ public class IotDeviceRespVO { | @@ -60,20 +60,16 @@ public class IotDeviceRespVO { | ||
| 60 | 60 | ||
| 61 | @Schema(description = "设备状态", requiredMode = Schema.RequiredMode.REQUIRED, example = "1") | 61 | @Schema(description = "设备状态", requiredMode = Schema.RequiredMode.REQUIRED, example = "1") |
| 62 | @ExcelProperty(value = "设备状态", converter = DictConvert.class) | 62 | @ExcelProperty(value = "设备状态", converter = DictConvert.class) |
| 63 | - @DictFormat(DEVICE_STATUS) | ||
| 64 | - private Integer status; | ||
| 65 | - | ||
| 66 | - @Schema(description = "设备状态最后更新时间") | ||
| 67 | - @ExcelProperty("设备状态最后更新时间") | ||
| 68 | - private LocalDateTime statusLastUpdateTime; | 63 | + @DictFormat(DEVICE_STATE) |
| 64 | + private Integer state; | ||
| 69 | 65 | ||
| 70 | @Schema(description = "最后上线时间") | 66 | @Schema(description = "最后上线时间") |
| 71 | @ExcelProperty("最后上线时间") | 67 | @ExcelProperty("最后上线时间") |
| 72 | - private LocalDateTime lastOnlineTime; | 68 | + private LocalDateTime onlineTime; |
| 73 | 69 | ||
| 74 | @Schema(description = "最后离线时间") | 70 | @Schema(description = "最后离线时间") |
| 75 | @ExcelProperty("最后离线时间") | 71 | @ExcelProperty("最后离线时间") |
| 76 | - private LocalDateTime lastOfflineTime; | 72 | + private LocalDateTime offlineTime; |
| 77 | 73 | ||
| 78 | @Schema(description = "设备激活时间") | 74 | @Schema(description = "设备激活时间") |
| 79 | @ExcelProperty("设备激活时间") | 75 | @ExcelProperty("设备激活时间") |
yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/controller/admin/device/vo/device/IotDeviceStatusUpdateReqVO.java deleted
| 1 | -package cn.iocoder.yudao.module.iot.controller.admin.device.vo.device; | ||
| 2 | - | ||
| 3 | -import cn.iocoder.yudao.framework.common.validation.InEnum; | ||
| 4 | -import cn.iocoder.yudao.module.iot.enums.device.IotDeviceStatusEnum; | ||
| 5 | -import io.swagger.v3.oas.annotations.media.Schema; | ||
| 6 | -import jakarta.validation.constraints.NotNull; | ||
| 7 | -import lombok.Data; | ||
| 8 | - | ||
| 9 | -@Schema(description = "管理后台 - IoT 设备状态更新 Request VO") | ||
| 10 | -@Data | ||
| 11 | -public class IotDeviceStatusUpdateReqVO { | ||
| 12 | - | ||
| 13 | - @Schema(description = "设备编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1") | ||
| 14 | - @NotNull(message = "设备编号不能为空") | ||
| 15 | - private Long id; | ||
| 16 | - | ||
| 17 | - @Schema(description = "设备状态", requiredMode = Schema.RequiredMode.REQUIRED, example = "1") | ||
| 18 | - @NotNull(message = "设备状态不能为空") | ||
| 19 | - @InEnum(IotDeviceStatusEnum.class) | ||
| 20 | - private Integer status; | ||
| 21 | -} |
yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/dal/dataobject/device/IotDeviceDO.java
| @@ -3,7 +3,7 @@ package cn.iocoder.yudao.module.iot.dal.dataobject.device; | @@ -3,7 +3,7 @@ package cn.iocoder.yudao.module.iot.dal.dataobject.device; | ||
| 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.framework.mybatis.core.type.LongSetTypeHandler; | 4 | import cn.iocoder.yudao.framework.mybatis.core.type.LongSetTypeHandler; |
| 5 | import cn.iocoder.yudao.module.iot.dal.dataobject.product.IotProductDO; | 5 | import cn.iocoder.yudao.module.iot.dal.dataobject.product.IotProductDO; |
| 6 | -import cn.iocoder.yudao.module.iot.enums.device.IotDeviceStatusEnum; | 6 | +import cn.iocoder.yudao.module.iot.enums.device.IotDeviceStateEnum; |
| 7 | import com.baomidou.mybatisplus.annotation.KeySequence; | 7 | import com.baomidou.mybatisplus.annotation.KeySequence; |
| 8 | import com.baomidou.mybatisplus.annotation.TableField; | 8 | import com.baomidou.mybatisplus.annotation.TableField; |
| 9 | import com.baomidou.mybatisplus.annotation.TableId; | 9 | import com.baomidou.mybatisplus.annotation.TableId; |
| @@ -94,22 +94,17 @@ public class IotDeviceDO extends BaseDO { | @@ -94,22 +94,17 @@ public class IotDeviceDO extends BaseDO { | ||
| 94 | /** | 94 | /** |
| 95 | * 设备状态 | 95 | * 设备状态 |
| 96 | * <p> | 96 | * <p> |
| 97 | - * 枚举 {@link IotDeviceStatusEnum} | 97 | + * 枚举 {@link IotDeviceStateEnum} |
| 98 | */ | 98 | */ |
| 99 | - private Integer status; | ||
| 100 | - | ||
| 101 | - /** | ||
| 102 | - * 设备状态最后更新时间 | ||
| 103 | - */ | ||
| 104 | - private LocalDateTime statusLastUpdateTime; | 99 | + private Integer state; |
| 105 | /** | 100 | /** |
| 106 | * 最后上线时间 | 101 | * 最后上线时间 |
| 107 | */ | 102 | */ |
| 108 | - private LocalDateTime lastOnlineTime; | 103 | + private LocalDateTime onlineTime; |
| 109 | /** | 104 | /** |
| 110 | * 最后离线时间 | 105 | * 最后离线时间 |
| 111 | */ | 106 | */ |
| 112 | - private LocalDateTime lastOfflineTime; | 107 | + private LocalDateTime offlineTime; |
| 113 | /** | 108 | /** |
| 114 | * 设备激活时间 | 109 | * 设备激活时间 |
| 115 | */ | 110 | */ |
yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/dal/mysql/device/IotDeviceMapper.java
| @@ -25,7 +25,7 @@ public interface IotDeviceMapper extends BaseMapperX<IotDeviceDO> { | @@ -25,7 +25,7 @@ public interface IotDeviceMapper extends BaseMapperX<IotDeviceDO> { | ||
| 25 | .eqIfPresent(IotDeviceDO::getProductId, reqVO.getProductId()) | 25 | .eqIfPresent(IotDeviceDO::getProductId, reqVO.getProductId()) |
| 26 | .eqIfPresent(IotDeviceDO::getDeviceType, reqVO.getDeviceType()) | 26 | .eqIfPresent(IotDeviceDO::getDeviceType, reqVO.getDeviceType()) |
| 27 | .likeIfPresent(IotDeviceDO::getNickname, reqVO.getNickname()) | 27 | .likeIfPresent(IotDeviceDO::getNickname, reqVO.getNickname()) |
| 28 | - .eqIfPresent(IotDeviceDO::getStatus, reqVO.getStatus()) | 28 | + .eqIfPresent(IotDeviceDO::getState, reqVO.getStatus()) |
| 29 | .apply(ObjectUtil.isNotNull(reqVO.getGroupId()), "FIND_IN_SET(" + reqVO.getGroupId() + ",group_ids) > 0") | 29 | .apply(ObjectUtil.isNotNull(reqVO.getGroupId()), "FIND_IN_SET(" + reqVO.getGroupId() + ",group_ids) > 0") |
| 30 | .orderByDesc(IotDeviceDO::getId)); | 30 | .orderByDesc(IotDeviceDO::getId)); |
| 31 | } | 31 | } |
yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/service/device/IotDeviceService.java
| @@ -34,9 +34,10 @@ public interface IotDeviceService { | @@ -34,9 +34,10 @@ public interface IotDeviceService { | ||
| 34 | /** | 34 | /** |
| 35 | * 更新设备状态 | 35 | * 更新设备状态 |
| 36 | * | 36 | * |
| 37 | - * @param updateReqVO 更新信息 | 37 | + * @param id 编号 |
| 38 | + * @param state 状态 | ||
| 38 | */ | 39 | */ |
| 39 | - void updateDeviceStatus(IotDeviceStatusUpdateReqVO updateReqVO); | 40 | + void updateDeviceState(Long id, Integer state); |
| 40 | 41 | ||
| 41 | /** | 42 | /** |
| 42 | * 更新设备分组 | 43 | * 更新设备分组 |
yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/service/device/IotDeviceServiceImpl.java
| @@ -19,7 +19,7 @@ import cn.iocoder.yudao.module.iot.dal.dataobject.product.IotProductDO; | @@ -19,7 +19,7 @@ import cn.iocoder.yudao.module.iot.dal.dataobject.product.IotProductDO; | ||
| 19 | import cn.iocoder.yudao.module.iot.dal.mysql.device.IotDeviceMapper; | 19 | import cn.iocoder.yudao.module.iot.dal.mysql.device.IotDeviceMapper; |
| 20 | import cn.iocoder.yudao.module.iot.dal.redis.RedisKeyConstants; | 20 | import cn.iocoder.yudao.module.iot.dal.redis.RedisKeyConstants; |
| 21 | import cn.iocoder.yudao.module.iot.enums.device.IotDeviceMessageTypeEnum; | 21 | import cn.iocoder.yudao.module.iot.enums.device.IotDeviceMessageTypeEnum; |
| 22 | -import cn.iocoder.yudao.module.iot.enums.device.IotDeviceStatusEnum; | 22 | +import cn.iocoder.yudao.module.iot.enums.device.IotDeviceStateEnum; |
| 23 | import cn.iocoder.yudao.module.iot.enums.product.IotProductDeviceTypeEnum; | 23 | import cn.iocoder.yudao.module.iot.enums.product.IotProductDeviceTypeEnum; |
| 24 | import cn.iocoder.yudao.module.iot.service.device.upstream.IotDeviceUpstreamService; | 24 | import cn.iocoder.yudao.module.iot.service.device.upstream.IotDeviceUpstreamService; |
| 25 | import cn.iocoder.yudao.module.iot.service.product.IotProductService; | 25 | import cn.iocoder.yudao.module.iot.service.product.IotProductService; |
| @@ -89,7 +89,6 @@ public class IotDeviceServiceImpl implements IotDeviceService { | @@ -89,7 +89,6 @@ public class IotDeviceServiceImpl implements IotDeviceService { | ||
| 89 | deviceGroupService.validateDeviceGroupExists(createReqVO.getGroupIds()); | 89 | deviceGroupService.validateDeviceGroupExists(createReqVO.getGroupIds()); |
| 90 | 90 | ||
| 91 | // 2.1 转换 VO 为 DO | 91 | // 2.1 转换 VO 为 DO |
| 92 | - // TODO @芋艿:state 相关的参数。另外,到底叫 state,还是 status 好! | ||
| 93 | // TODO @芋艿:各种 mqtt 是不是可以简化! | 92 | // TODO @芋艿:各种 mqtt 是不是可以简化! |
| 94 | IotDeviceDO device = BeanUtils.toBean(createReqVO, IotDeviceDO.class, o -> { | 93 | IotDeviceDO device = BeanUtils.toBean(createReqVO, IotDeviceDO.class, o -> { |
| 95 | o.setProductKey(product.getProductKey()).setDeviceType(product.getDeviceType()); | 94 | o.setProductKey(product.getProductKey()).setDeviceType(product.getDeviceType()); |
| @@ -99,7 +98,7 @@ public class IotDeviceServiceImpl implements IotDeviceService { | @@ -99,7 +98,7 @@ public class IotDeviceServiceImpl implements IotDeviceService { | ||
| 99 | .setMqttUsername(generateMqttUsername(o.getDeviceName(), o.getProductKey())) | 98 | .setMqttUsername(generateMqttUsername(o.getDeviceName(), o.getProductKey())) |
| 100 | .setMqttPassword(generateMqttPassword()); | 99 | .setMqttPassword(generateMqttPassword()); |
| 101 | // 设置设备状态为未激活 | 100 | // 设置设备状态为未激活 |
| 102 | - o.setStatus(IotDeviceStatusEnum.INACTIVE.getStatus()).setStatusLastUpdateTime(LocalDateTime.now()); | 101 | + o.setState(IotDeviceStateEnum.INACTIVE.getState()); |
| 103 | }); | 102 | }); |
| 104 | // 2.2 插入到数据库 | 103 | // 2.2 插入到数据库 |
| 105 | deviceMapper.insert(device); | 104 | deviceMapper.insert(device); |
| @@ -232,29 +231,22 @@ public class IotDeviceServiceImpl implements IotDeviceService { | @@ -232,29 +231,22 @@ public class IotDeviceServiceImpl implements IotDeviceService { | ||
| 232 | } | 231 | } |
| 233 | 232 | ||
| 234 | @Override | 233 | @Override |
| 235 | - public void updateDeviceStatus(IotDeviceStatusUpdateReqVO updateReqVO) { | ||
| 236 | - // TODO @芋艿:state 相关的参数。另外,到底叫 state,还是 status 好! | ||
| 237 | - // TODO @芋艿:各种时间,需要 check 下,优化处理下! | 234 | + public void updateDeviceState(Long id, Integer state) { |
| 238 | // 1. 校验存在 | 235 | // 1. 校验存在 |
| 239 | - IotDeviceDO device = validateDeviceExists(updateReqVO.getId()); | 236 | + IotDeviceDO device = validateDeviceExists(id); |
| 240 | 237 | ||
| 241 | - // 2.1 更新状态和更新时间 | ||
| 242 | - IotDeviceDO updateDevice = BeanUtils.toBean(updateReqVO, IotDeviceDO.class) | ||
| 243 | - .setStatusLastUpdateTime(LocalDateTime.now()); | ||
| 244 | - // 2.2 更新状态相关时间 | ||
| 245 | - if (Objects.equals(device.getStatus(), IotDeviceStatusEnum.INACTIVE.getStatus()) | ||
| 246 | - && Objects.equals(updateDevice.getStatus(), IotDeviceStatusEnum.ONLINE.getStatus())) { | ||
| 247 | - // 从未激活到在线,设置激活时间和最后上线时间 | ||
| 248 | - updateDevice.setActiveTime(LocalDateTime.now()).setLastOnlineTime(LocalDateTime.now()); | ||
| 249 | - } else if (Objects.equals(updateDevice.getStatus(), IotDeviceStatusEnum.ONLINE.getStatus())) { | ||
| 250 | - // 如果是上线,设置最后上线时间 | ||
| 251 | - updateDevice.setLastOnlineTime(LocalDateTime.now()); | ||
| 252 | - } else if (Objects.equals(updateDevice.getStatus(), IotDeviceStatusEnum.OFFLINE.getStatus())) { | ||
| 253 | - // 如果是离线,设置最后离线时间 | ||
| 254 | - updateDevice.setLastOfflineTime(LocalDateTime.now()); | 238 | + // 2. 更新状态和时间 |
| 239 | + IotDeviceDO updateObj = new IotDeviceDO().setId(id).setState(state); | ||
| 240 | + if (device.getOnlineTime() == null | ||
| 241 | + && Objects.equals(state, IotDeviceStateEnum.ONLINE.getState())) { | ||
| 242 | + updateObj.setActiveTime(LocalDateTime.now()); | ||
| 255 | } | 243 | } |
| 256 | - // 2.3 更新到数据库 | ||
| 257 | - deviceMapper.updateById(updateDevice); | 244 | + if (Objects.equals(state, IotDeviceStateEnum.ONLINE.getState())) { |
| 245 | + updateObj.setOnlineTime(LocalDateTime.now()); | ||
| 246 | + } else if (Objects.equals(state, IotDeviceStateEnum.OFFLINE.getState())) { | ||
| 247 | + updateObj.setOfflineTime(LocalDateTime.now()); | ||
| 248 | + } | ||
| 249 | + deviceMapper.updateById(updateObj); | ||
| 258 | 250 | ||
| 259 | // 3. 清空对应缓存 | 251 | // 3. 清空对应缓存 |
| 260 | deleteDeviceCache(device); | 252 | deleteDeviceCache(device); |
| @@ -417,8 +409,8 @@ public class IotDeviceServiceImpl implements IotDeviceService { | @@ -417,8 +409,8 @@ public class IotDeviceServiceImpl implements IotDeviceService { | ||
| 417 | // 2.3 情况三:状态变更 | 409 | // 2.3 情况三:状态变更 |
| 418 | if (Objects.equals(reportReqVO.getType(), IotDeviceMessageTypeEnum.STATE.getType())) { | 410 | if (Objects.equals(reportReqVO.getType(), IotDeviceMessageTypeEnum.STATE.getType())) { |
| 419 | // TODO 芋艿:待实现 | 411 | // TODO 芋艿:待实现 |
| 420 | - updateDeviceStatus(new IotDeviceStatusUpdateReqVO().setId(device.getId()) | ||
| 421 | - .setStatus((Integer) reportReqVO.getData())); | 412 | +// updateDeviceState(new IotDeviceStatusUpdateReqVO().setId(device.getId()) |
| 413 | +// .setStatus((Integer) reportReqVO.getData())); | ||
| 422 | return; | 414 | return; |
| 423 | } | 415 | } |
| 424 | throw new IllegalArgumentException("未知的类型:" + reportReqVO.getType()); | 416 | throw new IllegalArgumentException("未知的类型:" + reportReqVO.getType()); |