瀏覽代碼

feature: 表分类属于多个树节点展示问题解决

mazq 2 年之前
父節點
當前提交
0389ac7b94

+ 28 - 0
dcuc-app-api/src/main/java/com/dragoninfo/dcuc/app/facade/sub/IAppColumnRelationFacaed.java

@@ -0,0 +1,28 @@
+package com.dragoninfo.dcuc.app.facade.sub;
+
+import com.dragoninfo.dcuc.app.vo.AppColumnRelationVO;
+import com.dragonsoft.duceap.base.entity.search.SearchDTO;
+import org.springframework.cloud.openfeign.FeignClient;
+import org.springframework.data.domain.Page;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+
+/**
+ * @author mazq
+ * @date 2022/10/5
+ *
+ */
+@FeignClient(name = "dcuc-app", path = "/dcuc/app/appColumnRelationFacaed")
+public interface IAppColumnRelationFacaed {
+
+
+    /**
+     * 分页查询列表
+     * @param searchDTO
+     * @return
+     */
+    @PostMapping("search")
+    Page<AppColumnRelationVO> pageSearch(@RequestBody SearchDTO searchDTO);
+
+
+}

+ 15 - 12
dcuc-app-service/src/main/java/com/dragoninfo/dcuc/app/facade/DataResourceFacade.java

@@ -801,21 +801,19 @@ public class DataResourceFacade implements IDataResourceFacade {
                 }
             } else {
                 // 如果为叶子节点,查找对应的表和列
+                // 为字段分类添加表
                 // 如果查找不到表和列则移除
                 String id = childVo.getId();
                 String classifyCode = DataResourceEnum.DATA_RESOURCE_CLASSIFY.getCode();
-                if (id.startsWith(classifyCode)) {
-                    String replace = id.replace(classifyCode + CommonCons.ID_SEPARATOR, "");
-                    List<AppDataResourceInfo> dataTabInfo = tabInfosMap.get(replace);
-                    if (dataTabInfo == null) {
-                        iterator.remove();
-                    } else {
-                        List<DataResourceTreeVo> tableVos = convertTableToTreeVo(childVo.getId(), dataTabInfo, null, dataResourceEnum);
-                        childVo.setTreeNode(true);
-                        childVo.setChild(tableVos);
-                    }
+                String replace = id.replace(classifyCode + CommonCons.ID_SEPARATOR, "");
+                List<AppDataResourceInfo> dataTabInfo = tabInfosMap.get(replace);
+                if (dataTabInfo == null) {
+                    iterator.remove();
+                } else {
+                    List<DataResourceTreeVo> tableVos = convertTableToTreeVo(childVo.getId(), dataTabInfo, null, dataResourceEnum);
+                    childVo.setTreeNode(true);
+                    childVo.setChild(tableVos);
                 }
-
             }
         }
         return CollectionUtils.isEmpty(child);
@@ -824,7 +822,8 @@ public class DataResourceFacade implements IDataResourceFacade {
     private List<DataResourceTreeVo> convertTableToTreeVo(String pid, List<AppDataResourceInfo> dataTabInfo, Map<String, List<AppDataItemInfo>> colInfosMap, DataResourceEnum resourceEnum) {
         return dataTabInfo.stream().map(e -> {
             DataResourceTreeVo vo = new DataResourceTreeVo();
-            vo.setId(e.getId());
+            // 因为表可能属于多个字段分类,前端树结构需要唯一id
+            vo.setId(pid + CommonCons.ID_SEPARATOR + e.getId());
             vo.setPId(pid);
             vo.setLabel(e.getTableName());
             vo.setClassifyCode(resourceEnum.getCode());
@@ -838,6 +837,9 @@ public class DataResourceFacade implements IDataResourceFacade {
                     vo.setChild(Collections.emptyList());
                     vo.setTreeNode(false);
                 }
+            } else {
+                vo.setChild(Collections.emptyList());
+                vo.setTreeNode(false);
             }
             return vo;
         }).collect(Collectors.toList());
@@ -850,6 +852,7 @@ public class DataResourceFacade implements IDataResourceFacade {
             vo.setPId(pid);
             vo.setLabel(e.getColumnName());
             vo.setClassifyCode(resourceEnum.getCode());
+            vo.setTreeNode(false);
             return vo;
         }).collect(Collectors.toList());
     }

+ 49 - 0
dcuc-app-service/src/main/java/com/dragoninfo/dcuc/app/facade/sub/AppColumnRelationFacade.java

@@ -0,0 +1,49 @@
+package com.dragoninfo.dcuc.app.facade.sub;
+
+import com.dragoninfo.dcuc.app.entity.sub.AppColumnRelation;
+import com.dragoninfo.dcuc.app.service.sub.IAppColumnRelationService;
+import com.dragoninfo.dcuc.app.vo.AppColumnRelationVO;
+import com.dragonsoft.duceap.base.entity.search.SearchDTO;
+import com.dragonsoft.duceap.core.search.Searchable;
+import org.springframework.beans.BeanUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.domain.Page;
+import org.springframework.data.domain.PageImpl;
+import org.springframework.data.domain.Pageable;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.Collections;
+import java.util.List;
+import java.util.stream.Collectors;
+
+/**
+ * @author mazq
+ * @date 2022/10/5
+ */
+@RestController
+@RequestMapping(value = "/dcuc/app/appColumnRelationFacaed")
+public class AppColumnRelationFacade implements IAppColumnRelationFacaed {
+
+    @Autowired
+    private IAppColumnRelationService appColumnRelationService;
+
+    @Override
+    public Page<AppColumnRelationVO> pageSearch(SearchDTO searchDTO) {
+        Searchable searchable = Searchable.toSearchable(searchDTO);
+        Pageable pageable = searchable.getPage();
+        Page<AppColumnRelation> page = appColumnRelationService.pageSearch(searchable);
+        if (page.isEmpty()) {
+            return new PageImpl<>(Collections.emptyList(), pageable, 0L);
+        }
+        List<AppColumnRelation> content = page.getContent();
+        List<AppColumnRelationVO> collect = content.stream().map(e -> {
+            AppColumnRelationVO vo = new AppColumnRelationVO();
+            BeanUtils.copyProperties(e, vo);
+            return vo;
+        }).collect(Collectors.toList());
+        return new PageImpl<>(collect, pageable, page.getTotalElements());
+    }
+
+
+}

+ 4 - 0
dcuc-app-service/src/main/java/com/dragoninfo/dcuc/app/service/sub/IAppColumnRelationService.java

@@ -3,6 +3,8 @@ package com.dragoninfo.dcuc.app.service.sub;
 import com.dragoninfo.dcuc.app.entity.sub.AppColumnRelation;
 import com.dragoninfo.dcuc.app.vo.AppColumnRelationVO;
 import com.dragoninfo.dcuc.app.vo.DataLevelVo;
+import com.dragonsoft.duceap.core.search.Searchable;
+import org.springframework.data.domain.Page;
 
 import java.util.List;
 
@@ -23,4 +25,6 @@ public interface IAppColumnRelationService {
     void sync(List<AppColumnRelationVO> list);
 
     List<AppColumnRelation> findAll();
+
+    Page<AppColumnRelation> pageSearch(Searchable searchable);
 }

+ 7 - 0
dcuc-app-service/src/main/java/com/dragoninfo/dcuc/app/service/sub/impl/AppColumnRelationServiceImpl.java

@@ -9,7 +9,9 @@ import com.dragoninfo.dcuc.app.service.sub.IAppColumnRelationService;
 import com.dragoninfo.dcuc.app.vo.AppColumnRelationVO;
 import com.dragoninfo.dcuc.app.vo.DataLevelVo;
 import com.dragonsoft.duceap.base.enums.BooleanEnum;
+import com.dragonsoft.duceap.core.search.Searchable;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.domain.Page;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
@@ -62,6 +64,11 @@ public class AppColumnRelationServiceImpl implements IAppColumnRelationService {
         return appColumnRelationMapper.selectList(null);
     }
 
+    @Override
+    public Page<AppColumnRelation> pageSearch(Searchable searchable) {
+        return appColumnRelationMapper.pagingBySearchable(searchable);
+    }
+
     public AppColumnRelation getByCode(String code) {
         LambdaQueryWrapper<AppColumnRelation> lambdaQuery = Wrappers.lambdaQuery();
         lambdaQuery.eq(AppColumnRelation::getCodeValue, code);