Browse Source

Merge remote-tracking branch 'origin/develop' into develop

lijie 3 years ago
parent
commit
86abaf8ef7

+ 24 - 27
src/main/java/com/persagy/proxy/dictionary/controller/AdmDictController.java

@@ -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);
     }