Selaa lähdekoodia

Merge branch 'develop' of http://39.106.8.246:3003/BDTP/adm-middleware.git into develop

zhangqiankun 3 vuotta sitten
vanhempi
commit
a15967830d

+ 3 - 0
src/main/java/com/persagy/proxy/adm/model/AdmBaseEntity.java

@@ -1,6 +1,8 @@
 package com.persagy.proxy.adm.model;
+
 import com.persagy.dmp.common.model.entity.BaseEntity;
 import lombok.Data;
+import lombok.EqualsAndHashCode;
 
 import java.util.Map;
 
@@ -9,6 +11,7 @@ import java.util.Map;
  * @date 2021/9/13
  */
 @Data
+@EqualsAndHashCode(callSuper=true)
 public abstract class AdmBaseEntity<T> extends BaseEntity {
     /** 统计信息 */
     private Map<String, Object> statistics;

+ 23 - 9
src/main/java/com/persagy/proxy/dictionary/service/impl/AdmDictServiceImpl.java

@@ -365,23 +365,23 @@ public class AdmDictServiceImpl<T> extends AbstractAdmDictBaseServiceImpl<T> imp
         admObjectInfos = sortFuncidForEdit(admObjectInfos);
         //查询平台级信息点采集信息
         List<ObjectInfoCollect> commonObjectInfoCollect = queryObjectInfoCollect(context, "common", request.getType(), clazz);
-        Map<String, Boolean> commonObjectInfoCollectMap = new HashMap<>();
+        Map<String, ObjectInfoCollect> commonObjectInfoCollectMap = new HashMap<>();
         for(int i = 0,j = CollUtil.size(commonObjectInfoCollect);i < j;i++) {
             ObjectInfoCollect collect = commonObjectInfoCollect.get(i);
             if(StrUtil.isBlank(collect.getDefineInfoId())) {
                 continue;
             }
-            commonObjectInfoCollectMap.put(collect.getDefineInfoId(), BooleanUtil.isTrue(collect.getVisiable()));
+            commonObjectInfoCollectMap.put(collect.getDefineInfoId(),collect);
         }
         //查询项目级信息点采集信息
         List<ObjectInfoCollect> projectObjectInfoCollect = queryObjectInfoCollect(context, "project", request.getType(), clazz);
-        Map<String, Boolean> projectObjectInfoCollectMap  = new HashMap<>();
+        Map<String, ObjectInfoCollect> projectObjectInfoCollectMap  = new HashMap<>();
         for(int i = 0,j = CollUtil.size(projectObjectInfoCollect);i < j;i++) {
             ObjectInfoCollect collect = projectObjectInfoCollect.get(i);
             if(StrUtil.isBlank(collect.getDefineInfoId())) {
                 continue;
             }
-            projectObjectInfoCollectMap.put(collect.getDefineInfoId(), BooleanUtil.isTrue(collect.getVisiable()));
+            projectObjectInfoCollectMap.put(collect.getDefineInfoId(),collect);
         }
         String dictType = request.getDictType();
 
@@ -421,7 +421,7 @@ public class AdmDictServiceImpl<T> extends AbstractAdmDictBaseServiceImpl<T> imp
      * @param admObjectInfos
      * @param objectInfoCollectMap
      */
-    private void setObjectInfoVisiable(List<AdmObjectInfo> admObjectInfos,Map<String, Boolean> objectInfoCollectMap,String dictType){
+    private void setObjectInfoVisiable(List<AdmObjectInfo> admObjectInfos,Map<String, ObjectInfoCollect> objectInfoCollectMap,String dictType){
         if(CollUtil.isEmpty(admObjectInfos)){
             return;
         }
@@ -429,7 +429,11 @@ public class AdmDictServiceImpl<T> extends AbstractAdmDictBaseServiceImpl<T> imp
             Boolean visiable = null;
             String id = admObjectInfo.getId();
             if(CollUtil.isNotEmpty(objectInfoCollectMap)){
-                visiable = objectInfoCollectMap.get(id);
+                ObjectInfoCollect collect = objectInfoCollectMap.get(id);
+                if(collect != null){
+                    visiable = collect.getVisiable();
+                    admObjectInfo.setKeyWord(collect.getKeyWord());
+                }
             }
             if(visiable == null){
                 if("common".equals(dictType)){
@@ -444,6 +448,9 @@ public class AdmDictServiceImpl<T> extends AbstractAdmDictBaseServiceImpl<T> imp
             admObjectInfo.setVisible(visiable);
             admObjectInfo.setEditable(true);
             admObjectInfo.setUnDisabled(true);
+            if(admObjectInfo.getKeyWord() == null){
+                admObjectInfo.setKeyWord(false);
+            }
         }
     }
 
@@ -453,7 +460,7 @@ public class AdmDictServiceImpl<T> extends AbstractAdmDictBaseServiceImpl<T> imp
      * @param admObjectInfos
      * @param objectInfoCollectMap
      */
-    private void setOnlyQueryObjectInfoVisiable(List<AdmObjectInfo> admObjectInfos,Map<String, Boolean> objectInfoCollectMap,String dictType){
+    private void setOnlyQueryObjectInfoVisiable(List<AdmObjectInfo> admObjectInfos,Map<String, ObjectInfoCollect> objectInfoCollectMap,String dictType){
         if(CollUtil.isEmpty(admObjectInfos)){
             return;
         }
@@ -462,7 +469,11 @@ public class AdmDictServiceImpl<T> extends AbstractAdmDictBaseServiceImpl<T> imp
             String id = admObjectInfo.getId();
             //设置信息点是否可见
             if(CollUtil.isNotEmpty(objectInfoCollectMap)){
-                visiable = objectInfoCollectMap.get(id);
+                ObjectInfoCollect collect = objectInfoCollectMap.get(id);
+                if(collect!=null){
+                    visiable = collect.getVisiable();
+                    admObjectInfo.setKeyWord(collect.getKeyWord());
+                }
             }
             if(visiable == null && ("localId".equals(admObjectInfo.getCode()) || "localName".equals(admObjectInfo.getCode()))){
                 visiable = true;
@@ -488,6 +499,9 @@ public class AdmDictServiceImpl<T> extends AbstractAdmDictBaseServiceImpl<T> imp
                     admObjectInfo.setUnDisabled(true);
                 }
             }
+            if(admObjectInfo.getKeyWord() == null){
+                admObjectInfo.setKeyWord(false);
+            }
             admObjectInfo.setVisible(visiable);
         }
     }
@@ -541,7 +555,7 @@ public class AdmDictServiceImpl<T> extends AbstractAdmDictBaseServiceImpl<T> imp
         }else{
             criteria.setFilters("groupCode = '"+context.getGroupCode()+"' and projectId = '"+context.getProjectId()+"'");
         }
-        criteria.setName(classCode);
+        //criteria.setName(classCode);
         AdmResponse admResponse = doQueryObjectInfoCollect(context, criteria, "classCode", clazz);
         return (List<ObjectInfoCollect>) admResponse.getContent();
     }

+ 63 - 37
src/main/java/com/persagy/proxy/object/controller/AdmSystemController.java

@@ -4,12 +4,14 @@ import cn.hutool.core.collection.CollUtil;
 import cn.hutool.core.util.StrUtil;
 import cn.hutool.json.JSONUtil;
 import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 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.dto.RequestData;
 import com.persagy.dmp.basic.model.QueryCriteria;
 import com.persagy.dmp.common.model.entity.BaseEntity;
+import com.persagy.dmp.common.model.response.CommonResult;
 import com.persagy.dmp.define.client.DigitalDefineFacade;
 import com.persagy.dmp.define.entity.ObjectTypeDefine;
 import com.persagy.dmp.digital.client.DigitalObjectFacade;
@@ -19,13 +21,12 @@ import com.persagy.dmp.simple.client.DigitalObjectSimpleFacade;
 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.adm.service.*;
+import com.persagy.proxy.adm.service.IAdmRelationService;
 import com.persagy.proxy.adm.utils.AdmContextUtil;
 import com.persagy.proxy.adm.utils.AdmQueryCriteriaHelper;
 import com.persagy.proxy.adm.utils.ObjectNameUtil;
 import com.persagy.proxy.common.entity.DmpResult;
 import com.persagy.proxy.common.entity.RelationDTO;
-import com.persagy.proxy.dictionary.service.IAdmDictService;
 import com.persagy.proxy.object.model.*;
 import com.persagy.proxy.object.service.IAdmBuildingService;
 import com.persagy.proxy.object.service.IAdmFloorService;
@@ -36,7 +37,10 @@ import org.springframework.web.bind.annotation.*;
 import javax.json.JsonObject;
 import javax.validation.constraints.NotNull;
 import javax.ws.rs.QueryParam;
-import java.util.*;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+import java.util.Map;
 
 /**
  * Adm 系统 API
@@ -54,8 +58,6 @@ public class AdmSystemController {
     @Autowired
     private IAdmFloorService floorService;
     @Autowired
-    private IAdmDictService dictService;
-    @Autowired
     private IAdmRelationService relationService;
 
     /**
@@ -129,7 +131,7 @@ public class AdmSystemController {
                         relationDTOS.add(new RelationDTO(null, "MechInArch", "Sy2Fl", null, systemId , floorId));
                     }
                     if(StrUtil.isNotEmpty(buildID)){
-                        relationDTOS.add(new RelationDTO(null, "MechForArch", "Sy2Bd", null, systemId , buildID));
+                        relationDTOS.add(new RelationDTO(null, "MechInArch", "Sy2Bd", null, systemId , buildID));
                     }
                 });
                 admSystemList.addAll(admSystems);
@@ -217,7 +219,33 @@ public class AdmSystemController {
     @PostMapping("/query")
     public AdmResponse query(@RequestBody AdmQueryCriteria request) {
         request.setName(AdmSystem.OBJ_TYPE);
-        return service.doQuery(AdmContextUtil.toDmpContext(), request, AdmSystem.class);
+
+        if(CollUtil.isNotEmpty(request.getProjection()) && request.getDistinct() && !request.getProjection().contains(BaseEntity.PROP_ID)){
+            RequestData requestData = new RequestData();
+            requestData.setProjection(request.getProjection());
+            requestData.setObjType(AdmSystem.OBJ_TYPE);
+            requestData.setPage(request.getPageNumber().longValue());
+            requestData.setSize(request.getPageSize().longValue());
+            CommonResult<List<ObjectNode>> result = DigitalObjectSimpleFacade.querySystemListByConditions(AdmContextUtil.toDmpContext().getGroupCode(),AdmContextUtil.toDmpContext().getProjectId(), AdmContextUtil.toDmpContext().getAppId(), null, requestData);
+            if(result == null || CollUtil.isEmpty(result.getData())){
+                return AdmResponse.success();
+            }
+            List<AdmSystem> admSystemList = JSONUtil.toList(result.getData().toString(), AdmSystem.class);
+            service.ensureSpecialValues(AdmContextUtil.toDmpContext(), admSystemList);
+            AdmResponse response = AdmResponse.success(admSystemList);
+            Long total = result.getCount() == null ? null : result.getCount().longValue();
+            if(request.isOnlyCount()){
+                response.setTotal(null);
+                response.setCount(total);
+            }else {
+                response.setTotal(total);
+            }
+            response.setPageNumber(request.getPageNumber());
+            response.setPageSize(request.getPageSize());
+            return response;
+        }else {
+            return service.doQuery(AdmContextUtil.toDmpContext(), request, AdmSystem.class);
+        }
     }
 
 
@@ -263,16 +291,20 @@ public class AdmSystemController {
                             ObjectNode info = JsonNodeFactory.instance.objectNode();
                             info.put("BuildID",admBuilding.getId());
                             info.put("BuildName",admBuilding.getLocalName());
+                            buildingFloorInfoList.add(info);
 
                             List<AdmFloor> admFloorList = admSystem.getFloorList();
                             if(CollUtil.isNotEmpty(admFloorList)){
                                 Map<String, AdmFloor> admFloorMap = CollUtil.fieldValueMap(admFloorList, "buildingId");
                                 if(admFloorMap.containsKey(admBuilding.getId())){
-                                    info.put("FloorID",admFloorMap.get(admBuilding.getId()).getId());
-                                    info.put("FloorName",admFloorMap.get(admBuilding.getId()).getLocalName());
+                                    ObjectNode infobd = JsonNodeFactory.instance.objectNode();
+                                    infobd.put("BuildID",admBuilding.getId());
+                                    infobd.put("BuildName",admBuilding.getLocalName());
+                                    infobd.put("FloorID",admFloorMap.get(admBuilding.getId()).getId());
+                                    infobd.put("FloorName",admFloorMap.get(admBuilding.getId()).getLocalName());
+                                    buildingFloorInfoList.add(infobd);
                                 }
                             }
-                            buildingFloorInfoList.add(info);
                         });
                         admSystem.setBuildingFloorInfoList(buildingFloorInfoList);
                         admSystem.setBuildingList(null);
@@ -305,9 +337,10 @@ public class AdmSystemController {
 
                 }else if("1".equals(floorId)){
                     //case three 明确建筑 不明确楼层
-                    admSystemList = queryNotSureObj(buildingId, rwdQueryCriteria);
-                    //处理通用返回结果
-                    dealRespose(syses, request);
+                    syses = queryNotSureObj(buildingId, rwdQueryCriteria);
+                    if(null != syses && CollUtil.isNotEmpty(syses.getContent())){
+                        admSystemList = (List<AdmSystem>) syses.getContent();
+                    }
                 }
                 if(CollUtil.isNotEmpty(admSystemList)){
                     //处理数据 BuildingFloorInfo
@@ -324,15 +357,9 @@ public class AdmSystemController {
                     criteria.putPOJO("relationFrom",relationFrom);
                     rwdQueryCriteria.setCriteria(criteria);
                     syses = service.doQuery(AdmContextUtil.toDmpContext(), rwdQueryCriteria, AdmSystem.class);
-                    if (CollUtil.isNotEmpty(syses.getContent())) {
-                        admSystemList = (List<AdmSystem>) syses.getContent();
-                    }
-
                 }else if("1".equals(buildingId)){
                     //case three 明确建筑 不明确楼层
-                    admSystemList = queryNotSureObj(buildingId, rwdQueryCriteria);
-                    //处理通用返回结果
-                    dealRespose(syses, request);
+                    syses = queryNotSureObj(buildingId, rwdQueryCriteria);
                 }
                 if(CollUtil.isNotEmpty(admSystemList)){
                     //处理数据 BuildingFloorInfo
@@ -341,14 +368,12 @@ public class AdmSystemController {
                 }
             }else{
                 //处理通用返回结果
-                dealRespose(syses, request);
                 if(StrUtil.isNotEmpty(buildingId) && buildingId.equals("1")){
                     //case four 未明确建筑
-                    admSystemList = queryNotSureObj(null, rwdQueryCriteria);
+                    syses = queryNotSureObj(null, rwdQueryCriteria);
                     if(CollUtil.isNotEmpty(admSystemList)){
                         //处理数据 BuildingFloorInfo
                         admSystemList = dealBdFlInfo(null,null, admSystemList);
-
                     }
                 }
             }
@@ -364,19 +389,13 @@ public class AdmSystemController {
         return syses;
     }
 
-    private void dealRespose(AdmResponse syses, AdmQueryCriteria request){
-        syses.setPageSize(request.getPageSize());
-        syses.setPageNumber(request.getPageNumber());
-        syses.setResult(DmpResult.SUCCESS);
-        syses.setTotal(0L);
-    }
     /**
      * 查询不确定建筑/楼层的系统
      * @param buildingId
      * @param rwdQueryCriteria
      * @return
      */
-    private List<AdmSystem> queryNotSureObj(String buildingId, QueryCriteria rwdQueryCriteria){
+    private AdmResponse queryNotSureObj(String buildingId, QueryCriteria rwdQueryCriteria){
         RequestData requestData = new RequestData();
         String classCode = rwdQueryCriteria.getCriteria().get("classCode").textValue();
         if(StrUtil.isNotEmpty(classCode)){
@@ -388,12 +407,17 @@ public class AdmSystemController {
         requestData.setObjType(AdmSystem.OBJ_TYPE);
         requestData.setPage(rwdQueryCriteria.getPage());
         requestData.setSize(rwdQueryCriteria.getSize());
-        List result = DigitalObjectSimpleFacade.queryNotSureSystem(AdmContextUtil.toDmpContext().getGroupCode(), AdmContextUtil.toDmpContext().getProjectId(), AdmContextUtil.toDmpContext().getAppId(),null, requestData);
-        if(CollUtil.isNotEmpty(result)){
-            List<AdmSystem> admSystemList = JSONUtil.toList(result.toString(), AdmSystem.class);
-            return admSystemList;
+        Page<Map<String,Object>> result = DigitalObjectSimpleFacade.queryNotSureSystem(AdmContextUtil.toDmpContext().getGroupCode(), AdmContextUtil.toDmpContext().getProjectId(), AdmContextUtil.toDmpContext().getAppId(),null, requestData);
+        if(CollUtil.isNotEmpty(result.getRecords())){
+            AdmResponse response = new AdmResponse();
+            response.setPageSize(Integer.parseInt(String.valueOf(result.getSize())));
+            response.setPageNumber(Integer.parseInt(String.valueOf(result.getCurrent())));
+            response.setResult(DmpResult.SUCCESS);
+            response.setContent(result.getRecords());
+            response.setTotal(result.getTotal());
+            return response;
         }else{
-            return null;
+            return AdmResponse.success();
         }
     }
 
@@ -433,9 +457,11 @@ public class AdmSystemController {
             buildingFloorInfo.put("BuildName",admBuilding.getLocalName());
         }
         if (null!=floors && CollUtil.isNotEmpty(floors.getContent())) {
+            ObjectNode buildingFloorInfoFl = JsonNodeFactory.instance.objectNode();
+            buildingFloorInfoFl = buildingFloorInfo.deepCopy();
             AdmFloor floor = (AdmFloor) floors.getContent().get(0);
-            buildingFloorInfo.put("FloorID",floor.getId());
-            buildingFloorInfo.put("FloorName",floor.getLocalName());
+            buildingFloorInfoFl.put("FloorID",floor.getId());
+            buildingFloorInfoFl.put("FloorName",floor.getLocalName());
         }
         admSystemList.stream().forEach(admSystem -> {
             admSystem.setBuildingFloorInfoList(Arrays.asList(buildingFloorInfo));

+ 10 - 12
src/main/java/com/persagy/proxy/object/service/impl/AdmSpaceServiceImpl.java

@@ -108,9 +108,7 @@ public class AdmSpaceServiceImpl extends AbstractAdmBaseServiceImpl<AdmSpace> im
 
     @Override
     public AdmResponse doQuerySpaces(InstanceUrlParam context, AdmDCSQueryRequest request) {
-        AdmQueryCriteria admQueryCriteria = new AdmQueryCriteria();
-        admQueryCriteria.setCascade(request.getCascade());
-        admQueryCriteria.setName(AdmSpace.OBJ_TYPE);
+        request.setName(AdmSpace.OBJ_TYPE);
         String classCodeFilter = "";
         if(StrUtil.isNotEmpty(request.getZoneType())){
             classCodeFilter = "classCode = '"+request.getZoneType()+"'";
@@ -124,9 +122,9 @@ public class AdmSpaceServiceImpl extends AbstractAdmBaseServiceImpl<AdmSpace> im
         }
         String filters = request.getFilters();
         if(StrUtil.isBlank(filters)){
-        	admQueryCriteria.setFilters(classCodeFilter);
+            request.setFilters(classCodeFilter);
         }else{
-            admQueryCriteria.setFilters(filters+";"+classCodeFilter);
+            request.setFilters(filters+";"+classCodeFilter);
         }
         if(StrUtil.isNotEmpty(request.getBuildingId()) && StrUtil.isNotEmpty(request.getFloorId()) && !request.getFloorId().equals("isnull")){
             //明确建筑,明确楼层
@@ -134,7 +132,7 @@ public class AdmSpaceServiceImpl extends AbstractAdmBaseServiceImpl<AdmSpace> im
             relationTo.put("relCode", "Fl2Sp");
             relationTo.put("graphCode", "MechInArch");
             relationTo.put("objFrom", request.getFloorId());
-            admQueryCriteria.setRelationFrom(relationTo);
+            request.setRelationFrom(relationTo);
 
         }else if(StrUtil.isNotEmpty(request.getBuildingId()) && StrUtil.isNotEmpty(request.getFloorId()) && request.getFloorId().equals("isnull")){
             //明确建筑,不明确楼层
@@ -155,15 +153,15 @@ public class AdmSpaceServiceImpl extends AbstractAdmBaseServiceImpl<AdmSpace> im
                 ArrayNode arrayNode = relationTo.putObject("objFrom").putArray("$in");
                 objectRelationMap.keySet().stream().forEach(floorId -> arrayNode.add(floorId));
                 relationTo.put("$bindFlag", false);
-                admQueryCriteria.setRelationFrom(relationTo);
-                admQueryCriteria.setFilters(admQueryCriteria.getFilters() + "; buildingId = '"+request.getBuildingId()+"'");
+                request.setRelationFrom(relationTo);
+                request.setFilters(request.getFilters() + "; buildingId = '"+request.getBuildingId()+"'");
             }else{
                 //查询建筑下的空间
                 ObjectNode relationTo = JsonNodeFactory.instance.objectNode();
                 relationTo.put("relCode", "Bd2Sp");
                 relationTo.put("graphCode", "MechInArch");
                 relationTo.put("objFrom", request.getBuildingId());
-                admQueryCriteria.setRelationFrom(relationTo);
+                request.setRelationFrom(relationTo);
             }
 
         }else if(StrUtil.isNotEmpty(request.getBuildingId()) && StrUtil.isEmpty(request.getFloorId()) && !request.getBuildingId().equals("isnull")){
@@ -172,7 +170,7 @@ public class AdmSpaceServiceImpl extends AbstractAdmBaseServiceImpl<AdmSpace> im
             relationTo.put("relCode", "Bd2Sp");
             relationTo.put("graphCode", "MechInArch");
             relationTo.put("objFrom", request.getBuildingId());
-            admQueryCriteria.setRelationFrom(relationTo);
+            request.setRelationFrom(relationTo);
         }else if(StrUtil.isNotEmpty(request.getBuildingId()) && StrUtil.isEmpty(request.getFloorId()) && request.getBuildingId().equals("isnull")){
             //未明确建筑下的空间
             //查询建筑下的空间
@@ -180,11 +178,11 @@ public class AdmSpaceServiceImpl extends AbstractAdmBaseServiceImpl<AdmSpace> im
             relationTo.put("relCode", "Bd2Sp");
             relationTo.put("graphCode", "MechInArch");
             relationTo.put("$bindFlag", false);
-            admQueryCriteria.setRelationFrom(relationTo);
+            request.setRelationFrom(relationTo);
         }else if(StrUtil.isEmpty(request.getBuildingId()) && StrUtil.isEmpty(request.getFloorId())){
         }
 
-        AdmResponse response = doQuery(AdmContextUtil.toDmpContext(), admQueryCriteria, AdmSpace.class);
+        AdmResponse response = doQuery(AdmContextUtil.toDmpContext(), request, AdmSpace.class);
         //空间需要补充分类名称属性
         ensureSpecialValues(context, (List<AdmSpace>) response.getContent());
         return response;

+ 30 - 11
src/main/java/com/persagy/proxy/relation/controller/RelationSyInFlController.java

@@ -1,27 +1,33 @@
 package com.persagy.proxy.relation.controller;
 
+import cn.hutool.core.collection.CollUtil;
 import cn.hutool.core.util.StrUtil;
 import com.alibaba.excel.util.CollectionUtils;
+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.digital.entity.ObjectRelation;
 import com.persagy.proxy.adm.constant.AdmRelationTypeEnum;
-import com.persagy.proxy.relation.model.FlInSyList;
-import com.persagy.proxy.relation.model.SyInFl;
-import com.persagy.proxy.relation.model.SyInFlList;
 import com.persagy.proxy.adm.request.AdmResponse;
 import com.persagy.proxy.adm.service.IAdmRelationService;
 import com.persagy.proxy.adm.utils.AdmContextUtil;
 import com.persagy.proxy.common.entity.InstanceUrlParam;
 import com.persagy.proxy.common.entity.RelationDTO;
+import com.persagy.proxy.relation.model.FlInSyList;
+import com.persagy.proxy.relation.model.SyInFl;
+import com.persagy.proxy.relation.model.SyInFlList;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.beans.factory.annotation.Value;
-import org.springframework.web.bind.annotation.*;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
 
 import java.util.ArrayList;
 import java.util.List;
+import java.util.Map;
 
 /**
  * @author zhangwencheng
@@ -35,14 +41,11 @@ public class RelationSyInFlController {
     @Autowired
     private IAdmRelationService service;
 
-    @Value("${middleware.group.code}")
-    private String groupCode;
-
-    /**
+   /**
      * 创建系统所在楼层关系
      *
      * @param syInFl
-     * @param projectId
+     * @param
      * @return
      * @throws Exception
      */
@@ -73,7 +76,7 @@ public class RelationSyInFlController {
     /**
      * 创建所在系统和楼层的关系 系统楼层一对多
      *
-     * @param projectId
+     * @param
      * @return
      * @throws Exception
      */
@@ -97,6 +100,22 @@ public class RelationSyInFlController {
             RelationDTO relation = new RelationDTO(null, graphCode, relCode, null, sysId, floorId);
             voList.add(relation);
         }
+        //查询 floor所属的建筑 增加关系
+        QueryCriteria criteriaQuery = new QueryCriteria();
+        ObjectNode criteria = JsonNodeFactory.instance.objectNode();
+        criteria.put(ObjectRelation.REL_CODE_HUM, "Fl2Bd");
+        criteria.put(ObjectRelation.GRAPH_CODE_HUM, "ArchSubset");
+        ArrayNode arrayNode = criteria.putObject("objFrom").putArray("$in");
+        floorIdList.stream().forEach(floorId -> arrayNode.add(floorId));
+        criteriaQuery.setCriteria(criteria);
+        List<ObjectRelation> relationList = service.queryByCondition(AdmContextUtil.toDmpContext(), criteriaQuery);
+        if(CollUtil.isNotEmpty(relationList)){
+            Map<String,ObjectRelation> objectRelationMap = CollUtil.fieldValueMap(relationList, "objTo");
+            for (String buildingId : objectRelationMap.keySet()) {
+                RelationDTO relation = new RelationDTO(null, graphCode, "Sy2Bd", null, sysId, buildingId);
+                voList.add(relation);
+            }
+        }
         // 组装上下文条件
         InstanceUrlParam context = AdmContextUtil.toDmpContext();
         service.doSave(context, voList);

+ 34 - 8
src/main/java/com/persagy/proxy/report/controller/AdmSpaceInfoController.java

@@ -5,20 +5,22 @@ import com.fasterxml.jackson.databind.node.JsonNodeFactory;
 import com.fasterxml.jackson.databind.node.ObjectNode;
 import com.persagy.dmp.common.constant.ResponseCode;
 import com.persagy.proxy.adm.constant.AdmCommonConstant;
-import com.persagy.proxy.object.model.AdmEquipment;
-import com.persagy.proxy.object.model.AdmSystem;
+import com.persagy.proxy.adm.request.AdmDCSQueryRequest;
 import com.persagy.proxy.adm.request.AdmQueryCriteria;
 import com.persagy.proxy.adm.request.AdmResponse;
-import com.persagy.proxy.adm.service.*;
+import com.persagy.proxy.adm.service.IAdmRelationService;
 import com.persagy.proxy.adm.utils.AdmContextUtil;
-import com.persagy.proxy.object.service.IAdmEquipmentService;
-import com.persagy.proxy.object.service.IAdmFloorService;
-import com.persagy.proxy.object.service.IAdmSpaceService;
-import com.persagy.proxy.object.service.IAdmSystemService;
+import com.persagy.proxy.object.model.AdmEquipment;
+import com.persagy.proxy.object.model.AdmISpace;
+import com.persagy.proxy.object.model.AdmSystem;
+import com.persagy.proxy.object.service.*;
 import lombok.RequiredArgsConstructor;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
-import org.springframework.web.bind.annotation.*;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
 
 import javax.servlet.http.HttpServletRequest;
 import javax.ws.rs.QueryParam;
@@ -42,6 +44,8 @@ public class AdmSpaceInfoController {
 	@Autowired
 	private IAdmSpaceService spaceService;
 	@Autowired
+	private IAdmISpaceService ispaceService;
+	@Autowired
 	private IAdmSystemService systemService;
 	@Autowired
 	private IAdmEquipmentService equipmentService;
@@ -122,6 +126,28 @@ public class AdmSpaceInfoController {
 		return unSpaceEq(type, spaceId, request, "MechInArch");
 	}
 
+	/**
+	 * 未关联业务空间的元空间  si2sp
+	 */
+	@PostMapping("/unspace-ispace")
+	public AdmResponse unSpaceIspace(@QueryParam("objectType") String objectType, @RequestBody AdmDCSQueryRequest request) {
+		//si2sp
+		ObjectNode relationFrom = JsonNodeFactory.instance.objectNode();
+		relationFrom.put("relCode", "Si2Sp");
+		relationFrom.put("$bindFlag",false);
+		request.setRelationFrom(relationFrom);
+		request.setName(AdmISpace.OBJ_TYPE);
+		String floorFilter = "floorId = '" + request.getFloorId()+"'";
+		if(StrUtil.isNotEmpty(request.getFilters())){
+			request.setFilters(request.getFilters()+";"+floorFilter);
+		}else{
+			request.setFilters(floorFilter);
+		}
+		if(StrUtil.isNotEmpty(objectType)){
+			request.setFilters(request.getFilters()+"; classCode='"+objectType+"'");
+		}
+		return ispaceService.doQuery(AdmContextUtil.toDmpContext(),request, AdmISpace.class);
+	}
 
 	private AdmResponse unSpaceEq(String type, String spaceId, AdmQueryCriteria request, String graphCode) {
 		if (StrUtil.isBlank(spaceId)) {