diff --git a/DataRoom/dataroom-core/src/main/java/com/gccloud/dataroom/core/module/manage/controller/DataRoomPageController.java b/DataRoom/dataroom-core/src/main/java/com/gccloud/dataroom/core/module/manage/controller/DataRoomPageController.java index f86c02a3..08023ae5 100644 --- a/DataRoom/dataroom-core/src/main/java/com/gccloud/dataroom/core/module/manage/controller/DataRoomPageController.java +++ b/DataRoom/dataroom-core/src/main/java/com/gccloud/dataroom/core/module/manage/controller/DataRoomPageController.java @@ -189,4 +189,12 @@ public class DataRoomPageController { } return R.success(bgList); } + + @ApiPermission + @PostMapping("/name/repeat") + @ApiOperation(value = "大屏/组件名称是否重复", position = 60, produces = MediaType.APPLICATION_JSON_VALUE) + public R nameRepeat(@RequestBody PageEntity pageEntity) { + boolean repeat = bigScreenPageService.checkNameRepeat(pageEntity); + return R.success(repeat); + } } diff --git a/DataRoom/dataroom-core/src/main/java/com/gccloud/dataroom/core/module/map/service/impl/DataRoomMapServiceImpl.java b/DataRoom/dataroom-core/src/main/java/com/gccloud/dataroom/core/module/map/service/impl/DataRoomMapServiceImpl.java index be523aba..8fa2dadc 100644 --- a/DataRoom/dataroom-core/src/main/java/com/gccloud/dataroom/core/module/map/service/impl/DataRoomMapServiceImpl.java +++ b/DataRoom/dataroom-core/src/main/java/com/gccloud/dataroom/core/module/map/service/impl/DataRoomMapServiceImpl.java @@ -24,6 +24,7 @@ import org.springframework.stereotype.Service; import java.util.HashMap; import java.util.List; import java.util.Map; +import java.util.Set; import java.util.stream.Collectors; /** @@ -45,18 +46,24 @@ public class DataRoomMapServiceImpl extends ServiceImpl queryWrapper = new LambdaQueryWrapper<>(); queryWrapper.select(DataRoomMapEntity::getParentId); List list = this.list(queryWrapper); - List idList = list.stream().map(DataRoomMapEntity::getParentId).collect(Collectors.toList()); + Set parentIds = list.stream().map(DataRoomMapEntity::getParentId).collect(Collectors.toSet()); LambdaQueryWrapper wrapper = QueryWrapperUtils.wrapperLike(new LambdaQueryWrapper<>(), searchDTO.getSearchKey(), DataRoomMapEntity::getName, DataRoomMapEntity::getMapCode); wrapper.eq(searchDTO.getLevel() != null, DataRoomMapEntity::getLevel, searchDTO.getLevel()); wrapper.eq(StringUtils.isNotBlank(searchDTO.getParentId()), DataRoomMapEntity::getParentId, searchDTO.getParentId()); wrapper.eq(searchDTO.getUploadedGeoJson() != null, DataRoomMapEntity::getUploadedGeoJson, searchDTO.getUploadedGeoJson()); List entityList = this.list(wrapper); + List idList = entityList.stream().map(DataRoomMapEntity::getId).collect(Collectors.toList()); List voList = Lists.newArrayList(); for (DataRoomMapEntity entity : entityList) { + // 如果地图的直接父级也在列表中,那么不返回该地图 + if (idList.contains(entity.getParentId())) { + continue; + } DataRoomMapVO mapVO = BeanConvertUtils.convert(entity, DataRoomMapVO.class); - mapVO.setHasChildren(idList.contains(entity.getId())); + mapVO.setHasChildren(parentIds.contains(entity.getId())); voList.add(mapVO); + } return voList; // return this.baseMapper.getList(searchDTO); diff --git a/data-room-ui/packages/BigScreenList/EditForm.vue b/data-room-ui/packages/BigScreenList/EditForm.vue index 2dbdedfe..b86402d4 100644 --- a/data-room-ui/packages/BigScreenList/EditForm.vue +++ b/data-room-ui/packages/BigScreenList/EditForm.vue @@ -173,7 +173,28 @@ export default { }, dataFormRules: { name: [ - { required: true, message: '名称不能为空', trigger: 'blur' } + { required: true, message: '名称不能为空', trigger: 'blur' }, + // 名称重复自定义校验 + { + validator: (rule, value, callback) => { + if (value) { + this.$dataRoomAxios.post('/bigScreen/design/name/repeat', { + name: value, + type: this.type, + id: this.dataForm.id + }).then((resp) => { + if (resp) { + callback(new Error('名称已存在')) + } else { + callback() + } + }) + } else { + callback() + } + }, + trigger: 'change' + } ] }, sureLoading: false, diff --git a/data-room-ui/packages/ComponentList/EditForm.vue b/data-room-ui/packages/ComponentList/EditForm.vue index 072d2444..73a8608e 100644 --- a/data-room-ui/packages/ComponentList/EditForm.vue +++ b/data-room-ui/packages/ComponentList/EditForm.vue @@ -208,7 +208,29 @@ export default { }, dataFormRules: { name: [ - { required: true, message: '名称不能为空', trigger: 'blur' } + { required: true, message: '名称不能为空', trigger: 'blur' }, + // 组件名称判重 + // 名称重复自定义校验 + { + validator: (rule, value, callback) => { + if (value) { + this.$dataRoomAxios.post('/bigScreen/design/name/repeat', { + name: value, + type: this.type, + id: this.dataForm.id + }).then((resp) => { + if (resp) { + callback(new Error('名称已存在')) + } else { + callback() + } + }) + } else { + callback() + } + }, + trigger: 'change' + } ] }, sureLoading: false,