Преглед на файлове

1.数据资源分类表码列表
2.数据资源分类表码列表
3.字段分类表码列表

邱宇 преди 4 години
родител
ревизия
488ae98ff8

+ 11 - 6
dcuc-app-api/src/main/java/com/dragoninfo/dcuc/app/facade/IDataResourceFacade.java

@@ -1,13 +1,14 @@
 package com.dragoninfo.dcuc.app.facade;
 
+import com.dragoninfo.dcuc.app.vo.DataClassifyVo;
+import com.dragoninfo.dcuc.app.vo.DataFieldClassifyVo;
+import com.dragoninfo.dcuc.app.vo.DataLevelVo;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import org.springframework.cloud.openfeign.FeignClient;
 import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.RequestParam;
 
 import java.util.List;
-import java.util.Map;
 
 /**
  * Created by lidr on 2021/4/14
@@ -17,14 +18,18 @@ import java.util.Map;
 public interface IDataResourceFacade {
 
     @ApiOperation(value = "数据分级表码列表")
-    @GetMapping(value = "dataleves")
-    List<Map> getDataLevelList();
+    @GetMapping(value = "datalevels")
+    List<DataLevelVo> getDataLevelList();
+
+    @ApiOperation(value = "数据资源分类表码列表")
+    @GetMapping(value = "securitylevels")
+    List<DataLevelVo> getSecurityLevelList();
 
     @ApiOperation(value = "数据资源分类表码列表")
     @GetMapping(value = "dataclassifys")
-    List<Map> getDataClassifyList();
+    List<DataClassifyVo> getDataClassifyList();
 
     @ApiOperation(value = "字段分类表码列表")
     @GetMapping(value = "fieldclassifys")
-    List<Map> getFieldClassifyList();
+    List<DataFieldClassifyVo> getFieldClassifyList();
 }

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

@@ -0,0 +1,17 @@
+package com.dragoninfo.dcuc.app.dto.dataresource;
+
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * @Author: qiuyu
+ * @Date: 2021/4/15 11:11
+ * @Description:
+ */
+@Data
+public class BaseResp<T> {
+    private String code;
+    private String message;
+    private T resultData;
+}

+ 18 - 0
dcuc-app-model/src/main/java/com/dragoninfo/dcuc/app/dto/dataresource/ChildResourceClassify.java

@@ -0,0 +1,18 @@
+package com.dragoninfo.dcuc.app.dto.dataresource;
+
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * @Author: qiuyu
+ * @Date: 2021/4/15 11:28
+ * @Description:
+ */
+@Data
+public class ChildResourceClassify {
+    private String codeName;
+    private String codeValue;
+    private String catalogNum;
+    private List<ResourceClassify> childrenType;
+}

+ 19 - 0
dcuc-app-model/src/main/java/com/dragoninfo/dcuc/app/dto/dataresource/ResourceClassify.java

@@ -0,0 +1,19 @@
+package com.dragoninfo.dcuc.app.dto.dataresource;
+
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * @Author: qiuyu
+ * @Date: 2021/4/15 11:23
+ * @Description:
+ */
+@Data
+public class ResourceClassify {
+
+    private String typeCode;
+    private String typeName;
+    private List<ChildResourceClassify> dataList;
+
+}

+ 16 - 0
dcuc-app-model/src/main/java/com/dragoninfo/dcuc/app/dto/dataresource/ResourceType.java

@@ -0,0 +1,16 @@
+package com.dragoninfo.dcuc.app.dto.dataresource;
+
+import lombok.Builder;
+import lombok.Data;
+
+/**
+ * @Author: qiuyu
+ * @Date: 2021/4/15 11:02
+ * @Description:
+ */
+@Builder
+@Data
+public class ResourceType {
+    private String typeCode;
+    private String parentCode;
+}

+ 22 - 0
dcuc-app-model/src/main/java/com/dragoninfo/dcuc/app/vo/DataClassifyVo.java

@@ -0,0 +1,22 @@
+package com.dragoninfo.dcuc.app.vo;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+
+/**
+ * @Author: qiuyu
+ * @Date: 2021/4/15 14:17
+ * @Description:
+ */
+@Data
+@AllArgsConstructor
+public class DataClassifyVo {
+    private String firstLevelCode;
+    private String firstLevelName;
+    private String secondLevelCode;
+    private String secondLevelName;
+    private String labelClassifyCode;
+    private String labelClassifyName;
+    private String labelCode;
+    private String labelName;
+}

+ 18 - 0
dcuc-app-model/src/main/java/com/dragoninfo/dcuc/app/vo/DataFieldClassifyVo.java

@@ -0,0 +1,18 @@
+package com.dragoninfo.dcuc.app.vo;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+
+/**
+ * @Author: qiuyu
+ * @Date: 2021/4/15 14:17
+ * @Description:
+ */
+@Data
+@AllArgsConstructor
+public class DataFieldClassifyVo {
+    private String firstLevelCode;
+    private String firstLevelName;
+    private String secondLevelCode;
+    private String secondLevelName;
+}

+ 16 - 0
dcuc-app-model/src/main/java/com/dragoninfo/dcuc/app/vo/DataLevelVo.java

@@ -0,0 +1,16 @@
+package com.dragoninfo.dcuc.app.vo;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+
+/**
+ * @Author: qiuyu
+ * @Date: 2021/4/15 14:17
+ * @Description:
+ */
+@Data
+@AllArgsConstructor
+public class DataLevelVo {
+    private String levelCode;
+    private String levelName;
+}

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

@@ -3,6 +3,7 @@ package com.dragoninfo.dcuc.app.business;
 import com.dragoninfo.dcuc.app.dto.ResourceRequestParamDTO;
 import com.dragoninfo.dcuc.app.dto.ResourceRequestResultDTO;
 
+import java.lang.reflect.Type;
 import java.util.List;
 import java.util.Map;
 
@@ -12,8 +13,10 @@ import java.util.Map;
  */
 public interface IResourceBusiness {
 
+
     /**
      * 从总线获取应用、服务、菜单资源
+     *
      * @param requestParamDTO
      * @return
      */
@@ -27,6 +30,7 @@ public interface IResourceBusiness {
     /**
      * 应用资源增量同步
      * 只用于应用消息同步变更
+     *
      * @param appCode
      */
     boolean appIncrSync(String appCode);
@@ -93,6 +97,6 @@ public interface IResourceBusiness {
      */
     boolean cancelService(String serviceCode);
 
-    String getDataResource(Map paramMap);
+    <T> T getDataResource(Map paramMap, Type type);
 
 }

+ 67 - 52
dcuc-app-service/src/main/java/com/dragoninfo/dcuc/app/business/impl/ResourceBusiness.java

@@ -5,6 +5,7 @@ import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
 import com.dragoninfo.dcuc.app.business.IResourceBusiness;
+import com.dragoninfo.dcuc.app.dto.dataresource.BaseResp;
 import com.dragoninfo.dcuc.app.config.DcucResourceConfig;
 import com.dragoninfo.dcuc.app.cons.ServiceStatusCons;
 import com.dragoninfo.dcuc.app.dto.*;
@@ -25,6 +26,7 @@ import com.dragonsoft.duceap.base.utils.UserContextUtils;
 import com.dragonsoft.duceap.commons.util.ObjectUtils;
 import com.dragonsoft.duceap.commons.util.collections.CollectionUtils;
 import com.dragonsoft.duceap.commons.util.string.StringUtils;
+import com.google.common.reflect.TypeToken;
 import org.apache.http.Header;
 import org.apache.http.message.BasicHeader;
 import org.slf4j.Logger;
@@ -34,6 +36,7 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 
 import java.io.IOException;
+import java.lang.reflect.Type;
 import java.text.SimpleDateFormat;
 import java.util.*;
 import java.util.concurrent.ExecutorService;
@@ -70,9 +73,9 @@ public class ResourceBusiness implements IResourceBusiness {
      * 使用线程池异步获取应用菜单
      */
     private ExecutorService executor = new ThreadPoolExecutor(1, 1,
-                    0L, TimeUnit.MILLISECONDS,
-                    new LinkedBlockingQueue<Runnable>(),
-                    new ThreadFactoryBuilder().setNamePrefix("menu-resource").build());
+            0L, TimeUnit.MILLISECONDS,
+            new LinkedBlockingQueue<Runnable>(),
+            new ThreadFactoryBuilder().setNamePrefix("menu-resource").build());
 
 
     @Override
@@ -85,12 +88,12 @@ public class ResourceBusiness implements IResourceBusiness {
         List<ResourceSync> resourceSyncs;
         for (String resourceId : resourceIds) {
             resourceSyncs = syncService.getNotSyncResource(resourceId);
-            if(CollectionUtils.isEmpty(resourceSyncs)){
+            if (CollectionUtils.isEmpty(resourceSyncs)) {
                 continue;
             }
             resourceService.resourceSync(resourceSyncs);
             //更新sync字段
-            resourceSyncs.stream().forEach(item->item.setSync(BooleanEnum.TRUE.getValue()));
+            resourceSyncs.stream().forEach(item -> item.setSync(BooleanEnum.TRUE.getValue()));
             syncService.batchUpdate(resourceSyncs);
         }
     }
@@ -219,7 +222,7 @@ public class ResourceBusiness implements IResourceBusiness {
     }
 
     @Override
-    public String getDataResource(Map paramMap) {
+    public <T> T getDataResource(Map paramMap, Type type) {
         // 构建header
         String busSraId = resourceConfig.getBusSraId();
         busSraId = "Y-120000000000-0037";//原有身份没有权限 测试数据
@@ -228,10 +231,17 @@ public class ResourceBusiness implements IResourceBusiness {
         String busServiceFunc = resourceConfig.getDataResource().getBusServiceFunc();
         List<Header> heards = getHeaders(busSraId, busSreIdcard, busServiceId, busServiceFunc);
         String url = resourceConfig.getResourceUrl();
-        logger.info("getServiceRemoteDetailByCode >> url:{}, busSraId:{}, busServiceId:{}, busServiceFunc:{}, busSreIdcard:{}",
+        logger.info("getDataResource >> url:{}, busSraId:{}, busServiceId:{}, busServiceFunc:{}, busSreIdcard:{}",
                 url, busSraId, busServiceId, busServiceFunc, busSreIdcard);
         String response = HttpUtil.postJSON(url, JSON.toJSONString(paramMap), heards, null);
-        return response;
+        BaseResp<String> baseResp = JSON.parseObject(response, new TypeToken<BaseResp<String>>() {
+        }.getType());
+        if (baseResp.getCode().equals("000")) {
+            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) {
@@ -310,6 +320,7 @@ public class ResourceBusiness implements IResourceBusiness {
 
     /**
      * 应用资源接收类转为应用DTO
+     *
      * @param acceptDTO
      * @return
      */
@@ -335,12 +346,12 @@ public class ResourceBusiness implements IResourceBusiness {
         dto.setResourceType(ResourceTypeEnum.TJ_APP.getResourceType());
         dto.setResourceProvider(ResourceTypeEnum.TJ_APP.getResouProvider());
         String sxrq = appInfoAcceptDTO.getSxrq();
-        if(!org.springframework.util.StringUtils.isEmpty(sxrq)){
+        if (!org.springframework.util.StringUtils.isEmpty(sxrq)) {
             SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
             try {
                 Date parse = format.parse(sxrq);
                 dto.setRegistrationTime(parse);
-            }catch (Exception e){
+            } catch (Exception e) {
 
             }
         }
@@ -364,6 +375,7 @@ public class ResourceBusiness implements IResourceBusiness {
 
     /**
      * 增量新增服务资源
+     *
      * @param acceptDTO
      * @return
      */
@@ -406,36 +418,36 @@ public class ResourceBusiness implements IResourceBusiness {
 
     @Override
     public List<ResourceRequestResultDTO> getResourceRequestResults(ResourceRequestParamDTO requestParamDTO) {
-            List<ResourceRequestResultDTO> pageInfos = new ArrayList<>();
-            Integer pageSize = requestParamDTO.getPageSize();
-            boolean listingAll = requestParamDTO.isListingAll();
-            pageSize = (pageSize == null ? 50 : pageSize);
-            //全量获取
-            //从currentPageNo页获取
-            if (listingAll) {
-                //全量同步默认每页数量,便于下次同步
-                pageSize = resourceConfig.getPageSize();
-                Integer currentPageNo = requestParamDTO.getCurrentPageNo();
-                for (ResourceTypeEnum resourceEnum : ResourceTypeEnum.values()) {
-                    //若是增量获取currentPage = 数据库中上次同步的页数
-                    //暂时手动输入currentPage
-                    //没有就从第一页开始获获取
-                    if (null == currentPageNo) {
-                        currentPageNo = 1;
-                    }
-                    ResourceRequestResultDTO listingInfo = getAllResourceListing(currentPageNo, pageSize, resourceEnum);
-                    pageInfos.add(listingInfo);
-                }
-            } else {
-                //根据页码获取
-                List<ListingParamDTO> listingParams = requestParamDTO.getListingParams();
-                for (ListingParamDTO listingParam : listingParams) {
-                    ResourceRequestResultDTO listingInfo = getPageNoResourceListing(pageSize, listingParam);
-                    pageInfos.add(listingInfo);
+        List<ResourceRequestResultDTO> pageInfos = new ArrayList<>();
+        Integer pageSize = requestParamDTO.getPageSize();
+        boolean listingAll = requestParamDTO.isListingAll();
+        pageSize = (pageSize == null ? 50 : pageSize);
+        //全量获取
+        //从currentPageNo页获取
+        if (listingAll) {
+            //全量同步默认每页数量,便于下次同步
+            pageSize = resourceConfig.getPageSize();
+            Integer currentPageNo = requestParamDTO.getCurrentPageNo();
+            for (ResourceTypeEnum resourceEnum : ResourceTypeEnum.values()) {
+                //若是增量获取currentPage = 数据库中上次同步的页数
+                //暂时手动输入currentPage
+                //没有就从第一页开始获获取
+                if (null == currentPageNo) {
+                    currentPageNo = 1;
                 }
+                ResourceRequestResultDTO listingInfo = getAllResourceListing(currentPageNo, pageSize, resourceEnum);
+                pageInfos.add(listingInfo);
             }
-            //是否需要保存已获取的页数,下次获取使用增量获取?
-            return pageInfos;
+        } else {
+            //根据页码获取
+            List<ListingParamDTO> listingParams = requestParamDTO.getListingParams();
+            for (ListingParamDTO listingParam : listingParams) {
+                ResourceRequestResultDTO listingInfo = getPageNoResourceListing(pageSize, listingParam);
+                pageInfos.add(listingInfo);
+            }
+        }
+        //是否需要保存已获取的页数,下次获取使用增量获取?
+        return pageInfos;
     }
 
 
@@ -501,7 +513,7 @@ public class ResourceBusiness implements IResourceBusiness {
     }
 
     private void getAppMenus(List<String> extAppIds) {
-        if(CollectionUtils.isEmpty(extAppIds)){
+        if (CollectionUtils.isEmpty(extAppIds)) {
             return;
         }
         String idcard = UserContextUtils.getCurrentUser().getIdcard();
@@ -622,11 +634,11 @@ public class ResourceBusiness implements IResourceBusiness {
         }
         JSONArray records = resultFromRemote.getRecords();
         //插入资源数据同步表
-        if(CollectionUtils.isNotEmpty(records)){
+        if (CollectionUtils.isNotEmpty(records)) {
             List<ResourceSyncDTO> dtos = insertRemoteResourceSync(resourceEnum, records);
-            if(resourceConfig.getMenuResource().isMenuEnabled() && ResourceTypeEnum.TJ_APP.equals(resourceEnum)){
+            if (resourceConfig.getMenuResource().isMenuEnabled() && ResourceTypeEnum.TJ_APP.equals(resourceEnum)) {
                 List<String> ids = dtos.stream()
-                        .filter(item-> StringUtils.isNotBlank(item.getExtId()))
+                        .filter(item -> StringUtils.isNotBlank(item.getExtId()))
                         .map(item -> item.getExtId())
                         .collect(Collectors.toList());
                 getAppMenus(ids);
@@ -645,17 +657,18 @@ public class ResourceBusiness implements IResourceBusiness {
 
     /**
      * 获取应用信息
+     *
      * @return
      */
     private HttpResult getResourceFromRemote(ResourceTypeEnum resourceTypeEnum, Integer pageNo, Integer pageSize) throws IOException {
         HttpResult httpResult;
         String url = resourceConfig.getResourceUrl();
         //获取应用资源
-        if(ResourceTypeEnum.TJ_APP.equals(resourceTypeEnum)){
+        if (ResourceTypeEnum.TJ_APP.equals(resourceTypeEnum)) {
             httpResult = getAppResource(pageNo, pageSize, url);
-        }else if(ResourceTypeEnum.TJ_SERVICE.equals(resourceTypeEnum)){
+        } else if (ResourceTypeEnum.TJ_SERVICE.equals(resourceTypeEnum)) {
             httpResult = getServiceResource(pageNo, pageSize, url);
-        }else {
+        } else {
             httpResult = new HttpResult();
             httpResult.setCode(ResponseStatus.SUCCESS_CODE);
             httpResult.setPages(pageNo);
@@ -666,6 +679,7 @@ public class ResourceBusiness implements IResourceBusiness {
 
     /**
      * 从总线分页查询应用资源
+     *
      * @param pageNo
      * @param pageSize
      * @param url
@@ -675,8 +689,8 @@ public class ResourceBusiness implements IResourceBusiness {
         HttpResult httpResult = new HttpResult();
         Map<String, Object> map = new HashMap<>();
         //应用目录从0页开始查
-        map.put("page",pageNo-1);
-        map.put("size",pageSize);
+        map.put("page", pageNo - 1);
+        map.put("size", pageSize);
         String param = JSON.toJSONString(map);
         String busSraId = resourceConfig.getBusSraId();
         String busSreIdcard = UserContextUtils.getCurrentUser().getIdcard();
@@ -685,7 +699,7 @@ public class ResourceBusiness implements IResourceBusiness {
         List<Header> headerList = getHeaders(busSraId, busSreIdcard, busServiceId, busServiceFunc);
         logger.info("getAppResource url:{}", url);
         String response = HttpUtil.postForm(url, param, headerList, null);
-        if(null == response){
+        if (null == response) {
             logger.info("get app resource fail,pageNo:{},pageSize:{}", pageNo, pageSize);
             httpResult.setCode(ResponseStatus.FAIL_CODE);
         } else {
@@ -712,10 +726,10 @@ public class ResourceBusiness implements IResourceBusiness {
         logger.info("getHeaders >>> busSraId:{},busSreIdcard:{},busServiceId:{},busServiceFunc:{}",
                 busSraId, busSreIdcard, busServiceId, busServiceFunc);
         List<Header> heardList = new ArrayList<>();
-        Header busSraIdHeader = new BasicHeader("bus_sra_id",busSraId);
+        Header busSraIdHeader = new BasicHeader("bus_sra_id", busSraId);
         Header busSreIdHeader = new BasicHeader("bus_sre_idcard", busSreIdcard);
-        Header serviceIdHeader = new BasicHeader("bus_service_id",busServiceId);
-        Header busServiceFuncHeader = new BasicHeader("bus_service_func",busServiceFunc);
+        Header serviceIdHeader = new BasicHeader("bus_service_id", busServiceId);
+        Header busServiceFuncHeader = new BasicHeader("bus_service_func", busServiceFunc);
         heardList.add(busSraIdHeader);
         heardList.add(busSreIdHeader);
         heardList.add(serviceIdHeader);
@@ -725,6 +739,7 @@ public class ResourceBusiness implements IResourceBusiness {
 
     /**
      * 插入资源同步表
+     *
      * @param resourceEnum
      * @param records
      * @return
@@ -750,7 +765,7 @@ public class ResourceBusiness implements IResourceBusiness {
             dto.setSync(BooleanEnum.FALSE.getValue());
             list.add(dto);
         }
-        if(CollectionUtils.isNotEmpty(list)){
+        if (CollectionUtils.isNotEmpty(list)) {
             syncService.batchInsertResourceSync(list);
         }
         return list;

+ 77 - 7
dcuc-app-service/src/main/java/com/dragoninfo/dcuc/app/facade/DataResourceFacade.java

@@ -1,12 +1,19 @@
 package com.dragoninfo.dcuc.app.facade;
 
+import com.dragoninfo.dcuc.app.dto.dataresource.ChildResourceClassify;
+import com.dragoninfo.dcuc.app.dto.dataresource.ResourceClassify;
 import com.dragoninfo.dcuc.app.service.IDataResourceService;
+import com.dragoninfo.dcuc.app.vo.DataClassifyVo;
+import com.dragoninfo.dcuc.app.vo.DataFieldClassifyVo;
+import com.dragoninfo.dcuc.app.vo.DataLevelVo;
+import com.google.common.collect.Lists;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 
 import java.util.List;
-import java.util.Map;
+import java.util.Optional;
+import java.util.stream.Collectors;
 
 /**
  * Created by lidr on 2021/4/14
@@ -19,17 +26,80 @@ public class DataResourceFacade implements IDataResourceFacade {
     private IDataResourceService dataResourceService;
 
     @Override
-    public List<Map> getDataLevelList() {
-        return dataResourceService.getDataLevelList();
+    public List<DataLevelVo> getDataLevelList() {
+        return getFirstChildResourceClassifies(dataResourceService.getDataLevelList())
+                .stream()
+                .map(childResourceClassify -> new DataLevelVo(childResourceClassify.getCodeValue(), childResourceClassify.getCodeName()))
+                .collect(Collectors.toList());
     }
 
     @Override
-    public List<Map> getDataClassifyList() {
-        return null;
+    public List<DataLevelVo> getSecurityLevelList() {
+        return getFirstChildResourceClassifies(dataResourceService.getSecurityLevelList())
+                .stream()
+                .map(childResourceClassify -> new DataLevelVo(childResourceClassify.getCodeValue(), childResourceClassify.getCodeName()))
+                .collect(Collectors.toList());
     }
 
     @Override
-    public List<Map> getFieldClassifyList() {
-        return null;
+    public List<DataClassifyVo> getDataClassifyList() {
+        return getFirstChildResourceClassifies(dataResourceService.getDataClassifyList())
+                .stream()
+                .map(
+                        firstClassify -> getFirstChildResourceClassifies(firstClassify.getChildrenType()).stream()
+                                .map(
+                                        secondClassify -> getChildrenTypeList(secondClassify.getChildrenType()).stream()
+                                                .map(
+                                                        thirdClassify -> getChildrenTypeList(secondClassify.getChildrenType()).stream()
+                                                                .map(
+                                                                        fourClassify -> getFirstChildResourceClassifies(secondClassify.getChildrenType()).stream()
+                                                                                .map(childResourceClassify ->
+                                                                                        new DataClassifyVo(firstClassify.getCodeValue(),
+                                                                                                firstClassify.getCodeName(),
+                                                                                                secondClassify.getCodeValue(),
+                                                                                                secondClassify.getCodeName(),
+                                                                                                thirdClassify.getTypeCode(),
+                                                                                                thirdClassify.getTypeName(),
+                                                                                                childResourceClassify.getCodeValue(),
+                                                                                                childResourceClassify.getCodeName())
+                                                                                ).collect(Collectors.toList())
+                                                                ).collect(Collectors.toList())
+                                                ).collect(Collectors.toList())
+                                ).collect(Collectors.toList())
+                )
+                .flatMap(firstClassifyList -> firstClassifyList.stream())
+                .flatMap(secondClassifyList -> secondClassifyList.stream())
+                .flatMap(thirdClassifyList -> thirdClassifyList.stream())
+                .flatMap(fourClassifyList -> fourClassifyList.stream())
+                .collect(Collectors.toList());
+    }
+
+    @Override
+    public List<DataFieldClassifyVo> getFieldClassifyList() {
+        return getFirstChildResourceClassifies(dataResourceService.getFieldClassifyList())
+                .stream()
+                .map(firstClassify ->
+                        getFirstChildResourceClassifies(firstClassify.getChildrenType())
+                                .stream()
+                                .map(secondClassify ->
+                                        new DataFieldClassifyVo(firstClassify.getCodeValue(),
+                                                firstClassify.getCodeName(),
+                                                secondClassify.getCodeValue(),
+                                                secondClassify.getCodeName())
+                                ).collect(Collectors.toList())
+                ).flatMap(dataFieldClassifyVos -> dataFieldClassifyVos.stream())
+                .collect(Collectors.toList());
+    }
+
+    private List<ChildResourceClassify> getFirstChildResourceClassifies(List<ResourceClassify> fieldClassifyList) {
+        return Optional.ofNullable(fieldClassifyList)
+                .map(resourceClassifies -> resourceClassifies.get(0))
+                .map(resourceClassify -> resourceClassify.getDataList())
+                .orElse(Lists.newArrayList());
+    }
+
+    private List<ResourceClassify> getChildrenTypeList(List<ResourceClassify> fieldClassifyList) {
+        return Optional.ofNullable(fieldClassifyList)
+                .orElse(Lists.newArrayList());
     }
 }

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

@@ -1,5 +1,7 @@
 package com.dragoninfo.dcuc.app.service;
 
+import com.dragoninfo.dcuc.app.dto.dataresource.ResourceClassify;
+
 import java.util.List;
 import java.util.Map;
 
@@ -7,5 +9,13 @@ import java.util.Map;
  * Created by lidr on 2021/4/14
  */
 public interface IDataResourceService {
-    List<Map> getDataLevelList();
+    List<ResourceClassify> getDataLevelList();
+
+    List<ResourceClassify> getSecurityLevelList();
+
+    List<ResourceClassify> getDataClassifyList();
+
+    List<ResourceClassify> getFieldClassifyList();
+
+
 }

+ 70 - 14
dcuc-app-service/src/main/java/com/dragoninfo/dcuc/app/service/impl/DataResourceServiceImpl.java

@@ -1,9 +1,12 @@
 package com.dragoninfo.dcuc.app.service.impl;
 
-import com.alibaba.fastjson.JSON;
 import com.dragoninfo.dcuc.app.business.IResourceBusiness;
+import com.dragoninfo.dcuc.app.dto.dataresource.ResourceClassify;
+import com.dragoninfo.dcuc.app.dto.dataresource.ResourceType;
 import com.dragoninfo.dcuc.app.service.IDataResourceService;
-import org.apache.commons.lang.StringUtils;
+import com.google.common.base.Strings;
+import com.google.common.collect.Lists;
+import com.google.common.reflect.TypeToken;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -28,21 +31,74 @@ public class DataResourceServiceImpl implements IDataResourceService {
     private IResourceBusiness resourceBusiness;
 
     @Override
-    public List<Map> getDataLevelList() {
+    public List<ResourceClassify> getDataLevelList() {
+        Map param = getParamMap(Lists.newArrayList(
+                ResourceType.builder().typeCode("DATA_LEVEL").build()
+        ));
+        return resourceBusiness.getDataResource(param, new TypeToken<List<ResourceClassify>>() {
+        }.getType());
+    }
+
+    @Override
+    public List<ResourceClassify> getSecurityLevelList() {
+        Map param = getParamMap(
+                Lists.newArrayList(ResourceType.builder().typeCode("DATA_SECURITY_LEVEL").build())
+        );
+        return resourceBusiness.getDataResource(param, new TypeToken<List<ResourceClassify>>() {
+        }.getType());
+    }
+
+    @Override
+    public List<ResourceClassify> getDataClassifyList() {
+        Map param = getParamMap(
+                Lists.newArrayList(
+                        ResourceType.builder().typeCode("RESOURCE_SJZZYJFL").build(),
+                        ResourceType.builder().typeCode("RESOURCE_SJZZEJFL").build(),
+                        ResourceType.builder().typeCode("RESOURCE_SJZYBQ1").build(),
+                        ResourceType.builder().typeCode("RESOURCE_SJZYBQ2").build(),
+                        ResourceType.builder().typeCode("RESOURCE_SJZYBQ3").build(),
+                        ResourceType.builder().typeCode("RESOURCE_SJZYBQ4").build(),
+                        ResourceType.builder().typeCode("RESOURCE_SJZYBQ5").build()
+                ), true
+        );
+        return resourceBusiness.getDataResource(param, new TypeToken<List<ResourceClassify>>() {
+        }.getType());
+    }
+
+    @Override
+    public List<ResourceClassify> getFieldClassifyList() {
+        Map param = getParamMap(
+                Lists.newArrayList(
+                        ResourceType.builder().typeCode("LEVEL_1_COLUMN_CLASSIFY").build(),
+                        ResourceType.builder().typeCode("LEVEL_2_COLUMN_CLASSIFY").build()
+                ), true
+        );
+        return resourceBusiness.getDataResource(param, new TypeToken<List<ResourceClassify>>() {
+        }.getType());
+    }
+
+    private Map getParamMap(List<ResourceType> typeCodes) {
+        return getParamMap(typeCodes, false);
+    }
+
+    private Map getParamMap(List<ResourceType> typeCodes, boolean isBuildTree) {
         Map paramMap = new HashMap();
-        Map typeMap = new HashMap();
         List<Map> mapList = new ArrayList<>();
-        typeMap.put("typeCode", "DATA_LEVEL");
-        mapList.add(typeMap);
-        paramMap.put("resourceTypes", mapList);
 
-        String resultStr = resourceBusiness.getDataResource(paramMap);
-        if (StringUtils.isNotEmpty(resultStr)) {
-            Map resultMap = (Map) JSON.parse(resultStr);
-            List<Map> resultData = (List) resultMap.get("resultData");
-            List<Map> resultList = (List) resultData.get(0).get("dataList");
-            return resultList;
+        for (ResourceType typeCode : typeCodes) {
+            Map typeMap = new HashMap();
+
+            typeMap.put("typeCode", typeCode.getTypeCode());
+            if (Strings.isNullOrEmpty(typeCode.getParentCode())) {
+                typeMap.put("parentCode", typeCode.getParentCode());
+            }
+            mapList.add(typeMap);
+        }
+
+        paramMap.put("resourceTypes", mapList);
+        if (isBuildTree) {
+            paramMap.put("isBuildTree", isBuildTree);
         }
-        return null;
+        return paramMap;
     }
 }