Explorar el Código

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

Mzq sjjq 220929

See merge request xj-aks/dcuc/app-service!1
马志强 hace 2 años
padre
commit
1dbc08199d
Se han modificado 41 ficheros con 2284 adiciones y 185 borrados
  1. 9 1
      dcuc-app-api/src/main/java/com/dragoninfo/dcuc/app/facade/IDataResourceFacade.java
  2. 24 0
      dcuc-app-model/src/main/java/com/dragoninfo/dcuc/app/dto/dataresource/BaseResp.java
  3. 309 0
      dcuc-app-model/src/main/java/com/dragoninfo/dcuc/app/dto/dataresource/DataResourceInfoDTO.java
  4. 159 0
      dcuc-app-model/src/main/java/com/dragoninfo/dcuc/app/dto/dataresource/DataResourceItemIntoDTO.java
  5. 34 0
      dcuc-app-model/src/main/java/com/dragoninfo/dcuc/app/dto/dataresource/PageDataRespDTO.java
  6. 28 0
      dcuc-app-model/src/main/java/com/dragoninfo/dcuc/app/dto/dataresource/PageReqDTO.java
  7. 73 0
      dcuc-app-model/src/main/java/com/dragoninfo/dcuc/app/entity/sub/AppColumnRelation.java
  8. 145 0
      dcuc-app-model/src/main/java/com/dragoninfo/dcuc/app/entity/sub/AppDataItemInfo.java
  9. 227 0
      dcuc-app-model/src/main/java/com/dragoninfo/dcuc/app/entity/sub/AppDataResourceInfo.java
  10. 27 14
      dcuc-app-model/src/main/java/com/dragoninfo/dcuc/app/enumresources/DataResourceEnum.java
  11. 4 5
      dcuc-app-model/src/main/java/com/dragoninfo/dcuc/app/vo/DataResourceTreeVo.java
  12. 30 0
      dcuc-app-service/src/main/java/com/dragoninfo/dcuc/app/business/IDataCatalogBusiness.java
  13. 1 1
      dcuc-app-service/src/main/java/com/dragoninfo/dcuc/app/business/IResourceBusiness.java
  14. 166 0
      dcuc-app-service/src/main/java/com/dragoninfo/dcuc/app/business/impl/DataCatalogBusinessImpl.java
  15. 0 32
      dcuc-app-service/src/main/java/com/dragoninfo/dcuc/app/business/impl/ResourceBusiness.java
  16. 6 5
      dcuc-app-service/src/main/java/com/dragoninfo/dcuc/app/config/DcucResourceConfig.java
  17. 13 0
      dcuc-app-service/src/main/java/com/dragoninfo/dcuc/app/cons/CommonCons.java
  18. 33 0
      dcuc-app-service/src/main/java/com/dragoninfo/dcuc/app/entity/DataColInfo.java
  19. 41 0
      dcuc-app-service/src/main/java/com/dragoninfo/dcuc/app/entity/DataTabInfo.java
  20. 300 93
      dcuc-app-service/src/main/java/com/dragoninfo/dcuc/app/facade/DataResourceFacade.java
  21. 11 0
      dcuc-app-service/src/main/java/com/dragoninfo/dcuc/app/mapper/DataColInfoMapper.java
  22. 11 0
      dcuc-app-service/src/main/java/com/dragoninfo/dcuc/app/mapper/DataTabInfoMapper.java
  23. 15 0
      dcuc-app-service/src/main/java/com/dragoninfo/dcuc/app/mapper/sub/AppColumnRelationMapper.java
  24. 16 0
      dcuc-app-service/src/main/java/com/dragoninfo/dcuc/app/mapper/sub/AppDataItemInfoMapper.java
  25. 16 0
      dcuc-app-service/src/main/java/com/dragoninfo/dcuc/app/mapper/sub/AppDataResourceInfoMapper.java
  26. 15 0
      dcuc-app-service/src/main/java/com/dragoninfo/dcuc/app/service/IDataColInfoService.java
  27. 9 1
      dcuc-app-service/src/main/java/com/dragoninfo/dcuc/app/service/IDataResourceService.java
  28. 16 0
      dcuc-app-service/src/main/java/com/dragoninfo/dcuc/app/service/IDataTabInfoService.java
  29. 26 0
      dcuc-app-service/src/main/java/com/dragoninfo/dcuc/app/service/impl/DataColInfoServiceImpl.java
  30. 24 17
      dcuc-app-service/src/main/java/com/dragoninfo/dcuc/app/service/impl/DataResourceServiceImpl.java
  31. 25 0
      dcuc-app-service/src/main/java/com/dragoninfo/dcuc/app/service/impl/DataTabInfoServiceImpl.java
  32. 12 0
      dcuc-app-service/src/main/java/com/dragoninfo/dcuc/app/service/sub/IAppColumnRelationService.java
  33. 28 0
      dcuc-app-service/src/main/java/com/dragoninfo/dcuc/app/service/sub/IAppDataItemInfoService.java
  34. 27 0
      dcuc-app-service/src/main/java/com/dragoninfo/dcuc/app/service/sub/IAppDataResourceInfoService.java
  35. 22 0
      dcuc-app-service/src/main/java/com/dragoninfo/dcuc/app/service/sub/impl/AppColumnRelationServiceImpl.java
  36. 42 0
      dcuc-app-service/src/main/java/com/dragoninfo/dcuc/app/service/sub/impl/AppDataItemInfoServiceImpl.java
  37. 40 0
      dcuc-app-service/src/main/java/com/dragoninfo/dcuc/app/service/sub/impl/AppDataResourceInfoServiceImpl.java
  38. 2 3
      dcuc-app-service/src/main/resources/application-app.yml
  39. 104 0
      dcuc-app-service/src/main/resources/config/mysql/V4_1_0008__Add_Data_Table_Ration.sql
  40. 194 0
      dcuc-app-service/src/main/resources/config/sql/V4_1_0008__Add_Data_Table_Ration.sql
  41. 0 13
      dcuc-app-service/src/test/java/com/dragoninfo/dcuc/app/business/ResourceBusinessTest.java

+ 9 - 1
dcuc-app-api/src/main/java/com/dragoninfo/dcuc/app/facade/IDataResourceFacade.java

@@ -38,7 +38,7 @@ public interface IDataResourceFacade {
     @ApiOperation(value = "数据资源树")
     @ApiImplicitParam(name = "attrType", value = "数据属性类型 TABLE:表 COLUMN:列")
     @GetMapping(value = "getAllDataResourceTree")
-    List<DataResourceClassifyVo> getAllDataResourceTree(@RequestParam("attrType") String attrType);
+    List<DataResourceClassifyVo> getAllDataResourceTree(@RequestParam(value = "attrType", required = false) String attrType);
 
     @ApiOperation(value = "数据资源树")
     @ApiImplicitParam(name = "typeCode", value = "typeCode类型(数据分级:DATA_CLASSIFY;数据资源分类:DATA_RESOURCE_CLASSIFY;数据安全级别:DATA_SECURITY_LEVEL;字段分类:COLUMN_CLASSIFY)")
@@ -78,6 +78,14 @@ public interface IDataResourceFacade {
     @GetMapping(value = "fieldClaSync")
     ResponseStatus fieldClaSync();
 
+    /**
+     * 表和字段同步
+     *
+     * @return 状态
+     */
+    @GetMapping(value = "syncTableAndColumn")
+    ResponseStatus syncTableAndColumn();
+
     /**
      * 批量获取
      * 根据id和classifyType获取名字和code值

+ 24 - 0
dcuc-app-model/src/main/java/com/dragoninfo/dcuc/app/dto/dataresource/BaseResp.java

@@ -5,13 +5,37 @@ import lombok.Data;
 import java.util.List;
 
 /**
+ * 基础返回值
+ *
  * @Author: qiuyu
  * @Date: 2021/4/15 11:11
  * @Description:
  */
 @Data
 public class BaseResp<T> {
+
+    /**
+     * 成功代码
+     */
+    public static final String SUCCESS_CODE = "000";
+    /**
+     * 返回状态,000成功,其它异常
+     */
     private String code;
+    /**
+     * 返回消息
+     */
     private String message;
+    /**
+     * 返回数据
+     */
     private T resultData;
+
+    public boolean isSuccess() {
+        return this.code.equals(SUCCESS_CODE);
+    }
+
+    public boolean isFail() {
+        return !isSuccess();
+    }
 }

+ 309 - 0
dcuc-app-model/src/main/java/com/dragoninfo/dcuc/app/dto/dataresource/DataResourceInfoDTO.java

@@ -0,0 +1,309 @@
+
+package com.dragoninfo.dcuc.app.dto.dataresource;
+
+import cn.hutool.core.bean.BeanUtil;
+import cn.hutool.core.date.DatePattern;
+import cn.hutool.core.date.DateUtil;
+import com.dragoninfo.dcuc.app.entity.sub.AppDataResourceInfo;
+import lombok.Data;
+
+import java.util.Date;
+import java.util.List;
+
+/**
+ * 数据资源表信息
+ *
+ * @author huangzqa
+ * @date 2022/10/02
+ */
+@Data
+public class DataResourceInfoDTO {
+
+    /**
+     * 应用系统编号
+     */
+    private String applicationCode;
+
+    /**
+     * 应用系统名称
+     */
+    private String applicationCodeName;
+
+    /**
+     * 数据资源事权单位编号
+     */
+    private String authorityDeptCode;
+
+    /**
+     * 数据资源事权单位名称
+     */
+    private String authorityDeptName;
+
+    /**
+     * 数据资源目录编号
+     */
+    private String catalogCode;
+
+    /**
+     * 对标类型00:未对标;01:本地标准;02:公安部规范
+     */
+    private String comparisonType;
+
+    /**
+     * 数据获取方式编号
+     */
+    private String dataAccessCode;
+
+    /**
+     * 数据获取方式名称
+     */
+    private String dataAccessName;
+
+    /**
+     * 数据分级代码
+     */
+    private String dataClassification;
+
+    /**
+     * 数据分级名称
+     */
+    private String dataClassificationName;
+
+    /**
+     * 数据组织一级分类代码
+     */
+    private String dataClassifyOneCode;
+
+    /**
+     * 数据组织一级分类名称
+     */
+    private String dataClassifyOneName;
+
+    /**
+     * 数据组织二级分类代码
+     */
+    private String dataClassifyTwoCode;
+
+    /**
+     * 数据组织二级分类名称
+     */
+    private String dataClassifyTwoName;
+
+    /**
+     * 数据接入方式编号
+     */
+    private String dataInsertCode;
+
+    /**
+     * 数据接入方式名称
+     */
+    private String dataInsertName;
+
+    /**
+     * 数据标签5代码
+     */
+    private String dataLabelFiveCode;
+
+    /**
+     * 数据标签5名称
+     */
+    private String dataLabelFiveName;
+
+    /**
+     * 数据标签4代码
+     */
+    private String dataLabelFourCode;
+
+    /**
+     * 数据标签4名称
+     */
+    private String dataLabelFourName;
+    /**
+     * 数据标签3代码
+     */
+    private String dataLabelThreeCode;
+    /**
+     * 数据标签3名称
+     */
+    private String dataLabelThreeName;
+    /**
+     * 数据标签3代码
+     */
+    private String dataLabelTwoCode;
+    /**
+     * 数据标签2名称
+     */
+    private String dataLabelTwoName;
+    /**
+     * 数据标签1代码
+     */
+    private String dataLabelOneCode;
+    /**
+     * 数据标签1名称
+     */
+    private String dataLabelOneName;
+    /**
+     * 数据对象ID
+     */
+    private String dataObjectId;
+    /**
+     * 一级数据来源编号
+     */
+    private String dataSourceOneCode;
+    /**
+     * 一级数据来源名称
+     */
+    private String dataSourceOneName;
+    /**
+     * 二级数据来源编号
+     */
+    private String dataSourceTwoCode;
+    /**
+     * 二级数据来源名称
+     */
+    private String dataSourceTwoName;
+    /**
+     * 增量数据记录规模
+     */
+    private String incrementRecordSize;
+    /**
+     * 增量数据存储规模
+     */
+    private String incrementStorageSize;
+    /**
+     * 是否开放服务1是0否
+     */
+    private String isAccess;
+    /**
+     * 数据资源管理单位编号
+     */
+    private String manageDeptCode;
+    /**
+     * 数据资源管理单位名称
+     */
+    private String manageDeptName;
+    /**
+     * 注册时间,格式:yyyy-MM-dd HH:mm:ss
+     */
+    private String registerTime;
+    /**
+     * 数据资源标识符
+     */
+    private String resourceCode;
+    /**
+     * 数据资源描述
+     */
+    private String resourceDescription;
+
+    /**
+     * 资源ID
+     */
+    private String resourceId;
+    /***
+     * 数据资源位置编号
+     */
+    private String resourceLocationCode;
+    /**
+     * 数据资源位置名称
+     */
+    private String resourceLocationName;
+    /**
+     * 据资源名称
+     */
+    private String resourceName;
+    /**
+     * 数据资源服务编号
+     */
+    private String resourceServiceCode;
+    /**
+     * 资源状态代码
+     */
+    private String resourceStatus;
+
+    /**
+     * 资源状态名称1启动0停用2注销
+     */
+    private String resourceStatusName;
+
+    /**
+     * 数据资源版本号
+     */
+    private String resourceVersion;
+    /**
+     * 来源系统种类编号
+     */
+    private String sourceSystemCode;
+    /**
+     * 来源系统种类名称
+     */
+    private String sourceSystemName;
+    /**
+     * 标准数据项集编码
+     */
+    private String standardDataCode;
+    /**
+     * 标准数据项集名称
+     */
+    private String standardDataName;
+    /**
+     * 存量数据记录规模
+     */
+    private String stockRecordSize;
+    /**
+     * 存量数据存储规模
+     */
+    private String stockStorageSize;
+    /**
+     * 数据资源存储位置描述编号
+     */
+    private String storageCenterCode;
+    /**
+     * 数据资源存储位置描述名称
+     */
+    private String storageCenterName;
+    /**
+     * 数据存储周期
+     */
+    private String storageCycle;
+    /**
+     * 数据对象英文名
+     */
+    private String tableCode;
+    /**
+     * 数据对象中文名
+     */
+    private String tableName;
+    /**
+     * 数据更新周期代码
+     */
+    private String updateCycleCode;
+    /**
+     * 数据更新周期名称
+     */
+    private String updateCycleName;
+    /**
+     * 更新时间,格式:yyyy-MM-dd HH:mm:ss
+     */
+    private String updateTime;
+
+    /**
+     * 数据项信息
+     */
+    private List<DataResourceItemIntoDTO> dataItems;
+
+    public AppDataResourceInfo parseToAppDataResourceInfo() {
+        AppDataResourceInfo appDataResourceInfo = new AppDataResourceInfo();
+        BeanUtil.copyProperties(this, appDataResourceInfo);
+        BeanUtil.copyProperties(this, appDataResourceInfo);
+        Date registerTime = DateUtil.parse(this.registerTime, DatePattern.NORM_DATETIME_PATTERN);
+        appDataResourceInfo.setResourceRegisterTime(registerTime);
+        Date updateTime = DateUtil.parse(this.updateTime, DatePattern.NORM_DATETIME_PATTERN);
+        appDataResourceInfo.setResourceUpdateTime(updateTime);
+        appDataResourceInfo.setAccess(this.isAccess);
+
+        appDataResourceInfo.setCreateTime(null);
+        appDataResourceInfo.setUpdateTime(null);
+        return appDataResourceInfo;
+    }
+
+}

+ 159 - 0
dcuc-app-model/src/main/java/com/dragoninfo/dcuc/app/dto/dataresource/DataResourceItemIntoDTO.java

@@ -0,0 +1,159 @@
+
+package com.dragoninfo.dcuc.app.dto.dataresource;
+
+import cn.hutool.core.bean.BeanUtil;
+import cn.hutool.core.date.DatePattern;
+import cn.hutool.core.date.DateUtil;
+import com.dragoninfo.dcuc.app.entity.sub.AppDataItemInfo;
+import lombok.Data;
+
+import java.util.Date;
+
+/**
+ * 数据资源表信息
+ *
+ * @author huangzqa
+ * @date 2022/10/02
+ */
+@Data
+public class DataResourceItemIntoDTO {
+
+    /**
+     * 字段分类代码
+     */
+    private String columnClassify;
+    /**
+     * 字段分类名称
+     */
+    private String columnClassifyName;
+    /**
+     * 字段英文名称
+     */
+    private String columnCode;
+    /**
+     * 数据项ID
+     */
+    private String columnId;
+    /**
+     * 字段中文名称
+     */
+    private String columnName;
+    /**
+     * 数据元内部标识符
+     */
+    private String dataElementCode;
+    /**
+     * 数据项标识符
+     */
+    private String dataItemCode;
+    /**
+     * 数据项编号
+     */
+    private String dataItemNo;
+    /**
+     * 数据安全级别代码
+     */
+    private String dataSecurityLevel;
+    /**
+     * 数据安全级别名称
+     */
+    private String dataSecurityLevelName;
+    /**
+     * 数据项类型代码
+     */
+    private String dataSourceItemType;
+    /**
+     * 数据项类型名称
+     */
+    private String dataSourceItemTypeName;
+
+    /**
+     * ???
+     */
+    private Boolean idItemStatus;
+    /**
+     * 是否失效,true/false
+     */
+    private Boolean invalidStatus;
+    /**
+     * 查询/订阅匹配方式代码
+     */
+    private String matchingModeCode;
+    /**
+     * 查询/订阅匹配方式名称
+     */
+    private String matchingModeName;
+    /**
+     * 字段性质分类代码
+     */
+    private String propertyClassifyCode;
+    /**
+     * 字段性质分类名称
+     */
+    private String propertyClassifyName;
+    /**
+     * 注册时间,格式:yyyy-MM-dd HH:mm:ss
+     */
+    private String registerTime;
+    /**
+     * 备注
+     */
+    private String remark;
+    /**
+     * 是否必填,true/false
+     */
+    private Boolean requiredStatus;
+    /**
+     * 是否查询条件,true/false
+     */
+    private Boolean searchConditionStatus;
+    /**
+     * 字段敏感分类代码
+     */
+    private String sensitiveClassifyCode;
+    /**
+     * 字段敏感分类名称
+     */
+    private String sensitiveClassifyName;
+    /**
+     * 数据项集数据项英文名
+     */
+    private String standardDataItemCode;
+    /**
+     * 数据项集数据项数据长度
+     */
+    private String standardDataItemLength;
+    /**
+     * 数据项集数据项中文名
+     */
+    private String standardDataItemName;
+    /**
+     * 数据项集数据项编号
+     */
+    private String standardDataItemNo;
+    /**
+     * 数据项集数据项数据类型
+     */
+    private String standardDataItemType;
+    /**
+     * 是否订阅条件,true/false
+     */
+    private Boolean subscribeConditionStatus;
+    /**
+     * 更新时间,格式:yyyy-MM-dd HH:mm:ss
+     */
+    private String updateTime;
+
+    public AppDataItemInfo parseToAppDataItemInfo() {
+        AppDataItemInfo appDataItemInfo = new AppDataItemInfo();
+        BeanUtil.copyProperties(this, appDataItemInfo);
+        Date registerTime = DateUtil.parse(this.registerTime, DatePattern.NORM_DATETIME_PATTERN);
+        appDataItemInfo.setColumnRegisterTime(registerTime);
+        Date updateTime = DateUtil.parse(this.updateTime, DatePattern.NORM_DATETIME_PATTERN);
+        appDataItemInfo.setColumnUpdateTime(updateTime);
+        appDataItemInfo.setCreateTime(null);
+        appDataItemInfo.setUpdateTime(null);
+        return appDataItemInfo;
+    }
+
+}

+ 34 - 0
dcuc-app-model/src/main/java/com/dragoninfo/dcuc/app/dto/dataresource/PageDataRespDTO.java

@@ -0,0 +1,34 @@
+package com.dragoninfo.dcuc.app.dto.dataresource;
+
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * <p>
+ * 分页返回
+ * </p>
+ *
+ * @author huangzqa
+ * @date 2022/10/2
+ */
+@Data
+public class PageDataRespDTO<T> {
+    /**
+     * 当前页码
+     */
+    private Integer page;
+    /**
+     * 每页条数,为空默认为10
+     */
+    private Integer pageSize;
+    /**
+     * 总记录数
+     */
+    private Integer totalCount;
+    /**
+     * 返回数据
+     */
+    private List<T> dataList;
+
+}

+ 28 - 0
dcuc-app-model/src/main/java/com/dragoninfo/dcuc/app/dto/dataresource/PageReqDTO.java

@@ -0,0 +1,28 @@
+package com.dragoninfo.dcuc.app.dto.dataresource;
+
+import lombok.Data;
+
+/**
+ * <p>
+ * 分页请求
+ * </p>
+ *
+ * @author huangzqa
+ * @date 2022/10/2
+ */
+@Data
+public class PageReqDTO {
+    /**
+     * 请求页码,从1开始
+     */
+    private Integer page;
+    /**
+     * 每页条数,为空默认为10
+     */
+    private Integer pageSize;
+
+    /**
+     * 条件
+     */
+    private Object condition;
+}

+ 73 - 0
dcuc-app-model/src/main/java/com/dragoninfo/dcuc/app/entity/sub/AppColumnRelation.java

@@ -0,0 +1,73 @@
+package com.dragoninfo.dcuc.app.entity.sub;
+
+import com.baomidou.mybatisplus.annotation.*;
+import lombok.Data;
+import org.apache.ibatis.type.JdbcType;
+import org.springframework.data.annotation.CreatedBy;
+import org.springframework.data.annotation.CreatedDate;
+import org.springframework.data.annotation.LastModifiedBy;
+import org.springframework.data.annotation.LastModifiedDate;
+
+import java.util.Date;
+
+/**
+ * <p>
+ * 字段关系表
+ * </p>
+ *
+ * @author huangzqa
+ * @date 2022/10/2
+ */
+@TableName("t_app_column_relation")
+@Data
+public class AppColumnRelation {
+    /**
+     * 编号
+     */
+    @TableId(type = IdType.UUID)
+    private String id;
+    /**
+     * 表码名称
+     */
+    private String codeName;
+    /**
+     * 表码值
+     */
+    private String codeValue;
+    /**
+     * 字段一分类值
+     */
+    private String columnOneClassValue;
+    /**
+     * 字段二分类值
+     */
+    private String columnTwoClassValue;
+    /**
+     * 是否删除
+     */
+    @TableLogic
+    private String deleted;
+    /**
+     * 创建时间
+     */
+    @CreatedDate
+    @TableField(jdbcType = JdbcType.TIMESTAMP, fill = FieldFill.INSERT)
+    private Date createTime;
+    /**
+     * 更新时间
+     */
+    @LastModifiedDate
+    @TableField(jdbcType = JdbcType.TIMESTAMP)
+    private Date updateTime;
+    /**
+     * 创建用户
+     */
+    @CreatedBy
+    @TableField(jdbcType = JdbcType.VARCHAR, fill = FieldFill.INSERT)
+    private String createUser;
+    /**
+     * 更新用户
+     */
+    @LastModifiedBy
+    private String updateUser;
+}

+ 145 - 0
dcuc-app-model/src/main/java/com/dragoninfo/dcuc/app/entity/sub/AppDataItemInfo.java

@@ -0,0 +1,145 @@
+package com.dragoninfo.dcuc.app.entity.sub;
+
+import com.baomidou.mybatisplus.annotation.*;
+import lombok.Data;
+import org.apache.ibatis.type.JdbcType;
+import org.springframework.data.annotation.CreatedBy;
+import org.springframework.data.annotation.CreatedDate;
+import org.springframework.data.annotation.LastModifiedBy;
+import org.springframework.data.annotation.LastModifiedDate;
+
+import java.util.Date;
+
+/**
+ * <p>
+ * 数据资源字段信息
+ * </p>
+ *
+ * @author huangzqa
+ * @date 2022/10/2
+ */
+@Data
+@TableName("t_app_data_item_info")
+public class AppDataItemInfo {
+    /**
+     * 编号
+     */
+    @TableId(type = IdType.UUID)
+    private String id;
+    /**
+     * 数据资源ID
+     */
+    private String resourceTableId;
+    /**
+     * 数据项ID
+     */
+    private String columnId;
+    /**
+     * 字段英文名称
+     */
+    private String columnCode;
+    /**
+     * 字段中文名称
+     */
+    private String columnName;
+    /**
+     * 字段分类代码
+     */
+    private String columnClassify;
+    /**
+     * 字段分类名称
+     */
+    private String columnClassifyName;
+    /**
+     * 数据安全级别代码
+     */
+    private String dataSecurityLevel;
+    /**
+     * 数据安全级别名称
+     */
+    private String dataSecurityLevelName;
+    /**
+     * 数据项编号
+     */
+    private String dataItemNo;
+    /**
+     * 数据项标识符
+     */
+    private String dataItemCode;
+    /**
+     * 数据项类型代码
+     */
+    private String dataSourceItemType;
+    /**
+     * 数据项类型名称
+     */
+    private String dataSourceItemTypeName;
+    /**
+     * 数据元内部标识符
+     */
+    private String dataElementCode;
+    /**
+     * 数据项集数据项编号
+     */
+    private String standardDataItemNo;
+    /**
+     * 数据项集数据项中文名
+     */
+    private String standardDataItemName;
+    /**
+     * 数据项集数据项英文名
+     */
+    private String standardDataItemCode;
+    /**
+     * 数据项集数据项数据类型
+     */
+    private String standardDataItemType;
+    /**
+     * 数据项集数据项数据长度
+     */
+    private String standardDataItemLength;
+    /**
+     * 备注
+     */
+    private String remark;
+    /**
+     * 是否失效,true/false
+     */
+    private String invalidStatus;
+    /**
+     * 注册时间,格式:yyyy-MM-dd HH:mm:ss
+     */
+    private Date columnRegisterTime;
+    /**
+     * 更新时间,格式:yyyy-MM-dd HH:mm:ss
+     */
+    private Date columnUpdateTime;
+    /**
+     * 是否删除
+     */
+    @TableLogic
+    private String deleted;
+    /**
+     * 创建时间
+     */
+    @CreatedDate
+    @TableField(jdbcType = JdbcType.TIMESTAMP, fill = FieldFill.INSERT)
+    private Date createTime;
+    /**
+     * 更新时间
+     */
+    @LastModifiedDate
+    @TableField(jdbcType = JdbcType.TIMESTAMP)
+    private Date updateTime;
+    /**
+     * 创建用户
+     */
+    @CreatedBy
+    @TableField(jdbcType = JdbcType.VARCHAR, fill = FieldFill.INSERT)
+    private String createUser;
+    /**
+     * 更新用户
+     */
+    @LastModifiedBy
+    private String updateUser;
+}

+ 227 - 0
dcuc-app-model/src/main/java/com/dragoninfo/dcuc/app/entity/sub/AppDataResourceInfo.java

@@ -0,0 +1,227 @@
+package com.dragoninfo.dcuc.app.entity.sub;
+
+import com.baomidou.mybatisplus.annotation.*;
+import lombok.Data;
+import org.apache.ibatis.type.JdbcType;
+import org.springframework.data.annotation.CreatedBy;
+import org.springframework.data.annotation.CreatedDate;
+import org.springframework.data.annotation.LastModifiedBy;
+import org.springframework.data.annotation.LastModifiedDate;
+
+import java.util.Date;
+
+/**
+ * <p>
+ * 数据资源表信息
+ * </p>
+ *
+ * @author huangzqa
+ * @date 2022/10/2
+ */
+@Data
+@TableName("t_app_data_resource_info")
+public class AppDataResourceInfo {
+    /**
+     * 编号
+     */
+    @TableId(type = IdType.INPUT)
+    private String id;
+    /**
+     * 数据对象ID
+     */
+    private String dataObjectId;
+    /**
+     * 数据资源标识符
+     */
+    private String resourceCode;
+    /**
+     * 资源名称
+     */
+    private String resourceName;
+    /**
+     * 数据资源版本号
+     */
+    private String resourceVersion;
+    /**
+     * 数据资源描述
+     */
+    private String resourceDescription;
+    /**
+     * 数据对象英文名
+     */
+    private String tableCode;
+    /**
+     * 数据对象中文名
+     */
+    private String tableName;
+    /**
+     * 数据资源目录编号
+     */
+    private String catalogCod;
+    /**
+     * 应用系统编号
+     */
+    private String applicationCode;
+    /**
+     * 应用系统名称
+     */
+    private String applicationCodeName;
+    /**
+     * 一级数据来源编号
+     */
+    private String dataSourceOneCode;
+    /**
+     * 一级数据来源名称
+     */
+    private String dataSourceOneName;
+    /**
+     * 二级数据来源编号
+     */
+    private String dataSourceTwoCode;
+    /**
+     * 二级数据来源名称
+     */
+    private String dataSourceTwoName;
+    /**
+     * 数据分级代码
+     */
+    private String dataClassification;
+    /**
+     * 数据分级名称
+     */
+    private String dataClassificationName;
+    /**
+     * 标准数据项集编码
+     */
+    private String standardDataCode;
+    /**
+     * 标准数据项集名称
+     */
+    private String standardDataName;
+    /**
+     * 数据组织一级分类代码
+     */
+    private String dataClassifyOneCode;
+    /**
+     * 数据组织一级分类名称
+     */
+    private String dataClassifyOneName;
+    /**
+     * 数据组织二级分类代码
+     */
+    private String dataClassifyTwoCode;
+    /**
+     * 数据组织二级分类名称
+     */
+    private String dataClassifyTwoName;
+    /**
+     * 数据标签1代码
+     */
+    private String dataLabelOneCode;
+    /**
+     * 数据标签1名称
+     */
+    private String dataLabelOneName;
+    /**
+     * 数据标签2代码
+     */
+    private String dataLabelTwoCode;
+    /**
+     * 数据标签2名称
+     */
+    private String dataLabelTwoName;
+    /**
+     * 数据标签3代码
+     */
+    private String dataLabelThreeCode;
+    /**
+     * 数据标签3名称
+     */
+    private String dataLabelThreeName;
+    /**
+     * 数据标签4代码
+     */
+    private String dataLabelFourCode;
+    /**
+     * 数据标签4名称
+     */
+    private String dataLabelFourName;
+    /**
+     * 数据标签5代码
+     */
+    private String dataLabelFiveCode;
+    /**
+     * 数据标签5名称
+     */
+    private String dataLabelFiveName;
+    /**
+     * 数据资源服务编号
+     */
+    private String resourceServiceCode;
+    /**
+     * 资源状态代码
+     */
+    private String resourceStatus;
+    /**
+     * 资源状态名称1启动0停用2注销
+     */
+    private String resourceStatusName;
+    /**
+     * 注册时间,格式:yyyy-MM-dd HH:mm:ss
+     */
+    private Date resourceRegisterTime;
+    /**
+     * 更新时间,格式:yyyy-MM-dd HH:mm:ss
+     */
+    private Date resourceUpdateTime;
+    /**
+     * 数据资源事权单位编号
+     */
+    private String authorityDeptCode;
+    /**
+     * 数据资源事权单位名称
+     */
+    private String authorityDeptName;
+    /**
+     * 数据资源管理单位编号
+     */
+    private String manageDeptCode;
+    /**
+     * 数据资源管理单位名称
+     */
+    private String manageDeptName;
+    /**
+     * 否开发服务1是0否
+     */
+    @TableField(value = "is_access")
+    private String access;
+
+    /**
+     * 是否删除
+     */
+    @TableLogic
+    private String deleted;
+    /**
+     * 创建时间
+     */
+    @CreatedDate
+    @TableField(jdbcType = JdbcType.TIMESTAMP, fill = FieldFill.INSERT)
+    private Date createTime;
+    /**
+     * 更新时间
+     */
+    @LastModifiedDate
+    @TableField(jdbcType = JdbcType.TIMESTAMP)
+    private Date updateTime;
+    /**
+     * 创建用户
+     */
+    @CreatedBy
+    @TableField(jdbcType = JdbcType.VARCHAR, fill = FieldFill.INSERT)
+    private String createUser;
+    /**
+     * 更新用户
+     */
+    @LastModifiedBy
+    private String updateUser;
+}

+ 27 - 14
dcuc-app-model/src/main/java/com/dragoninfo/dcuc/app/enumresources/DataResourceEnum.java

@@ -5,30 +5,40 @@ import java.util.List;
 
 /**
  * 数据资源类型枚举类
+ *
  * @author mazq
  * @date 2021/4/13
  */
-public enum  DataResourceEnum {
+public enum DataResourceEnum {
 
     /**
      * 数据分级
      */
-    DATA_CLASSIFY("DATA_CLASSIFY","数据分级","DATA_CLASSIFY", DataAttrTypeEnum.DATA_ATTR_TABLE),
+    DATA_CLASSIFY("DATA_CLASSIFY", "数据分级", "DATA_CLASSIFY", DataAttrTypeEnum.DATA_ATTR_TABLE),
 
     /**
      * 数据资源分类
      */
-    DATA_RESOURCE_CLASSIFY("DATA_RESOURCE_CLASSIFY","数据资源分类","DATA_RESOURCE_CLASSIFY",DataAttrTypeEnum.DATA_ATTR_TABLE),
+    DATA_RESOURCE_CLASSIFY("DATA_RESOURCE_CLASSIFY", "数据资源分类", "DATA_RESOURCE_CLASSIFY", DataAttrTypeEnum.DATA_ATTR_TABLE),
 
     /**
      * 数据安全级别
      */
-    DATA_SECURITY_LEVEL("DATA_SECURITY_LEVEL","数据安全级别","DATA_SECURITY_LEVEL", DataAttrTypeEnum.DATA_ATTR_COLUMN),
+    DATA_SECURITY_LEVEL("DATA_SECURITY_LEVEL", "数据安全级别", "DATA_SECURITY_LEVEL", DataAttrTypeEnum.DATA_ATTR_COLUMN),
 
     /**
      * 字段分类
      */
-    COLUMN_CLASSIFY("COLUMN_CLASSIFY","字段分类","COLUMN_CLASSIFY",DataAttrTypeEnum.DATA_ATTR_COLUMN);
+    COLUMN_CLASSIFY("COLUMN_CLASSIFY", "字段分类", "COLUMN_CLASSIFY", DataAttrTypeEnum.DATA_ATTR_COLUMN),
+
+    /**
+     * 字段关系
+     */
+    COLUMN_RELATION_CATALOG("COLUMN_RELATION_CATALOG", "字段分类", "COLUMN_RELATION_CATALOG", DataAttrTypeEnum.DATA_ATTR_COLUMN),
+
+    TAB("TAB", "表", "TAB", DataAttrTypeEnum.DATA_ATTR_TABLE),
+
+    COL("TAB", "列", "COL", DataAttrTypeEnum.DATA_ATTR_COLUMN);
 
     DataResourceEnum(String code, String label, String dataType, DataAttrTypeEnum attrType) {
         this.code = code;
@@ -95,14 +105,15 @@ public enum  DataResourceEnum {
 
     /**
      * 获取所有列属性的枚举类,包括公用资源
+     *
      * @return
      */
-    public static List<DataResourceEnum> getColumnDataResource(){
+    public static List<DataResourceEnum> getColumnDataResource() {
         List<DataResourceEnum> list = new ArrayList<>();
         for (DataResourceEnum value : values()) {
-            if(value.attrType.equals(DataAttrTypeEnum.DATA_ATTR_COLUMN) ||
-               value.attrType.equals(DataAttrTypeEnum.DATA_ATTR_ALL)){
-                 list.add(value);
+            if (value.attrType.equals(DataAttrTypeEnum.DATA_ATTR_COLUMN) ||
+                    value.attrType.equals(DataAttrTypeEnum.DATA_ATTR_ALL)) {
+                list.add(value);
             }
         }
         return list;
@@ -110,14 +121,15 @@ public enum  DataResourceEnum {
 
     /**
      * 获取所有表属性的枚举类,包括公用资源
+     *
      * @return
      */
-    public static List<DataResourceEnum> getTableDataResource(){
+    public static List<DataResourceEnum> getTableDataResource() {
         List<DataResourceEnum> list = new ArrayList<>();
         for (DataResourceEnum value : values()) {
-            if(value.attrType.equals(DataAttrTypeEnum.DATA_ATTR_TABLE) ||
-               value.attrType.equals(DataAttrTypeEnum.DATA_ATTR_ALL)){
-                 list.add(value);
+            if (value.attrType.equals(DataAttrTypeEnum.DATA_ATTR_TABLE) ||
+                    value.attrType.equals(DataAttrTypeEnum.DATA_ATTR_ALL)) {
+                list.add(value);
             }
         }
         return list;
@@ -125,11 +137,12 @@ public enum  DataResourceEnum {
 
     /**
      * 根据code获取枚举类值
+     *
      * @param code
      */
     public static DataResourceEnum getByCode(String code) {
         for (DataResourceEnum value : values()) {
-            if(value.getCode().equals(code)){
+            if (value.getCode().equals(code)) {
                 return value;
             }
         }

+ 4 - 5
dcuc-app-model/src/main/java/com/dragoninfo/dcuc/app/vo/DataResourceTreeVo.java

@@ -2,8 +2,10 @@ package com.dragoninfo.dcuc.app.vo;
 
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
+import lombok.AllArgsConstructor;
 import lombok.Builder;
 import lombok.Data;
+import lombok.NoArgsConstructor;
 import lombok.experimental.Tolerate;
 
 import java.util.List;
@@ -14,6 +16,8 @@ import java.util.List;
  */
 @Data
 @Builder
+@NoArgsConstructor
+@AllArgsConstructor
 @ApiModel(value = "数据资源树对象")
 public class DataResourceTreeVo {
 
@@ -41,9 +45,4 @@ public class DataResourceTreeVo {
 
     @ApiModelProperty(value = "内部使用唯一标识id")
     private String innerId;
-    /**
-     * 添加无参构造器,便于调用端序列化
-     */
-    @Tolerate
-    DataResourceTreeVo() {}
 }

+ 30 - 0
dcuc-app-service/src/main/java/com/dragoninfo/dcuc/app/business/IDataCatalogBusiness.java

@@ -0,0 +1,30 @@
+package com.dragoninfo.dcuc.app.business;
+
+import java.lang.reflect.Type;
+import java.util.Map;
+
+/**
+ * <p>
+ *
+ * </p>
+ *
+ * @author huangzqa
+ * @date 2022/10/2
+ */
+public interface IDataCatalogBusiness {
+
+    /**
+     * 同步表和字段
+     */
+    void syncTableAndColumn();
+
+    /**
+     * 根据类型获取数据类别
+     *
+     * @param paramMap 请求参数
+     * @param type     类型
+     * @param <T>      泛型
+     * @return 查询到的数据
+     */
+    <T> T getDataResource(Map<String,Object> paramMap, Type type);
+}

+ 1 - 1
dcuc-app-service/src/main/java/com/dragoninfo/dcuc/app/business/IResourceBusiness.java

@@ -98,6 +98,6 @@ public interface IResourceBusiness {
      */
     boolean cancelService(String serviceCode);
 
-    <T> T getDataResource(Map paramMap, Type type);
+
 
 }

+ 166 - 0
dcuc-app-service/src/main/java/com/dragoninfo/dcuc/app/business/impl/DataCatalogBusinessImpl.java

@@ -0,0 +1,166 @@
+package com.dragoninfo.dcuc.app.business.impl;
+
+import cn.hutool.core.util.PageUtil;
+import com.alibaba.fastjson.JSON;
+import com.dragoninfo.dcuc.app.business.IDataCatalogBusiness;
+import com.dragoninfo.dcuc.app.config.DcucResourceConfig;
+import com.dragoninfo.dcuc.app.dto.dataresource.*;
+import com.dragoninfo.dcuc.app.entity.sub.AppDataItemInfo;
+import com.dragoninfo.dcuc.app.entity.sub.AppDataResourceInfo;
+import com.dragoninfo.dcuc.app.service.sub.IAppDataItemInfoService;
+import com.dragoninfo.dcuc.app.service.sub.IAppDataResourceInfoService;
+import com.dragoninfo.dcuc.common.http.HttpUtil;
+import com.dragonsoft.duceap.base.enums.BooleanEnum;
+import com.dragonsoft.duceap.commons.util.UUIDUtils;
+import com.dragonsoft.duceap.commons.util.json.JsonUtils;
+import com.google.common.reflect.TypeToken;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.core.ParameterizedTypeReference;
+import org.springframework.http.HttpMethod;
+import org.springframework.http.RequestEntity;
+import org.springframework.http.ResponseEntity;
+import org.springframework.scheduling.annotation.Async;
+import org.springframework.stereotype.Component;
+import org.springframework.web.client.RestTemplate;
+
+import java.lang.reflect.Type;
+import java.net.URI;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+import java.util.Optional;
+
+/**
+ * <p>
+ *
+ * </p>
+ *
+ * @author huangzqa
+ * @date 2022/10/2
+ */
+@Slf4j
+@Component
+public class DataCatalogBusinessImpl implements IDataCatalogBusiness {
+
+    @Autowired
+    private DcucResourceConfig dataResourceConfig;
+
+    @Autowired
+    private RestTemplate restTemplate;
+
+    @Autowired
+    private IAppDataResourceInfoService appDataResourceInfoService;
+
+    @Autowired
+    private IAppDataItemInfoService appDataItemInfoService;
+    /**
+     * 数据类别查询接口
+     */
+    public static final String RESOURCE_TYPE = "/resource/catalog-api/resource-type";
+
+    /**
+     * 资源列表查询
+     */
+    public static final String CATALOG_LIST_URL = "/resource/catalog-api/catalog-list";
+
+    @Async
+    @Override
+    public void syncTableAndColumn() {
+        // 获取总条数
+        int totalCount = getTotalCount();
+        Integer requestPageSize = dataResourceConfig.getDataResource().getRequestPageSize();
+        int totalPage = PageUtil.totalPage(totalCount, requestPageSize);
+        int reqPage = 1;
+
+        appDataResourceInfoService.deleteAll();
+        appDataItemInfoService.deleteAll();
+
+        do {
+            PageReqDTO pageReqDTO = new PageReqDTO();
+            pageReqDTO.setPage(reqPage);
+            pageReqDTO.setPageSize(requestPageSize);
+
+            Optional<PageDataRespDTO<DataResourceInfoDTO>> pageOptional = getPage(pageReqDTO);
+            if (pageOptional.isPresent()) {
+                PageDataRespDTO<DataResourceInfoDTO> pageDataRespDTO = pageOptional.get();
+                List<DataResourceInfoDTO> dataList = pageDataRespDTO.getDataList();
+
+                List<AppDataResourceInfo> resourceInfoList = new ArrayList<>();
+                List<AppDataItemInfo> dataItemInfoList = new ArrayList<>();
+                for (DataResourceInfoDTO dataResourceInfoDTO : dataList) {
+                    AppDataResourceInfo appDataResourceInfo = dataResourceInfoDTO.parseToAppDataResourceInfo();
+                    String uuid = UUIDUtils.getUUID();
+                    appDataResourceInfo.setId(uuid);
+                    appDataResourceInfo.setDeleted(BooleanEnum.FALSE.value);
+
+                    resourceInfoList.add(appDataResourceInfo);
+                    List<DataResourceItemIntoDTO> dataItems = dataResourceInfoDTO.getDataItems();
+                    for (DataResourceItemIntoDTO dataItem : dataItems) {
+                        AppDataItemInfo appDataItemInfo = dataItem.parseToAppDataItemInfo();
+                        appDataItemInfo.setDeleted(BooleanEnum.FALSE.value);
+                        appDataItemInfo.setResourceTableId(uuid);
+                        dataItemInfoList.add(appDataItemInfo);
+                    }
+                }
+
+                appDataResourceInfoService.saveAll(resourceInfoList);
+                appDataItemInfoService.saveAll(dataItemInfoList);
+            }
+
+            reqPage++;
+        } while (reqPage <= totalPage);
+    }
+
+    public int getTotalCount() {
+        PageReqDTO pageReqDTO = new PageReqDTO();
+        pageReqDTO.setPage(1);
+        pageReqDTO.setPageSize(1);
+        Optional<PageDataRespDTO<DataResourceInfoDTO>> pageOptional = getPage(pageReqDTO);
+        int totalCount = 0;
+        if (pageOptional.isPresent()) {
+            totalCount = pageOptional.get().getTotalCount();
+        }
+        return totalCount;
+    }
+
+
+    public Optional<PageDataRespDTO<DataResourceInfoDTO>> getPage(PageReqDTO pageReqDTO) {
+        String url = dataResourceConfig.getDataResource().getDataCatalogUrl() + CATALOG_LIST_URL;
+        log.info("Request dataCatalog page info:{} ", JsonUtils.toJSONString(pageReqDTO));
+        RequestEntity<PageReqDTO> httpEntity = new RequestEntity<>(pageReqDTO, HttpMethod.POST, URI.create(url));
+        ParameterizedTypeReference<BaseResp<PageDataRespDTO<DataResourceInfoDTO>>> typeReference =
+                new ParameterizedTypeReference<BaseResp<PageDataRespDTO<DataResourceInfoDTO>>>() {
+                };
+        ResponseEntity<BaseResp<PageDataRespDTO<DataResourceInfoDTO>>> responseEntity = restTemplate.exchange(httpEntity, typeReference);
+        if (!responseEntity.getStatusCode().is2xxSuccessful()) {
+            log.error("Request dataCatalog error httpStatusCode :{}", responseEntity.getStatusCode().value());
+            return Optional.empty();
+        }
+        BaseResp<PageDataRespDTO<DataResourceInfoDTO>> baseResp = responseEntity.getBody();
+        if (baseResp == null) {
+            return Optional.empty();
+        }
+        if (baseResp.isFail()) {
+            log.error("Request dataCatalog error code:{} message: {}", baseResp.getCode(), baseResp.getMessage());
+        }
+
+        return Optional.ofNullable(baseResp.getResultData());
+    }
+
+    @Override
+    public <T> T getDataResource(Map<String,Object> paramMap, Type type) {
+        String url = dataResourceConfig.getDataResource().getDataCatalogUrl() + RESOURCE_TYPE;
+
+        String response = HttpUtil.postJSON(url, JSON.toJSONString(paramMap), null, null);
+        log.info("getDataResource response:{}", response);
+        BaseResp<String> baseResp = JSON.parseObject(response, new TypeToken<BaseResp<String>>() {
+        }.getType());
+        if (baseResp.isSuccess()) {
+            return JSON.parseObject(baseResp.getResultData(), type);
+        }
+        log.error("调用数据失败:getDataResource type error message:{} ", baseResp.getMessage());
+        return null;
+    }
+
+}

+ 0 - 32
dcuc-app-service/src/main/java/com/dragoninfo/dcuc/app/business/impl/ResourceBusiness.java

@@ -239,38 +239,6 @@ public class ResourceBusiness implements IResourceBusiness {
         return true;
     }
 
-    @Override
-    public <T> T getDataResource(Map paramMap, Type type) {
-        // 构建header
-        String busSraId = resourceConfig.getBusSraId();
-
-        String busSreIdcard = UserContextUtils.getCurrentUser().getIdcard();
-
-        String busServiceId = resourceConfig.getDataResource().getBusServiceId();
-        String busServiceFunc = resourceConfig.getDataResource().getBusServiceFunc();
-
-        BusSendReqVO busSendReqVO = BusSendReqVO.builder()
-                .busSraId(busSraId)
-                .busServiceId(busServiceId)
-                .busServiceFunc(busServiceFunc)
-                .busSreIdcard(busSreIdcard)
-                .build();
-
-        List<Header> headerList = getHeaders(busSendReqVO);
-        String url = resourceConfig.getResourceUrl();
-        logger.info("getDataResource >> url:{}, busSraId:{}, busServiceId:{}, busServiceFunc:{}, busSreIdcard:{}",
-                url, busSraId, busServiceId, busServiceFunc, busSreIdcard);
-        String response = HttpUtil.postJSON(url, JSON.toJSONString(paramMap), headerList, null);
-        logger.info("getDataResource response:{}", response);
-        BaseResp<String> baseResp = JSON.parseObject(response, new TypeToken<BaseResp<String>>() {
-        }.getType());
-        if ("000".equals(baseResp.getCode())) {
-            return JSON.parseObject(baseResp.getResultData(), type);
-        }
-        logger.error("调用数据失败:getDataResource >> url:{}, busSraId:{}, busServiceId:{}, busServiceFunc:{}, busSreIdcard:{}",
-                url, busSraId, busServiceId, busServiceFunc, busSreIdcard);
-        return null;
-    }
 
     private String getServiceRemoteDetailByCode(String serviceCode) {
 

+ 6 - 5
dcuc-app-service/src/main/java/com/dragoninfo/dcuc/app/config/DcucResourceConfig.java

@@ -84,7 +84,6 @@ public class DcucResourceConfig {
      */
     private DataResourceConfig dataResource;
 
-
     @Data
     public static class MenuResourceConfig {
 
@@ -165,13 +164,15 @@ public class DcucResourceConfig {
     public static class DataResourceConfig {
 
         /**
-         * 总线请求头参
+         * 数据资源目录路径
          */
-        private String busServiceId;
+        private String dataCatalogUrl;
+
         /**
-         * 总线请求头参数
+         * 请求页码大小
          */
-        private String busServiceFunc;
+        private Integer requestPageSize = 10;
+
     }
 
 

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

@@ -6,6 +6,8 @@ package com.dragoninfo.dcuc.app.cons;
  */
 public interface CommonCons {
 
+    String ID_SEPARATOR = "|";
+
     String PATH_SEP = "-";
 
     Integer PATH_LEVEL_FIR = 1;
@@ -16,4 +18,15 @@ public interface CommonCons {
 
     Integer PATH_LEVEL_FOUR = 4;
 
+
+    String LAB_CLA_FIR = "RESOURCE_SJZYBQ1";
+
+    String LAB_CLA_SEC = "RESOURCE_SJZYBQ2";
+
+    String LAB_CLA_THI = "RESOURCE_SJZYBQ3";
+
+    String LAB_CLA_FOUR = "RESOURCE_SJZYBQ4";
+
+    String LAB_CLA_FIV = "RESOURCE_SJZYBQ5";
+
 }

+ 33 - 0
dcuc-app-service/src/main/java/com/dragoninfo/dcuc/app/entity/DataColInfo.java

@@ -0,0 +1,33 @@
+package com.dragoninfo.dcuc.app.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+
+/**
+ * @author mazq
+ * @date 2022/9/29
+ */
+@Data
+@TableName("T_AUTH_DATA_COLINFO")
+public class DataColInfo {
+
+    /** ID */
+    @TableId(type = IdType.UUID)
+    private String id ;
+    /** NAME */
+    private String name ;
+    /** CODE */
+    private String code ;
+    /** TA_CODE */
+    private String taCode ;
+    /** SECU_LEV */
+    private String secuLev ;
+    /** COL_CLA_FIR */
+    private String colClaFir ;
+    /** COL_CLA_SEC */
+    private String colClaSec ;
+
+
+}

+ 41 - 0
dcuc-app-service/src/main/java/com/dragoninfo/dcuc/app/entity/DataTabInfo.java

@@ -0,0 +1,41 @@
+package com.dragoninfo.dcuc.app.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+
+/**
+ * @author mazq
+ * @date 2022/9/29
+ */
+@Data
+@TableName("T_AUTH_DATA_TABINFO")
+public class DataTabInfo {
+
+    /** ID */
+    @TableId(type = IdType.UUID)
+    private String id ;
+    /** NAME */
+    private String name ;
+    /** CODE */
+    private String code ;
+    /** DATA_LEV_FIR */
+    private String dataLevFir ;
+    /** DATA_CLA_FIR */
+    private String dataClaFir ;
+    /** DATA_CLA_SEC */
+    private String dataClaSec ;
+    /** LAB_FIR */
+    private String labFir ;
+    /** LAB_SEC */
+    private String labSec ;
+    /** LAB_THR */
+    private String labThr ;
+    /** LAB_FOUR */
+    private String labFour ;
+    /** LAB_FIV */
+    private String labFiv ;
+
+
+}

+ 300 - 93
dcuc-app-service/src/main/java/com/dragoninfo/dcuc/app/facade/DataResourceFacade.java

@@ -1,17 +1,24 @@
 package com.dragoninfo.dcuc.app.facade;
 
+import com.dragoninfo.dcuc.app.business.IDataCatalogBusiness;
+import com.dragoninfo.dcuc.app.cons.CommonCons;
 import com.dragoninfo.dcuc.app.dto.dataresource.ChildResourceClassify;
 import com.dragoninfo.dcuc.app.dto.dataresource.ResourceClassify;
-import com.dragoninfo.dcuc.app.enumresources.DataResourceEnum;
-import com.dragoninfo.dcuc.app.service.IDataResourceService;
 import com.dragoninfo.dcuc.app.dto.sub.DataClaAcceptDTO;
 import com.dragoninfo.dcuc.app.dto.sub.FieldClaAcceptDTO;
+import com.dragoninfo.dcuc.app.entity.DataColInfo;
+import com.dragoninfo.dcuc.app.entity.DataTabInfo;
 import com.dragoninfo.dcuc.app.entity.sub.DataCla;
 import com.dragoninfo.dcuc.app.entity.sub.DataLevel;
 import com.dragoninfo.dcuc.app.entity.sub.DataSec;
 import com.dragoninfo.dcuc.app.entity.sub.FieldCla;
+import com.dragoninfo.dcuc.app.enumresources.DataAttrTypeEnum;
+import com.dragoninfo.dcuc.app.enumresources.DataResourceEnum;
 import com.dragoninfo.dcuc.app.enumresources.sub.DataClaTypeEnum;
 import com.dragoninfo.dcuc.app.enumresources.sub.FieldClaTypeEnum;
+import com.dragoninfo.dcuc.app.service.IDataColInfoService;
+import com.dragoninfo.dcuc.app.service.IDataResourceService;
+import com.dragoninfo.dcuc.app.service.IDataTabInfoService;
 import com.dragoninfo.dcuc.app.service.sub.IDataClaService;
 import com.dragoninfo.dcuc.app.service.sub.IDataLevelService;
 import com.dragoninfo.dcuc.app.service.sub.IDataSecService;
@@ -20,23 +27,19 @@ import com.dragoninfo.dcuc.app.vo.*;
 import com.dragonsoft.duceap.base.entity.http.ResponseStatus;
 import com.dragonsoft.duceap.commons.util.UUIDUtils;
 import com.dragonsoft.duceap.commons.util.collections.CollectionUtils;
-import com.dragonsoft.duceap.web.utils.RequestUtils;
 import com.google.common.base.Joiner;
 import com.google.common.collect.Lists;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RequestParam;
 import org.springframework.web.bind.annotation.RestController;
 import org.springframework.web.context.request.RequestAttributes;
 import org.springframework.web.context.request.RequestContextHolder;
-import org.springframework.web.servlet.support.RequestContextUtils;
 
-import javax.servlet.http.HttpServletRequest;
 import java.util.*;
-import java.util.concurrent.CompletableFuture;
 import java.util.stream.Collectors;
+import java.util.stream.Stream;
 
 /**
  * Created by lidr on 2021/4/14
@@ -44,10 +47,7 @@ import java.util.stream.Collectors;
 @Slf4j
 @RestController
 @RequestMapping(value = "/dcuc/app/dataResourceFacade")
-public class DataResourceFacade implements IDataResourceFacade
-{
-
-    public static final String ID_SEPARATOR = "|";
+public class DataResourceFacade implements IDataResourceFacade {
 
     @Autowired
     private IDataResourceService dataResourceService;
@@ -64,19 +64,38 @@ public class DataResourceFacade implements IDataResourceFacade
     @Autowired
     private IFieldClaService fieldClaService;
 
+    @Autowired
+    private IDataTabInfoService tabInfoService;
+
+    @Autowired
+    private IDataColInfoService colInfoService;
+
+    @Autowired
+    private IDataCatalogBusiness dataIndexBusiness;
+
 
     @Override
-    public List<DataResourceClassifyVo> getAllDataResourceTree(@RequestParam("attrType") String attrType) {
+    public List<DataResourceClassifyVo> getAllDataResourceTree(String attrType) {
         List<DataResourceClassifyVo> result = Lists.newArrayList();
-
         //列:数据安全级别  字段分类
         //表:数据分级  数据资源分类
-        if ("TABLE".equals(attrType)) {
+        if (DataAttrTypeEnum.DATA_ATTR_TABLE.getValue().equals(attrType)) {
+            // 查询所有的表和列
+            List<DataTabInfo> tabInfos = tabInfoService.getAllTabInfos();
+            List<DataColInfo> colInfos = colInfoService.getAllColInfos();
             result.add(getDataLevelTree());
-            result.add(getDataClassifyTree());
+            result.add(getDataClassifyTree(tabInfos, colInfos));
+        } else if (DataAttrTypeEnum.DATA_ATTR_COLUMN.getValue().equals(attrType)) {
+            List<DataColInfo> colInfos = colInfoService.getAllColInfos();
+            result.add(getSecurityLevelTree());
+            result.add(getFieldClassifyTree(colInfos));
         } else {
+            List<DataTabInfo> tabInfos = tabInfoService.getAllTabInfos();
+            List<DataColInfo> colInfos = colInfoService.getAllColInfos();
+            result.add(getDataLevelTree());
+            result.add(getDataClassifyTree(tabInfos, colInfos));
             result.add(getSecurityLevelTree());
-            result.add(getFieldClassifyTree());
+            result.add(getFieldClassifyTree(colInfos));
         }
         return result;
     }
@@ -85,22 +104,26 @@ public class DataResourceFacade implements IDataResourceFacade
     public DataResourceClassifyVo getDataResourceTree(String typeCode) {
         DataResourceClassifyVo result = null;
         DataResourceEnum dataResourceEnum = Enum.valueOf(DataResourceEnum.class, typeCode);
-        switch (dataResourceEnum){
+        List<DataColInfo> colInfos = null;
+        List<DataTabInfo> tabInfos = null;
+        switch (dataResourceEnum) {
             case DATA_CLASSIFY:
                 result = getDataLevelTree();
                 break;
             case COLUMN_CLASSIFY:
-                result = getFieldClassifyTree();
+                colInfos = colInfoService.getAllColInfos();
+                result = getFieldClassifyTree(colInfos);
                 break;
-
             case DATA_SECURITY_LEVEL:
                 result = getSecurityLevelTree();
                 break;
             case DATA_RESOURCE_CLASSIFY:
-                result = getDataClassifyTree();
+                tabInfos = tabInfoService.getAllTabInfos();
+                colInfos = colInfoService.getAllColInfos();
+                result = getDataClassifyTree(tabInfos, colInfos);
+                break;
+            default:
                 break;
-                default:
-                    break;
         }
         return result;
     }
@@ -121,19 +144,21 @@ public class DataResourceFacade implements IDataResourceFacade
                 .build();
         List<DataLevelVo> dataLevelList = getDataLevelList();
         List<DataResourceTreeVo> child = dataLevelList.stream().map(item -> DataResourceTreeVo.builder()
-              .id(Joiner.on(ID_SEPARATOR).join(dataLevelTreeVo.getId(), item.getLevelCode()))
-              .code(item.getLevelCode())
-              .label(item.getLevelName())
-              .dataType(item.getTypeCode())
-              .codeDataTypeStr(UUIDUtils.getUUID() + ID_SEPARATOR + item.getLevelCode() + ID_SEPARATOR + item.getTypeCode())
-              .treeNode(false)
-              .pId(dataLevelTreeVo.getId())
-              .innerId(item.getInnerId()).build()).collect(Collectors.toList());
+                .id(Joiner.on(CommonCons.ID_SEPARATOR).join(dataLevelTreeVo.getId(), item.getLevelCode()))
+                .code(item.getLevelCode())
+                .label(item.getLevelName())
+                .dataType(item.getTypeCode())
+                .codeDataTypeStr(UUIDUtils.getUUID() + CommonCons.ID_SEPARATOR + item.getLevelCode() + CommonCons.ID_SEPARATOR + item.getTypeCode())
+                .treeNode(false)
+                .pId(dataLevelTreeVo.getId())
+                .innerId(item.getInnerId()).build()).collect(Collectors.toList());
         dataLevelTreeVo.setChild(child);
-        if(child.size() == 0) {
+        if (child.size() == 0) {
             dataResourceClassifyVo.setNodes(new ArrayList<>());
         } else {
-            dataResourceClassifyVo.setNodes(new ArrayList<DataResourceTreeVo>(){{add(dataLevelTreeVo);}});
+            dataResourceClassifyVo.setNodes(new ArrayList<DataResourceTreeVo>() {{
+                add(dataLevelTreeVo);
+            }});
         }
         //设置总数量
         dataResourceClassifyVo.setTotal(child.size());
@@ -158,27 +183,33 @@ public class DataResourceFacade implements IDataResourceFacade
         List<DataLevelVo> securityLevelList = getSecurityLevelList();
 
         List<DataResourceTreeVo> child = securityLevelList.stream().map(item -> DataResourceTreeVo.builder()
-                .id(Joiner.on(ID_SEPARATOR).join(securityLevelTree.getId(), item.getLevelCode()))
+                .id(Joiner.on(CommonCons.ID_SEPARATOR).join(securityLevelTree.getId(), item.getLevelCode()))
                 .code(item.getLevelCode())
                 .label(item.getLevelName())
                 .dataType(item.getTypeCode())
-                .codeDataTypeStr(UUIDUtils.getUUID() + ID_SEPARATOR + item.getLevelCode() + ID_SEPARATOR + item.getTypeCode())
+                .codeDataTypeStr(UUIDUtils.getUUID() + CommonCons.ID_SEPARATOR + item.getLevelCode() + CommonCons.ID_SEPARATOR + item.getTypeCode())
                 .treeNode(false)
                 .pId(securityLevelTree.getId())
                 .innerId(item.getInnerId()).build()).collect(Collectors.toList());
         securityLevelTree.setChild(child);
-        if(child.size() == 0) {
+        if (child.size() == 0) {
             dataResourceClassifyVo.setNodes(new ArrayList<>());
             dataResourceClassifyVo.setTotal(0);
         } else {
-            dataResourceClassifyVo.setNodes(new ArrayList<DataResourceTreeVo>(){{add(securityLevelTree);}} );
+            dataResourceClassifyVo.setNodes(new ArrayList<DataResourceTreeVo>() {{
+                add(securityLevelTree);
+            }});
             //设置总数量
             dataResourceClassifyVo.setTotal(child.size());
         }
         return dataResourceClassifyVo;
     }
 
-    private DataResourceClassifyVo getDataClassifyTree() {
+    private DataResourceClassifyVo getDataClassifyTree(List<DataTabInfo> tabInfos, List<DataColInfo> colInfos) {
+        // 将表分类映射到表
+        Map<String, List<DataTabInfo>> tabLabMap = getTabLabGroupMap(tabInfos);
+        Map<String, List<DataColInfo>> colTaMap = colInfos.stream().collect(Collectors.groupingBy(DataColInfo::getTaCode));
+
         DataResourceEnum dataResourceEnum = DataResourceEnum.DATA_RESOURCE_CLASSIFY;
 
         DataResourceClassifyVo resourceVo = DataResourceClassifyVo.builder().id(dataResourceEnum.getCode())
@@ -205,17 +236,87 @@ public class DataResourceFacade implements IDataResourceFacade
         combineTreeNode(secNodes, thirdNodes);
         combineTreeNode(thirdNodes, fourNodes);
         topTreeVo.setChild(firNodes);
-        if(firNodes.size() == 0) {
+        if (firNodes.size() == 0) {
             resourceVo.setNodes(new ArrayList<>());
             resourceVo.setTotal(0);
         } else {
-            //计算总数量
-            resourceVo.setTotal(getTotalCount(topTreeVo));
-            resourceVo.setNodes(new ArrayList<DataResourceTreeVo>(){{add(topTreeVo);}});
+            // 拼接表、列、pid
+            boolean b = combinePidAndTabCol(topTreeVo, tabLabMap, colTaMap);
+            if (b) {
+                resourceVo.setNodes(new ArrayList<>());
+                resourceVo.setTotal(0);
+            } else {
+                resourceVo.setNodes(new ArrayList<DataResourceTreeVo>() {{
+                    add(topTreeVo);
+                }});
+            }
+
         }
         return resourceVo;
     }
 
+    private Map<String, List<DataTabInfo>> getTabLabGroupMap(List<DataTabInfo> tabInfos) {
+        Map<String, List<DataTabInfo>> group = new HashMap<>();
+        tabInfos.forEach(e -> {
+            // 一级分类
+            String claFir = e.getDataClaFir();
+            if (StringUtils.isBlank(claFir)) {
+                return;
+            }
+            // 二级分类
+            String claSec = e.getLabSec();
+            if (StringUtils.isBlank(claSec)) {
+                putInMap(group, e, claFir);
+                return;
+            }
+            // 标签1
+            String labFir = e.getLabFir();
+            if (StringUtils.isNotBlank(labFir)) {
+                labFir = CommonCons.LAB_CLA_FIR + CommonCons.ID_SEPARATOR + labFir;
+            }
+            // 标签2
+            String labSec = e.getLabSec();
+            if (StringUtils.isNotBlank(labSec)) {
+                labSec = CommonCons.LAB_CLA_SEC + CommonCons.ID_SEPARATOR + labSec;
+            }
+            // 标签3
+            String labThr = e.getLabThr();
+            if (StringUtils.isNotBlank(labThr)) {
+                labThr = CommonCons.LAB_CLA_THI + CommonCons.ID_SEPARATOR + labThr;
+            }
+            // 标签4
+            String labFour = e.getLabFour();
+            if (StringUtils.isNotBlank(labFour)) {
+                labFour = CommonCons.LAB_CLA_FOUR + CommonCons.ID_SEPARATOR + labFour;
+            }
+            // 标签5
+            String labFiv = e.getLabFiv();
+            if (StringUtils.isNotBlank(labFiv)) {
+                labFiv = CommonCons.LAB_CLA_FIV + CommonCons.ID_SEPARATOR + labFiv;
+            }
+            List<String> collect = Stream.of(labFir, labSec, labThr, labFour, labFiv).filter(StringUtils::isNotBlank).collect(Collectors.toList());
+            String key = claFir + CommonCons.ID_SEPARATOR + claSec;
+            if (CollectionUtils.isEmpty(collect)) {
+                putInMap(group, e, key);
+                return;
+            }
+            collect.forEach(lab -> {
+                String s = key + CommonCons.ID_SEPARATOR + lab;
+                putInMap(group, e, s);
+            });
+        });
+        return group;
+    }
+
+    private void putInMap(Map<String, List<DataTabInfo>> group, DataTabInfo e, String claFir) {
+        List<DataTabInfo> list = group.get(claFir);
+        if (null == list) {
+            list = new ArrayList<>();
+        }
+        list.add(e);
+        group.put(claFir, list);
+    }
+
     private DataResourceTreeVo convertDataClaToNode(DataCla item, String pid) {
         return DataResourceTreeVo.builder()
                 .id(item.getId())
@@ -228,7 +329,10 @@ public class DataResourceFacade implements IDataResourceFacade
     }
 
 
-    private DataResourceClassifyVo getFieldClassifyTree() {
+    private DataResourceClassifyVo getFieldClassifyTree(List<DataColInfo> colInfos) {
+
+        Map<String, List<DataColInfo>> colInfosMap = getColumnClaGroupMap(colInfos);
+
         DataResourceEnum dataResourceEnum = DataResourceEnum.COLUMN_CLASSIFY;
 
         DataResourceClassifyVo resourceVo = DataResourceClassifyVo.builder().id(dataResourceEnum.getCode())
@@ -244,16 +348,58 @@ public class DataResourceFacade implements IDataResourceFacade
                 .stream().map(item -> convertFieldClaToNode(item, item.getFirId())).collect(Collectors.toList());
         combineTreeNode(firNodes, secNodes);
         topTreeVo.setChild(firNodes);
-        if(firNodes.size() == 0) {
+        if (firNodes.size() == 0) {
             resourceVo.setNodes(new ArrayList<>());
             resourceVo.setTotal(0);
         } else {
-            resourceVo.setNodes(new ArrayList<DataResourceTreeVo>(){{add(topTreeVo);}});
-            resourceVo.setTotal(getTotalCount(topTreeVo));
+            boolean b = combinePidCol(topTreeVo, colInfosMap);
+            if (b) {
+                resourceVo.setNodes(new ArrayList<>());
+                resourceVo.setTotal(0);
+            } else {
+                resourceVo.setNodes(new ArrayList<DataResourceTreeVo>() {{
+                    add(topTreeVo);
+                }});
+            }
         }
         return resourceVo;
     }
 
+    private Map<String, List<DataColInfo>> getColumnClaGroupMap(List<DataColInfo> colInfos) {
+        return colInfos.stream().collect(Collectors.groupingBy(DataColInfo::getColClaSec));
+    }
+
+    private boolean combinePidCol(DataResourceTreeVo treeVo, Map<String, List<DataColInfo>> colInfosMap) {
+        List<DataResourceTreeVo> child = treeVo.getChild();
+        Iterator<DataResourceTreeVo> iterator = child.iterator();
+        while (iterator.hasNext()) {
+            DataResourceTreeVo childVo = iterator.next();
+            childVo.setPId(treeVo.getId());
+            childVo.setId(Joiner.on(CommonCons.ID_SEPARATOR).join(treeVo.getId(), childVo.getCode()));
+            List<DataResourceTreeVo> cc = childVo.getChild();
+            if (CollectionUtils.isNotEmpty(cc)) {
+                childVo.setTreeNode(true);
+                boolean emptyChild = combinePidCol(childVo, colInfosMap);
+                if (emptyChild) {
+                    iterator.remove();
+                }
+            } else {
+                // 如果为叶子节点,查找对应的表和列
+                // 如果查找不到表和列则移除
+                String id = childVo.getId();
+                List<DataColInfo> dataColInfo = colInfosMap.get(childVo.getCode());
+                if (dataColInfo == null) {
+                    iterator.remove();
+                } else {
+                    List<DataResourceTreeVo> tableVos = convertColumnToTreeVo(childVo.getId(), dataColInfo);
+                    childVo.setTreeNode(true);
+                    childVo.setChild(tableVos);
+                }
+            }
+        }
+        return CollectionUtils.isEmpty(child);
+    }
+
     private DataResourceTreeVo convertFieldClaToNode(FieldCla item, String pid) {
         return DataResourceTreeVo.builder()
                 .id(item.getId())
@@ -267,7 +413,7 @@ public class DataResourceFacade implements IDataResourceFacade
 
     private void combineTreeNode(List<DataResourceTreeVo> firNodes, List<DataResourceTreeVo> secNodes) {
         Map<String, List<DataResourceTreeVo>> secMap = secNodes.stream().collect(Collectors.groupingBy(DataResourceTreeVo::getPId));
-        firNodes.forEach(item->{
+        firNodes.forEach(item -> {
             List<DataResourceTreeVo> childes = secMap.get(item.getId());
             item.setChild(childes);
         });
@@ -310,7 +456,7 @@ public class DataResourceFacade implements IDataResourceFacade
     @Override
     public List<DataFieldClassifyVo> getFieldClassifyList() {
         List<FieldClaAcceptDTO> list = fieldClaService.getAll();
-        return list.stream().map(item-> {
+        return list.stream().map(item -> {
             DataFieldClassifyVo vo = new DataFieldClassifyVo();
             vo.setFirstLevelCode(item.getFirCode());
             vo.setFirstLevelName(item.getFirName());
@@ -330,7 +476,7 @@ public class DataResourceFacade implements IDataResourceFacade
         //方法内部有从ThreadLocal获取信息
         //CompletableFuture默认使用ForkJoin线程池,不要使用1.8的新线程开启方法
         //如果使用线程池需要用包装类将线程包装后设置RequestContextHolder
-        Runnable r = ()-> {
+        Runnable r = () -> {
             RequestContextHolder.setRequestAttributes(requestAttributes);
             try {
                 List<DataLevelVo> list = getDataLevelListFromRemote();
@@ -354,7 +500,7 @@ public class DataResourceFacade implements IDataResourceFacade
         //方法内部有从ThreadLocal获取信息
         //CompletableFuture默认使用ForkJoin线程池,不要使用1.8的新线程开启方法
         //如果使用线程池需要用包装类将线程包装后设置RequestContextHolder
-        Runnable r = ()-> {
+        Runnable r = () -> {
             RequestContextHolder.setRequestAttributes(requestAttributes);
             try {
                 List<DataLevelVo> list = getSecurityLevelListFromRemote();
@@ -378,7 +524,7 @@ public class DataResourceFacade implements IDataResourceFacade
         //方法内部有从ThreadLocal获取信息
         //CompletableFuture默认使用ForkJoin线程池,不要使用1.8的新线程开启方法
         //如果使用线程池需要用包装类将线程包装后设置RequestContextHolder
-        Runnable r = ()-> {
+        Runnable r = () -> {
             try {
                 RequestContextHolder.setRequestAttributes(requestAttributes);
                 List<DataResourceTreeVo> nodes = getDataClassifyTreeFromRemote();
@@ -403,7 +549,7 @@ public class DataResourceFacade implements IDataResourceFacade
         //方法内部有从ThreadLocal获取信息
         //CompletableFuture默认使用ForkJoin线程池,不要使用1.8的新线程开启方法
         //如果使用线程池需要用包装类将线程包装后设置RequestContextHolder
-        Runnable r = ()-> {
+        Runnable r = () -> {
             try {
                 RequestContextHolder.setRequestAttributes(requestAttributes);
                 List<DataResourceTreeVo> nodes = getFieldClassifyTreeFromRemote();
@@ -418,22 +564,27 @@ public class DataResourceFacade implements IDataResourceFacade
         return ResponseStatus.success();
     }
 
+    @Override
+    public ResponseStatus syncTableAndColumn() {
+        return null;
+    }
+
 
     @Override
     public List<DataLevelVo> getDetailByIdsAndClaType(List<String> ids, String classifyType) {
-        List<DataLevelVo> vos= new ArrayList<>();
-        if(CollectionUtils.isEmpty(ids)) {
+        List<DataLevelVo> vos = new ArrayList<>();
+        if (CollectionUtils.isEmpty(ids)) {
             return vos;
         }
-        if(StringUtils.isBlank(classifyType)) {
+        if (StringUtils.isBlank(classifyType)) {
             return vos;
         }
         DataResourceEnum anEnum = DataResourceEnum.getByCode(classifyType);
-        if(null == anEnum) {
+        if (null == anEnum) {
             return vos;
-        } else if(DataResourceEnum.COLUMN_CLASSIFY.equals(anEnum)) {
+        } else if (DataResourceEnum.COLUMN_CLASSIFY.equals(anEnum)) {
             List<FieldCla> list = fieldClaService.getByIds(ids);
-            list.stream().map(item->{
+            list.stream().map(item -> {
                 DataLevelVo vo = new DataLevelVo();
                 vo.setTypeCode(item.getDataType());
                 vo.setLevelName(item.getName());
@@ -442,9 +593,9 @@ public class DataResourceFacade implements IDataResourceFacade
                 return vo;
             }).collect(Collectors.toList());
 
-        } else if(DataResourceEnum.DATA_CLASSIFY.equals(anEnum)) {
+        } else if (DataResourceEnum.DATA_CLASSIFY.equals(anEnum)) {
             List<DataLevel> list = dataLevelService.getByIds(ids);
-            list.stream().map(item->{
+            list.stream().map(item -> {
                 DataLevelVo vo = new DataLevelVo();
                 vo.setTypeCode(item.getDataType());
                 vo.setLevelName(item.getLevelName());
@@ -453,9 +604,9 @@ public class DataResourceFacade implements IDataResourceFacade
                 return vo;
             }).collect(Collectors.toList());
 
-        } else if(DataResourceEnum.DATA_RESOURCE_CLASSIFY.equals(anEnum)) {
+        } else if (DataResourceEnum.DATA_RESOURCE_CLASSIFY.equals(anEnum)) {
             List<DataCla> list = dataClaService.getByIds(ids);
-            list.stream().map(item->{
+            list.stream().map(item -> {
                 DataLevelVo vo = new DataLevelVo();
                 vo.setTypeCode(item.getDataType());
                 vo.setLevelName(item.getName());
@@ -464,9 +615,9 @@ public class DataResourceFacade implements IDataResourceFacade
                 return vo;
             }).collect(Collectors.toList());
 
-        } else if(DataResourceEnum.DATA_SECURITY_LEVEL.equals(anEnum)) {
+        } else if (DataResourceEnum.DATA_SECURITY_LEVEL.equals(anEnum)) {
             List<DataSec> list = dataSecService.getByIds(ids);
-            list.stream().map(item->{
+            list.stream().map(item -> {
                 DataLevelVo vo = new DataLevelVo();
                 vo.setTypeCode(item.getDataType());
                 vo.setLevelName(item.getSecName());
@@ -480,32 +631,32 @@ public class DataResourceFacade implements IDataResourceFacade
 
     @Override
     public DataLevelVo getDetailByIdAndClaType(String id, String classifyType) {
-        if(StringUtils.isAnyBlank(id, classifyType)) {
+        if (StringUtils.isAnyBlank(id, classifyType)) {
             return null;
         }
         DataLevelVo vo = new DataLevelVo();
         DataResourceEnum anEnum = DataResourceEnum.getByCode(classifyType);
-        if(null == anEnum) {
+        if (null == anEnum) {
             return null;
-        } else if(DataResourceEnum.COLUMN_CLASSIFY.equals(anEnum)) {
+        } else if (DataResourceEnum.COLUMN_CLASSIFY.equals(anEnum)) {
             FieldCla fieldCla = fieldClaService.getById(id);
             vo.setInnerId(fieldCla.getId());
             vo.setLevelCode(fieldCla.getCode());
             vo.setLevelName(fieldCla.getName());
             vo.setTypeCode(fieldCla.getDataType());
-        } else if(DataResourceEnum.DATA_CLASSIFY.equals(anEnum)) {
+        } else if (DataResourceEnum.DATA_CLASSIFY.equals(anEnum)) {
             DataLevel dataLevel = dataLevelService.getById(id);
             vo.setInnerId(dataLevel.getId());
             vo.setLevelCode(dataLevel.getLevelCode());
             vo.setLevelName(dataLevel.getLevelName());
             vo.setTypeCode(dataLevel.getDataType());
-        } else if(DataResourceEnum.DATA_RESOURCE_CLASSIFY.equals(anEnum)) {
+        } else if (DataResourceEnum.DATA_RESOURCE_CLASSIFY.equals(anEnum)) {
             DataCla dataCla = dataClaService.getById(id);
             vo.setInnerId(dataCla.getId());
             vo.setLevelCode(dataCla.getId());
             vo.setLevelName(dataCla.getName());
             vo.setTypeCode(dataCla.getCode());
-        } else if(DataResourceEnum.DATA_SECURITY_LEVEL.equals(anEnum)) {
+        } else if (DataResourceEnum.DATA_SECURITY_LEVEL.equals(anEnum)) {
             DataSec dataSec = dataSecService.getById(id);
             vo.setInnerId(dataSec.getId());
             vo.setLevelCode(dataSec.getSecCode());
@@ -527,49 +678,49 @@ public class DataResourceFacade implements IDataResourceFacade
                 .stream()
                 .map(firstClassify -> {
                     DataResourceTreeVo firstTreeVo = DataResourceTreeVo.builder()
-                            .id(Joiner.on(ID_SEPARATOR).join(id, firstClassify.getCodeValue()))
+                            .id(Joiner.on(CommonCons.ID_SEPARATOR).join(id, firstClassify.getCodeValue()))
                             .code(firstClassify.getCodeValue())
                             .label(firstClassify.getCodeName())
                             .treeNode(true)
                             .pId(id)
                             .dataType(firstClassify.getTypeCode())
-                            .codeDataTypeStr(UUIDUtils.getUUID() + ID_SEPARATOR + firstClassify.getCodeValue() + ID_SEPARATOR + firstClassify.getTypeCode())
+                            .codeDataTypeStr(UUIDUtils.getUUID() + CommonCons.ID_SEPARATOR + firstClassify.getCodeValue() + CommonCons.ID_SEPARATOR + firstClassify.getTypeCode())
                             .build();
 
                     firstTreeVo.setChild(getFirstChildResourceClassifies(firstClassify.getChildrenType()).stream()
                             .map(secondClassify -> {
                                 DataResourceTreeVo secondTreeVo = DataResourceTreeVo.builder()
-                                        .id(Joiner.on(ID_SEPARATOR).join(firstTreeVo.getId(), secondClassify.getCodeValue()))
+                                        .id(Joiner.on(CommonCons.ID_SEPARATOR).join(firstTreeVo.getId(), secondClassify.getCodeValue()))
                                         .code(secondClassify.getCodeValue())
                                         .label(secondClassify.getCodeName())
                                         .treeNode(true)
                                         .pId(firstTreeVo.getId())
                                         .dataType(secondClassify.getTypeCode())
-                                        .codeDataTypeStr(UUIDUtils.getUUID() + ID_SEPARATOR + secondClassify.getCodeValue() + ID_SEPARATOR + secondClassify.getTypeCode())
+                                        .codeDataTypeStr(UUIDUtils.getUUID() + CommonCons.ID_SEPARATOR + secondClassify.getCodeValue() + CommonCons.ID_SEPARATOR + secondClassify.getTypeCode())
                                         .build();
 
                                 secondTreeVo.setChild(getChildrenTypeList(secondClassify.getChildrenType()).stream()
                                         .map(thirdClassify -> {
                                             DataResourceTreeVo thirdTreeVo = DataResourceTreeVo.builder()
-                                                    .id(Joiner.on(ID_SEPARATOR).join(secondTreeVo.getId(), thirdClassify.getTypeCode()))
+                                                    .id(Joiner.on(CommonCons.ID_SEPARATOR).join(secondTreeVo.getId(), thirdClassify.getTypeCode()))
                                                     .code(thirdClassify.getTypeCode())
                                                     .label(thirdClassify.getTypeName())
                                                     .treeNode(true)
                                                     .pId(secondTreeVo.getId())
                                                     .dataType(thirdClassify.getTypeCode())
-                                                    .codeDataTypeStr(UUIDUtils.getUUID() + ID_SEPARATOR + thirdClassify.getTypeCode() + ID_SEPARATOR + thirdClassify.getTypeCode())
+                                                    .codeDataTypeStr(UUIDUtils.getUUID() + CommonCons.ID_SEPARATOR + thirdClassify.getTypeCode() + CommonCons.ID_SEPARATOR + thirdClassify.getTypeCode())
                                                     .build();
 
                                             thirdTreeVo.setChild(thirdClassify.getDataList().stream()
                                                     .map(fourClassify -> {
                                                         DataResourceTreeVo fourTreeVo = DataResourceTreeVo.builder()
-                                                                .id(Joiner.on(ID_SEPARATOR).join(thirdTreeVo.getId(), fourClassify.getCodeValue()))
+                                                                .id(Joiner.on(CommonCons.ID_SEPARATOR).join(thirdTreeVo.getId(), fourClassify.getCodeValue()))
                                                                 .code(fourClassify.getCodeValue())
                                                                 .label(fourClassify.getCodeName())
                                                                 .treeNode(false).child(null)
                                                                 .pId(thirdTreeVo.getId())
                                                                 .dataType(thirdClassify.getTypeCode())
-                                                                .codeDataTypeStr(UUIDUtils.getUUID() + ID_SEPARATOR + fourClassify.getCodeValue() + ID_SEPARATOR + thirdClassify.getTypeCode())
+                                                                .codeDataTypeStr(UUIDUtils.getUUID() + CommonCons.ID_SEPARATOR + fourClassify.getCodeValue() + CommonCons.ID_SEPARATOR + thirdClassify.getTypeCode())
                                                                 .build();
                                                         return fourTreeVo;
                                                     }).collect(Collectors.toList()));
@@ -593,26 +744,26 @@ public class DataResourceFacade implements IDataResourceFacade
                 .stream()
                 .map(firstClassify -> {
                     DataResourceTreeVo firstTreeVo = DataResourceTreeVo.builder()
-                            .id(Joiner.on(ID_SEPARATOR).join(id, firstClassify.getCodeValue()))
+                            .id(Joiner.on(CommonCons.ID_SEPARATOR).join(id, firstClassify.getCodeValue()))
                             .code(firstClassify.getCodeValue())
                             .label(firstClassify.getCodeName())
                             .dataType(firstClassify.getTypeCode())
                             .treeNode(true)
                             .pId(id)
-                            .codeDataTypeStr(UUIDUtils.getUUID() + ID_SEPARATOR + firstClassify.getCodeValue() + ID_SEPARATOR + firstClassify.getTypeCode())
+                            .codeDataTypeStr(UUIDUtils.getUUID() + CommonCons.ID_SEPARATOR + firstClassify.getCodeValue() + CommonCons.ID_SEPARATOR + firstClassify.getTypeCode())
                             .build();
 
                     firstTreeVo.setChild(getFirstChildResourceClassifies(firstClassify.getChildrenType())
                             .stream()
                             .map(secondClassify -> {
                                         DataResourceTreeVo secondTreeVo = DataResourceTreeVo.builder()
-                                                .id(Joiner.on(ID_SEPARATOR).join(firstTreeVo.getId(), secondClassify.getCodeValue()))
+                                                .id(Joiner.on(CommonCons.ID_SEPARATOR).join(firstTreeVo.getId(), secondClassify.getCodeValue()))
                                                 .code(secondClassify.getCodeValue())
                                                 .label(secondClassify.getCodeName())
                                                 .treeNode(false)
                                                 .dataType(secondClassify.getTypeCode())
                                                 .pId(firstTreeVo.getId())
-                                                .codeDataTypeStr(UUIDUtils.getUUID() + ID_SEPARATOR + secondClassify.getCodeValue() + ID_SEPARATOR + secondClassify.getTypeCode())
+                                                .codeDataTypeStr(UUIDUtils.getUUID() + CommonCons.ID_SEPARATOR + secondClassify.getCodeValue() + CommonCons.ID_SEPARATOR + secondClassify.getTypeCode())
                                                 .build();
                                         return secondTreeVo;
                                     }
@@ -623,41 +774,97 @@ public class DataResourceFacade implements IDataResourceFacade
     }
 
     /**
+     * 拼接表、列、pid
+     *
      * 计算treeVo所有最底层子节点数量,不包含叶节点
+     *
      * @param treeVo
+     * @param tabInfosMap
+     * @param colInfosMap
      * @return
      */
-    private int getTotalCount(DataResourceTreeVo treeVo) {
-        int count = 0;
+    private boolean combinePidAndTabCol(DataResourceTreeVo treeVo, Map<String, List<DataTabInfo>> tabInfosMap, Map<String, List<DataColInfo>> colInfosMap) {
         List<DataResourceTreeVo> child = treeVo.getChild();
-        for (DataResourceTreeVo childVo : child) {
+        Iterator<DataResourceTreeVo> iterator = child.iterator();
+        while (iterator.hasNext()) {
+            DataResourceTreeVo childVo = iterator.next();
             childVo.setPId(treeVo.getId());
-            childVo.setId(Joiner.on(ID_SEPARATOR).join(treeVo.getId(), childVo.getCode()));
+            childVo.setId(Joiner.on(CommonCons.ID_SEPARATOR).join(treeVo.getId(), childVo.getCode()));
             List<DataResourceTreeVo> cc = childVo.getChild();
-            if(CollectionUtils.isNotEmpty(cc)){
+            if (CollectionUtils.isNotEmpty(cc)) {
                 childVo.setTreeNode(true);
-                count += getTotalCount(childVo);
-            }else {
-                childVo.setTreeNode(false);
-                count += 1;
+                boolean emptyChild = combinePidAndTabCol(childVo, tabInfosMap, colInfosMap);
+                if (emptyChild) {
+                    iterator.remove();
+                }
+            } 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<DataTabInfo> dataTabInfo = tabInfosMap.get(replace);
+                    if (dataTabInfo == null) {
+                        iterator.remove();
+                    } else {
+                        List<DataResourceTreeVo> tableVos = convertTableToTreeVo(childVo, dataTabInfo, colInfosMap);
+                        childVo.setTreeNode(true);
+                        childVo.setChild(tableVos);
+                    }
+                }
+
             }
         }
-        return count;
+        return CollectionUtils.isEmpty(child);
+    }
+
+    private List<DataResourceTreeVo> convertTableToTreeVo(DataResourceTreeVo childVo, List<DataTabInfo> dataTabInfo, Map<String, List<DataColInfo>> colInfosMap) {
+        return dataTabInfo.stream().map(e -> {
+            DataResourceTreeVo vo = new DataResourceTreeVo();
+            vo.setId(e.getId());
+            vo.setPId(childVo.getId());
+            vo.setLabel(e.getName());
+            vo.setDataType(DataResourceEnum.TAB.getCode());
+            List<DataColInfo> colInfoList = colInfosMap.get(e.getCode());
+            if (CollectionUtils.isNotEmpty(colInfoList)) {
+                List<DataResourceTreeVo> colVos = convertColumnToTreeVo(e.getId(), colInfoList);
+                vo.setChild(colVos);
+                vo.setTreeNode(true);
+            } else {
+                vo.setChild(Collections.emptyList());
+                vo.setTreeNode(false);
+            }
+            return vo;
+        }).collect(Collectors.toList());
+    }
+
+    private List<DataResourceTreeVo> convertColumnToTreeVo(String pid, List<DataColInfo> colInfoList) {
+        return colInfoList.stream().map(e -> {
+            DataResourceTreeVo vo = new DataResourceTreeVo();
+            vo.setId(e.getId());
+            vo.setPId(pid);
+            vo.setLabel(e.getName());
+            vo.setDataType(DataResourceEnum.COL.getCode());
+            return vo;
+        }).collect(Collectors.toList());
     }
 
     /**
      * 从数据资源目录获取数据-数据分级
+     *
      * @return
      */
     private List<DataLevelVo> getDataLevelListFromRemote() {
         return getFirstChildResourceClassifies(dataResourceService.getDataLevelList())
                 .stream()
-                .map(childResourceClassify -> new DataLevelVo(null, childResourceClassify.getCodeValue(), childResourceClassify.getCodeName(),childResourceClassify.getTypeCode()))
+                .map(childResourceClassify -> new DataLevelVo(null, childResourceClassify.getCodeValue(), childResourceClassify.getCodeName(), childResourceClassify.getTypeCode()))
                 .collect(Collectors.toList());
     }
 
     /**
      * 从数据资源目录获取数据-安全级别数据
+     *
      * @return
      */
     private List<DataLevelVo> getSecurityLevelListFromRemote() {
@@ -673,7 +880,7 @@ public class DataResourceFacade implements IDataResourceFacade
                 .map(resourceClassify -> {
                     //设置节点的dataType,dataType为上级的typeCode字段
                     List<ChildResourceClassify> dataList = Optional.ofNullable(resourceClassify.getDataList()).orElse(Lists.newArrayList());
-                    dataList.stream().forEach(item-> item.setTypeCode(resourceClassify.getTypeCode()));
+                    dataList.stream().forEach(item -> item.setTypeCode(resourceClassify.getTypeCode()));
                     return dataList;
                 })
                 .orElse(Lists.newArrayList());

+ 11 - 0
dcuc-app-service/src/main/java/com/dragoninfo/dcuc/app/mapper/DataColInfoMapper.java

@@ -0,0 +1,11 @@
+package com.dragoninfo.dcuc.app.mapper;
+
+import com.dragoninfo.dcuc.app.entity.DataColInfo;
+import com.dragonsoft.duceap.mybaitsplus.core.BaseMybatisMapper;
+
+/**
+ * @author mazq
+ * @date 2022/9/29
+ */
+public interface DataColInfoMapper extends BaseMybatisMapper<DataColInfo> {
+}

+ 11 - 0
dcuc-app-service/src/main/java/com/dragoninfo/dcuc/app/mapper/DataTabInfoMapper.java

@@ -0,0 +1,11 @@
+package com.dragoninfo.dcuc.app.mapper;
+
+import com.dragoninfo.dcuc.app.entity.DataTabInfo;
+import com.dragonsoft.duceap.mybaitsplus.core.BaseMybatisMapper;
+
+/**
+ * @author mazq
+ * @date 2022/9/29
+ */
+public interface DataTabInfoMapper extends BaseMybatisMapper<DataTabInfo> {
+}

+ 15 - 0
dcuc-app-service/src/main/java/com/dragoninfo/dcuc/app/mapper/sub/AppColumnRelationMapper.java

@@ -0,0 +1,15 @@
+package com.dragoninfo.dcuc.app.mapper.sub;
+
+import com.dragoninfo.dcuc.app.entity.sub.AppColumnRelation;
+import com.dragonsoft.duceap.mybaitsplus.core.BaseMybatisMapper;
+
+/**
+ * <p>
+ *
+ * </p>
+ *
+ * @author huangzqa
+ * @date 2022/10/2
+ */
+public interface AppColumnRelationMapper extends BaseMybatisMapper<AppColumnRelation> {
+}

+ 16 - 0
dcuc-app-service/src/main/java/com/dragoninfo/dcuc/app/mapper/sub/AppDataItemInfoMapper.java

@@ -0,0 +1,16 @@
+package com.dragoninfo.dcuc.app.mapper.sub;
+
+import com.dragoninfo.dcuc.app.entity.sub.AppColumnRelation;
+import com.dragoninfo.dcuc.app.entity.sub.AppDataItemInfo;
+import com.dragonsoft.duceap.mybaitsplus.core.BaseMybatisMapper;
+
+/**
+ * <p>
+ *
+ * </p>
+ *
+ * @author huangzqa
+ * @date 2022/10/2
+ */
+public interface AppDataItemInfoMapper  extends BaseMybatisMapper<AppDataItemInfo> {
+}

+ 16 - 0
dcuc-app-service/src/main/java/com/dragoninfo/dcuc/app/mapper/sub/AppDataResourceInfoMapper.java

@@ -0,0 +1,16 @@
+package com.dragoninfo.dcuc.app.mapper.sub;
+
+import com.dragoninfo.dcuc.app.entity.sub.AppColumnRelation;
+import com.dragoninfo.dcuc.app.entity.sub.AppDataResourceInfo;
+import com.dragonsoft.duceap.mybaitsplus.core.BaseMybatisMapper;
+
+/**
+ * <p>
+ *
+ * </p>
+ *
+ * @author huangzqa
+ * @date 2022/10/2
+ */
+public interface AppDataResourceInfoMapper extends BaseMybatisMapper<AppDataResourceInfo> {
+}

+ 15 - 0
dcuc-app-service/src/main/java/com/dragoninfo/dcuc/app/service/IDataColInfoService.java

@@ -0,0 +1,15 @@
+package com.dragoninfo.dcuc.app.service;
+
+import com.dragoninfo.dcuc.app.entity.DataColInfo;
+
+import java.util.List;
+
+/**
+ * @author mazq
+ * @date 2022/9/29
+ */
+public interface IDataColInfoService {
+
+
+    List<DataColInfo> getAllColInfos();
+}

+ 9 - 1
dcuc-app-service/src/main/java/com/dragoninfo/dcuc/app/service/IDataResourceService.java

@@ -6,9 +6,11 @@ import java.util.List;
 import java.util.Map;
 
 /**
- * Created by lidr on 2021/4/14
+ * @author lidr
+ * @date 2021/4/14
  */
 public interface IDataResourceService {
+
     List<ResourceClassify> getDataLevelList();
 
     List<ResourceClassify> getSecurityLevelList();
@@ -17,5 +19,11 @@ public interface IDataResourceService {
 
     List<ResourceClassify> getFieldClassifyList();
 
+    /**
+     * 获取字段关系数据
+     * @return 数据
+     */
+    List<ResourceClassify>  getColumnRelationCatalog();
+
 
 }

+ 16 - 0
dcuc-app-service/src/main/java/com/dragoninfo/dcuc/app/service/IDataTabInfoService.java

@@ -0,0 +1,16 @@
+package com.dragoninfo.dcuc.app.service;
+
+import com.dragoninfo.dcuc.app.entity.DataTabInfo;
+
+import java.util.List;
+
+/**
+ * @author mazq
+ * @date 2022/9/29
+ */
+public interface IDataTabInfoService {
+
+
+    List<DataTabInfo> getAllTabInfos();
+
+}

+ 26 - 0
dcuc-app-service/src/main/java/com/dragoninfo/dcuc/app/service/impl/DataColInfoServiceImpl.java

@@ -0,0 +1,26 @@
+package com.dragoninfo.dcuc.app.service.impl;
+
+import com.dragoninfo.dcuc.app.entity.DataColInfo;
+import com.dragoninfo.dcuc.app.mapper.DataColInfoMapper;
+import com.dragoninfo.dcuc.app.service.IDataColInfoService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+/**
+ * @author mazq
+ * @date 2022/9/29
+ */
+@Service
+public class DataColInfoServiceImpl implements IDataColInfoService {
+
+    @Autowired
+    private DataColInfoMapper colInfoMapper;
+
+
+    @Override
+    public List<DataColInfo> getAllColInfos() {
+        return colInfoMapper.selectList(null);
+    }
+}

+ 24 - 17
dcuc-app-service/src/main/java/com/dragoninfo/dcuc/app/service/impl/DataResourceServiceImpl.java

@@ -1,6 +1,6 @@
 package com.dragoninfo.dcuc.app.service.impl;
 
-import com.dragoninfo.dcuc.app.business.IResourceBusiness;
+import com.dragoninfo.dcuc.app.business.IDataCatalogBusiness;
 import com.dragoninfo.dcuc.app.dto.dataresource.ResourceClassify;
 import com.dragoninfo.dcuc.app.dto.dataresource.ResourceType;
 import com.dragoninfo.dcuc.app.service.IDataResourceService;
@@ -18,34 +18,34 @@ import java.util.List;
 import java.util.Map;
 
 /**
- * Created by lidr on 2021/4/14
+ * @author lidr
+ * @date 2021/4/14
  */
-@Transactional(rollbackFor = Exception.class)
 @Service
 public class DataResourceServiceImpl implements IDataResourceService {
 
     Logger logger = LoggerFactory.getLogger(DataResourceServiceImpl.class);
 
     @Autowired
-    private IResourceBusiness resourceBusiness;
+    private IDataCatalogBusiness dataCatalogBusiness;
 
     @Override
     public List<ResourceClassify> getDataLevelList() {
-        Map param = getParamMap(ResourceType.builder().typeCode("DATA_LEVEL").build());
-        return resourceBusiness.getDataResource(param, new TypeToken<List<ResourceClassify>>() {
+        Map<String, Object> param = getParamMap(ResourceType.builder().typeCode("DATA_LEVEL").build());
+        return dataCatalogBusiness.getDataResource(param, new TypeToken<List<ResourceClassify>>() {
         }.getType());
     }
 
     @Override
     public List<ResourceClassify> getSecurityLevelList() {
-        Map param = getParamMap(ResourceType.builder().typeCode("DATA_SECURITY_LEVEL").build());
-        return resourceBusiness.getDataResource(param, new TypeToken<List<ResourceClassify>>() {
+        Map<String, Object> param = getParamMap(ResourceType.builder().typeCode("DATA_SECURITY_LEVEL").build());
+        return dataCatalogBusiness.getDataResource(param, new TypeToken<List<ResourceClassify>>() {
         }.getType());
     }
 
     @Override
     public List<ResourceClassify> getDataClassifyList() {
-        Map param = getParamMap(true,
+        Map<String, Object> param = getParamMap(true,
                 ResourceType.builder().typeCode("RESOURCE_SJZZYJFL").build(),
                 ResourceType.builder().typeCode("RESOURCE_SJZZEJFL").build(),
                 ResourceType.builder().typeCode("RESOURCE_SJZYBQ1").build(),
@@ -54,30 +54,37 @@ public class DataResourceServiceImpl implements IDataResourceService {
                 ResourceType.builder().typeCode("RESOURCE_SJZYBQ4").build(),
                 ResourceType.builder().typeCode("RESOURCE_SJZYBQ5").build()
         );
-        return resourceBusiness.getDataResource(param, new TypeToken<List<ResourceClassify>>() {
+        return dataCatalogBusiness.getDataResource(param, new TypeToken<List<ResourceClassify>>() {
         }.getType());
     }
 
     @Override
     public List<ResourceClassify> getFieldClassifyList() {
-        Map param = getParamMap(true,
+        Map<String, Object> param = getParamMap(true,
                 ResourceType.builder().typeCode("LEVEL_1_COLUMN_CLASSIFY").build(),
                 ResourceType.builder().typeCode("LEVEL_2_COLUMN_CLASSIFY").build()
         );
-        return resourceBusiness.getDataResource(param, new TypeToken<List<ResourceClassify>>() {
+        return dataCatalogBusiness.getDataResource(param, new TypeToken<List<ResourceClassify>>() {
         }.getType());
     }
 
-    private Map getParamMap(ResourceType... typeCodes) {
+    @Override
+    public List<ResourceClassify> getColumnRelationCatalog() {
+        Map<String, Object> param = getParamMap(ResourceType.builder().typeCode("COLUMN_RELATION_CATALOG").build());
+        return dataCatalogBusiness.getDataResource(param, new TypeToken<List<ResourceClassify>>() {
+        }.getType());
+    }
+
+    private Map<String, Object> getParamMap(ResourceType... typeCodes) {
         return getParamMap(false, typeCodes);
     }
 
-    private Map getParamMap(boolean isBuildTree, ResourceType... typeCodes) {
-        Map paramMap = new HashMap();
-        List<Map> mapList = new ArrayList<>();
+    private Map<String, Object> getParamMap(boolean isBuildTree, ResourceType... typeCodes) {
+        Map<String, Object> paramMap = new HashMap<>();
+        List<Map<String, String>> mapList = new ArrayList<>();
 
         for (ResourceType typeCode : typeCodes) {
-            Map typeMap = new HashMap();
+            Map<String, String> typeMap = new HashMap<>();
 
             typeMap.put("typeCode", typeCode.getTypeCode());
             if (Strings.isNullOrEmpty(typeCode.getParentCode())) {

+ 25 - 0
dcuc-app-service/src/main/java/com/dragoninfo/dcuc/app/service/impl/DataTabInfoServiceImpl.java

@@ -0,0 +1,25 @@
+package com.dragoninfo.dcuc.app.service.impl;
+
+import com.dragoninfo.dcuc.app.entity.DataTabInfo;
+import com.dragoninfo.dcuc.app.mapper.DataTabInfoMapper;
+import com.dragoninfo.dcuc.app.service.IDataTabInfoService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+/**
+ * @author mazq
+ * @date 2022/9/29
+ */
+@Service
+public class DataTabInfoServiceImpl implements IDataTabInfoService {
+
+    @Autowired
+    private DataTabInfoMapper tabInfoMapper;
+
+    @Override
+    public List<DataTabInfo> getAllTabInfos() {
+        return tabInfoMapper.selectList(null);
+    }
+}

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

@@ -0,0 +1,12 @@
+package com.dragoninfo.dcuc.app.service.sub;
+
+/**
+ * <p>
+ *
+ * </p>
+ *
+ * @author huangzqa
+ * @date 2022/10/2
+ */
+public interface IAppColumnRelationService {
+}

+ 28 - 0
dcuc-app-service/src/main/java/com/dragoninfo/dcuc/app/service/sub/IAppDataItemInfoService.java

@@ -0,0 +1,28 @@
+package com.dragoninfo.dcuc.app.service.sub;
+
+import com.dragoninfo.dcuc.app.entity.sub.AppDataItemInfo;
+
+import java.util.List;
+
+/**
+ * <p>
+ *
+ * </p>
+ *
+ * @author huangzqa
+ * @date 2022/10/2
+ */
+public interface IAppDataItemInfoService {
+
+    /**
+     * 保存所有
+     *
+     * @param appDataItemInfoList 列表
+     */
+    void saveAll(List<AppDataItemInfo> appDataItemInfoList);
+
+    /**
+     * 删除所有
+     */
+    void deleteAll();
+}

+ 27 - 0
dcuc-app-service/src/main/java/com/dragoninfo/dcuc/app/service/sub/IAppDataResourceInfoService.java

@@ -0,0 +1,27 @@
+package com.dragoninfo.dcuc.app.service.sub;
+
+import com.dragoninfo.dcuc.app.entity.sub.AppDataResourceInfo;
+
+import java.util.List;
+
+/**
+ * <p>
+ *
+ * </p>
+ *
+ * @author huangzqa
+ * @date 2022/10/2
+ */
+public interface IAppDataResourceInfoService {
+    /**
+     * 保存所有
+     *
+     * @param resourceInfoList 数据资源列表
+     */
+    void saveAll(List<AppDataResourceInfo> resourceInfoList);
+
+    /**
+     * 删除所有
+     */
+    void deleteAll();
+}

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

@@ -0,0 +1,22 @@
+package com.dragoninfo.dcuc.app.service.sub.impl;
+
+import com.dragoninfo.dcuc.app.mapper.sub.AppColumnRelationMapper;
+import com.dragoninfo.dcuc.app.service.sub.IAppColumnRelationService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ *
+ * </p>
+ *
+ * @author huangzqa
+ * @date 2022/10/2
+ */
+@Service
+public class AppColumnRelationServiceImpl implements IAppColumnRelationService {
+
+    @Autowired
+    private AppColumnRelationMapper appColumnRelationMapper;
+
+}

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

@@ -0,0 +1,42 @@
+package com.dragoninfo.dcuc.app.service.sub.impl;
+
+import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.dragoninfo.dcuc.app.entity.sub.AppDataItemInfo;
+import com.dragoninfo.dcuc.app.mapper.sub.AppDataItemInfoMapper;
+import com.dragoninfo.dcuc.app.service.sub.IAppDataItemInfoService;
+import com.dragoninfo.dcuc.app.service.sub.IAppDataResourceInfoService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.List;
+
+/**
+ * <p>
+ *
+ * </p>
+ *
+ * @author huangzqa
+ * @date 2022/10/2
+ */
+@Service
+public class AppDataItemInfoServiceImpl implements IAppDataItemInfoService {
+
+    @Autowired
+    private AppDataItemInfoMapper appDataItemInfoMapper;
+
+    @Transactional(rollbackFor = Throwable.class)
+    @Override
+    public void saveAll(List<AppDataItemInfo> appDataItemInfoList) {
+        for (AppDataItemInfo appDataItemInfo : appDataItemInfoList) {
+            appDataItemInfoMapper.insert(appDataItemInfo);
+        }
+    }
+
+    @Transactional(rollbackFor = Throwable.class)
+    @Override
+    public void deleteAll() {
+        appDataItemInfoMapper.delete(Wrappers.emptyWrapper());
+    }
+}

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

@@ -0,0 +1,40 @@
+package com.dragoninfo.dcuc.app.service.sub.impl;
+
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.dragoninfo.dcuc.app.entity.sub.AppDataResourceInfo;
+import com.dragoninfo.dcuc.app.mapper.sub.AppDataResourceInfoMapper;
+import com.dragoninfo.dcuc.app.service.sub.IAppDataResourceInfoService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.List;
+
+/**
+ * <p>
+ *
+ * </p>
+ *
+ * @author huangzqa
+ * @date 2022/10/2
+ */
+@Service
+public class AppDataResourceInfoServiceImpl implements IAppDataResourceInfoService {
+
+    @Autowired
+    private AppDataResourceInfoMapper appDataResourceInfoMapper;
+
+    @Transactional(rollbackFor = Throwable.class)
+    @Override
+    public void saveAll(List<AppDataResourceInfo> resourceInfoList) {
+        for (AppDataResourceInfo appDataResourceInfo : resourceInfoList) {
+            appDataResourceInfoMapper.insert(appDataResourceInfo);
+        }
+    }
+
+    @Transactional(rollbackFor = Throwable.class)
+    @Override
+    public void deleteAll() {
+        appDataResourceInfoMapper.delete(Wrappers.emptyWrapper());
+    }
+}

+ 2 - 3
dcuc-app-service/src/main/resources/application-app.yml

@@ -13,7 +13,7 @@ dcuc:
       app-topic: 10000028
       service-topic: 10000029
       bus-sra-id: Y-120000000000-0042
-#      bus-sra-id: Y-120000000000-0037 # 测试使用
+      #      bus-sra-id: Y-120000000000-0037 # 测试使用
       bus-sre-idcard: 654001197503078495
       #应用资源请求参数
       page-size: 50
@@ -37,7 +37,6 @@ dcuc:
         bus-service-id: S-010000000000-0700-00126
         bus-service-func: customQuery
       data-resource:
-        bus-service-id: S-120000000000-0100-00028
-        bus-service-func: searchType
+        data-catalog-url: http://10.201.8.40:9977
       resource-url: http://10.201.7.31:8585/bus/send
       bu-service-url: http://10.11.0.41:8081/ddos/v1/ministryResources/searchMinistryResources

+ 104 - 0
dcuc-app-service/src/main/resources/config/mysql/V4_1_0008__Add_Data_Table_Ration.sql

@@ -0,0 +1,104 @@
+DROP TABLE IF EXISTS t_app_column_relation;
+CREATE TABLE t_app_column_relation
+(
+    id                     VARCHAR(32) NOT NULL COMMENT '编号',
+    code_name              VARCHAR(90) NOT NULL COMMENT '表码名称',
+    code_value             VARCHAR(90) NOT NULL COMMENT '表码值',
+    column_one_class_value VARCHAR(90) NOT NULL COMMENT '字段一分类值',
+    column_two_class_value VARCHAR(90) NOT NULL COMMENT '字段二分类值',
+    deleted                VARCHAR(1)  NOT NULL COMMENT '是否删除',
+    create_time            DATETIME    NOT NULL COMMENT '创建时间',
+    update_time            DATETIME COMMENT '更新时间',
+    create_user            VARCHAR(32) COMMENT '创建用户',
+    update_user            VARCHAR(32) COMMENT '更新用户',
+    PRIMARY KEY (id)
+) COMMENT = '字段关系表';
+
+DROP TABLE IF EXISTS t_app_data_item_info;
+CREATE TABLE t_app_data_item_info
+(
+    id                         VARCHAR(32)  NOT NULL COMMENT '编号',
+    resource_table_id                VARCHAR(255) NOT NULL COMMENT '数据资源ID',
+    column_id                  VARCHAR(32)  NOT NULL COMMENT '数据项ID',
+    column_code                VARCHAR(90)  NOT NULL COMMENT '字段英文名称',
+    column_name                VARCHAR(90)  NOT NULL COMMENT '字段中文名称',
+    column_classify            VARCHAR(32) COMMENT '字段分类代码',
+    column_classify_name       VARCHAR(90) COMMENT '字段分类名称',
+    data_security_level        VARCHAR(32) COMMENT '数据安全级别代码',
+    data_security_level_name   VARCHAR(90) COMMENT '数据安全级别名称',
+    data_item_no               VARCHAR(32) COMMENT '数据项编号',
+    data_item_code             VARCHAR(90) COMMENT '数据项标识符',
+    data_source_item_type      VARCHAR(32) COMMENT '数据项类型代码',
+    data_source_item_type_name VARCHAR(90) COMMENT '数据项类型名称',
+    data_element_code          VARCHAR(32) COMMENT '数据元内部标识符',
+    standard_data_item_no      VARCHAR(32) COMMENT '数据项集数据项编号',
+    standard_data_item_name    VARCHAR(90) COMMENT '数据项集数据项中文名',
+    standard_data_item_code    VARCHAR(32) COMMENT '数据项集数据项英文名',
+    standard_data_item_type    VARCHAR(32) COMMENT '数据项集数据项数据类型',
+    standard_data_item_length  VARCHAR(90) COMMENT '数据项集数据项数据长度',
+    remark                     VARCHAR(900) COMMENT '备注',
+    invalid_status             VARCHAR(32) COMMENT '是否失效,true/false',
+    column_register_time       DATETIME COMMENT '注册时间,格式:yyyy-MM-dd HH:mm:ss',
+    column_update_time         DATETIME COMMENT '更新时间,格式:yyyy-MM-dd HH:mm:ss',
+    deleted                    VARCHAR(1)   NOT NULL COMMENT '是否删除',
+    create_time                DATETIME     NOT NULL COMMENT '创建时间',
+    update_time                DATETIME COMMENT '更新时间',
+    create_user                VARCHAR(32) COMMENT '创建用户',
+    update_user                VARCHAR(32) COMMENT '更新用户',
+    PRIMARY KEY (id)
+) COMMENT = '数据项(字段)信息';
+
+DROP TABLE IF EXISTS t_app_data_resource_info;
+CREATE TABLE t_app_data_resource_info
+(
+    id                       VARCHAR(32) NOT NULL COMMENT '编号',
+    data_object_id           VARCHAR(32) NOT NULL COMMENT '数据对象ID',
+    resource_code            VARCHAR(90) NOT NULL COMMENT '数据资源标识符',
+    resource_name            VARCHAR(90) NOT NULL COMMENT '资源名称',
+    resource_version         VARCHAR(32) COMMENT '数据资源版本号',
+    resource_description     VARCHAR(900) COMMENT '数据资源描述',
+    table_code               VARCHAR(90) COMMENT '数据对象英文名',
+    table_name               VARCHAR(90) COMMENT '数据对象中文名',
+    catalog_cod              VARCHAR(90) COMMENT '数据资源目录编号',
+    application_code         VARCHAR(32) COMMENT '应用系统编号',
+    application_code_name    VARCHAR(90) COMMENT '应用系统名称',
+    data_source_one_code     VARCHAR(32) COMMENT '一级数据来源编号',
+    data_source_one_name     VARCHAR(90) COMMENT '一级数据来源名称',
+    data_source_two_code     VARCHAR(32) COMMENT '二级数据来源编号',
+    data_source_two_name     VARCHAR(90) COMMENT '二级数据来源名称',
+    data_classification      VARCHAR(32) COMMENT '数据分级代码',
+    data_classification_name VARCHAR(90) COMMENT '数据分级名称',
+    standard_data_code       VARCHAR(32) COMMENT '标准数据项集编码',
+    standard_data_name       VARCHAR(90) COMMENT '标准数据项集名称',
+    data_classify_one_code   VARCHAR(32) COMMENT '数据组织一级分类代码',
+    data_classify_one_name   VARCHAR(90) COMMENT '数据组织一级分类名称',
+    data_classify_two_code   VARCHAR(32) COMMENT '数据组织二级分类代码',
+    data_classify_two_name   VARCHAR(90) COMMENT '数据组织二级分类名称',
+    data_label_one_code      VARCHAR(32) COMMENT '数据标签1代码',
+    data_label_one_name      VARCHAR(90) COMMENT '数据标签1名称',
+    data_label_two_code      VARCHAR(32) COMMENT '数据标签2代码',
+    data_label_two_name      VARCHAR(90) COMMENT '数据标签2名称',
+    data_label_three_code    VARCHAR(32) COMMENT '数据标签3代码',
+    data_label_three_name    VARCHAR(90) COMMENT '数据标签3名称',
+    data_label_four_code     VARCHAR(32) COMMENT '数据标签4代码',
+    data_label_four_name     VARCHAR(90) COMMENT '数据标签4名称',
+    data_label_five_code     VARCHAR(32) COMMENT '数据标签5代码',
+    data_label_five_name     VARCHAR(90) COMMENT '数据标签5名称',
+    resource_service_code    VARCHAR(90) COMMENT '数据资源服务编号',
+    resource_status          VARCHAR(255) COMMENT '资源状态代码',
+    resource_status_name     VARCHAR(32) COMMENT '资源状态名称1启动0停用2注销',
+    resource_register_time   DATETIME COMMENT '注册时间,格式:yyyy-MM-dd HH:mm:ss',
+    resource_update_time     DATETIME COMMENT '更新时间,格式:yyyy-MM-dd HH:mm:ss',
+    authority_dept_code      VARCHAR(255) COMMENT '数据资源事权单位编号',
+    authority_dept_name      VARCHAR(255) COMMENT '数据资源事权单位名称',
+    manage_dept_code         VARCHAR(255) COMMENT '数据资源管理单位编号',
+    manage_dept_name         VARCHAR(255) COMMENT '数据资源管理单位名称',
+    is_access                VARCHAR(1) COMMENT '否开发服务1是0否',
+    deleted                  VARCHAR(1)  NOT NULL COMMENT '是否删除',
+    create_time              DATETIME    NOT NULL COMMENT '创建时间',
+    update_time              DATETIME COMMENT '更新时间',
+    create_user              VARCHAR(32) COMMENT '创建用户',
+    update_user              VARCHAR(32) COMMENT '更新用户',
+    PRIMARY KEY (id)
+) COMMENT = '数据资源(表)信息';
+

+ 194 - 0
dcuc-app-service/src/main/resources/config/sql/V4_1_0008__Add_Data_Table_Ration.sql

@@ -0,0 +1,194 @@
+CREATE TABLE t_app_column_relation
+(
+    id VARCHAR2 (32) NOT NULL,
+    code_name VARCHAR2 (90) NOT NULL,
+    code_value VARCHAR2 (90) NOT NULL,
+    column_one_class_value VARCHAR2 (90) NOT NULL,
+    column_two_class_value VARCHAR2 (90) NOT NULL,
+    deleted VARCHAR2 (1) NOT NULL,
+    create_time DATE NOT NULL,
+    update_time DATE,
+    create_user VARCHAR2 (32),
+    update_user VARCHAR2 (32),
+    PRIMARY KEY (id)
+);
+
+COMMENT ON TABLE t_app_column_relation IS '字段关系表';
+COMMENT ON COLUMN t_app_column_relation.id IS '编号';
+COMMENT ON COLUMN t_app_column_relation.code_name IS '表码名称';
+COMMENT ON COLUMN t_app_column_relation.code_value IS '表码值';
+COMMENT ON COLUMN t_app_column_relation.column_one_class_value IS '字段一分类值';
+COMMENT ON COLUMN t_app_column_relation.column_two_class_value IS '字段二分类值';
+COMMENT ON COLUMN t_app_column_relation.deleted IS '是否删除';
+COMMENT ON COLUMN t_app_column_relation.create_time IS '创建时间';
+COMMENT ON COLUMN t_app_column_relation.update_time IS '更新时间';
+COMMENT ON COLUMN t_app_column_relation.create_user IS '创建用户';
+COMMENT ON COLUMN t_app_column_relation.update_user IS '更新用户';
+
+CREATE TABLE t_app_data_item_info
+(
+    id VARCHAR2 (32) NOT NULL,
+    resource_table_id VARCHAR2 (32) NOT NULL,
+    column_id VARCHAR2 (32) NOT NULL,
+    column_code VARCHAR2 (90) NOT NULL,
+    column_name VARCHAR2 (90) NOT NULL,
+    column_classify VARCHAR2 (32),
+    column_classify_name VARCHAR2 (90),
+    data_security_level VARCHAR2 (32),
+    data_security_level_name VARCHAR2 (90),
+    data_item_no VARCHAR2 (32),
+    data_item_code VARCHAR2 (90),
+    data_source_item_type VARCHAR2 (32),
+    data_source_item_type_name VARCHAR2 (90),
+    data_element_code VARCHAR2 (32),
+    standard_data_item_no VARCHAR2 (32),
+    standard_data_item_name VARCHAR2 (90),
+    standard_data_item_code VARCHAR2 (32),
+    standard_data_item_type VARCHAR2 (32),
+    standard_data_item_length VARCHAR2 (90),
+    remark VARCHAR2 (900),
+    invalid_status VARCHAR2 (32),
+    column_register_time DATE,
+    column_update_time   DATE,
+    deleted VARCHAR2 (1) NOT NULL,
+    create_time          DATE NOT NULL,
+    update_time          DATE,
+    create_user VARCHAR2 (32),
+    update_user VARCHAR2 (32),
+    PRIMARY KEY (id)
+);
+
+COMMENT ON TABLE t_app_data_item_info IS '数据项(字段)信息';
+COMMENT ON COLUMN t_app_data_item_info.id IS '编号';
+COMMENT ON COLUMN t_app_data_item_info.resource_table_id IS '数据资源ID';
+COMMENT ON COLUMN t_app_data_item_info.column_id IS '数据项ID';
+COMMENT ON COLUMN t_app_data_item_info.column_code IS '字段英文名称';
+COMMENT ON COLUMN t_app_data_item_info.column_name IS '字段中文名称';
+COMMENT ON COLUMN t_app_data_item_info.column_classify IS '字段分类代码';
+COMMENT ON COLUMN t_app_data_item_info.column_classify_name IS '字段分类名称';
+COMMENT ON COLUMN t_app_data_item_info.data_security_level IS '数据安全级别代码';
+COMMENT ON COLUMN t_app_data_item_info.data_security_level_name IS '数据安全级别名称';
+COMMENT ON COLUMN t_app_data_item_info.data_item_no IS '数据项编号';
+COMMENT ON COLUMN t_app_data_item_info.data_item_code IS '数据项标识符';
+COMMENT ON COLUMN t_app_data_item_info.data_source_item_type IS '数据项类型代码';
+COMMENT ON COLUMN t_app_data_item_info.data_source_item_type_name IS '数据项类型名称';
+COMMENT ON COLUMN t_app_data_item_info.data_element_code IS '数据元内部标识符';
+COMMENT ON COLUMN t_app_data_item_info.standard_data_item_no IS '数据项集数据项编号';
+COMMENT ON COLUMN t_app_data_item_info.standard_data_item_name IS '数据项集数据项中文名';
+COMMENT ON COLUMN t_app_data_item_info.standard_data_item_code IS '数据项集数据项英文名';
+COMMENT ON COLUMN t_app_data_item_info.standard_data_item_type IS '数据项集数据项数据类型';
+COMMENT ON COLUMN t_app_data_item_info.standard_data_item_length IS '数据项集数据项数据长度';
+COMMENT ON COLUMN t_app_data_item_info.remark IS '备注';
+COMMENT ON COLUMN t_app_data_item_info.invalid_status IS '是否失效,true/false';
+COMMENT ON COLUMN t_app_data_item_info.column_register_time IS '注册时间,格式:yyyy-MM-dd HH:mm:ss';
+COMMENT ON COLUMN t_app_data_item_info.column_update_time IS '更新时间,格式:yyyy-MM-dd HH:mm:ss';
+COMMENT ON COLUMN t_app_data_item_info.deleted IS '是否删除';
+COMMENT ON COLUMN t_app_data_item_info.create_time IS '创建时间';
+COMMENT ON COLUMN t_app_data_item_info.update_time IS '更新时间';
+COMMENT ON COLUMN t_app_data_item_info.create_user IS '创建用户';
+COMMENT ON COLUMN t_app_data_item_info.update_user IS '更新用户';
+
+
+CREATE TABLE t_app_data_resource_info
+(
+    id VARCHAR2 (32) NOT NULL,
+    data_object_id VARCHAR2 (32) NOT NULL,
+    resource_code VARCHAR2 (90) NOT NULL,
+    resource_name VARCHAR2 (90) NOT NULL,
+    resource_version VARCHAR2 (32),
+    resource_description VARCHAR2 (900),
+    table_code VARCHAR2 (90),
+    table_name VARCHAR2 (90),
+    catalog_cod VARCHAR2 (90),
+    application_code VARCHAR2 (32),
+    application_code_name VARCHAR2 (90),
+    data_source_one_code VARCHAR2 (32),
+    data_source_one_name VARCHAR2 (90),
+    data_source_two_code VARCHAR2 (32),
+    data_source_two_name VARCHAR2 (90),
+    data_classification VARCHAR2 (32),
+    data_classification_name VARCHAR2 (90),
+    standard_data_code VARCHAR2 (32),
+    standard_data_name VARCHAR2 (90),
+    data_classify_one_code VARCHAR2 (32),
+    data_classify_one_name VARCHAR2 (90),
+    data_classify_two_code VARCHAR2 (32),
+    data_classify_two_name VARCHAR2 (90),
+    data_label_one_code VARCHAR2 (32),
+    data_label_one_name VARCHAR2 (90),
+    data_label_two_code VARCHAR2 (32),
+    data_label_two_name VARCHAR2 (90),
+    data_label_three_code VARCHAR2 (32),
+    data_label_three_name VARCHAR2 (90),
+    data_label_four_code VARCHAR2 (32),
+    data_label_four_name VARCHAR2 (90),
+    data_label_five_code VARCHAR2 (32),
+    data_label_five_name VARCHAR2 (90),
+    resource_service_code VARCHAR2 (90),
+    resource_status VARCHAR2 (255),
+    resource_status_name VARCHAR2 (32),
+    resource_register_time DATE,
+    resource_update_time   DATE,
+    authority_dept_code VARCHAR2 (255),
+    authority_dept_name VARCHAR2 (255),
+    manage_dept_code VARCHAR2 (255),
+    manage_dept_name VARCHAR2 (255),
+    is_access VARCHAR2 (1),
+    deleted VARCHAR2 (1) NOT NULL,
+    create_time            DATE NOT NULL,
+    update_time            DATE,
+    create_user VARCHAR2 (32),
+    update_user VARCHAR2 (32),
+    PRIMARY KEY (id)
+);
+
+COMMENT ON TABLE t_app_data_resource_info IS '数据资源(表)信息';
+COMMENT ON COLUMN t_app_data_resource_info.id IS '编号';
+COMMENT ON COLUMN t_app_data_resource_info.data_object_id IS '数据对象ID';
+COMMENT ON COLUMN t_app_data_resource_info.resource_code IS '数据资源标识符';
+COMMENT ON COLUMN t_app_data_resource_info.resource_name IS '资源名称';
+COMMENT ON COLUMN t_app_data_resource_info.resource_version IS '数据资源版本号';
+COMMENT ON COLUMN t_app_data_resource_info.resource_description IS '数据资源描述';
+COMMENT ON COLUMN t_app_data_resource_info.table_code IS '数据对象英文名';
+COMMENT ON COLUMN t_app_data_resource_info.table_name IS '数据对象中文名';
+COMMENT ON COLUMN t_app_data_resource_info.catalog_cod IS '数据资源目录编号';
+COMMENT ON COLUMN t_app_data_resource_info.application_code IS '应用系统编号';
+COMMENT ON COLUMN t_app_data_resource_info.application_code_name IS '应用系统名称';
+COMMENT ON COLUMN t_app_data_resource_info.data_source_one_code IS '一级数据来源编号';
+COMMENT ON COLUMN t_app_data_resource_info.data_source_one_name IS '一级数据来源名称';
+COMMENT ON COLUMN t_app_data_resource_info.data_source_two_code IS '二级数据来源编号';
+COMMENT ON COLUMN t_app_data_resource_info.data_source_two_name IS '二级数据来源名称';
+COMMENT ON COLUMN t_app_data_resource_info.data_classification IS '数据分级代码';
+COMMENT ON COLUMN t_app_data_resource_info.data_classification_name IS '数据分级名称';
+COMMENT ON COLUMN t_app_data_resource_info.standard_data_code IS '标准数据项集编码';
+COMMENT ON COLUMN t_app_data_resource_info.standard_data_name IS '标准数据项集名称';
+COMMENT ON COLUMN t_app_data_resource_info.data_classify_one_code IS '数据组织一级分类代码';
+COMMENT ON COLUMN t_app_data_resource_info.data_classify_one_name IS '数据组织一级分类名称';
+COMMENT ON COLUMN t_app_data_resource_info.data_classify_two_code IS '数据组织二级分类代码';
+COMMENT ON COLUMN t_app_data_resource_info.data_classify_two_name IS '数据组织二级分类名称';
+COMMENT ON COLUMN t_app_data_resource_info.data_label_one_code IS '数据标签1代码';
+COMMENT ON COLUMN t_app_data_resource_info.data_label_one_name IS '数据标签1名称';
+COMMENT ON COLUMN t_app_data_resource_info.data_label_two_code IS '数据标签2代码';
+COMMENT ON COLUMN t_app_data_resource_info.data_label_two_name IS '数据标签2名称';
+COMMENT ON COLUMN t_app_data_resource_info.data_label_three_code IS '数据标签3代码';
+COMMENT ON COLUMN t_app_data_resource_info.data_label_three_name IS '数据标签3名称';
+COMMENT ON COLUMN t_app_data_resource_info.data_label_four_code IS '数据标签4代码';
+COMMENT ON COLUMN t_app_data_resource_info.data_label_four_name IS '数据标签4名称';
+COMMENT ON COLUMN t_app_data_resource_info.data_label_five_code IS '数据标签5代码';
+COMMENT ON COLUMN t_app_data_resource_info.data_label_five_name IS '数据标签5名称';
+COMMENT ON COLUMN t_app_data_resource_info.resource_service_code IS '数据资源服务编号';
+COMMENT ON COLUMN t_app_data_resource_info.resource_status IS '资源状态代码';
+COMMENT ON COLUMN t_app_data_resource_info.resource_status_name IS '资源状态名称1启动0停用2注销';
+COMMENT ON COLUMN t_app_data_resource_info.resource_register_time IS '注册时间,格式:yyyy-MM-dd HH:mm:ss';
+COMMENT ON COLUMN t_app_data_resource_info.resource_update_time IS '更新时间,格式:yyyy-MM-dd HH:mm:ss';
+COMMENT ON COLUMN t_app_data_resource_info.authority_dept_code IS '数据资源事权单位编号';
+COMMENT ON COLUMN t_app_data_resource_info.authority_dept_name IS '数据资源事权单位名称';
+COMMENT ON COLUMN t_app_data_resource_info.manage_dept_code IS '数据资源管理单位编号';
+COMMENT ON COLUMN t_app_data_resource_info.manage_dept_name IS '数据资源管理单位名称';
+COMMENT ON COLUMN t_app_data_resource_info.is_access IS '否开发服务1是0否';
+COMMENT ON COLUMN t_app_data_resource_info.deleted IS '是否删除';
+COMMENT ON COLUMN t_app_data_resource_info.create_time IS '创建时间';
+COMMENT ON COLUMN t_app_data_resource_info.update_time IS '更新时间';
+COMMENT ON COLUMN t_app_data_resource_info.create_user IS '创建用户';
+COMMENT ON COLUMN t_app_data_resource_info.update_user IS '更新用户';
+

+ 0 - 13
dcuc-app-service/src/test/java/com/dragoninfo/dcuc/app/business/ResourceBusinessTest.java

@@ -67,19 +67,6 @@ public class ResourceBusinessTest {
         mapList.add(typeMap);
         paramMap.put("resourceTypes", mapList);
 
-        // 构建header
-        String busSraId = resourceConfig.getBusSraId();
-        busSraId = "Y-120000000000-0037";//原有身份没有权限 测试数据
-        String busSreIdcard = resourceConfig.getBusSreIdcard();
-        String busServiceId = resourceConfig.getDataResource().getBusServiceId();
-        String busServiceFunc = resourceConfig.getDataResource().getBusServiceFunc();
-        List<Header> heards = getHeaders(busSraId, busSreIdcard, busServiceId, busServiceFunc);
-        String url = resourceConfig.getResourceUrl();
-        String response = HttpUtil.postJSON(url, JSON.toJSONString(paramMap), heards, null);
-
-        Map resultMap = (Map)JSON.parse(response);
-        List<Map> resultData = (List)resultMap.get("resultData");
-        List<Map> resultList = (List)resultData.get(0).get("dataList");
 
     }