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

Merge branch 'mzq-sjjq-220929' into 'develop'

Mzq sjjq 220929

See merge request xj-aks/dcuc/app-service!7
马志强 2 роки тому
батько
коміт
1f463c86ee
15 змінених файлів з 520 додано та 30 видалено
  1. 74 0
      dcuc-app-api/src/main/java/com/dragoninfo/dcuc/app/facade/sub/IAppColumnRelationFacaed.java
  2. 8 0
      dcuc-app-api/src/main/java/com/dragoninfo/dcuc/app/facade/sub/IFieldClaFacade.java
  3. 29 0
      dcuc-app-model/src/main/java/com/dragoninfo/dcuc/app/vo/AppColumnDetailVo.java
  4. 30 0
      dcuc-app-model/src/main/java/com/dragoninfo/dcuc/app/vo/AppColumnRelationPageVO.java
  5. 26 0
      dcuc-app-model/src/main/java/com/dragoninfo/dcuc/app/vo/AppColumnSaveVo.java
  6. 2 0
      dcuc-app-service/src/main/java/com/dragoninfo/dcuc/app/cons/CommonCons.java
  7. 48 28
      dcuc-app-service/src/main/java/com/dragoninfo/dcuc/app/facade/DataResourceFacade.java
  8. 176 0
      dcuc-app-service/src/main/java/com/dragoninfo/dcuc/app/facade/sub/AppColumnRelationFacade.java
  9. 16 0
      dcuc-app-service/src/main/java/com/dragoninfo/dcuc/app/facade/sub/FieldClaFacade.java
  10. 54 0
      dcuc-app-service/src/main/java/com/dragoninfo/dcuc/app/service/sub/IAppColumnRelationService.java
  11. 8 0
      dcuc-app-service/src/main/java/com/dragoninfo/dcuc/app/service/sub/IFieldClaService.java
  12. 42 1
      dcuc-app-service/src/main/java/com/dragoninfo/dcuc/app/service/sub/impl/AppColumnRelationServiceImpl.java
  13. 1 0
      dcuc-app-service/src/main/java/com/dragoninfo/dcuc/app/service/sub/impl/AppDataItemInfoServiceImpl.java
  14. 1 0
      dcuc-app-service/src/main/java/com/dragoninfo/dcuc/app/service/sub/impl/AppDataResourceInfoServiceImpl.java
  15. 5 1
      dcuc-app-service/src/main/java/com/dragoninfo/dcuc/app/service/sub/impl/FieldClaServiceImpl.java

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

@@ -0,0 +1,74 @@
+package com.dragoninfo.dcuc.app.facade.sub;
+
+import com.dragoninfo.dcuc.app.vo.AppColumnDetailVo;
+import com.dragoninfo.dcuc.app.vo.AppColumnRelationPageVO;
+import com.dragoninfo.dcuc.app.vo.AppColumnRelationVO;
+import com.dragoninfo.dcuc.app.vo.AppColumnSaveVo;
+import com.dragonsoft.duceap.base.entity.http.ResponseStatus;
+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.*;
+
+import java.util.List;
+
+/**
+ * @author mazq
+ * @date 2022/10/5
+ */
+@FeignClient(name = "dcuc-app", path = "/dcuc/app/appColumnRelationFacaed")
+public interface IAppColumnRelationFacaed {
+
+
+    /**
+     * 分页查询列表
+     *
+     * @param searchDTO
+     * @return
+     */
+    @PostMapping("search")
+    Page<AppColumnRelationPageVO> pageSearch(@RequestBody SearchDTO searchDTO);
+
+    /**
+     * 根据id获取详情
+     *
+     * @param id
+     * @return
+     */
+    @PostMapping("detail")
+    AppColumnDetailVo detail(@RequestParam("id") String id);
+
+    /**
+     * 根据id删除关联关系
+     *
+     * @param id
+     */
+    @DeleteMapping("deleteById")
+    void deleteById(@RequestParam("id") String id);
+
+    /**
+     * 新增关联关系
+     *
+     * @param saveVo
+     * @return
+     */
+    @PostMapping("relationAdd")
+    ResponseStatus relationAdd(@RequestBody AppColumnSaveVo saveVo);
+
+    /**
+     * 关联关系修改
+     *
+     * @param saveVo
+     * @return
+     */
+    @PostMapping("relationUpdate")
+    ResponseStatus relationUpdate(@RequestBody AppColumnSaveVo saveVo);
+
+    /**
+     * 查询所有的关联关系id和code
+     *
+     * @return
+     */
+    @GetMapping("findAllIdAndCode")
+    List<AppColumnRelationVO> findAllIdAndCode();
+}

+ 8 - 0
dcuc-app-api/src/main/java/com/dragoninfo/dcuc/app/facade/sub/IFieldClaFacade.java

@@ -76,4 +76,12 @@ public interface IFieldClaFacade {
     @PostMapping("pageSearch")
     Page<FieldClaAcceptDTO> pageSearch(@RequestBody SearchDTO searchDTO);
 
+    /**
+     * 获取二级字段分类
+     *
+     * @param searchDTO
+     * @return
+     */
+    @PostMapping("getSecLevelColumn")
+    List<FieldClaDTO> getSecLevelColumn(@RequestBody SearchDTO searchDTO);
 }

+ 29 - 0
dcuc-app-model/src/main/java/com/dragoninfo/dcuc/app/vo/AppColumnDetailVo.java

@@ -0,0 +1,29 @@
+package com.dragoninfo.dcuc.app.vo;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * @author mazq
+ * @date 2022/10/5
+ */
+@ApiModel(value = "字段关系保存Vo")
+@Data
+public class AppColumnDetailVo {
+
+    @ApiModelProperty("关联关系id, 新增时可不填")
+    private String id;
+
+    @ApiModelProperty(name = "字段分类1 id")
+    private String columnClaIdOne;
+
+    @ApiModelProperty(name = "字段分类2 id")
+    private String columnClaIdTwo;
+
+    @ApiModelProperty(name = "字段分类1 名称")
+    private String columnClaNameOne;
+
+    @ApiModelProperty(name = "字段分类2 名称")
+    private String columnClaNameTwo;
+}

+ 30 - 0
dcuc-app-model/src/main/java/com/dragoninfo/dcuc/app/vo/AppColumnRelationPageVO.java

@@ -0,0 +1,30 @@
+package com.dragoninfo.dcuc.app.vo;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * <p>
+ *
+ * </p>
+ *
+ * @author huangzqa
+ * @date 2022/10/3
+ */
+@ApiModel(value = "字段关系分页Vo")
+@Data
+public class AppColumnRelationPageVO {
+
+    @ApiModelProperty("关联关系id")
+    private String id;
+
+    @ApiModelProperty("表码名称")
+    private String columnRelation;
+
+    @ApiModelProperty("表码值")
+    private String codeValue;
+
+}

+ 26 - 0
dcuc-app-model/src/main/java/com/dragoninfo/dcuc/app/vo/AppColumnSaveVo.java

@@ -0,0 +1,26 @@
+package com.dragoninfo.dcuc.app.vo;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * @author mazq
+ * @date 2022/10/5
+ */
+@ApiModel(value = "字段关系保存Vo")
+@Data
+public class AppColumnSaveVo {
+
+    @ApiModelProperty("关联关系id")
+    private String id;
+
+    @ApiModelProperty(name = "字段分类1 id")
+    private String columnClaIdOne;
+
+    @ApiModelProperty(name = "字段分类2 id")
+    private String columnClaIdTwo;
+
+
+
+}

+ 2 - 0
dcuc-app-service/src/main/java/com/dragoninfo/dcuc/app/cons/CommonCons.java

@@ -8,6 +8,8 @@ public interface CommonCons {
 
     String ID_SEPARATOR = "|";
 
+    String ID_SEPARATOR_SPLIT = "\\|";
+
     String PATH_SEP = "-";
 
     Integer PATH_LEVEL_FIR = 1;

+ 48 - 28
dcuc-app-service/src/main/java/com/dragoninfo/dcuc/app/facade/DataResourceFacade.java

@@ -184,7 +184,10 @@ public class DataResourceFacade implements IDataResourceFacade {
                 .attrType(dataResourceEnum.getAttrType().getValue()).label(dataResourceEnum.getLabel()).build();
 
         DataResourceTreeVo topTreeVo = DataResourceTreeVo.builder().id(dataResourceEnum.getCode()).label("全部")
-                .code(dataResourceEnum.getCode()).treeNode(true).build();
+                .code(dataResourceEnum.getCode())
+                .classifyCode(dataResourceEnum.getCode())
+                .treeNode(true)
+                .build();
         List<DataCla> dataClaList = dataClaService.getAllDataCla();
         Map<String, List<DataCla>> levelMap = dataClaList.stream().collect(Collectors.groupingBy(DataCla::getLevel));
         //一级节点
@@ -209,8 +212,8 @@ public class DataResourceFacade implements IDataResourceFacade {
             resourceVo.setTotal(0);
         } else {
             // 拼接表、列、pid
-            boolean b = combinePidAndTableInfo(topTreeVo, tabLabMap, dataResourceEnum);
-            if (b) {
+            int count = combinePidAndTableInfo(topTreeVo, tabLabMap, dataResourceEnum);
+            if (count == 0) {
                 resourceVo.setNodes(new ArrayList<>());
                 resourceVo.setTotal(0);
             } else {
@@ -218,7 +221,7 @@ public class DataResourceFacade implements IDataResourceFacade {
                     add(topTreeVo);
                 }});
             }
-
+            resourceVo.setTotal(count);
         }
         return resourceVo;
     }
@@ -291,6 +294,7 @@ public class DataResourceFacade implements IDataResourceFacade {
                 .pId(pid)
                 .label(item.getName())
                 .code(item.getCode())
+                .classifyCode(DataResourceEnum.DATA_RESOURCE_CLASSIFY.getCode())
                 .build();
     }
 
@@ -319,7 +323,10 @@ public class DataResourceFacade implements IDataResourceFacade {
                 .attrType(dataResourceEnum.getAttrType().getValue()).label(dataResourceEnum.getLabel()).build();
 
         DataResourceTreeVo topTreeVo = DataResourceTreeVo.builder().id(dataResourceEnum.getCode()).label("全部")
-                .code(dataResourceEnum.getCode()).treeNode(true).build();
+                .code(dataResourceEnum.getCode())
+                .classifyCode(dataResourceEnum.getCode())
+                .treeNode(true)
+                .build();
         List<FieldCla> fieldClaList = fieldClaService.getAllFieldCla();
         Map<String, List<FieldCla>> levelMap = fieldClaList.stream().collect(Collectors.groupingBy(FieldCla::getLevel));
         List<DataResourceTreeVo> firNodes = Optional.ofNullable(levelMap.get(FieldClaTypeEnum.FIR.getLevel())).orElse(new ArrayList<>())
@@ -332,8 +339,8 @@ public class DataResourceFacade implements IDataResourceFacade {
             resourceVo.setNodes(new ArrayList<>());
             resourceVo.setTotal(0);
         } else {
-            boolean b = combinePidTabAndCol(topTreeVo, tableMap, colInfosMap, dataResourceEnum);
-            if (b) {
+            int count = combinePidTabAndCol(topTreeVo, tableMap, colInfosMap, dataResourceEnum);
+            if (count == 0) {
                 resourceVo.setNodes(new ArrayList<>());
                 resourceVo.setTotal(0);
             } else {
@@ -341,6 +348,7 @@ public class DataResourceFacade implements IDataResourceFacade {
                     add(topTreeVo);
                 }});
             }
+            resourceVo.setTotal(count);
         }
         return resourceVo;
     }
@@ -349,7 +357,8 @@ public class DataResourceFacade implements IDataResourceFacade {
         return colInfos.stream().collect(Collectors.groupingBy(AppDataItemInfo::getColumnClassify));
     }
 
-    private boolean combinePidTabAndCol(DataResourceTreeVo treeVo, Map<String, AppDataResourceInfo> tableMap, Map<String, List<AppDataItemInfo>> colInfosMap, DataResourceEnum resourceEnum) {
+    private int combinePidTabAndCol(DataResourceTreeVo treeVo, Map<String, AppDataResourceInfo> tableMap, Map<String, List<AppDataItemInfo>> colInfosMap, DataResourceEnum resourceEnum) {
+        int count = 0;
         List<DataResourceTreeVo> child = treeVo.getChild();
         Iterator<DataResourceTreeVo> iterator = child.iterator();
         while (iterator.hasNext()) {
@@ -359,9 +368,11 @@ public class DataResourceFacade implements IDataResourceFacade {
             List<DataResourceTreeVo> cc = childVo.getChild();
             if (CollectionUtils.isNotEmpty(cc)) {
                 childVo.setTreeNode(true);
-                boolean emptyChild = combinePidTabAndCol(childVo, tableMap, colInfosMap, resourceEnum);
-                if (emptyChild) {
+                int childCount = combinePidTabAndCol(childVo, tableMap, colInfosMap, resourceEnum);
+                if (childCount == 0) {
                     iterator.remove();
+                } else {
+                    count += childCount;
                 }
             } else {
                 // 如果为叶子节点,查找对应的表和列
@@ -379,10 +390,11 @@ public class DataResourceFacade implements IDataResourceFacade {
                     }).flatMap(List::stream).collect(Collectors.toList());
                     childVo.setTreeNode(true);
                     childVo.setChild(tableVos);
+                    count += dataColInfo.size();
                 }
             }
         }
-        return CollectionUtils.isEmpty(child);
+        return count;
     }
 
     private DataResourceTreeVo convertFieldClaToNode(FieldCla item, String pid) {
@@ -390,6 +402,7 @@ public class DataResourceFacade implements IDataResourceFacade {
                 .id(item.getId())
                 .pId(pid)
                 .label(item.getName())
+                .classifyCode(DataResourceEnum.COLUMN_CLASSIFY.getCode())
                 .code(item.getCode())
                 .build();
     }
@@ -785,7 +798,8 @@ public class DataResourceFacade implements IDataResourceFacade {
      * @param dataResourceEnum
      * @return
      */
-    private boolean combinePidAndTableInfo(DataResourceTreeVo treeVo, Map<String, List<AppDataResourceInfo>> tabInfosMap, DataResourceEnum dataResourceEnum) {
+    private int combinePidAndTableInfo(DataResourceTreeVo treeVo, Map<String, List<AppDataResourceInfo>> tabInfosMap, DataResourceEnum dataResourceEnum) {
+        int count = 0;
         List<DataResourceTreeVo> child = treeVo.getChild();
         Iterator<DataResourceTreeVo> iterator = child.iterator();
         while (iterator.hasNext()) {
@@ -795,49 +809,54 @@ public class DataResourceFacade implements IDataResourceFacade {
             List<DataResourceTreeVo> cc = childVo.getChild();
             if (CollectionUtils.isNotEmpty(cc)) {
                 childVo.setTreeNode(true);
-                boolean emptyChild = combinePidAndTableInfo(childVo, tabInfosMap, dataResourceEnum);
-                if (emptyChild) {
+                int childCount = combinePidAndTableInfo(childVo, tabInfosMap, dataResourceEnum);
+                if (childCount == 0) {
                     iterator.remove();
+                } else {
+                    count += childCount;
                 }
             } 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);
+                    count += tableVos.size();
                 }
-
             }
         }
-        return CollectionUtils.isEmpty(child);
+        return count;
     }
 
     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());
             if (null != colInfosMap) {
                 List<AppDataItemInfo> colInfoList = colInfosMap.get(e.getId());
                 if (CollectionUtils.isNotEmpty(colInfoList)) {
-                    List<DataResourceTreeVo> colVos = convertColumnToTreeVo(e.getId(), colInfoList, resourceEnum);
+                    List<DataResourceTreeVo> colVos = convertColumnToTreeVo(vo.getId(), colInfoList, resourceEnum);
                     vo.setChild(colVos);
                     vo.setTreeNode(true);
                 } else {
                     vo.setChild(Collections.emptyList());
                     vo.setTreeNode(false);
                 }
+            } else {
+                vo.setChild(Collections.emptyList());
+                vo.setTreeNode(false);
             }
             return vo;
         }).collect(Collectors.toList());
@@ -850,6 +869,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());
     }

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

@@ -0,0 +1,176 @@
+package com.dragoninfo.dcuc.app.facade.sub;
+
+import cn.hutool.core.util.StrUtil;
+import com.dragoninfo.dcuc.app.entity.sub.AppColumnRelation;
+import com.dragoninfo.dcuc.app.entity.sub.FieldCla;
+import com.dragoninfo.dcuc.app.service.sub.IAppColumnRelationService;
+import com.dragoninfo.dcuc.app.service.sub.IFieldClaService;
+import com.dragoninfo.dcuc.app.vo.AppColumnDetailVo;
+import com.dragoninfo.dcuc.app.vo.AppColumnRelationPageVO;
+import com.dragoninfo.dcuc.app.vo.AppColumnRelationVO;
+import com.dragoninfo.dcuc.app.vo.AppColumnSaveVo;
+import com.dragonsoft.duceap.base.entity.http.ResponseStatus;
+import com.dragonsoft.duceap.base.entity.search.SearchDTO;
+import com.dragonsoft.duceap.base.enums.BooleanEnum;
+import com.dragonsoft.duceap.commons.util.collections.CollectionUtils;
+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.data.domain.Sort;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+import java.util.Map;
+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;
+
+    @Autowired
+    private IFieldClaService fieldClaService;
+
+    @Override
+    public Page<AppColumnRelationPageVO> pageSearch(SearchDTO searchDTO) {
+        Searchable searchable = Searchable.toSearchable(searchDTO);
+        Pageable pageable = searchable.getPage();
+        searchable.addSort(Sort.Direction.DESC, "createTime");
+        Page<AppColumnRelation> page = appColumnRelationService.pageSearch(searchable);
+        if (page.isEmpty()) {
+            return new PageImpl<>(Collections.emptyList(), pageable, 0L);
+        }
+        List<AppColumnRelation> content = page.getContent();
+        List<AppColumnRelationPageVO> collect = content.stream().map(e -> {
+            AppColumnRelationPageVO vo = new AppColumnRelationPageVO();
+            vo.setId(e.getId());
+            vo.setCodeValue(e.getCodeValue());
+            String codeName = e.getCodeName();
+            String[] split = codeName.split("->");
+            String relationName = split[0].split(StrUtil.UNDERLINE)[1] + "->" + split[1].split(StrUtil.UNDERLINE)[1];
+            vo.setColumnRelation(relationName);
+            return vo;
+        }).collect(Collectors.toList());
+        return new PageImpl<>(collect, pageable, page.getTotalElements());
+    }
+
+    @Override
+    public AppColumnDetailVo detail(String id) {
+        AppColumnRelation relation = appColumnRelationService.getById(id);
+        if (null != relation) {
+            AppColumnDetailVo vo = new AppColumnDetailVo();
+            vo.setId(relation.getId());
+            String codeName = relation.getCodeName();
+            String[] split = codeName.split("->");
+            String oneName = split[0].split(StrUtil.UNDERLINE)[1];
+            String twoName = split[1].split(StrUtil.UNDERLINE)[1];
+            vo.setColumnClaNameOne(oneName);
+            vo.setColumnClaNameTwo(twoName);
+            String oneCode = relation.getColumnOneClassValue();
+            List<FieldCla> oneList = fieldClaService.getByNameLike(oneCode, "2");
+            if (CollectionUtils.isNotEmpty(oneList)) {
+                vo.setColumnClaIdOne(oneList.get(0).getId());
+            }
+            String twoCode = relation.getColumnTwoClassValue();
+            List<FieldCla> twoList = fieldClaService.getByNameLike(twoCode, "2");
+            if (CollectionUtils.isNotEmpty(twoList)) {
+                vo.setColumnClaIdTwo(twoList.get(0).getId());
+            }
+            return vo;
+        }
+        return null;
+    }
+
+    @Override
+    public void deleteById(String id) {
+        appColumnRelationService.deleteById(id);
+    }
+
+    @Override
+    public ResponseStatus relationAdd(AppColumnSaveVo saveVo) {
+        String columnClaIdOne = saveVo.getColumnClaIdOne();
+        String columnClaIdTwo = saveVo.getColumnClaIdTwo();
+        if (columnClaIdOne.equals(columnClaIdTwo)) {
+            return ResponseStatus.fail("不能选择相同的分类");
+        }
+        AppColumnRelation relation = getNewRelation(saveVo);
+        AppColumnRelation exist = appColumnRelationService.getByCode(relation.getCodeValue());
+        if (null != exist) {
+            return ResponseStatus.fail("字段关系已存在");
+        }
+        appColumnRelationService.save(relation);
+        return ResponseStatus.success();
+    }
+
+    @Override
+    public ResponseStatus relationUpdate(AppColumnSaveVo saveVo) {
+        AppColumnRelation relation = getNewRelation(saveVo);
+        String codeValue = relation.getCodeValue();
+        AppColumnRelation oldRelation = appColumnRelationService.getById(saveVo.getId());
+        if (codeValue.equals(oldRelation.getCodeValue())) {
+            return ResponseStatus.fail("字段关系未修改");
+        }
+        AppColumnRelation exist = appColumnRelationService.getByCode(codeValue);
+        if (null != exist) {
+            return ResponseStatus.fail("字段关系已存在");
+        }
+        BeanUtils.copyProperties(relation, oldRelation, "id", "createTime", "createUser");
+        appColumnRelationService.update(oldRelation);
+        return ResponseStatus.success();
+    }
+
+    @Override
+    public List<AppColumnRelationVO> findAllIdAndCode() {
+        List<AppColumnRelation> allIdAndCode = appColumnRelationService.findAllIdAndCode();
+        return allIdAndCode.stream().map(e-> {
+            AppColumnRelationVO vo = new AppColumnRelationVO();
+            vo.setId(e.getId());
+            vo.setCodeName(e.getCodeName());
+            vo.setCodeValue(e.getCodeValue());
+            return vo;
+        }).collect(Collectors.toList());
+    }
+
+    private AppColumnRelation getNewRelation(AppColumnSaveVo saveVo) {
+        String columnIdOne = saveVo.getColumnClaIdOne();
+        String columnIdTwo = saveVo.getColumnClaIdTwo();
+        List<String> list = new ArrayList<>();
+        list.add(columnIdOne);
+        list.add(columnIdTwo);
+        List<FieldCla> secColumnClas = fieldClaService.getByIds(list);
+        List<String> firIds = secColumnClas.stream().map(FieldCla::getFirId).distinct().collect(Collectors.toList());
+        List<FieldCla> firColumnClas = fieldClaService.getByIds(firIds);
+        firColumnClas.addAll(secColumnClas);
+        Map<String, FieldCla> claMap = firColumnClas.stream().collect(Collectors.toMap(FieldCla::getId, e -> e));
+        AppColumnRelation relation = new AppColumnRelation();
+        // 组装成关联关系对象
+        FieldCla oneFieldCla = claMap.get(columnIdOne);
+        FieldCla twoFieldCla = claMap.get(columnIdTwo);
+        String oneName = oneFieldCla.getName();
+        String twoName = twoFieldCla.getName();
+        relation.setColumnOneClassValue(oneName);
+        relation.setColumnTwoClassValue(twoName);
+        FieldCla firOneFieldCla = claMap.get(oneFieldCla.getFirId());
+        FieldCla firTwoFieldCla = claMap.get(twoFieldCla.getFirId());
+        String code = firOneFieldCla.getName() + StrUtil.UNDERLINE + oneName + "->"
+                + firTwoFieldCla.getName() + StrUtil.UNDERLINE + twoName;
+        relation.setCodeName(code);
+        relation.setCodeValue(code);
+        relation.setDeleted(BooleanEnum.FALSE.value);
+        return relation;
+    }
+
+
+}

+ 16 - 0
dcuc-app-service/src/main/java/com/dragoninfo/dcuc/app/facade/sub/FieldClaFacade.java

@@ -3,9 +3,12 @@ package com.dragoninfo.dcuc.app.facade.sub;
 import com.dragoninfo.dcuc.app.dto.sub.FieldClaAcceptDTO;
 import com.dragoninfo.dcuc.app.dto.sub.FieldClaDTO;
 import com.dragoninfo.dcuc.app.entity.sub.FieldCla;
+import com.dragoninfo.dcuc.app.enumresources.DataAuthTypeCodeEnum;
 import com.dragoninfo.dcuc.app.service.sub.IFieldClaService;
 import com.dragonsoft.duceap.base.entity.http.ResponseStatus;
 import com.dragonsoft.duceap.base.entity.search.SearchDTO;
+import com.dragonsoft.duceap.core.search.Searchable;
+import com.dragonsoft.duceap.core.search.enums.SearchOperator;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.data.domain.Page;
@@ -13,6 +16,7 @@ import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 
 import java.util.List;
+import java.util.stream.Collectors;
 
 /**
  * @author mazq
@@ -62,4 +66,16 @@ public class FieldClaFacade implements IFieldClaFacade {
     public Page<FieldClaAcceptDTO> pageSearch(SearchDTO searchDTO) {
         return fieldClaService.pageSearch(searchDTO);
     }
+
+    @Override
+    public List<FieldClaDTO> getSecLevelColumn(SearchDTO searchDTO) {
+        Searchable searchable = Searchable.toSearchable(searchDTO);
+        searchable.addSearchFilter("dataType", SearchOperator.eq, DataAuthTypeCodeEnum.AUTH_DATA_FIELD_SEC.value);
+        List<FieldCla> list = fieldClaService.findList(searchable);
+        return list.stream().map(e -> {
+            FieldClaDTO dto = new FieldClaDTO();
+            BeanUtils.copyProperties(e, dto);
+            return dto;
+        }).collect(Collectors.toList());
+    }
 }

+ 54 - 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;
 
@@ -22,5 +24,57 @@ public interface IAppColumnRelationService {
      */
     void sync(List<AppColumnRelationVO> list);
 
+    /**
+     * 获取所有关系
+     *
+     * @return
+     */
     List<AppColumnRelation> findAll();
+
+    /**
+     * 获取所有关系的id和code
+     *
+     * @return
+     */
+    List<AppColumnRelation> findAllIdAndCode();
+
+    /**
+     * 分页查询
+     *
+     * @param searchable
+     * @return
+     */
+    Page<AppColumnRelation> pageSearch(Searchable searchable);
+
+    /**
+     * 根据id获取详情
+     *
+     * @param id
+     * @return
+     */
+    AppColumnRelation getById(String id);
+
+    /**
+     * 根据id删除关联关系
+     *
+     * @param id
+     */
+    void deleteById(String id);
+
+    AppColumnRelation getByCode(String code);
+
+    /**
+     * 新增
+     *
+     * @param relation
+     */
+    void save(AppColumnRelation relation);
+
+    /**
+     * 修改
+     *
+     * @param oldRelation
+     */
+    void update(AppColumnRelation oldRelation);
+
 }

+ 8 - 0
dcuc-app-service/src/main/java/com/dragoninfo/dcuc/app/service/sub/IFieldClaService.java

@@ -6,6 +6,7 @@ import com.dragoninfo.dcuc.app.entity.sub.FieldCla;
 import com.dragoninfo.dcuc.app.vo.DataResourceSyncTreeVo;
 import com.dragonsoft.duceap.base.entity.http.ResponseStatus;
 import com.dragonsoft.duceap.base.entity.search.SearchDTO;
+import com.dragonsoft.duceap.core.search.Searchable;
 import org.springframework.data.domain.Page;
 
 import java.util.List;
@@ -90,6 +91,13 @@ public interface IFieldClaService {
      */
     List<FieldCla> getByIds(List<String> ids);
 
+    /**
+     * 批量查询
+     * @param searchable
+     * @return
+     */
+    List<FieldCla> findList(Searchable searchable);
+
     /**
      * 字段分类数据同步
      * @param nodes

+ 42 - 1
dcuc-app-service/src/main/java/com/dragoninfo/dcuc/app/service/sub/impl/AppColumnRelationServiceImpl.java

@@ -7,13 +7,16 @@ import com.dragoninfo.dcuc.app.entity.sub.AppColumnRelation;
 import com.dragoninfo.dcuc.app.mapper.sub.AppColumnRelationMapper;
 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.commons.util.string.StringUtils;
+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;
 
 import java.util.List;
+import java.util.stream.Collectors;
 
 /**
  * <p>
@@ -62,12 +65,50 @@ public class AppColumnRelationServiceImpl implements IAppColumnRelationService {
         return appColumnRelationMapper.selectList(null);
     }
 
+    @Override
+    public List<AppColumnRelation> findAllIdAndCode() {
+        LambdaQueryWrapper<AppColumnRelation> query = Wrappers.lambdaQuery();
+        query.select(AppColumnRelation::getId, AppColumnRelation::getCodeValue);
+        return appColumnRelationMapper.selectList(query);
+    }
+
+
+
+    @Override
+    public Page<AppColumnRelation> pageSearch(Searchable searchable) {
+        return appColumnRelationMapper.pagingBySearchable(searchable);
+    }
+
+    @Override
+    public AppColumnRelation getById(String id) {
+        if (StringUtils.isBlank(id)) {
+            return null;
+        }
+        return appColumnRelationMapper.selectById(id);
+    }
+
+    @Override
+    public void deleteById(String id) {
+        appColumnRelationMapper.deleteById(id);
+    }
+
+    @Override
     public AppColumnRelation getByCode(String code) {
         LambdaQueryWrapper<AppColumnRelation> lambdaQuery = Wrappers.lambdaQuery();
         lambdaQuery.eq(AppColumnRelation::getCodeValue, code);
         return appColumnRelationMapper.selectOne(lambdaQuery);
     }
 
+    @Override
+    public void save(AppColumnRelation relation) {
+        appColumnRelationMapper.insert(relation);
+    }
+
+    @Override
+    public void update(AppColumnRelation oldRelation) {
+        appColumnRelationMapper.updateById(oldRelation);
+    }
+
     public String getOneCodeVale(String relationCodeValue) {
         if (StrUtil.isBlank(relationCodeValue)) {
             throw new IllegalArgumentException();

+ 1 - 0
dcuc-app-service/src/main/java/com/dragoninfo/dcuc/app/service/sub/impl/AppDataItemInfoServiceImpl.java

@@ -59,6 +59,7 @@ public class AppDataItemInfoServiceImpl implements IAppDataItemInfoService {
 
     @Override
     public List<AppDataItemInfo> searchList(Searchable searchable) {
+        searchable.removePageable();
         return appDataItemInfoMapper.findBySearchable(searchable);
     }
 

+ 1 - 0
dcuc-app-service/src/main/java/com/dragoninfo/dcuc/app/service/sub/impl/AppDataResourceInfoServiceImpl.java

@@ -80,6 +80,7 @@ public class AppDataResourceInfoServiceImpl implements IAppDataResourceInfoServi
 
     @Override
     public List<AppDataResourceInfo> searchList(Searchable searchable) {
+        searchable.removePageable();
         return appDataResourceInfoMapper.findBySearchable(searchable);
     }
 

+ 5 - 1
dcuc-app-service/src/main/java/com/dragoninfo/dcuc/app/service/sub/impl/FieldClaServiceImpl.java

@@ -11,7 +11,6 @@ import com.dragoninfo.dcuc.app.enumresources.sub.FieldClaTypeEnum;
 import com.dragoninfo.dcuc.app.mapper.sub.FieldClaMapper;
 import com.dragoninfo.dcuc.app.service.sub.IFieldClaService;
 import com.dragoninfo.dcuc.app.vo.DataResourceSyncTreeVo;
-import com.dragoninfo.dcuc.app.vo.DataResourceTreeVo;
 import com.dragonsoft.duceap.base.entity.http.ResponseStatus;
 import com.dragonsoft.duceap.base.entity.search.SearchDTO;
 import com.dragonsoft.duceap.base.enums.BooleanEnum;
@@ -254,6 +253,11 @@ public class FieldClaServiceImpl implements IFieldClaService {
         return fieldClaMapper.selectList(queryWrapper);
     }
 
+    @Override
+    public List<FieldCla> findList(Searchable searchable) {
+        return fieldClaMapper.findBySearchable(searchable);
+    }
+
     @Override
     public void sync(List<DataResourceSyncTreeVo> nodes, String path) {
         if(CollectionUtils.isEmpty(nodes)) {