Commit f6366d9b550117a450915a2dd1ce9fde01939419

Authored by YunaiV
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&lt;IotDeviceDO&gt; { @@ -25,7 +25,7 @@ public interface IotDeviceMapper extends BaseMapperX&lt;IotDeviceDO&gt; {
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());