|
@@ -1,18 +1,17 @@
|
|
|
package com.persagy.proxy.dictionary.controller;
|
|
|
|
|
|
import cn.hutool.core.collection.CollUtil;
|
|
|
-import com.alibaba.fastjson.JSONObject;
|
|
|
import com.persagy.dmp.define.entity.ObjectInfoCollect;
|
|
|
-import com.persagy.proxy.adm.constant.AdmDictConstant;
|
|
|
import com.persagy.proxy.adm.constant.AdmDictCategoryEnum;
|
|
|
+import com.persagy.proxy.adm.constant.AdmDictConstant;
|
|
|
import com.persagy.proxy.adm.request.AdmCreateRequest;
|
|
|
import com.persagy.proxy.adm.request.AdmDictQueryCriteria;
|
|
|
import com.persagy.proxy.adm.request.AdmQueryCriteria;
|
|
|
import com.persagy.proxy.adm.request.AdmResponse;
|
|
|
-import com.persagy.proxy.dictionary.model.*;
|
|
|
-import com.persagy.proxy.dictionary.service.IAdmDictService;
|
|
|
import com.persagy.proxy.adm.utils.AdmContextUtil;
|
|
|
import com.persagy.proxy.common.entity.InstanceUrlParam;
|
|
|
+import com.persagy.proxy.dictionary.model.*;
|
|
|
+import com.persagy.proxy.dictionary.service.IAdmDictService;
|
|
|
import com.persagy.proxy.object.model.*;
|
|
|
import com.persagy.proxy.object.service.IAdmEquipmentService;
|
|
|
import com.persagy.proxy.object.service.IAdmShaftService;
|
|
@@ -20,14 +19,10 @@ import com.persagy.proxy.object.service.IAdmSpaceService;
|
|
|
import com.persagy.proxy.object.service.IAdmSystemService;
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
import org.apache.commons.lang.StringUtils;
|
|
|
-import org.apache.poi.ss.formula.functions.T;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.web.bind.annotation.*;
|
|
|
|
|
|
-import java.util.ArrayList;
|
|
|
-import java.util.Iterator;
|
|
|
-import java.util.List;
|
|
|
-import java.util.Map;
|
|
|
+import java.util.*;
|
|
|
import java.util.stream.Collectors;
|
|
|
|
|
|
/**
|
|
@@ -266,16 +261,15 @@ public class AdmDictController {
|
|
|
*/
|
|
|
private <T> AdmResponse querySystemEquipTree(InstanceUrlParam context, AdmDictQueryCriteria request, Class<T> clazz) throws Exception {
|
|
|
//查询项目下已有的设备类型
|
|
|
- request.setName("equipment");
|
|
|
+ request.setName(AdmEquipment.OBJ_TYPE);
|
|
|
AdmResponse dictResponse = equipmentService.queryEquipClassCode(context, request, AdmEquipment.class);
|
|
|
List<String> classCodes = (List<String>)dictResponse.getContent();
|
|
|
if(CollUtil.isEmpty(classCodes)){
|
|
|
return AdmResponse.success(new ArrayList<>());
|
|
|
}
|
|
|
- Map<String, List<String>> classCodeMap = classCodes.stream().collect(Collectors.groupingBy(item->item.substring(0,4),Collectors.toList()));
|
|
|
+ Map<String, Set<String>> classCodeMap = classCodes.stream().collect(Collectors.groupingBy(item->item.substring(0,4),Collectors.toSet()));
|
|
|
//查询系统设备类树
|
|
|
- AdmDict admDict = new AdmDict();
|
|
|
- admDict.setType(AdmDictCategoryEnum.SYSTEM_EQUIP.getValue());
|
|
|
+ AdmDict admDict = new AdmDict(AdmDictCategoryEnum.SYSTEM_EQUIP.getValue());
|
|
|
AdmResponse categoryResponse = service.queryCategory(context, admDict, clazz);
|
|
|
List<AdmObjectType> objectTypes = (List<AdmObjectType>) categoryResponse.getContent();
|
|
|
if(CollUtil.isEmpty(objectTypes)){
|
|
@@ -284,26 +278,29 @@ public class AdmDictController {
|
|
|
//过滤设备实体中不存在的类型
|
|
|
Iterator<AdmObjectType> it = objectTypes.iterator();
|
|
|
while(it.hasNext()){
|
|
|
- //过滤系统
|
|
|
- AdmObjectType objectType = it.next();
|
|
|
- List<String> objTypes = classCodeMap.get(objectType.getCode());
|
|
|
- if(CollUtil.isEmpty(objTypes)){
|
|
|
+ // 系统
|
|
|
+ AdmObjectType systemType = it.next();
|
|
|
+ // 设备类型
|
|
|
+ List<AdmObjectType> equipmentTypes = systemType.getChildren();
|
|
|
+ // 当前有的设备类型
|
|
|
+ Set<String> classes = classCodeMap.get(systemType.getCode());
|
|
|
+ if(CollUtil.isEmpty(equipmentTypes) || CollUtil.isEmpty(classes)){
|
|
|
it.remove();
|
|
|
continue;
|
|
|
}
|
|
|
- //过滤子级:设备类型
|
|
|
- List<AdmObjectType> children = objectType.getChildren();
|
|
|
- if(CollUtil.isEmpty(children)){
|
|
|
+ Iterator<AdmObjectType> equipmentTypeIterator = equipmentTypes.iterator();
|
|
|
+ while (equipmentTypeIterator.hasNext()){
|
|
|
+ AdmObjectType equipmentType = equipmentTypeIterator.next();
|
|
|
+ // 不包含的移除掉
|
|
|
+ if(!CollUtil.contains(classes, equipmentType.getCode())){
|
|
|
+ equipmentTypeIterator.remove();
|
|
|
+ }
|
|
|
+ }
|
|
|
+ // 如果所有的都没了,也去掉系统
|
|
|
+ if(CollUtil.isEmpty(equipmentTypes)) {
|
|
|
it.remove();
|
|
|
continue;
|
|
|
}
|
|
|
- Iterator<AdmObjectType> chidIterator = children.iterator();
|
|
|
- while (chidIterator.hasNext()){
|
|
|
- AdmObjectType next = chidIterator.next();
|
|
|
- if(!objTypes.contains(next.getCode())){
|
|
|
- chidIterator.remove();
|
|
|
- }
|
|
|
- }
|
|
|
}
|
|
|
return AdmResponse.success(objectTypes);
|
|
|
}
|