【功能新增】IoT:设备管理界面增加设备分组功能

This commit is contained in:
YunaiV 2024-12-14 19:43:22 +08:00
parent b02e396aff
commit 39ba4e72da
4 changed files with 66 additions and 14 deletions

View File

@ -6,10 +6,7 @@ import cn.iocoder.yudao.framework.common.pojo.PageParam;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils;
import cn.iocoder.yudao.module.iot.controller.admin.device.vo.device.IotDevicePageReqVO;
import cn.iocoder.yudao.module.iot.controller.admin.device.vo.device.IotDeviceRespVO;
import cn.iocoder.yudao.module.iot.controller.admin.device.vo.device.IotDeviceSaveReqVO;
import cn.iocoder.yudao.module.iot.controller.admin.device.vo.device.IotDeviceStatusUpdateReqVO;
import cn.iocoder.yudao.module.iot.controller.admin.device.vo.device.*;
import cn.iocoder.yudao.module.iot.dal.dataobject.device.IotDeviceDO;
import cn.iocoder.yudao.module.iot.service.device.IotDeviceService;
import io.swagger.v3.oas.annotations.Operation;
@ -62,6 +59,14 @@ public class IotDeviceController {
return success(true);
}
@PutMapping("/update-group")
@Operation(summary = "更新设备分组")
@PreAuthorize("@ss.hasPermission('iot:device:update')")
public CommonResult<Boolean> updateDeviceGroup(@Valid @RequestBody IotDeviceUpdateGroupReqVO updateReqVO) {
deviceService.updateDeviceGroup(updateReqVO);
return success(true);
}
@DeleteMapping("/delete")
@Operation(summary = "删除单个设备")
@Parameter(name = "id", description = "编号", required = true)
@ -102,7 +107,7 @@ public class IotDeviceController {
@PreAuthorize("@ss.hasPermission('iot:device:export')")
@ApiAccessLog(operateType = EXPORT)
public void exportDeviceExcel(@Valid IotDevicePageReqVO exportReqVO,
HttpServletResponse response) throws IOException {
HttpServletResponse response) throws IOException {
exportReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
CommonResult<PageResult<IotDeviceRespVO>> result = getDevicePage(exportReqVO);
// 导出 Excel
@ -125,7 +130,7 @@ public class IotDeviceController {
@RequestParam(value = "deviceType", required = false) Integer deviceType) {
List<IotDeviceDO> list = deviceService.getDeviceList(deviceType);
return success(convertList(list, device -> // 只返回 idname 字段
new IotDeviceRespVO().setId(device.getId()).setDeviceName(device.getDeviceName())));
new IotDeviceRespVO().setId(device.getId()).setDeviceName(device.getDeviceName())));
}
}

View File

@ -0,0 +1,21 @@
package cn.iocoder.yudao.module.iot.controller.admin.device.vo.device;
import io.swagger.v3.oas.annotations.media.Schema;
import jakarta.validation.constraints.NotEmpty;
import lombok.Data;
import java.util.Set;
@Schema(description = "管理后台 - IoT 设备更新分组 Request VO")
@Data
public class IotDeviceUpdateGroupReqVO {
@Schema(description = "设备编号列表", requiredMode = Schema.RequiredMode.REQUIRED, example = "1,2,3")
@NotEmpty(message = "设备编号列表不能为空")
private Set<Long> ids;
@Schema(description = "分组编号列表", requiredMode = Schema.RequiredMode.REQUIRED, example = "1,2,3")
@NotEmpty(message = "分组编号列表不能为空")
private Set<Long> groupIds;
}

View File

@ -4,6 +4,7 @@ import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.module.iot.controller.admin.device.vo.device.IotDevicePageReqVO;
import cn.iocoder.yudao.module.iot.controller.admin.device.vo.device.IotDeviceSaveReqVO;
import cn.iocoder.yudao.module.iot.controller.admin.device.vo.device.IotDeviceStatusUpdateReqVO;
import cn.iocoder.yudao.module.iot.controller.admin.device.vo.device.IotDeviceUpdateGroupReqVO;
import cn.iocoder.yudao.module.iot.dal.dataobject.device.IotDeviceDO;
import jakarta.validation.Valid;
@ -33,6 +34,20 @@ public interface IotDeviceService {
*/
void updateDevice(@Valid IotDeviceSaveReqVO updateReqVO);
/**
* 更新设备状态
*
* @param updateReqVO 更新信息
*/
void updateDeviceStatus(IotDeviceStatusUpdateReqVO updateReqVO);
/**
* 更新设备分组
*
* @param updateReqVO 更新信息
*/
void updateDeviceGroup(@Valid IotDeviceUpdateGroupReqVO updateReqVO);
/**
* 删除单个设备
*
@ -71,13 +86,6 @@ public interface IotDeviceService {
*/
List<IotDeviceDO> getDeviceList(@Nullable Integer deviceType);
/**
* 更新设备状态
*
* @param updateReqVO 更新信息
*/
void updateDeviceStatus(IotDeviceStatusUpdateReqVO updateReqVO);
/**
* 获得设备数量
*

View File

@ -9,6 +9,7 @@ import cn.iocoder.yudao.framework.tenant.core.aop.TenantIgnore;
import cn.iocoder.yudao.module.iot.controller.admin.device.vo.device.IotDevicePageReqVO;
import cn.iocoder.yudao.module.iot.controller.admin.device.vo.device.IotDeviceSaveReqVO;
import cn.iocoder.yudao.module.iot.controller.admin.device.vo.device.IotDeviceStatusUpdateReqVO;
import cn.iocoder.yudao.module.iot.controller.admin.device.vo.device.IotDeviceUpdateGroupReqVO;
import cn.iocoder.yudao.module.iot.dal.dataobject.device.IotDeviceDO;
import cn.iocoder.yudao.module.iot.dal.dataobject.product.IotProductDO;
import cn.iocoder.yudao.module.iot.dal.mysql.device.IotDeviceMapper;
@ -29,6 +30,7 @@ import java.util.List;
import java.util.Objects;
import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertList;
import static cn.iocoder.yudao.module.iot.enums.ErrorCodeConstants.*;
/**
@ -67,7 +69,7 @@ public class IotDeviceServiceImpl implements IotDeviceService {
}
// 1.4 校验父设备是否为合法网关
if (IotProductDeviceTypeEnum.isGateway(product.getDeviceType())
&& createReqVO.getGatewayId() != null) {
&& createReqVO.getGatewayId() != null) {
validateGatewayDeviceExists(createReqVO.getGatewayId());
}
// 1.5 校验分组存在
@ -107,6 +109,22 @@ public class IotDeviceServiceImpl implements IotDeviceService {
deviceMapper.updateById(updateObj);
}
@Override
@Transactional(rollbackFor = Exception.class)
public void updateDeviceGroup(IotDeviceUpdateGroupReqVO updateReqVO) {
// 1.1 校验设备存在
List<IotDeviceDO> devices = deviceMapper.selectBatchIds(updateReqVO.getIds());
if (CollUtil.isEmpty(devices)) {
return;
}
// 1.2 校验分组存在
deviceGroupService.validateDeviceGroupExists(updateReqVO.getGroupIds());
// 3. 更新设备分组
deviceMapper.updateBatch(convertList(devices, device -> new IotDeviceDO()
.setId(device.getId()).setGroupIds(updateReqVO.getGroupIds())));
}
@Override
public void deleteDevice(Long id) {
// 1.1 校验存在