Переглянути джерело

Merge remote-tracking branch 'origin/master'

liu.shiyi 1 рік тому
батько
коміт
446cda2904

+ 8 - 0
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<Boolean> nameRepeat(@RequestBody PageEntity pageEntity) {
+        boolean repeat = bigScreenPageService.checkNameRepeat(pageEntity);
+        return R.success(repeat);
+    }
 }

+ 9 - 2
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<DataRoomMapDao, DataRoom
         LambdaQueryWrapper<DataRoomMapEntity> queryWrapper = new LambdaQueryWrapper<>();
         queryWrapper.select(DataRoomMapEntity::getParentId);
         List<DataRoomMapEntity> list = this.list(queryWrapper);
-        List<String> idList = list.stream().map(DataRoomMapEntity::getParentId).collect(Collectors.toList());
+        Set<String> parentIds = list.stream().map(DataRoomMapEntity::getParentId).collect(Collectors.toSet());
 
         LambdaQueryWrapper<DataRoomMapEntity> 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<DataRoomMapEntity> entityList = this.list(wrapper);
+        List<String> idList = entityList.stream().map(DataRoomMapEntity::getId).collect(Collectors.toList());
         List<DataRoomMapVO> 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);

+ 22 - 1
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,

+ 23 - 1
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,