Quellcode durchsuchen

信息点采集相关接口开发

linhuili vor 3 Jahren
Ursprung
Commit
9e967e0cfb

+ 4 - 3
src/main/java/com/persagy/proxy/adm/controller/AdmDictController.java

@@ -1,6 +1,7 @@
 package com.persagy.proxy.adm.controller;
 
 import cn.hutool.core.collection.CollUtil;
+import com.persagy.dmp.define.entity.ObjectInfoCollect;
 import com.persagy.proxy.adm.constant.AdmCommonConstant;
 import com.persagy.proxy.adm.constant.AdmDictConstant;
 import com.persagy.proxy.adm.constant.enums.AdmDictCategoryEnum;
@@ -88,7 +89,7 @@ public class AdmDictController {
         // 组装上下文条件
         InstanceUrlParam context = AdmContextUtil.toDmpContext();
         request.setName(request.getType());
-        return service.doQueryObjectInfo(context, request, AdmDictConstant.CLASS_CODE, AdmObjectInfo.class);
+        return service.query(context, request, AdmDictConstant.CLASS_CODE, AdmObjectInfo.class);
     }
 
     /**
@@ -151,10 +152,10 @@ public class AdmDictController {
      */
     @PostMapping("/setting-dic-project")
     public AdmResponse settingDicProject(@QueryParam("projectId") String projectId,
-                                 @RequestBody AdmCreateRequest<AdmObjectInfo> request) throws Exception {
+                                 @RequestBody AdmCreateRequest<AdmDefFuncIdGather> request) throws Exception {
         // 组装上下文条件
         InstanceUrlParam context = AdmContextUtil.toDmpContext();
-        return service.settingDicProject(context,request,AdmObjectInfo.class);
+        return service.settingDicProject(context,request, ObjectInfoCollect.class);
     }
 
     /**

+ 26 - 0
src/main/java/com/persagy/proxy/adm/model/AdmDefFuncIdGather.java

@@ -0,0 +1,26 @@
+package com.persagy.proxy.adm.model;
+
+import lombok.Data;
+
+/**
+ * 信息点采集DTO
+ * @author:linhuili
+ * @date:2021/10/14
+ */
+@Data
+public class AdmDefFuncIdGather {
+    /** id */
+    private String id;
+    /** 项目id */
+    private String projectId;
+    /** 集团编码 */
+    private String groupCode;
+    /** 类型编码 */
+    private String classCode;
+    /** 信息点编码 */
+    private String code;
+    /** 是否可见 */
+    private Boolean visible;
+    /** 采集类型 type-common 通用 type-project 项目级 */
+    private String type;
+}

+ 4 - 1
src/main/java/com/persagy/proxy/adm/model/AdmDictQueryCriteria.java

@@ -15,6 +15,9 @@ import lombok.EqualsAndHashCode;
 @EqualsAndHashCode(callSuper=true)
 public class AdmDictQueryCriteria extends AdmQueryCriteria {
 
-    /** 查询类型 */
+    /** 查询类型 common-平台级,project-项目级 */
+    private String dictType;
+
+    /** 信息点类型 */
     private String type;
 }

+ 20 - 0
src/main/java/com/persagy/proxy/adm/service/IAdmDictBaseService.java

@@ -62,4 +62,24 @@ public interface IAdmDictBaseService<T>{
     void doDeleteObjectInfo(InstanceUrlParam context, List<T> voList);
 
 
+    /**
+     * 查询采集信息点
+     * @param context
+     * @param request
+     * @param fieldName
+     * @param clazz
+     * @return
+     */
+    AdmResponse doQueryObjectInfoCollect(InstanceUrlParam context, AdmQueryCriteria request, String fieldName, Class<T> clazz);
+
+    /**
+     * 设置采集信息点
+     * @param context
+     * @param clazz
+     * @param voList
+     * @return
+     */
+    List<T> doSetObjectInfoCollect(InstanceUrlParam context, Class<T> clazz, List<T> voList);
+
+
 }

+ 15 - 5
src/main/java/com/persagy/proxy/adm/service/IAdmDictService.java

@@ -1,10 +1,8 @@
 package com.persagy.proxy.adm.service;
 
-import com.persagy.proxy.adm.model.AdmDict;
-import com.persagy.proxy.adm.model.AdmDictQueryCriteria;
-import com.persagy.proxy.adm.model.AdmLocationPoint;
-import com.persagy.proxy.adm.model.AdmObjectInfo;
+import com.persagy.proxy.adm.model.*;
 import com.persagy.proxy.adm.request.AdmCreateRequest;
+import com.persagy.proxy.adm.request.AdmQueryCriteria;
 import com.persagy.proxy.adm.request.AdmResponse;
 import com.persagy.proxy.common.entity.InstanceUrlParam;
 
@@ -46,7 +44,7 @@ public interface IAdmDictService<T> extends IAdmDictBaseService<T>{
      * @return
      * @throws Exception
      */
-    AdmResponse settingDicProject(InstanceUrlParam context , AdmCreateRequest<AdmObjectInfo> request, Class<T> clazz) throws Exception;
+    AdmResponse settingDicProject(InstanceUrlParam context , AdmCreateRequest<AdmDefFuncIdGather> request, Class<T> clazz) throws Exception;
 
 
     /**
@@ -56,4 +54,16 @@ public interface IAdmDictService<T> extends IAdmDictBaseService<T>{
      * @return
      */
     AdmResponse queryMorlDict(InstanceUrlParam context,List<String> dictTypeList);
+
+
+    /**
+     * 查询信息点
+     * @param context
+     * @param request
+     * @param fieldName
+     * @param clazz
+     * @return
+     */
+    AdmResponse query(InstanceUrlParam context, AdmDictQueryCriteria request,String fieldName, Class<T> clazz);
+
 }

+ 58 - 11
src/main/java/com/persagy/proxy/adm/service/impl/AbstractAdmDictBaseServiceImpl.java

@@ -9,6 +9,7 @@ import com.fasterxml.jackson.databind.node.ArrayNode;
 import com.persagy.dmp.basic.model.QueryCriteria;
 import com.persagy.dmp.basic.utils.JsonNodeUtils;
 import com.persagy.dmp.common.utils.JsonHelper;
+import com.persagy.dmp.define.entity.ObjectInfoCollect;
 import com.persagy.proxy.adm.constant.AdmCommonConstant;
 import com.persagy.proxy.adm.constant.AdmDictConstant;
 import com.persagy.proxy.adm.constant.enums.ValidEnum;
@@ -207,16 +208,11 @@ public class AbstractAdmDictBaseServiceImpl<T> implements IAdmDictBaseService<T>
                 admVO.setPath(AdmDictConstant.INFOS_EX+admVO.getCode());
             }
 
-            //信息点是否可见
+            //信息点是否可见设置默认值
             if(admVO.getVisible() == null){
-                /*if("localName".equals(admVO.getCode()) || "localId".equals(admVO.getCode())){
-                    admVO.setVisible(true);
-                }else{
-                    admVO.setVisible(false);
-                }*/
-                admVO.setVisible(true);
+                admVO.setVisible(false);
             }
-            //信息点是否可编辑
+            //信息点是否可编辑设置默认值
             if(admVO.getEditable() == null){
                 List<String> unEditableList = checkoutDefInfoUnEditable();
                 if(unEditableList.contains(admVO.getCode())){
@@ -225,7 +221,7 @@ public class AbstractAdmDictBaseServiceImpl<T> implements IAdmDictBaseService<T>
                     admVO.setEditable(true);
                 }
             }
-            //是否禁止操作
+            //是否禁止操作设置默认值
             if(admVO.getUnDisabled() == null){
                 List<String> unDisableList = checkoutDefInfoUnDisable();
                 if(unDisableList.contains(admVO.getCode())){
@@ -234,7 +230,6 @@ public class AbstractAdmDictBaseServiceImpl<T> implements IAdmDictBaseService<T>
                     admVO.setUnDisabled(true);
                 }
             }
-
         }
     }
 
@@ -347,7 +342,59 @@ public class AbstractAdmDictBaseServiceImpl<T> implements IAdmDictBaseService<T>
                 datum.setType("common");
             }
         }
-
         return data;
     }
+
+    /**
+     * 查询对象信息点
+     * @param request
+     * @return
+     */
+    @Override
+    public AdmResponse doQueryObjectInfoCollect(InstanceUrlParam context, AdmQueryCriteria request,String fieldName, Class<T> clazz) {
+        // 转换为数据中台查询条件
+        QueryCriteria dmpRequest = toDmpCriteria(request,fieldName);
+        // 转换参数
+        JSONObject para = null;
+        try {
+            para = JsonHelper.toJsonObject(dmpRequest);
+        } catch (IOException e) {
+            log.error(e.getMessage(), e);
+            return null;
+        }
+        // 调用中台查询
+        log.info(para.toString());
+        DmpResult<JSONArray> dmpResult = rwdClient.queryObjectInfoCollect(context, para);
+        List<ObjectInfoCollect> admVOs = AdmEntityTransferUtil.toAdmMultiEntity(dmpResult.getData(), request.getProjection(), ObjectInfoCollect.class);
+        // 设置返回值
+        AdmResponse response = AdmResponse.success(admVOs);
+        Long total = dmpResult.getCount() == null ? null : dmpResult.getCount().longValue();
+        response.setTotal(total);
+        response.setPageNumber(request.getPageNumber());
+        response.setPageSize(request.getPageSize());
+        return response;
+    }
+
+    /**
+     * 设置采集信息
+     * @param context
+     * @param clazz
+     * @param voList
+     * @return
+     */
+    @Override
+    public List<T> doSetObjectInfoCollect(InstanceUrlParam context, Class<T> clazz, List<T> voList) {
+        if(CollUtil.isEmpty(voList)) {
+            return null;
+        }
+        ArrayNode vos = JsonNodeUtils.toArrayNode(voList, null, null);
+        // 调用中台修改
+        DmpResult<cn.hutool.json.JSONArray> response = rwdClient.batchUpdateObjectInfoCollect(context, JSONArray.parseArray(vos.toString()));
+        if(!DmpResult.SUCCESS.equals(response.getResult())) {
+            throw new RuntimeException("调用中台查询接口出错:" + response.getMessage());
+        }
+        // 转换为结果
+        return AdmEntityTransferUtil.toAdmMultiEntity(response.getData(), null, clazz);
+    }
+
 }

+ 146 - 10
src/main/java/com/persagy/proxy/adm/service/impl/AdmDictServiceImpl.java

@@ -3,11 +3,14 @@ package com.persagy.proxy.adm.service.impl;
 import cn.hutool.core.collection.CollUtil;
 
 import cn.hutool.core.util.StrUtil;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.fasterxml.jackson.databind.JsonNode;
 import com.fasterxml.jackson.databind.node.ArrayNode;
 import com.fasterxml.jackson.databind.node.JsonNodeFactory;
 import com.fasterxml.jackson.databind.node.ObjectNode;
 import com.persagy.dmp.basic.model.QueryCriteria;
+import com.persagy.dmp.define.entity.ObjectInfoCollect;
+import com.persagy.dmp.define.entity.ObjectInfoDefine;
 import com.persagy.proxy.adm.constant.AdmDictConstant;
 import com.persagy.proxy.adm.constant.enums.AdmDictCategoryEnum;
 import com.persagy.proxy.adm.model.*;
@@ -261,16 +264,27 @@ public class AdmDictServiceImpl<T> extends AbstractAdmDictBaseServiceImpl<T> imp
      * @throws Exception
      */
     @Override
-    public AdmResponse settingDicProject(InstanceUrlParam context, AdmCreateRequest<AdmObjectInfo> request, Class<T> clazz) throws Exception {
-        List<AdmObjectInfo> content = request.getContent();
-        //信息点转换为中台格式
-        List<AdmObjectInfo> dmpObjectInfo = new ArrayList<>();
-        objectInfosTransforDmp(content, dmpObjectInfo ,context.getProjectId());
-        request.setContent(dmpObjectInfo);
-
-        //修改项目级信息点
-        List<T> vos = doUpdateObjectInfo(context, clazz, (List<T>) dmpObjectInfo);
-        return AdmResponse.success(vos);
+    public AdmResponse settingDicProject(InstanceUrlParam context, AdmCreateRequest<AdmDefFuncIdGather> request, Class<T> clazz) throws Exception {
+        List<AdmDefFuncIdGather> content = request.getContent();
+        if(CollUtil.isEmpty(content)){
+            return AdmResponse.success(content);
+        }
+        //参数转换为中台参数
+        List<T> list = new ArrayList<>();
+        for (AdmDefFuncIdGather funcIdGather : content) {
+            ObjectInfoCollect infoCollect = new ObjectInfoCollect();
+
+            infoCollect.setGroupCode(funcIdGather.getGroupCode());
+            infoCollect.setProjectId(funcIdGather.getProjectId());
+            infoCollect.setDefineInfoId(funcIdGather.getId());
+            infoCollect.setClassCode(funcIdGather.getClassCode());
+            infoCollect.setCode(funcIdGather.getCode());
+            infoCollect.setVisiable(funcIdGather.getVisible());
+            list.add((T) infoCollect);
+        }
+        //设置采集信息点
+        doSetObjectInfoCollect(context, clazz, list);
+        return AdmResponse.success(content);
     }
 
     /**
@@ -331,6 +345,128 @@ public class AdmDictServiceImpl<T> extends AbstractAdmDictBaseServiceImpl<T> imp
 
 
     /**
+     * 查询信息点
+     * @param context
+     * @param request
+     * @param fieldName
+     * @param clazz
+     * @return
+     */
+    @Override
+    public AdmResponse query(InstanceUrlParam context, AdmDictQueryCriteria request, String fieldName, Class<T> clazz) {
+        //查询类型下的所有信息点信息
+        AdmResponse admResponse = doQueryObjectInfo(context, request, AdmDictConstant.CLASS_CODE, clazz);
+        List<AdmObjectInfo> admObjectInfos = (List<AdmObjectInfo>) admResponse.getContent();
+        //查询平台级信息点采集信息
+        List<ObjectInfoCollect> commonObjectInfoCollect = queryObjectInfoCollect(context, "common", request.getType(), clazz);
+        Map<String, Boolean> commonObjectInfoCollectMap = commonObjectInfoCollect.stream().filter(item -> StrUtil.isNotEmpty(item.getDefineInfoId())).collect(Collectors.toMap(ObjectInfoCollect::getDefineInfoId,ObjectInfoCollect::getVisiable));
+
+        //查询项目级信息点采集信息
+        List<ObjectInfoCollect> projectObjectInfoCollect = queryObjectInfoCollect(context, "project", request.getType(), clazz);
+        Map<String, Boolean> projectObjectInfoCollectMap = projectObjectInfoCollect.stream().filter(item -> StrUtil.isNotEmpty(item.getDefineInfoId())).collect(Collectors.toMap(ObjectInfoCollect::getDefineInfoId,ObjectInfoCollect::getVisiable));
+
+        String dictType = request.getDictType();
+
+        //采集值配置查询
+        if(StringUtils.isNotEmpty(dictType)){
+            //查询平台级、项目级信息点采集信息
+            if("common".equals(dictType)){
+                setObjectInfoVisiable(admObjectInfos,commonObjectInfoCollectMap,dictType);
+            }
+            if("project".equals(dictType)){
+                setObjectInfoVisiable(admObjectInfos,projectObjectInfoCollectMap,dictType);
+            }
+            admResponse.setContent(admObjectInfos);
+            return admResponse;
+        }
+
+        //只查看采集值 todo
+        if(CollUtil.isNotEmpty(projectObjectInfoCollectMap)){
+            setOnlyQueryObjectInfoVisiable(admObjectInfos,projectObjectInfoCollectMap,dictType);
+        }else{
+            setOnlyQueryObjectInfoVisiable(admObjectInfos,commonObjectInfoCollectMap,dictType);
+        }
+        admResponse.setContent(admObjectInfos);
+        return admResponse;
+    }
+
+    /**
+     * 设置信息点是否可见
+     * @param admObjectInfos
+     * @param objectInfoCollectMap
+     */
+    private void setObjectInfoVisiable(List<AdmObjectInfo> admObjectInfos,Map<String, Boolean> objectInfoCollectMap,String dictType){
+        if(CollUtil.isEmpty(admObjectInfos)){
+            return;
+        }
+        for (AdmObjectInfo admObjectInfo : admObjectInfos) {
+            Boolean visiable = null;
+            String id = admObjectInfo.getId();
+            if(CollUtil.isNotEmpty(objectInfoCollectMap)){
+                visiable = objectInfoCollectMap.get(id);
+            }
+            if(visiable == null){
+                if("common".equals(dictType)){
+                    if("localId".equals(admObjectInfo.getCode()) || "localName".equals(admObjectInfo.getCode())){
+                        visiable = true;
+                    }
+                }
+                if(visiable == null){
+                    visiable =false;
+                }
+            }
+            admObjectInfo.setVisible(visiable);
+        }
+    }
+
+
+    /**
+     * 设置台账管理中只查看采集值的信息点是否可见
+     * @param admObjectInfos
+     * @param objectInfoCollectMap
+     */
+    private void setOnlyQueryObjectInfoVisiable(List<AdmObjectInfo> admObjectInfos,Map<String, Boolean> objectInfoCollectMap,String dictType){
+        if(CollUtil.isEmpty(admObjectInfos)){
+            return;
+        }
+        for (AdmObjectInfo admObjectInfo : admObjectInfos) {
+            Boolean visiable = null;
+            String id = admObjectInfo.getId();
+            if(CollUtil.isNotEmpty(objectInfoCollectMap)){
+                visiable = objectInfoCollectMap.get(id);
+            }else {
+                if(visiable == null && ("localId".equals(admObjectInfo.getCode()) || "localName".equals(admObjectInfo.getCode()))){
+                    visiable = true;
+                }
+            }
+            if(visiable == null){
+                visiable = false;
+            }
+            admObjectInfo.setVisible(visiable);
+        }
+    }
+
+    /**
+     * 查询信息点采集信息
+     * @param context
+     * @param dictType
+     * @param classCode
+     * @param clazz
+     * @return
+     */
+    private List<ObjectInfoCollect> queryObjectInfoCollect(InstanceUrlParam context, String dictType,String classCode, Class<T> clazz){
+        AdmQueryCriteria criteria = new AdmQueryCriteria();
+        if("common".equals(dictType)){
+            criteria.setFilters("groupCode = '0' and projectId = '0'");
+        }else{
+            criteria.setFilters("groupCode = '"+context.getGroupCode()+"' and projectId = '"+context.getProjectId()+"'");
+        }
+        criteria.setName(classCode);
+        AdmResponse admResponse = doQueryObjectInfoCollect(context, criteria, "classCode", clazz);
+        return (List<ObjectInfoCollect>) admResponse.getContent();
+    }
+
+    /**
      * 统计类型下的非静态信息点
      * @param context
      * @param code

+ 19 - 0
src/main/java/com/persagy/proxy/common/client/DmpRwdClient.java

@@ -185,4 +185,23 @@ public interface DmpRwdClient {
     DmpResult<JSONArray> queryRelationProjectCal(@SpringQueryMap InstanceUrlParam objectUrlParam, @RequestBody JSONArray objectArr);
 
 
+    /**
+     * @description: 查询采集信息点
+     * @param: objectUrlParam 对象请求url通用参数
+     * @param: criteria post请求参数
+     * @return: com.persagy.dmp.common.DmpResult
+     */
+    @PostMapping(DmpUrlConstant.DEF_FUNCID_COLLECT)
+    DmpResult<JSONArray> queryObjectInfoCollect(@SpringQueryMap InstanceUrlParam objectUrlParam, @RequestBody JSONObject criteria);
+
+
+    /**
+     * @description: 批量修改信息点
+     * @param: objectUrlParam 对象请求url通用参数
+     * @param: criteria post请求参数
+     * @return: com.persagy.dmp.common.DmpResult
+     */
+    @PostMapping(DmpUrlConstant.DEF_FUNCID_COLLECT_SET)
+    DmpResult batchUpdateObjectInfoCollect(@SpringQueryMap InstanceUrlParam objectUrlParam, @RequestBody JSONArray objectArr);
+
 }

+ 10 - 0
src/main/java/com/persagy/proxy/common/constant/DmpUrlConstant.java

@@ -148,5 +148,15 @@ public class DmpUrlConstant {
      */
     public static final String RELATION_PROJECT_CAL_DELETE = "/rwd/instance/relation/project/cal/delete";
 
+    /**
+     * 查询采集信息点
+     */
+    public final static String DEF_FUNCID_COLLECT = "/rwd/def/funcid/collect/query";
+
+    /**
+     * 批量设置采集信息点
+     */
+    public final static String DEF_FUNCID_COLLECT_SET = "/rwd/def/funcid/collect/updateBatch";
+
 
 }