【功能修改】IoT:设备状态从 status 到 state,移除已禁用
This commit is contained in:
parent
f14cc470aa
commit
f6366d9b55
|
@ -1,7 +1,7 @@
|
||||||
package cn.iocoder.yudao.module.iot.api.device.dto;
|
package cn.iocoder.yudao.module.iot.api.device.dto;
|
||||||
|
|
||||||
import cn.iocoder.yudao.framework.common.validation.InEnum;
|
import cn.iocoder.yudao.framework.common.validation.InEnum;
|
||||||
import cn.iocoder.yudao.module.iot.enums.device.IotDeviceStatusEnum;
|
import cn.iocoder.yudao.module.iot.enums.device.IotDeviceStateEnum;
|
||||||
import jakarta.validation.constraints.NotEmpty;
|
import jakarta.validation.constraints.NotEmpty;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
import lombok.NoArgsConstructor;
|
import lombok.NoArgsConstructor;
|
||||||
|
@ -19,7 +19,7 @@ public class IotDeviceStatusUpdateReqDTO extends IotDeviceUpstreamAbstractReqDTO
|
||||||
* 设备状态
|
* 设备状态
|
||||||
*/
|
*/
|
||||||
@NotEmpty(message = "设备状态不能为空")
|
@NotEmpty(message = "设备状态不能为空")
|
||||||
@InEnum(IotDeviceStatusEnum.class) // 只使用:在线、离线
|
@InEnum(IotDeviceStateEnum.class) // 只使用:在线、离线
|
||||||
private Integer status;
|
private Integer status;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -14,6 +14,6 @@ public class DictTypeConstants {
|
||||||
public static final String DATA_FORMAT = "iot_data_format";
|
public static final String DATA_FORMAT = "iot_data_format";
|
||||||
public static final String VALIDATE_TYPE = "iot_validate_type";
|
public static final String VALIDATE_TYPE = "iot_validate_type";
|
||||||
|
|
||||||
public static final String DEVICE_STATUS = "iot_device_status";
|
public static final String DEVICE_STATE = "iot_device_state";
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,38 @@
|
||||||
|
package cn.iocoder.yudao.module.iot.enums.device;
|
||||||
|
|
||||||
|
import cn.iocoder.yudao.framework.common.core.ArrayValuable;
|
||||||
|
import lombok.Getter;
|
||||||
|
import lombok.RequiredArgsConstructor;
|
||||||
|
|
||||||
|
import java.util.Arrays;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* IoT 设备状态枚举
|
||||||
|
*
|
||||||
|
* @author haohao
|
||||||
|
*/
|
||||||
|
@RequiredArgsConstructor
|
||||||
|
@Getter
|
||||||
|
public enum IotDeviceStateEnum implements ArrayValuable<Integer> {
|
||||||
|
|
||||||
|
INACTIVE(0, "未激活"),
|
||||||
|
ONLINE(1, "在线"),
|
||||||
|
OFFLINE(2, "离线");
|
||||||
|
|
||||||
|
public static final Integer[] ARRAYS = Arrays.stream(values()).map(IotDeviceStateEnum::getState).toArray(Integer[]::new);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 状态
|
||||||
|
*/
|
||||||
|
private final Integer state;
|
||||||
|
/**
|
||||||
|
* 状态名
|
||||||
|
*/
|
||||||
|
private final String name;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Integer[] array() {
|
||||||
|
return ARRAYS;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -1,55 +0,0 @@
|
||||||
package cn.iocoder.yudao.module.iot.enums.device;
|
|
||||||
|
|
||||||
import cn.iocoder.yudao.framework.common.core.ArrayValuable;
|
|
||||||
import lombok.Getter;
|
|
||||||
|
|
||||||
import java.util.Arrays;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* IoT 设备状态枚举
|
|
||||||
*
|
|
||||||
* @author haohao
|
|
||||||
*/
|
|
||||||
@Getter
|
|
||||||
public enum IotDeviceStatusEnum implements ArrayValuable<Integer> {
|
|
||||||
|
|
||||||
INACTIVE(0, "未激活"),
|
|
||||||
ONLINE(1, "在线"),
|
|
||||||
OFFLINE(2, "离线"),
|
|
||||||
DISABLED(3, "已禁用");
|
|
||||||
|
|
||||||
public static final Integer[] ARRAYS = Arrays.stream(values()).map(IotDeviceStatusEnum::getStatus).toArray(Integer[]::new);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 状态
|
|
||||||
*/
|
|
||||||
private final Integer status;
|
|
||||||
/**
|
|
||||||
* 状态名
|
|
||||||
*/
|
|
||||||
private final String name;
|
|
||||||
|
|
||||||
IotDeviceStatusEnum(Integer status, String name) {
|
|
||||||
this.status = status;
|
|
||||||
this.name = name;
|
|
||||||
}
|
|
||||||
|
|
||||||
public static IotDeviceStatusEnum fromStatus(Integer status) {
|
|
||||||
for (IotDeviceStatusEnum value : values()) {
|
|
||||||
if (value.getStatus().equals(status)) {
|
|
||||||
return value;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
public static boolean isValidStatus(Integer status) {
|
|
||||||
return fromStatus(status) != null;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public Integer[] array() {
|
|
||||||
return ARRAYS;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
|
@ -45,14 +45,6 @@ public class IotDeviceController {
|
||||||
return success(deviceService.createDevice(createReqVO));
|
return success(deviceService.createDevice(createReqVO));
|
||||||
}
|
}
|
||||||
|
|
||||||
@PutMapping("/update-status")
|
|
||||||
@Operation(summary = "更新设备状态")
|
|
||||||
@PreAuthorize("@ss.hasPermission('iot:device:update')")
|
|
||||||
public CommonResult<Boolean> updateDeviceStatus(@Valid @RequestBody IotDeviceStatusUpdateReqVO updateReqVO) {
|
|
||||||
deviceService.updateDeviceStatus(updateReqVO);
|
|
||||||
return success(true);
|
|
||||||
}
|
|
||||||
|
|
||||||
@PutMapping("/update")
|
@PutMapping("/update")
|
||||||
@Operation(summary = "更新设备")
|
@Operation(summary = "更新设备")
|
||||||
@PreAuthorize("@ss.hasPermission('iot:device:update')")
|
@PreAuthorize("@ss.hasPermission('iot:device:update')")
|
||||||
|
|
|
@ -2,7 +2,7 @@ package cn.iocoder.yudao.module.iot.controller.admin.device.vo.device;
|
||||||
|
|
||||||
import cn.iocoder.yudao.framework.common.pojo.PageParam;
|
import cn.iocoder.yudao.framework.common.pojo.PageParam;
|
||||||
import cn.iocoder.yudao.framework.common.validation.InEnum;
|
import cn.iocoder.yudao.framework.common.validation.InEnum;
|
||||||
import cn.iocoder.yudao.module.iot.enums.device.IotDeviceStatusEnum;
|
import cn.iocoder.yudao.module.iot.enums.device.IotDeviceStateEnum;
|
||||||
import cn.iocoder.yudao.module.iot.enums.product.IotProductDeviceTypeEnum;
|
import cn.iocoder.yudao.module.iot.enums.product.IotProductDeviceTypeEnum;
|
||||||
import io.swagger.v3.oas.annotations.media.Schema;
|
import io.swagger.v3.oas.annotations.media.Schema;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
@ -25,7 +25,7 @@ public class IotDevicePageReqVO extends PageParam {
|
||||||
private Integer deviceType;
|
private Integer deviceType;
|
||||||
|
|
||||||
@Schema(description = "设备状态", example = "1")
|
@Schema(description = "设备状态", example = "1")
|
||||||
@InEnum(IotDeviceStatusEnum.class)
|
@InEnum(IotDeviceStateEnum.class)
|
||||||
private Integer status;
|
private Integer status;
|
||||||
|
|
||||||
@Schema(description = "设备分组编号", example = "1024")
|
@Schema(description = "设备分组编号", example = "1024")
|
||||||
|
|
|
@ -10,7 +10,7 @@ import lombok.Data;
|
||||||
import java.time.LocalDateTime;
|
import java.time.LocalDateTime;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
|
|
||||||
import static cn.iocoder.yudao.module.iot.enums.DictTypeConstants.DEVICE_STATUS;
|
import static cn.iocoder.yudao.module.iot.enums.DictTypeConstants.DEVICE_STATE;
|
||||||
|
|
||||||
@Schema(description = "管理后台 - IoT 设备 Response VO")
|
@Schema(description = "管理后台 - IoT 设备 Response VO")
|
||||||
@Data
|
@Data
|
||||||
|
@ -60,20 +60,16 @@ public class IotDeviceRespVO {
|
||||||
|
|
||||||
@Schema(description = "设备状态", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
|
@Schema(description = "设备状态", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
|
||||||
@ExcelProperty(value = "设备状态", converter = DictConvert.class)
|
@ExcelProperty(value = "设备状态", converter = DictConvert.class)
|
||||||
@DictFormat(DEVICE_STATUS)
|
@DictFormat(DEVICE_STATE)
|
||||||
private Integer status;
|
private Integer state;
|
||||||
|
|
||||||
@Schema(description = "设备状态最后更新时间")
|
|
||||||
@ExcelProperty("设备状态最后更新时间")
|
|
||||||
private LocalDateTime statusLastUpdateTime;
|
|
||||||
|
|
||||||
@Schema(description = "最后上线时间")
|
@Schema(description = "最后上线时间")
|
||||||
@ExcelProperty("最后上线时间")
|
@ExcelProperty("最后上线时间")
|
||||||
private LocalDateTime lastOnlineTime;
|
private LocalDateTime onlineTime;
|
||||||
|
|
||||||
@Schema(description = "最后离线时间")
|
@Schema(description = "最后离线时间")
|
||||||
@ExcelProperty("最后离线时间")
|
@ExcelProperty("最后离线时间")
|
||||||
private LocalDateTime lastOfflineTime;
|
private LocalDateTime offlineTime;
|
||||||
|
|
||||||
@Schema(description = "设备激活时间")
|
@Schema(description = "设备激活时间")
|
||||||
@ExcelProperty("设备激活时间")
|
@ExcelProperty("设备激活时间")
|
||||||
|
|
|
@ -1,21 +0,0 @@
|
||||||
package cn.iocoder.yudao.module.iot.controller.admin.device.vo.device;
|
|
||||||
|
|
||||||
import cn.iocoder.yudao.framework.common.validation.InEnum;
|
|
||||||
import cn.iocoder.yudao.module.iot.enums.device.IotDeviceStatusEnum;
|
|
||||||
import io.swagger.v3.oas.annotations.media.Schema;
|
|
||||||
import jakarta.validation.constraints.NotNull;
|
|
||||||
import lombok.Data;
|
|
||||||
|
|
||||||
@Schema(description = "管理后台 - IoT 设备状态更新 Request VO")
|
|
||||||
@Data
|
|
||||||
public class IotDeviceStatusUpdateReqVO {
|
|
||||||
|
|
||||||
@Schema(description = "设备编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
|
|
||||||
@NotNull(message = "设备编号不能为空")
|
|
||||||
private Long id;
|
|
||||||
|
|
||||||
@Schema(description = "设备状态", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
|
|
||||||
@NotNull(message = "设备状态不能为空")
|
|
||||||
@InEnum(IotDeviceStatusEnum.class)
|
|
||||||
private Integer status;
|
|
||||||
}
|
|
|
@ -3,7 +3,7 @@ package cn.iocoder.yudao.module.iot.dal.dataobject.device;
|
||||||
import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
|
import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
|
||||||
import cn.iocoder.yudao.framework.mybatis.core.type.LongSetTypeHandler;
|
import cn.iocoder.yudao.framework.mybatis.core.type.LongSetTypeHandler;
|
||||||
import cn.iocoder.yudao.module.iot.dal.dataobject.product.IotProductDO;
|
import cn.iocoder.yudao.module.iot.dal.dataobject.product.IotProductDO;
|
||||||
import cn.iocoder.yudao.module.iot.enums.device.IotDeviceStatusEnum;
|
import cn.iocoder.yudao.module.iot.enums.device.IotDeviceStateEnum;
|
||||||
import com.baomidou.mybatisplus.annotation.KeySequence;
|
import com.baomidou.mybatisplus.annotation.KeySequence;
|
||||||
import com.baomidou.mybatisplus.annotation.TableField;
|
import com.baomidou.mybatisplus.annotation.TableField;
|
||||||
import com.baomidou.mybatisplus.annotation.TableId;
|
import com.baomidou.mybatisplus.annotation.TableId;
|
||||||
|
@ -94,22 +94,17 @@ public class IotDeviceDO extends BaseDO {
|
||||||
/**
|
/**
|
||||||
* 设备状态
|
* 设备状态
|
||||||
* <p>
|
* <p>
|
||||||
* 枚举 {@link IotDeviceStatusEnum}
|
* 枚举 {@link IotDeviceStateEnum}
|
||||||
*/
|
*/
|
||||||
private Integer status;
|
private Integer state;
|
||||||
|
|
||||||
/**
|
|
||||||
* 设备状态最后更新时间
|
|
||||||
*/
|
|
||||||
private LocalDateTime statusLastUpdateTime;
|
|
||||||
/**
|
/**
|
||||||
* 最后上线时间
|
* 最后上线时间
|
||||||
*/
|
*/
|
||||||
private LocalDateTime lastOnlineTime;
|
private LocalDateTime onlineTime;
|
||||||
/**
|
/**
|
||||||
* 最后离线时间
|
* 最后离线时间
|
||||||
*/
|
*/
|
||||||
private LocalDateTime lastOfflineTime;
|
private LocalDateTime offlineTime;
|
||||||
/**
|
/**
|
||||||
* 设备激活时间
|
* 设备激活时间
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -25,7 +25,7 @@ public interface IotDeviceMapper extends BaseMapperX<IotDeviceDO> {
|
||||||
.eqIfPresent(IotDeviceDO::getProductId, reqVO.getProductId())
|
.eqIfPresent(IotDeviceDO::getProductId, reqVO.getProductId())
|
||||||
.eqIfPresent(IotDeviceDO::getDeviceType, reqVO.getDeviceType())
|
.eqIfPresent(IotDeviceDO::getDeviceType, reqVO.getDeviceType())
|
||||||
.likeIfPresent(IotDeviceDO::getNickname, reqVO.getNickname())
|
.likeIfPresent(IotDeviceDO::getNickname, reqVO.getNickname())
|
||||||
.eqIfPresent(IotDeviceDO::getStatus, reqVO.getStatus())
|
.eqIfPresent(IotDeviceDO::getState, reqVO.getStatus())
|
||||||
.apply(ObjectUtil.isNotNull(reqVO.getGroupId()), "FIND_IN_SET(" + reqVO.getGroupId() + ",group_ids) > 0")
|
.apply(ObjectUtil.isNotNull(reqVO.getGroupId()), "FIND_IN_SET(" + reqVO.getGroupId() + ",group_ids) > 0")
|
||||||
.orderByDesc(IotDeviceDO::getId));
|
.orderByDesc(IotDeviceDO::getId));
|
||||||
}
|
}
|
||||||
|
|
|
@ -34,9 +34,10 @@ public interface IotDeviceService {
|
||||||
/**
|
/**
|
||||||
* 更新设备状态
|
* 更新设备状态
|
||||||
*
|
*
|
||||||
* @param updateReqVO 更新信息
|
* @param id 编号
|
||||||
|
* @param state 状态
|
||||||
*/
|
*/
|
||||||
void updateDeviceStatus(IotDeviceStatusUpdateReqVO updateReqVO);
|
void updateDeviceState(Long id, Integer state);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 更新设备分组
|
* 更新设备分组
|
||||||
|
|
|
@ -19,7 +19,7 @@ import cn.iocoder.yudao.module.iot.dal.dataobject.product.IotProductDO;
|
||||||
import cn.iocoder.yudao.module.iot.dal.mysql.device.IotDeviceMapper;
|
import cn.iocoder.yudao.module.iot.dal.mysql.device.IotDeviceMapper;
|
||||||
import cn.iocoder.yudao.module.iot.dal.redis.RedisKeyConstants;
|
import cn.iocoder.yudao.module.iot.dal.redis.RedisKeyConstants;
|
||||||
import cn.iocoder.yudao.module.iot.enums.device.IotDeviceMessageTypeEnum;
|
import cn.iocoder.yudao.module.iot.enums.device.IotDeviceMessageTypeEnum;
|
||||||
import cn.iocoder.yudao.module.iot.enums.device.IotDeviceStatusEnum;
|
import cn.iocoder.yudao.module.iot.enums.device.IotDeviceStateEnum;
|
||||||
import cn.iocoder.yudao.module.iot.enums.product.IotProductDeviceTypeEnum;
|
import cn.iocoder.yudao.module.iot.enums.product.IotProductDeviceTypeEnum;
|
||||||
import cn.iocoder.yudao.module.iot.service.device.upstream.IotDeviceUpstreamService;
|
import cn.iocoder.yudao.module.iot.service.device.upstream.IotDeviceUpstreamService;
|
||||||
import cn.iocoder.yudao.module.iot.service.product.IotProductService;
|
import cn.iocoder.yudao.module.iot.service.product.IotProductService;
|
||||||
|
@ -89,7 +89,6 @@ public class IotDeviceServiceImpl implements IotDeviceService {
|
||||||
deviceGroupService.validateDeviceGroupExists(createReqVO.getGroupIds());
|
deviceGroupService.validateDeviceGroupExists(createReqVO.getGroupIds());
|
||||||
|
|
||||||
// 2.1 转换 VO 为 DO
|
// 2.1 转换 VO 为 DO
|
||||||
// TODO @芋艿:state 相关的参数。另外,到底叫 state,还是 status 好!
|
|
||||||
// TODO @芋艿:各种 mqtt 是不是可以简化!
|
// TODO @芋艿:各种 mqtt 是不是可以简化!
|
||||||
IotDeviceDO device = BeanUtils.toBean(createReqVO, IotDeviceDO.class, o -> {
|
IotDeviceDO device = BeanUtils.toBean(createReqVO, IotDeviceDO.class, o -> {
|
||||||
o.setProductKey(product.getProductKey()).setDeviceType(product.getDeviceType());
|
o.setProductKey(product.getProductKey()).setDeviceType(product.getDeviceType());
|
||||||
|
@ -99,7 +98,7 @@ public class IotDeviceServiceImpl implements IotDeviceService {
|
||||||
.setMqttUsername(generateMqttUsername(o.getDeviceName(), o.getProductKey()))
|
.setMqttUsername(generateMqttUsername(o.getDeviceName(), o.getProductKey()))
|
||||||
.setMqttPassword(generateMqttPassword());
|
.setMqttPassword(generateMqttPassword());
|
||||||
// 设置设备状态为未激活
|
// 设置设备状态为未激活
|
||||||
o.setStatus(IotDeviceStatusEnum.INACTIVE.getStatus()).setStatusLastUpdateTime(LocalDateTime.now());
|
o.setState(IotDeviceStateEnum.INACTIVE.getState());
|
||||||
});
|
});
|
||||||
// 2.2 插入到数据库
|
// 2.2 插入到数据库
|
||||||
deviceMapper.insert(device);
|
deviceMapper.insert(device);
|
||||||
|
@ -232,29 +231,22 @@ public class IotDeviceServiceImpl implements IotDeviceService {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void updateDeviceStatus(IotDeviceStatusUpdateReqVO updateReqVO) {
|
public void updateDeviceState(Long id, Integer state) {
|
||||||
// TODO @芋艿:state 相关的参数。另外,到底叫 state,还是 status 好!
|
|
||||||
// TODO @芋艿:各种时间,需要 check 下,优化处理下!
|
|
||||||
// 1. 校验存在
|
// 1. 校验存在
|
||||||
IotDeviceDO device = validateDeviceExists(updateReqVO.getId());
|
IotDeviceDO device = validateDeviceExists(id);
|
||||||
|
|
||||||
// 2.1 更新状态和更新时间
|
// 2. 更新状态和时间
|
||||||
IotDeviceDO updateDevice = BeanUtils.toBean(updateReqVO, IotDeviceDO.class)
|
IotDeviceDO updateObj = new IotDeviceDO().setId(id).setState(state);
|
||||||
.setStatusLastUpdateTime(LocalDateTime.now());
|
if (device.getOnlineTime() == null
|
||||||
// 2.2 更新状态相关时间
|
&& Objects.equals(state, IotDeviceStateEnum.ONLINE.getState())) {
|
||||||
if (Objects.equals(device.getStatus(), IotDeviceStatusEnum.INACTIVE.getStatus())
|
updateObj.setActiveTime(LocalDateTime.now());
|
||||||
&& Objects.equals(updateDevice.getStatus(), IotDeviceStatusEnum.ONLINE.getStatus())) {
|
|
||||||
// 从未激活到在线,设置激活时间和最后上线时间
|
|
||||||
updateDevice.setActiveTime(LocalDateTime.now()).setLastOnlineTime(LocalDateTime.now());
|
|
||||||
} else if (Objects.equals(updateDevice.getStatus(), IotDeviceStatusEnum.ONLINE.getStatus())) {
|
|
||||||
// 如果是上线,设置最后上线时间
|
|
||||||
updateDevice.setLastOnlineTime(LocalDateTime.now());
|
|
||||||
} else if (Objects.equals(updateDevice.getStatus(), IotDeviceStatusEnum.OFFLINE.getStatus())) {
|
|
||||||
// 如果是离线,设置最后离线时间
|
|
||||||
updateDevice.setLastOfflineTime(LocalDateTime.now());
|
|
||||||
}
|
}
|
||||||
// 2.3 更新到数据库
|
if (Objects.equals(state, IotDeviceStateEnum.ONLINE.getState())) {
|
||||||
deviceMapper.updateById(updateDevice);
|
updateObj.setOnlineTime(LocalDateTime.now());
|
||||||
|
} else if (Objects.equals(state, IotDeviceStateEnum.OFFLINE.getState())) {
|
||||||
|
updateObj.setOfflineTime(LocalDateTime.now());
|
||||||
|
}
|
||||||
|
deviceMapper.updateById(updateObj);
|
||||||
|
|
||||||
// 3. 清空对应缓存
|
// 3. 清空对应缓存
|
||||||
deleteDeviceCache(device);
|
deleteDeviceCache(device);
|
||||||
|
@ -417,8 +409,8 @@ public class IotDeviceServiceImpl implements IotDeviceService {
|
||||||
// 2.3 情况三:状态变更
|
// 2.3 情况三:状态变更
|
||||||
if (Objects.equals(reportReqVO.getType(), IotDeviceMessageTypeEnum.STATE.getType())) {
|
if (Objects.equals(reportReqVO.getType(), IotDeviceMessageTypeEnum.STATE.getType())) {
|
||||||
// TODO 芋艿:待实现
|
// TODO 芋艿:待实现
|
||||||
updateDeviceStatus(new IotDeviceStatusUpdateReqVO().setId(device.getId())
|
// updateDeviceState(new IotDeviceStatusUpdateReqVO().setId(device.getId())
|
||||||
.setStatus((Integer) reportReqVO.getData()));
|
// .setStatus((Integer) reportReqVO.getData()));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
throw new IllegalArgumentException("未知的类型:" + reportReqVO.getType());
|
throw new IllegalArgumentException("未知的类型:" + reportReqVO.getType());
|
||||||
|
|
Loading…
Reference in New Issue