diff --git a/dongjian-dashboard-back-dao/src/main/java/com/dongjian/dashboard/back/dao/ex/DeviceGroupRelationMapperExt.java b/dongjian-dashboard-back-dao/src/main/java/com/dongjian/dashboard/back/dao/ex/DeviceGroupRelationMapperExt.java index 903c24b..8dc308f 100644 --- a/dongjian-dashboard-back-dao/src/main/java/com/dongjian/dashboard/back/dao/ex/DeviceGroupRelationMapperExt.java +++ b/dongjian-dashboard-back-dao/src/main/java/com/dongjian/dashboard/back/dao/ex/DeviceGroupRelationMapperExt.java @@ -3,7 +3,10 @@ package com.dongjian.dashboard.back.dao.ex; import com.dongjian.dashboard.back.dao.auto.DeviceGroupRelationMapper; import org.apache.ibatis.annotations.Mapper; +import java.util.List; + @Mapper public interface DeviceGroupRelationMapperExt extends DeviceGroupRelationMapper { + List selectDeviceInfoIdsByGroupId(Long groupId); } diff --git a/dongjian-dashboard-back-dao/src/main/resources/mappers/ex/DeviceGroupRelationMapperExt.xml b/dongjian-dashboard-back-dao/src/main/resources/mappers/ex/DeviceGroupRelationMapperExt.xml new file mode 100644 index 0000000..2c70214 --- /dev/null +++ b/dongjian-dashboard-back-dao/src/main/resources/mappers/ex/DeviceGroupRelationMapperExt.xml @@ -0,0 +1,12 @@ + + + + + + + + \ No newline at end of file diff --git a/dongjian-dashboard-back-model/src/main/java/com/dongjian/dashboard/back/dto/devicegroup/BindDeviceForGroupParams.java b/dongjian-dashboard-back-model/src/main/java/com/dongjian/dashboard/back/dto/devicegroup/BindDeviceForGroupParams.java index 9dcbb86..cf82076 100644 --- a/dongjian-dashboard-back-model/src/main/java/com/dongjian/dashboard/back/dto/devicegroup/BindDeviceForGroupParams.java +++ b/dongjian-dashboard-back-model/src/main/java/com/dongjian/dashboard/back/dto/devicegroup/BindDeviceForGroupParams.java @@ -7,7 +7,7 @@ import lombok.Data; @Data public class BindDeviceForGroupParams { - @Schema(description = "组ID",example = "27,587") + @Schema(description = "组ID",example = "587") private Long deviceGroupId; @Schema(description = "设备主键ID,多个使用半角字符逗号连接,注意不是设备ID") diff --git a/dongjian-dashboard-back-service/src/main/java/com/dongjian/dashboard/back/service/impl/DeviceGroupServiceImpl.java b/dongjian-dashboard-back-service/src/main/java/com/dongjian/dashboard/back/service/impl/DeviceGroupServiceImpl.java index b91ecba..c4c053b 100644 --- a/dongjian-dashboard-back-service/src/main/java/com/dongjian/dashboard/back/service/impl/DeviceGroupServiceImpl.java +++ b/dongjian-dashboard-back-service/src/main/java/com/dongjian/dashboard/back/service/impl/DeviceGroupServiceImpl.java @@ -358,9 +358,23 @@ public class DeviceGroupServiceImpl implements DeviceGroupService { List deviceInfoIdList = CommonUtil.commaStr2LongList(bindDeviceForGroupParams.getDeviceInfoIds()); - // 4. 插入新绑定关系 - if (CollectionUtils.isNotEmpty(deviceInfoIdList)) { - for (Long deviceInfoId : deviceInfoIdList){ + if (CollectionUtils.isEmpty(deviceInfoIdList)) { + return SimpleDataResponse.success(); + } + + Long groupId = bindDeviceForGroupParams.getDeviceGroupId(); + + List existedIds = deviceGroupRelationMapperExt.selectDeviceInfoIdsByGroupId(groupId); + Set existedSet = new HashSet<>(existedIds); + + // 过滤掉已绑定的 + List filteredList = deviceInfoIdList.stream() + .filter(id -> !existedSet.contains(id.intValue())) + .collect(Collectors.toList()); + + // 插入新绑定关系 + if (CollectionUtils.isNotEmpty(filteredList)) { + for (Long deviceInfoId : filteredList){ DeviceGroupRelation deviceGroupRelation = new DeviceGroupRelation(); deviceGroupRelation.setDeviceGroupId(bindDeviceForGroupParams.getDeviceGroupId()); deviceGroupRelation.setDeviceInfoId(deviceInfoId.intValue());