Commit b02e396aff2885e402f598d300ad923d559396fd

Authored by YunaiV
1 parent 34506581

【功能新增】IoT:设备管理界面增加批量删除功能

yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/controller/admin/device/IotDeviceController.java
@@ -23,6 +23,7 @@ import org.springframework.validation.annotation.Validated; @@ -23,6 +23,7 @@ import org.springframework.validation.annotation.Validated;
23 import org.springframework.web.bind.annotation.*; 23 import org.springframework.web.bind.annotation.*;
24 24
25 import java.io.IOException; 25 import java.io.IOException;
  26 +import java.util.Collection;
26 import java.util.List; 27 import java.util.List;
27 28
28 import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.EXPORT; 29 import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.EXPORT;
@@ -62,7 +63,7 @@ public class IotDeviceController { @@ -62,7 +63,7 @@ public class IotDeviceController {
62 } 63 }
63 64
64 @DeleteMapping("/delete") 65 @DeleteMapping("/delete")
65 - @Operation(summary = "删除设备") 66 + @Operation(summary = "删除单个设备")
66 @Parameter(name = "id", description = "编号", required = true) 67 @Parameter(name = "id", description = "编号", required = true)
67 @PreAuthorize("@ss.hasPermission('iot:device:delete')") 68 @PreAuthorize("@ss.hasPermission('iot:device:delete')")
68 public CommonResult<Boolean> deleteDevice(@RequestParam("id") Long id) { 69 public CommonResult<Boolean> deleteDevice(@RequestParam("id") Long id) {
@@ -70,6 +71,15 @@ public class IotDeviceController { @@ -70,6 +71,15 @@ public class IotDeviceController {
70 return success(true); 71 return success(true);
71 } 72 }
72 73
  74 + @DeleteMapping("/delete-list")
  75 + @Operation(summary = "删除多个设备")
  76 + @Parameter(name = "ids", description = "编号数组", required = true)
  77 + @PreAuthorize("@ss.hasPermission('iot:device:delete')")
  78 + public CommonResult<Boolean> deleteDeviceList(@RequestParam("ids") Collection<Long> ids) {
  79 + deviceService.deleteDeviceList(ids);
  80 + return success(true);
  81 + }
  82 +
73 @GetMapping("/get") 83 @GetMapping("/get")
74 @Operation(summary = "获得设备") 84 @Operation(summary = "获得设备")
75 @Parameter(name = "id", description = "编号", required = true, example = "1024") 85 @Parameter(name = "id", description = "编号", required = true, example = "1024")
yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/service/device/IotDeviceService.java
@@ -8,6 +8,7 @@ import cn.iocoder.yudao.module.iot.dal.dataobject.device.IotDeviceDO; @@ -8,6 +8,7 @@ import cn.iocoder.yudao.module.iot.dal.dataobject.device.IotDeviceDO;
8 import jakarta.validation.Valid; 8 import jakarta.validation.Valid;
9 9
10 import javax.annotation.Nullable; 10 import javax.annotation.Nullable;
  11 +import java.util.Collection;
11 import java.util.List; 12 import java.util.List;
12 13
13 /** 14 /**
@@ -33,13 +34,20 @@ public interface IotDeviceService { @@ -33,13 +34,20 @@ public interface IotDeviceService {
33 void updateDevice(@Valid IotDeviceSaveReqVO updateReqVO); 34 void updateDevice(@Valid IotDeviceSaveReqVO updateReqVO);
34 35
35 /** 36 /**
36 - * 删除设备 37 + * 删除单个设备
37 * 38 *
38 * @param id 编号 39 * @param id 编号
39 */ 40 */
40 void deleteDevice(Long id); 41 void deleteDevice(Long id);
41 42
42 /** 43 /**
  44 + * 删除多个设备
  45 + *
  46 + * @param ids 编号数组
  47 + */
  48 + void deleteDeviceList(Collection<Long> ids);
  49 +
  50 + /**
43 * 获得设备 51 * 获得设备
44 * 52 *
45 * @param id 编号 53 * @param id 编号
yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/service/device/IotDeviceServiceImpl.java
1 package cn.iocoder.yudao.module.iot.service.device; 1 package cn.iocoder.yudao.module.iot.service.device;
2 2
  3 +import cn.hutool.core.collection.CollUtil;
3 import cn.hutool.core.util.IdUtil; 4 import cn.hutool.core.util.IdUtil;
4 import cn.hutool.core.util.RandomUtil; 5 import cn.hutool.core.util.RandomUtil;
5 import cn.iocoder.yudao.framework.common.pojo.PageResult; 6 import cn.iocoder.yudao.framework.common.pojo.PageResult;
@@ -18,10 +19,12 @@ import jakarta.annotation.Resource; @@ -18,10 +19,12 @@ import jakarta.annotation.Resource;
18 import lombok.extern.slf4j.Slf4j; 19 import lombok.extern.slf4j.Slf4j;
19 import org.springframework.context.annotation.Lazy; 20 import org.springframework.context.annotation.Lazy;
20 import org.springframework.stereotype.Service; 21 import org.springframework.stereotype.Service;
  22 +import org.springframework.transaction.annotation.Transactional;
21 import org.springframework.validation.annotation.Validated; 23 import org.springframework.validation.annotation.Validated;
22 24
23 import javax.annotation.Nullable; 25 import javax.annotation.Nullable;
24 import java.time.LocalDateTime; 26 import java.time.LocalDateTime;
  27 +import java.util.Collection;
25 import java.util.List; 28 import java.util.List;
26 import java.util.Objects; 29 import java.util.Objects;
27 30
@@ -117,6 +120,28 @@ public class IotDeviceServiceImpl implements IotDeviceService { @@ -117,6 +120,28 @@ public class IotDeviceServiceImpl implements IotDeviceService {
117 deviceMapper.deleteById(id); 120 deviceMapper.deleteById(id);
118 } 121 }
119 122
  123 + @Override
  124 + @Transactional(rollbackFor = Exception.class)
  125 + public void deleteDeviceList(Collection<Long> ids) {
  126 + // 1.1 校验存在
  127 + if (CollUtil.isEmpty(ids)) {
  128 + return;
  129 + }
  130 + List<IotDeviceDO> devices = deviceMapper.selectBatchIds(ids);
  131 + if (CollUtil.isEmpty(devices)) {
  132 + return;
  133 + }
  134 + // 1.2 校验网关设备是否存在
  135 + for (IotDeviceDO device : devices) {
  136 + if (device.getGatewayId() != null && deviceMapper.selectCountByGatewayId(device.getId()) > 0) {
  137 + throw exception(DEVICE_HAS_CHILDREN);
  138 + }
  139 + }
  140 +
  141 + // 2. 删除设备
  142 + deviceMapper.deleteByIds(ids);
  143 + }
  144 +
120 /** 145 /**
121 * 校验设备是否存在 146 * 校验设备是否存在
122 * 147 *