|
@@ -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
|