diff --git a/fys-system/src/main/java/com/fuyuanshen/modules/system/service/impl/DeviceTypeServiceImpl.java b/fys-system/src/main/java/com/fuyuanshen/modules/system/service/impl/DeviceTypeServiceImpl.java index c97a44a..a532b28 100644 --- a/fys-system/src/main/java/com/fuyuanshen/modules/system/service/impl/DeviceTypeServiceImpl.java +++ b/fys-system/src/main/java/com/fuyuanshen/modules/system/service/impl/DeviceTypeServiceImpl.java @@ -177,7 +177,24 @@ public class DeviceTypeServiceImpl extends ServiceImpl ids) { - deviceTypeMapper.deleteBatchIds(ids); + // 查询所有与 device 关联的 deviceType IDs + List deviceList = deviceMapper.selectList(new QueryWrapper().in("device_type", ids)); + // 提取与 device 关联的 deviceType IDs + List filteredIds = deviceList.stream() + .map(Device::getDeviceType) + .distinct() + .collect(Collectors.toList()); + // 从原始 ids 中移除已关联 device 的 id(即过滤掉能查到结果的 id) + List idsToBeDeleted = ids.stream() + .filter(id -> !filteredIds.contains(id)) + .collect(Collectors.toList()); + if (idsToBeDeleted.isEmpty()) { + throw new BadRequestException("选中设备类型已绑定设备,请先解绑设备!!!"); + } + // 删除过滤后的 id 列表 + deviceTypeMapper.deleteBatchIds(idsToBeDeleted); + deviceTypeGrantsMapper.delete(new QueryWrapper().in("device_type_id", idsToBeDeleted)); + }