Browse Source

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

xujiaheng 3 years ago
parent
commit
378c034ce6
48 changed files with 1143 additions and 475 deletions
  1. 6 3
      src/main/java/com/persagy/proxy/adm/constant/AdmRelationType.java
  2. 106 16
      src/main/java/com/persagy/proxy/adm/controller/AdmSpaceController.java
  3. 145 0
      src/main/java/com/persagy/proxy/adm/controller/ComponentBuildingController.java
  4. 191 0
      src/main/java/com/persagy/proxy/adm/controller/ComponentStatisticsController.java
  5. 6 6
      src/main/java/com/persagy/proxy/adm/controller/RelationReportController.java
  6. 28 0
      src/main/java/com/persagy/proxy/adm/model/AdmDCSQueryRequest.java
  7. 19 0
      src/main/java/com/persagy/proxy/adm/model/AdmSpace.java
  8. 20 0
      src/main/java/com/persagy/proxy/adm/model/AdmUpDataFloorAndBuildingRequests.java
  9. 38 0
      src/main/java/com/persagy/proxy/adm/request/AdmCountResponse.java
  10. 5 42
      src/main/java/com/persagy/proxy/adm/service/IAdmSpaceService.java
  11. 244 122
      src/main/java/com/persagy/proxy/adm/service/impl/AdmSpaceServiceImpl.java
  12. 5 5
      src/main/java/com/persagy/proxy/adm/service/impl/RelationReportService.java
  13. 32 9
      src/main/java/com/persagy/proxy/adm/strategy/QueryRelationObjectContext.java
  14. 67 0
      src/main/java/com/persagy/proxy/adm/strategy/relationdata/AbstractRelationObject.java
  15. 5 35
      src/main/java/com/persagy/proxy/adm/strategy/relationdata/AbstractQueryRelationObject.java
  16. 45 0
      src/main/java/com/persagy/proxy/adm/strategy/relationdata/Bd2FlSubRelationObject.java
  17. 5 5
      src/main/java/com/persagy/proxy/adm/strategy/relationdata/Eq2BdForRelationObject.java
  18. 5 6
      src/main/java/com/persagy/proxy/adm/strategy/relationdata/Eq2BdRelationObject.java
  19. 5 11
      src/main/java/com/persagy/proxy/adm/strategy/relationdata/Eq2EqEqBackupRelationObject.java
  20. 5 11
      src/main/java/com/persagy/proxy/adm/strategy/relationdata/Eq2EqEqNormalRelationObject.java
  21. 5 11
      src/main/java/com/persagy/proxy/adm/strategy/relationdata/Eq2EqSyBackupRelationObject.java
  22. 5 11
      src/main/java/com/persagy/proxy/adm/strategy/relationdata/Eq2EqSyNormalRelationObject.java
  23. 5 5
      src/main/java/com/persagy/proxy/adm/strategy/relationdata/Eq2FlForRelationObject.java
  24. 5 6
      src/main/java/com/persagy/proxy/adm/strategy/relationdata/Eq2FlRelationObject.java
  25. 5 5
      src/main/java/com/persagy/proxy/adm/strategy/relationdata/Eq2ShForRelationObject.java
  26. 5 6
      src/main/java/com/persagy/proxy/adm/strategy/relationdata/Eq2SpRelationObject.java
  27. 26 3
      src/main/java/com/persagy/proxy/adm/strategy/relationdata/QueryRelationObjectStrategy.java
  28. 5 6
      src/main/java/com/persagy/proxy/adm/strategy/relationdata/Sh2BdForRelationObject.java
  29. 5 6
      src/main/java/com/persagy/proxy/adm/strategy/relationdata/Sh2FlForRelationObject.java
  30. 5 6
      src/main/java/com/persagy/proxy/adm/strategy/relationdata/Sh2ShForRelationObject.java
  31. 5 5
      src/main/java/com/persagy/proxy/adm/strategy/relationdata/Sh2SpForRelationObject.java
  32. 5 5
      src/main/java/com/persagy/proxy/adm/strategy/relationdata/Sp2BdForRelationObject.java
  33. 5 5
      src/main/java/com/persagy/proxy/adm/strategy/relationdata/Sp2FlForRelationObject.java
  34. 5 11
      src/main/java/com/persagy/proxy/adm/strategy/relationdata/Sp2SpConnectRelationObject.java
  35. 5 11
      src/main/java/com/persagy/proxy/adm/strategy/relationdata/Sp2SpFFCloseRelationObject.java
  36. 5 11
      src/main/java/com/persagy/proxy/adm/strategy/relationdata/Sp2SpFFOpenRelationObject.java
  37. 5 11
      src/main/java/com/persagy/proxy/adm/strategy/relationdata/Sp2SpMixMechRelationObject.java
  38. 5 11
      src/main/java/com/persagy/proxy/adm/strategy/relationdata/Sp2SpNaturalRelationObject.java
  39. 5 11
      src/main/java/com/persagy/proxy/adm/strategy/relationdata/Sp2SpNormalRelationObject.java
  40. 5 11
      src/main/java/com/persagy/proxy/adm/strategy/relationdata/Sp2SpOnewayMechRelationObject.java
  41. 5 6
      src/main/java/com/persagy/proxy/adm/strategy/relationdata/Sp2SpTransparentRelationObject.java
  42. 5 6
      src/main/java/com/persagy/proxy/adm/strategy/relationdata/Ss2EqShipRelationObject.java
  43. 5 6
      src/main/java/com/persagy/proxy/adm/strategy/relationdata/Ss2SpShipRelationObject.java
  44. 5 6
      src/main/java/com/persagy/proxy/adm/strategy/relationdata/Ss2SyShipRelationObject.java
  45. 5 6
      src/main/java/com/persagy/proxy/adm/strategy/relationdata/Sy2BdForRelationObject.java
  46. 5 6
      src/main/java/com/persagy/proxy/adm/strategy/relationdata/Sy2FlForRelationObject.java
  47. 5 6
      src/main/java/com/persagy/proxy/adm/strategy/relationdata/Sy2ShForRelationObject.java
  48. 5 5
      src/main/java/com/persagy/proxy/adm/strategy/relationdata/Sy2SpForRelationObject.java

+ 6 - 3
src/main/java/com/persagy/proxy/adm/constant/AdmRelationType.java

@@ -1,9 +1,9 @@
 package com.persagy.proxy.adm.constant;
 
 /**
- * 所有数据的来源为
- * {@link com.persagy.proxy.adm.constant.AdmRelationTypeEnum}
- * 的relationType字段
+ * 数据的来源为 {@link com.persagy.proxy.adm.constant.AdmRelationTypeEnum} 的relationType字段
+ * 部分字段为自定义
+ * 
  * @version 1.0.0
  * @company persagy 
  * @author zhangqiankun
@@ -11,6 +11,9 @@ package com.persagy.proxy.adm.constant;
  */
 public interface AdmRelationType {
 
+	/** Bd2Fl_ArchSubset  表示从属关系*/
+	String BD2FL_ARCHSUBSET = "bd2fl_ArchSubset";
+	
 	String EQ2BD = "eq2bd";
 	
 	String EQ2FL = "eq2fl";

+ 106 - 16
src/main/java/com/persagy/proxy/adm/controller/AdmSpaceController.java

@@ -2,14 +2,25 @@ package com.persagy.proxy.adm.controller;
 
 import cn.hutool.core.collection.CollUtil;
 import cn.hutool.core.util.StrUtil;
+import cn.hutool.json.JSONUtil;
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+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.proxy.adm.constant.AdmCommonConstant;
 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.adm.service.IAdmBuildingService;
+import com.persagy.proxy.adm.service.IAdmFloorService;
+import com.persagy.proxy.adm.service.IAdmRelationService;
 import com.persagy.proxy.adm.service.IAdmSpaceService;
+import com.persagy.proxy.common.entity.DmpResult;
 import com.persagy.proxy.common.entity.InstanceUrlParam;
+import com.persagy.proxy.common.entity.RelationDTO;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.web.bind.annotation.PostMapping;
@@ -19,6 +30,7 @@ import org.springframework.web.bind.annotation.RestController;
 
 import javax.ws.rs.QueryParam;
 import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.List;
 
 /**
@@ -34,6 +46,10 @@ public class AdmSpaceController {
     private IAdmSpaceService service;
     @Autowired
     private IAdmBuildingService buildingService;
+    @Autowired
+    private IAdmRelationService relationService;
+    @Autowired
+    private IAdmFloorService floorService;
     @Value("${middleware.group.code}")
     private String groupCode;
 
@@ -118,11 +134,10 @@ public class AdmSpaceController {
      */
     @PostMapping("/query")
     public AdmResponse query(@QueryParam("projectId") String projectId,
-                             @RequestBody AdmQueryCriteria request) throws Exception {
+                             @RequestBody AdmDCSQueryRequest request) throws Exception {
         // 组装上下文条件
         InstanceUrlParam context = new InstanceUrlParam(groupCode, null, projectId, AdmCommonConstant.APP_ID);
-        request.setName("space");
-        return service.doQuery(context, request, AdmSpace.class);
+        return service.doQuerySpaces(context, request);
     }
 
     /**
@@ -169,19 +184,97 @@ public class AdmSpaceController {
     /**
      * 修改业务空间对象和建筑楼层的关系
      * spaceId 业务空间id,id 楼层或建筑id,type 业务空间的类型
-     * @param upDataFloorAndBuildingRequestsList
+     * @param voList
      * @return
      * @throws Exception
      */
     @PostMapping("/update-fl-bd")
-    public AdmResponse updateFlBd(@RequestBody List<AdmUpDataFloorAndBuildingRequests> upDataFloorAndBuildingRequestsList, @QueryParam("projectId") String projectId) throws Exception {
-        if(CollUtil.isEmpty(upDataFloorAndBuildingRequestsList)){
+    public AdmResponse updateFlBd(@RequestBody List<AdmUpDataFloorAndBuildingRequests> voList, @QueryParam("projectId") String projectId) throws Exception {
+        if(CollUtil.isEmpty(voList)){
             return AdmResponse.failure("不可以传入空数据");
         }
         // 组装上下文条件
         InstanceUrlParam context = new InstanceUrlParam(groupCode, null, projectId, AdmCommonConstant.APP_ID);
-        List<AdmSpace> vos = service.doUpdateFloorORBuilding(context, upDataFloorAndBuildingRequestsList);
-        return AdmResponse.success(vos);
+        //List<AdmSpace> vos = service.doUpdateFloorORBuilding(context, upDataFloorAndBuildingRequestsList);
+        //TODO 循环删除 需要改为 批量删除
+        List<RelationDTO> RSpInBd_up = new ArrayList<>();
+        List<RelationDTO> RSpInFl_up = new ArrayList<>();
+        List<AdmSpace> space_up = new ArrayList<>();
+        QueryCriteria queryCriteria = new QueryCriteria();
+        voList.stream().forEach(requestData -> {
+            String spaceId = requestData.getSpaceId();
+            String id = requestData.getId();
+            String type = requestData.getType();//classCode
+
+            /** 清除空间和建筑楼层的的数据 */
+            ObjectNode rBd = JsonNodeFactory.instance.objectNode();
+            rBd.put("objTo",spaceId);
+            rBd.put("relCode","Bd2Sp");
+            queryCriteria.setCriteria(rBd);
+            relationService.doDelete(context, queryCriteria);
+
+            ObjectNode rFl = JsonNodeFactory.instance.objectNode();
+            rFl.put("objTo",spaceId);
+            rFl.put("relCode","Fl2Sp");
+            queryCriteria.setCriteria(rFl);
+            relationService.doDelete(context, queryCriteria);
+
+            if(StrUtil.isNotEmpty(id)){
+                if(id.startsWith("Fl") && StrUtil.isNotEmpty(spaceId)){
+                    AdmQueryCriteria admQueryCriteria = new AdmQueryCriteria();
+                    admQueryCriteria.setName("floor");
+                    AdmResponse admResponseFl = floorService.doQuery(context, admQueryCriteria, AdmFloor.class);
+                    if(CollUtil.isNotEmpty(admResponseFl.getContent())){
+                        AdmFloor floor = JSONUtil.toBean(admResponseFl.getContent().get(0).toString(), AdmFloor.class);
+                        if (floor!=null){
+                            //更新关系
+                            RelationDTO rBd_up = new RelationDTO();
+                            rBd_up.setObjTo(spaceId);
+                            rBd_up.setRelCode("Bd2Sp");
+                            rBd_up.setObjFrom(floor.getBuildingId());
+                            RSpInBd_up.add(rBd_up);
+
+                            RelationDTO rFl_up = new RelationDTO();
+                            rFl_up.setObjTo(spaceId);
+                            rFl_up.setRelCode("Fl2Sp");
+                            rFl_up.setObjFrom(floor.getId());
+                            RSpInFl_up.add(rFl_up);
+
+                            //更新实体
+                            AdmSpace space = new AdmSpace();
+                            space.setId(spaceId);
+                            space.setObjectType("space");
+                            space.setZoneType(type);
+                            space.setClassCode(type);
+                            space.setBuildingId(floor.getBuildingId());
+                            space.setFloorId(floor.getId());
+                            space_up.add(space);
+                        }
+                    }
+                }else if(id.startsWith("Bd")){
+                    //更新关系
+                    RelationDTO rBd_up = new RelationDTO();
+                    rBd_up.setObjTo(spaceId);
+                    rBd_up.setRelCode("Bd2Sp");
+                    rBd_up.setObjFrom(id);
+                    RSpInBd_up.add(rBd_up);
+
+                    //更新实体
+                    AdmSpace space = new AdmSpace();
+                    space.setId(spaceId);
+                    space.setObjectType("space");
+                    space.setZoneType(type);
+                    space.setClassCode(type);
+                    space.setBuildingId(id);
+                    space.setFloorId(null);
+                    space_up.add(space);
+                }
+            }
+        });
+        service.doUpdate(context, AdmSpace.class, space_up);
+        relationService.doSave(context, RSpInBd_up);
+        relationService.doSave(context, RSpInFl_up);
+         return AdmResponse.success(space_up);
     }
 
     /**
@@ -196,6 +289,7 @@ public class AdmSpaceController {
         InstanceUrlParam context = new InstanceUrlParam(groupCode, null, projectId, AdmCommonConstant.APP_ID);
         List<AdmSpace> vos = CollUtil.newArrayList(createRequest.getContent());
         vos = service.doUpdate(context, AdmSpace.class, vos);
+        //TODO 更新计算关系ZoneSpaceBaseService.upDateOutline
         return AdmResponse.success(vos);
     }
 
@@ -208,7 +302,7 @@ public class AdmSpaceController {
      */
     @PostMapping("/query-outline")
     public AdmResponse queryOutline(@QueryParam("projectId") String projectId,
-                                      @RequestBody AdmQueryCriteria request) throws Exception {
+                                      @RequestBody AdmDCSQueryRequest request) throws Exception {
         // 组装上下文条件
         InstanceUrlParam context = new InstanceUrlParam(groupCode, null, projectId, AdmCommonConstant.APP_ID);
         request.setName("space");
@@ -224,24 +318,21 @@ public class AdmSpaceController {
         list.add("infos");
         list.add("properties");
         request.setProjection(list);
-        return service.doQuerySpaces(context, request, AdmSpace.class);
+        return service.doQuerySpaces(context, request);
     }
 
 
     /**
      * 获取项目下已有的空间类型
      * @param projectId
-     * @param request
      * @return
      * @throws Exception
      */
     @PostMapping("/space-type")
-    public AdmResponse querySpaceType(@QueryParam("projectId") String projectId,
-                                 @RequestBody AdmQueryCriteria request) throws Exception {
+    public List<JSONObject> querySpaceType(@QueryParam("projectId") String projectId) throws Exception {
         // 组装上下文条件
         InstanceUrlParam context = new InstanceUrlParam(groupCode, null, projectId, AdmCommonConstant.APP_ID);
-        request.setName("space");
-        return service.doQuery(context,request,AdmSpace.class);
+        return service.doQuerySpaceTypes(context);
     }
 
     /**
@@ -256,7 +347,6 @@ public class AdmSpaceController {
                              @RequestBody AdmDCSQueryRequest request) throws Exception {
         // 组装上下文条件
         InstanceUrlParam context = new InstanceUrlParam(groupCode, null, projectId, AdmCommonConstant.APP_ID);
-
         return service.doQueryType(context, request);
     }
 

+ 145 - 0
src/main/java/com/persagy/proxy/adm/controller/ComponentBuildingController.java

@@ -0,0 +1,145 @@
+package com.persagy.proxy.adm.controller;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import javax.servlet.http.HttpServletRequest;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import com.alibaba.fastjson.JSONObject;
+import com.fasterxml.jackson.databind.ObjectMapper;
+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.helper.SpringHelper;
+import com.persagy.dmp.common.model.response.CommonResult;
+import com.persagy.dmp.digital.client.DigitalRelationFacade;
+import com.persagy.dmp.digital.entity.ObjectDigital;
+import com.persagy.dmp.digital.entity.ObjectRelation;
+import com.persagy.proxy.adm.constant.AdmCommonConstant;
+import com.persagy.proxy.adm.constant.AdmObjectType;
+import com.persagy.proxy.adm.constant.AdmRelationType;
+import com.persagy.proxy.adm.constant.GraphCodeEnum;
+import com.persagy.proxy.adm.constant.RelCodeEnum;
+import com.persagy.proxy.adm.request.AdmQueryCriteria;
+import com.persagy.proxy.adm.request.AdmResponse;
+import com.persagy.proxy.adm.strategy.RelationObjectContext;
+
+import cn.hutool.core.collection.CollectionUtil;
+import cn.hutool.core.util.StrUtil;
+
+/**
+ * 
+ * @version 1.0.0
+ * @company persagy 
+ * @author zhangqiankun
+ * @date 2021年9月8日 下午7:28:00
+ */
+@RestController
+public class ComponentBuildingController {
+
+	@Autowired
+	private RelationObjectContext relationObjectContext;
+	
+	/**
+	 * 建筑查询,这里查楼层都是从属关系,而非服务关系
+	 * @param queryCriteria
+	 * @param request
+	 * @return
+	 */
+	@RequestMapping("/building/query")
+	public AdmResponse queryBuilding(@RequestBody AdmQueryCriteria queryCriteria, HttpServletRequest request) {
+		String groupCode = request.getHeader(AdmCommonConstant.GROUP_CODE_HEADER);
+		String projectId = request.getHeader(AdmCommonConstant.PROJECT_ID_HEADER);
+		
+		// 查询出所有的建筑对象
+		RequestData requestData = new RequestData();
+		requestData.setGraphCode(GraphCodeEnum.ArchSubset.name());
+		requestData.setRelCode(RelCodeEnum.Bd2Fl.name());
+		requestData.setPage(1L);
+		requestData.setSize(1000L);
+		
+		List<ObjectDigital> masterObjs = this.relationObjectContext.queryPageObjectInfo(requestData, groupCode, projectId, AdmRelationType.BD2FL_ARCHSUBSET);
+		this.handleMasterObjs(masterObjs, groupCode, projectId);
+		return AdmResponse.success();
+	}
+
+	/**
+	 * 处理响应结果集
+	 * 
+	 * @param masterObjs
+	 * @param groupCode
+	 * @param projectId
+	 */
+	private List<JSONObject> handleMasterObjs(List<ObjectDigital> masterObjs, String groupCode, String projectId) {
+		Map<String, Long> modelIds = new HashMap<String, Long>();
+		List<JSONObject> resultList = new ArrayList<JSONObject>();
+		
+		// 遍历所有主对象
+		for (ObjectDigital master : masterObjs) {
+			JSONObject result = new JSONObject();
+			
+			result.put("id", master.getId());
+			result.put("localId", master.getLocalId());
+			result.put("localName", master.getLocalName());
+			result.put("name", master.getName());
+			result.put("objectType", master.getObjType());
+			result.put("projectId", master.getProjectId());
+			result.put("infos", master.getInfos());
+			result.put("createTime", master.getCreationTime() == null ? null : master.getCreationTime().toString("yyyy-DD-MM 24HH:mm:ss"));
+			result.put("lastUpdate", master.getModifiedTime() == null ? null : master.getModifiedTime().toString("yyyy-DD-MM 24HH:mm:ss"));
+			result.put("statistics", new JSONObject());
+			
+			List<ObjectDigital> slaveObjs = master.getRelObjs();
+			if (CollectionUtil.isNotEmpty(slaveObjs)) {
+				// 遍历所有的从对象
+				for (ObjectDigital slave : slaveObjs) {
+					ObjectNode infos = slave.getInfos();
+					String outline = infos.get("outline") == null ? null : infos.get("outline").asText();
+					String modelFile = infos.get("modelFile") == null ? null : infos.get("modelFile").asText();
+					if (StrUtil.isEmpty(outline) && StrUtil.isNotBlank(modelFile)) {
+						// 判断此模型是否被多处使用
+						if (modelIds.containsKey(modelFile)) {
+							result.put("count", modelIds.get(modelFile));
+						} else {
+							long count = this.getNumByModelId(groupCode, projectId, modelFile);
+							result.put("count", count);
+							modelIds.put(modelFile, count);
+						}
+					}
+				}
+			}
+			
+			resultList.add(result);
+		}
+		
+		return resultList;
+	}
+	
+	/**
+	 * 获取此项目使用此模型ID的所有楼层数量
+	 * 
+	 * @param groupCode
+	 * @param projectId
+	 * @param modelId
+	 * @return
+	 */
+	private long getNumByModelId(String groupCode, String projectId, String modelId) {
+		QueryCriteria queryCriteria = new QueryCriteria();
+		ObjectMapper objectMapper = SpringHelper.getBean(ObjectMapper.class);
+		ObjectNode objectNode = objectMapper.createObjectNode();
+		objectNode.put("classCode", AdmObjectType.FLOOR.getIndex());
+		objectNode.put("modelFile", modelId);
+		queryCriteria.setCriteria(objectNode);
+		queryCriteria.setOnlyCount(true);
+		CommonResult<List<ObjectRelation>> result = DigitalRelationFacade.queryPrototype(groupCode, projectId, AdmCommonConstant.APP_ID, AdmCommonConstant.USER_ID, queryCriteria);
+		return result == null ? 0 : (result.getCount() == null ? 0 : result.getCount());
+	}
+	
+}

+ 191 - 0
src/main/java/com/persagy/proxy/adm/controller/ComponentStatisticsController.java

@@ -0,0 +1,191 @@
+package com.persagy.proxy.adm.controller;
+
+import java.util.List;
+
+import javax.servlet.http.HttpServletRequest;
+
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import com.alibaba.fastjson.JSONObject;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.fasterxml.jackson.databind.node.ObjectNode;
+import com.persagy.dmp.basic.model.QueryCriteria;
+import com.persagy.dmp.common.helper.SpringHelper;
+import com.persagy.dmp.common.model.response.CommonResult;
+import com.persagy.dmp.digital.client.DigitalObjectFacade;
+import com.persagy.dmp.digital.client.DigitalRelationFacade;
+import com.persagy.dmp.digital.entity.ObjectRelation;
+import com.persagy.proxy.adm.constant.AdmCommonConstant;
+import com.persagy.proxy.adm.constant.AdmObjectType;
+import com.persagy.proxy.adm.constant.AdmRelationTypeEnum;
+import com.persagy.proxy.adm.request.AdmCountResponse;
+
+/**
+ * 统计接口
+ * 
+ * @version 1.0.0
+ * @company persagy 
+ * @author zhangqiankun
+ * @date 2021年9月8日 下午7:51:56
+ */
+@RestController
+@RequestMapping("/statistics")
+public class ComponentStatisticsController {
+
+	/**
+	 * 台账中待删除的对象
+	 * <p>条件:"filters": "taskState = -1"</p>
+	 * @param queryCriteria
+	 * @param request
+	 * @return
+	 */
+	@RequestMapping(value = "/object-delete-count")
+	public AdmCountResponse objectDeleteCount(@RequestBody JSONObject params, HttpServletRequest request) {
+		return AdmCountResponse.success(0L);
+	}
+	
+	/**
+	 * 不能同步到物理世界的关系数据
+	 * 
+	 * @param params
+	 * @param request
+	 * @return
+	 */
+	@RequestMapping(value = "/unsyn-relation-count")
+	public AdmCountResponse unsynRelationCount(HttpServletRequest request) {
+		return AdmCountResponse.success(0L);
+	}
+	
+	/**
+	 * 岗位和关联的资产信息点值不一致
+	 * 
+	 * @param request
+	 * @return
+	 */
+	@RequestMapping(value = "/eq2pe-count")
+	public AdmCountResponse eq2peCount(HttpServletRequest request) {
+		return AdmCountResponse.success(0L);
+	}
+	
+	/**
+	 * 岗位和关联的资产信息点值不一致的数据
+	 * 
+	 * @param request
+	 * @return
+	 */
+	@RequestMapping(value = "/eq2pe-different")
+	public AdmCountResponse eq2peDifferent(HttpServletRequest request) {
+		return AdmCountResponse.success(0L);
+	}
+	
+	/**
+	 * 设备-未关联资产的设备,这里返回所有的设备
+	 * 
+	 * @param params
+	 * @param request
+	 * @return
+	 */
+	@RequestMapping(value = "/uneq2pe-count")
+	public AdmCountResponse uneq2peCount(HttpServletRequest request) {
+		String groupCode = request.getHeader(AdmCommonConstant.GROUP_CODE_HEADER);
+		String projectId = request.getHeader(AdmCommonConstant.PROJECT_ID_HEADER);
+		
+		QueryCriteria queryCriteria = new QueryCriteria();
+		ObjectMapper objectMapper = SpringHelper.getBean(ObjectMapper.class);
+		ObjectNode objectNode = objectMapper.createObjectNode();
+		objectNode.put("classCode", AdmObjectType.EQUIPMENT.getIndex());
+		queryCriteria.setCriteria(objectNode);
+		queryCriteria.setOnlyCount(true);
+		CommonResult<List<ObjectNode>> result = DigitalObjectFacade.queryPrototype(groupCode, projectId, AdmCommonConstant.APP_ID, AdmCommonConstant.USER_ID, queryCriteria);
+		long count = result == null ? 0 : (result.getCount() == null ? 0 : result.getCount());
+		return AdmCountResponse.success(count);
+	}
+	
+	/**
+	 * 业务空间-各分区占比
+	 * 
+	 * @param request
+	 * @return
+	 */
+	@RequestMapping(value = "/sp-objecttype-count")
+	public AdmCountResponse spObjectTypeCount(HttpServletRequest request) {
+		//String groupCode = request.getHeader(AdmCommonConstant.GROUP_CODE_HEADER);
+		//String projectId = request.getHeader(AdmCommonConstant.PROJECT_ID_HEADER);
+		return AdmCountResponse.success(0L);
+	}
+	
+	/**
+	 * 业务空间-默认分区功能类型占比
+	 * 
+	 * @param request
+	 * @return
+	 */
+	@RequestMapping(value = "/general-sp-functype-count")
+	public AdmCountResponse generalSpFunctypeCount(HttpServletRequest request) {
+		//String groupCode = request.getHeader(AdmCommonConstant.GROUP_CODE_HEADER);
+		//String projectId = request.getHeader(AdmCommonConstant.PROJECT_ID_HEADER);
+		return AdmCountResponse.success(0L);
+	}
+	
+	/**
+	 * 租户-关联业务空间完成度
+	 * 
+	 * @param request
+	 * @return
+	 */
+	@RequestMapping(value = "/tenant2sp-count")
+	public AdmCountResponse tenant2spCount(HttpServletRequest request) {
+		String groupCode = request.getHeader(AdmCommonConstant.GROUP_CODE_HEADER);
+		String projectId = request.getHeader(AdmCommonConstant.PROJECT_ID_HEADER);
+		
+		QueryCriteria queryCriteria = new QueryCriteria();
+		ObjectMapper objectMapper = SpringHelper.getBean(ObjectMapper.class);
+		ObjectNode objectNode = objectMapper.createObjectNode();
+		objectNode.put("graphCode", AdmRelationTypeEnum.TN2SP.getGraphCode());
+		objectNode.put("relCode", AdmRelationTypeEnum.TN2SP.getRelCode());
+		queryCriteria.setCriteria(objectNode);
+		queryCriteria.setOnlyCount(true);
+		CommonResult<List<ObjectRelation>> result = DigitalRelationFacade.queryPrototype(groupCode, projectId, AdmCommonConstant.APP_ID, AdmCommonConstant.USER_ID, queryCriteria);
+		long count = result == null ? 0 : (result.getCount() == null ? 0 : result.getCount());
+		return AdmCountResponse.success(count);
+	}
+	
+	/**
+	 * 竖井-关联业务空间完成度
+	 * 
+	 * @param request
+	 * @return
+	 */
+	@RequestMapping(value = "/shaft2sp-count")
+	public AdmCountResponse shaft2spCount(HttpServletRequest request) {
+		String groupCode = request.getHeader(AdmCommonConstant.GROUP_CODE_HEADER);
+		String projectId = request.getHeader(AdmCommonConstant.PROJECT_ID_HEADER);
+		
+		QueryCriteria queryCriteria = new QueryCriteria();
+		ObjectMapper objectMapper = SpringHelper.getBean(ObjectMapper.class);
+		ObjectNode objectNode = objectMapper.createObjectNode();
+		objectNode.put("graphCode", AdmRelationTypeEnum.SH2SP.getGraphCode());
+		objectNode.put("relCode", AdmRelationTypeEnum.SH2SP.getRelCode());
+		queryCriteria.setCriteria(objectNode);
+		queryCriteria.setOnlyCount(true);
+		CommonResult<List<ObjectRelation>> result = DigitalRelationFacade.queryPrototype(groupCode, projectId, AdmCommonConstant.APP_ID, AdmCommonConstant.USER_ID, queryCriteria);
+		long count = result == null ? 0 : (result.getCount() == null ? 0 : result.getCount());
+		return AdmCountResponse.success(count);
+	}
+	
+	/**
+	 * 竖井-按功能类型占比
+	 * 
+	 * @param request
+	 * @return
+	 */
+	@RequestMapping(value = "/shaft-functype-count")
+	public AdmCountResponse shaftFunctypeCount(HttpServletRequest request) {
+		//String groupCode = request.getHeader(AdmCommonConstant.GROUP_CODE_HEADER);
+		//String projectId = request.getHeader(AdmCommonConstant.PROJECT_ID_HEADER);
+		return AdmCountResponse.success(0L);
+	}
+	
+}

+ 6 - 6
src/main/java/com/persagy/proxy/adm/controller/RelationReportController.java

@@ -34,7 +34,7 @@ import com.persagy.proxy.adm.constant.AdmCommonConstant;
 import com.persagy.proxy.adm.model.AdmRelationObject;
 import com.persagy.proxy.adm.request.AdmResponse;
 import com.persagy.proxy.adm.service.IRelationReportService;
-import com.persagy.proxy.adm.strategy.QueryRelationObjectContext;
+import com.persagy.proxy.adm.strategy.RelationObjectContext;
 
 import cn.hutool.core.util.StrUtil;
 import lombok.extern.slf4j.Slf4j;
@@ -54,10 +54,10 @@ public class RelationReportController {
 	public static final String EXPORT_SHEET_NAME = "关系维护";
 	
 	@Autowired
-	private IRelationReportService relationReportService;
+	private RelationObjectContext relationObjectContext;
 	
 	@Autowired
-	private QueryRelationObjectContext queryRelationObjectContext;
+	private IRelationReportService relationReportService;
 	
 	/**
 	 * 查询总览数量-根据类型查询关系数量
@@ -68,7 +68,7 @@ public class RelationReportController {
 	public AdmResponse countRelationObjects(@RequestParam String type, HttpServletRequest request) {
 		String groupCode = request.getHeader(AdmCommonConstant.GROUP_CODE_HEADER);
 		String projectId = request.getHeader(AdmCommonConstant.PROJECT_ID_HEADER);
-		int count = this.queryRelationObjectContext.countRelationObjects(groupCode, projectId, type);
+		long count = this.relationObjectContext.countRelationObjects(groupCode, projectId, type);
 		JSONObject result = new JSONObject();
 		result.put("count", count);
 		result.put("relationType", type);
@@ -312,7 +312,7 @@ public class RelationReportController {
 		    	relationObject.setSlaveId(slaveIdCell == null ? null : slaveIdCell.getStringCellValue());
 		    	
 		    	// 校验数据
-				Object result = this.queryRelationObjectContext.checkRelationObject(relationObject, groupCode, projectId, relType, code);
+				Object result = this.relationObjectContext.checkRelationObject(relationObject, groupCode, projectId, relType, code);
 				if (result instanceof String) {
 					failurNum++;
 					xssfRow.createCell(16).setCellValue((String)result);
@@ -325,7 +325,7 @@ public class RelationReportController {
 				rowNums.add(i);
 				relationObjects.add(relation);
 				if (relationObjects.size() >= 1000) {
-					boolean objects = this.queryRelationObjectContext.saveRelationObjects(relationObjects, groupCode, projectId, relType);
+					boolean objects = this.relationObjectContext.saveRelationObjects(relationObjects, groupCode, projectId, relType);
 					if (objects) {
 						successNum += relationObjects.size();
 					} else {

+ 28 - 0
src/main/java/com/persagy/proxy/adm/model/AdmDCSQueryRequest.java

@@ -0,0 +1,28 @@
+package com.persagy.proxy.adm.model;
+
+import com.persagy.proxy.adm.request.AdmQueryCriteria;
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * 业务空间查询请求体
+ * @author lvxy
+ * @date 2021/9/8
+ */
+@Data
+public class AdmDCSQueryRequest extends AdmQueryCriteria {
+    /** 楼层id */
+    
+    private String floorId;
+
+    /** 建筑id */
+   
+    private String buildingId;
+
+    /** 空间类型 */
+    private String zoneType;
+
+    /** 空间类型 空间类型列表 */ 
+    private List<String> zoneTypeList;
+}

+ 19 - 0
src/main/java/com/persagy/proxy/adm/model/AdmSpace.java

@@ -133,4 +133,23 @@ public class AdmSpace {
     //private T spaceOutline;
     /** 对象类型 */
     private String objectType = "space";
+
+    public String getZoneType(){
+        return zoneType;
+
+    }
+    public void setZoneType(String zoneType){
+        this.zoneType = zoneType;
+        this.classCode = zoneType;
+    }
+
+    public String getClassCode(){
+        return classCode;
+    }
+    public void setClassCode(String classCode){
+        this.zoneType = classCode;
+        this.classCode = classCode;
+    }
+
+
 }

+ 20 - 0
src/main/java/com/persagy/proxy/adm/model/AdmUpDataFloorAndBuildingRequests.java

@@ -0,0 +1,20 @@
+package com.persagy.proxy.adm.model;
+
+import lombok.Data;
+
+/**
+ * 间和楼层建筑的关系
+ * @author lvxy
+ * @date 2021/9/7
+ */
+@Data
+public class AdmUpDataFloorAndBuildingRequests {
+    /** 业务空间id */
+    private String spaceId;
+
+    /** 建筑或楼层id */
+    private String id;
+
+    /** 业务空间类型 */
+    private String type;
+}

+ 38 - 0
src/main/java/com/persagy/proxy/adm/request/AdmCountResponse.java

@@ -0,0 +1,38 @@
+package com.persagy.proxy.adm.request;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * ADM 通用返回结果
+ * @author Charlie Yu
+ * @date 2021-08-16
+ */
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+public class AdmCountResponse {
+    private final static String SUCCESS = "success";
+    private final static String FAILURE = "failure";
+    
+    /** 结果 */
+    private String result;
+    /** 消息 */
+    private String message;
+    /** 符合条件的总记录数 */
+    private Long count;
+
+    public static AdmCountResponse success() {
+        return new AdmCountResponse(SUCCESS, null, null);
+    }
+    
+    public static AdmCountResponse success(Long count) {
+        return new AdmCountResponse(SUCCESS, null, count);
+    }
+
+    public static AdmCountResponse failure(String message) {
+        return new AdmCountResponse(FAILURE, message, null);
+    }
+
+}

+ 5 - 42
src/main/java/com/persagy/proxy/adm/service/IAdmSpaceService.java

@@ -1,13 +1,13 @@
 package com.persagy.proxy.adm.service;
 
-import com.persagy.proxy.adm.model.AdmBuilding;
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
 import com.persagy.proxy.adm.model.AdmDCSQueryRequest;
 import com.persagy.proxy.adm.model.AdmSpace;
 import com.persagy.proxy.adm.model.AdmUpDataFloorAndBuildingRequests;
 import com.persagy.proxy.adm.request.AdmQueryCriteria;
 import com.persagy.proxy.adm.request.AdmResponse;
 import com.persagy.proxy.common.entity.InstanceUrlParam;
-import org.apache.poi.ss.formula.functions.T;
 
 import java.util.List;
 
@@ -28,49 +28,12 @@ public interface IAdmSpaceService extends IAdmBaseService<AdmSpace>{
     List<AdmSpace> doInsertExt(InstanceUrlParam context, Class<AdmSpace> clazz, List<AdmSpace> voList);
 
     /**
-     * 修改
-     * @param context
-     * @param clazz
-     * @param voList
-     * @return
-     */
-    List<AdmSpace> doUpdateExt(InstanceUrlParam context, Class<AdmSpace> clazz, List<AdmSpace> voList);
-
-    /**
-     * 修改空间对象的楼层建筑信息
-     * @param context
-     * @param voList
-     * @return
-     */
-    List<AdmSpace> doUpdateFloorORBuilding(InstanceUrlParam context, List<AdmUpDataFloorAndBuildingRequests> voList);
-
-    /**
-     * 修改空间轮廓线
-     * @param context
-     * @param clazz
-     * @param voList
-     * @return
-     */
-    List<AdmSpace> doUpdateOutline(InstanceUrlParam context, Class<AdmSpace> clazz, List<AdmSpace> voList);
-
-
-    /**
-     * 删除
-     *
-     * @param context
-     * @param voList
-     * @return
-     */
-    void doDeleteExt(InstanceUrlParam context, List<AdmSpace> voList);
-
-    /**
      * 查询业务空间所有类型
      */
     AdmResponse doQueryType(InstanceUrlParam context, AdmDCSQueryRequest request);
-
-
     /**
-     * 查询业务空间
+     * 查询业务空间 级联查询:建筑(buildingList),楼层(floorlList),空间类型(objectType)未明确楼层(isnull),未明确建筑(isnull)
      */
-    AdmResponse doQuerySpaces(InstanceUrlParam context, AdmQueryCriteria request, Class<AdmSpace> clazz);
+    AdmResponse doQuerySpaces(InstanceUrlParam context, AdmDCSQueryRequest request);
+    List<JSONObject> doQuerySpaceTypes(InstanceUrlParam context);
 }

+ 244 - 122
src/main/java/com/persagy/proxy/adm/service/impl/AdmSpaceServiceImpl.java

@@ -3,7 +3,6 @@ package com.persagy.proxy.adm.service.impl;
 import cn.hutool.core.collection.CollUtil;
 import cn.hutool.core.util.StrUtil;
 import cn.hutool.json.JSONUtil;
-import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
 import com.fasterxml.jackson.core.JsonProcessingException;
@@ -15,9 +14,9 @@ import com.persagy.dmp.basic.model.QueryCriteria;
 import com.persagy.dmp.common.model.entity.BaseEntity;
 import com.persagy.dmp.define.entity.ObjectTypeDefine;
 import com.persagy.proxy.adm.model.*;
-import com.persagy.proxy.adm.request.AdmQueryCriteria;
 import com.persagy.proxy.adm.request.AdmResponse;
 import com.persagy.proxy.adm.service.IAdmSpaceService;
+import com.persagy.proxy.adm.utils.AdmQueryCriteriaHelper;
 import com.persagy.proxy.common.client.DmpRwdClient;
 import com.persagy.proxy.common.entity.DmpResult;
 import com.persagy.proxy.common.entity.InstanceUrlParam;
@@ -47,8 +46,8 @@ public class AdmSpaceServiceImpl extends AbstractAdmBaseServiceImpl<AdmSpace> im
         Map<String, AdmSpace> spaceIdMap = CollUtil.fieldValueMap(voList, BaseEntity.PROP_ID);
         //key spid, value floorId
         Map<String, String> spId2FlId_map = voList.stream().filter(admSpace -> StrUtil.isNotEmpty(admSpace.getFloorId())).collect(Collectors.toMap(AdmSpace::getId,AdmSpace::getFloorId));
-        //查询空间中floorId 对应的flool
-        DmpResult<JSONArray> floors = queryFloors(context, spId2FlId_map);
+        //查询空间中floorId 对应的floor
+        DmpResult<JSONArray> floors = queryFloorsByFloorIds(context, spId2FlId_map.values());
         ArrayList<AdmFloor> floorList = CollUtil.newArrayList(JSONUtil.toList(floors.getData().toString(),AdmFloor.class));
         //space.height = floor.infos.height
         List<AdmSpace> vos = processHeight(spaceIdMap, floorList, spId2FlId_map);
@@ -63,59 +62,17 @@ public class AdmSpaceServiceImpl extends AbstractAdmBaseServiceImpl<AdmSpace> im
     }
 
     @Override
-    public List<AdmSpace> doUpdateExt(InstanceUrlParam context, Class<AdmSpace> clazz, List<AdmSpace> voList) {
-        return null;
-    }
-
-
-
-    @Override
-    public List<AdmSpace> doUpdateFloorORBuilding(InstanceUrlParam context, List<AdmUpDataFloorAndBuildingRequests> voList) {
-
-            voList.stream().forEach(requestData -> {
-
-            });
-
-            //根据id查询对象集合
-            //处理关系
-
-
-
-
-
-        return null;
-    }
-
-    @Override
-    public List<AdmSpace> doUpdateOutline(InstanceUrlParam context, Class<AdmSpace> clazz, List<AdmSpace> voList) {
-        return null;
-    }
-
-    @Override
-    public void doDeleteExt(InstanceUrlParam context, List<AdmSpace> voList) {
-
-    }
-
-    @Override
     public AdmResponse doQueryType(InstanceUrlParam context, AdmDCSQueryRequest request) {
         //查询定义类型
-        DmpResult<JSONArray> resultDef = queryDefineType(context);
+        ObjectNode criteriaEq = JsonNodeFactory.instance.objectNode();
+        criteriaEq.put("parentCode", "space");
+        DmpResult<JSONArray> resultDef = queryDefineType(context, criteriaEq);
         List<JSONObject> defineList = null;
         if(resultDef.getResult().equals(DmpResult.SUCCESS)){
             defineList = JSONUtil.toList(resultDef.getData().toString(), JSONObject.class);
             //获取实际空间对象的数量
-            Map<String, JSONObject> classCodeMap = CollUtil.fieldValueMap(defineList, "code");
-            if(StrUtil.isNotEmpty(request.getFloorId())){
-                //根据classCode floorId 查询查询实际存在的空间
-                //根据floorId查询关系 Fl2Sp
-                DmpResult<List<ObjRelationDTO>> relationDmpResult = queryRelationByFloorId(context, "Fl2Sp",  request.getFloorId());
-                //根据关系查询结果中的spaceId查询存在的空间数量
-                Map<String, ObjRelationDTO> relationMap = new HashMap<>(16);
-                if(CollUtil.isEmpty(relationDmpResult.getData())){
-                    relationMap = CollUtil.fieldValueMap(relationDmpResult.getData(), "objTo");
-                }
-                transTo(context, defineList, relationMap.keySet());
-            }
+            //根据classCode floorId 查询查询实际存在的空间
+            assembleDefineTypes(context, defineList, request.getFloorId());
             // 设置返回值
             AdmResponse response = AdmResponse.success(defineList);
             Long total = resultDef.getCount() == null ? null : resultDef.getCount().longValue();
@@ -127,45 +84,212 @@ public class AdmSpaceServiceImpl extends AbstractAdmBaseServiceImpl<AdmSpace> im
     }
 
     @Override
-    public AdmResponse doQuerySpaces(InstanceUrlParam context, AdmQueryCriteria request, Class<AdmSpace> clazz) {
-        return null;
+    public AdmResponse doQuerySpaces(InstanceUrlParam context, AdmDCSQueryRequest request) {
+        QueryCriteria dmpRequest = AdmQueryCriteriaHelper.toDmpCriteria(request);
+        //查询的时候,floorId,buildingId 按照空间对象的自定义信息点处理
+        //TODO 这个ifelse判断是原来的代码实现,写此方法实现的时候不清楚实际业务,保留原来的判断,之后了解业务再根据业务调整
+        DmpResult<JSONArray> dmpResult = new DmpResult<>();
+        List spaceArray = new ArrayList();
+        List<String> zoneTypeList = StrUtil.isNotEmpty(request.getZoneType()) ? CollUtil.newArrayList(request.getZoneType()) : request.getZoneTypeList();
+        if(StrUtil.isNotEmpty(request.getBuildingId()) && StrUtil.isNotEmpty(request.getFloorId()) && !request.getFloorId().equals("isnull")){
+            querySpaceByFl(dmpRequest,context, spaceArray, zoneTypeList, request.getFloorId(), "Fl2Sp");
+
+        }else if(StrUtil.isNotEmpty(request.getBuildingId()) && StrUtil.isNotEmpty(request.getFloorId()) && request.getFloorId().equals("isnull")){
+            QueryCriteria queryFloor = ensureQueryCommParm(dmpRequest,context, Arrays.asList("floor"), "floor");
+            ObjectNode criteriaFl = queryFloor.getCriteria();
+            criteriaFl.put("buildingId", request.getBuildingId());
+            queryFloor.setCriteria(criteriaFl);
+            DmpResult<JSONArray> dmpResultFloors = queryObj(context, queryFloor);
+            List<AdmFloor> floorList = JSONUtil.toList(JSONUtil.toJsonStr(dmpResultFloors.getData()), AdmFloor.class);
+            Map<String, AdmFloor> floorMap = CollUtil.fieldValueMap(floorList, BaseEntity.PROP_ID);
+
+            if(CollUtil.isNotEmpty(floorMap)){
+                QueryCriteria queryCriteria = ensureQueryCommParm(dmpRequest, context, zoneTypeList, "space");
+                ObjectNode criteriaPe = queryCriteria.getCriteria();
+                JSONArray jsonArray = new JSONArray();
+                floorMap.keySet().forEach(floorId -> jsonArray.add(floorId));
+                criteriaPe.putPOJO("floorId", jsonArray);
+                queryCriteria.setCriteria(criteriaPe);
+                dmpResult = queryObj(context, queryCriteria);
+                if(CollUtil.isNotEmpty(dmpResult.getData())){
+                    spaceArray.addAll(dmpResult.getData());
+                }
+                querySpaceByFl(dmpRequest, context, spaceArray, zoneTypeList, request.getBuildingId(), "Bd2Sp");
+            }
+        }else if(StrUtil.isNotEmpty(request.getBuildingId()) && StrUtil.isEmpty(request.getFloorId()) && !request.getBuildingId().equals("isnull")){
+            querySpaceByFl(dmpRequest,context, spaceArray, zoneTypeList, request.getBuildingId(), "Bd2Sp");
+        }else if(StrUtil.isNotEmpty(request.getBuildingId()) && StrUtil.isEmpty(request.getFloorId()) && request.getBuildingId().equals("isnull")){
+            //未明确建筑
+            QueryCriteria queryCriteria = ensureQueryCommParm(dmpRequest, context, zoneTypeList, "space");
+            ObjectNode criteriaPe = queryCriteria.getCriteria();
+            JSONObject isnull = new JSONObject();
+            isnull.put("$null", true);
+            criteriaPe.putPOJO("buildingId", isnull);
+            queryCriteria.setCriteria(criteriaPe);
+            dmpResult = queryObj(context, queryCriteria);
+            if(CollUtil.isNotEmpty(dmpResult.getData())){
+                spaceArray.addAll(dmpResult.getData());
+            }
+        }else if(StrUtil.isEmpty(request.getBuildingId()) && StrUtil.isEmpty(request.getFloorId())){
+            QueryCriteria queryCriteria = ensureQueryCommParm(dmpRequest, context, zoneTypeList, "space");
+            ObjectNode criteriaPe = queryCriteria.getCriteria();
+            JSONObject isnull = new JSONObject();
+            isnull.put("$null", false);
+            criteriaPe.putPOJO("floorId", isnull);
+            queryCriteria.setCriteria(criteriaPe);
+            dmpResult = queryObj(context, queryCriteria);
+            if(CollUtil.isNotEmpty(dmpResult.getData())){
+                spaceArray.addAll(dmpResult.getData());
+            }
+        }
+        //处理查询结果转化为目标返回值
+        List<JSONObject> jsonObjects = new ArrayList<JSONObject>();
+        if(CollUtil.isNotEmpty(spaceArray)){
+            List<AdmSpace> spaceList = JSONUtil.toList(JSONUtil.toJsonStr(spaceArray), AdmSpace.class);
+            Map<String, AdmSpace> admSpaceMap = CollUtil.fieldValueMap(spaceList, BaseEntity.PROP_ID);
+            admSpaceMap.values().stream().forEach(admSpace -> {
+                JSONObject jsonObject = new JSONObject();
+                jsonObject.put("zoneType", admSpace.getClassCode());
+                jsonObject.put("floorId", admSpace.getFloorId());
+                jsonObjects.add(jsonObject);
+            });
+        }
+        AdmResponse admResponse = new AdmResponse();
+        admResponse.setContent(jsonObjects);
+        admResponse.setTotal(jsonObjects.size()*1l);
+        admResponse.setPageSize(request.getPageSize());
+        admResponse.setPageNumber(request.getPageNumber());
+        return admResponse;
     }
 
+    /**
+     * 根据信息点查询空间
+     * @param context
+     * @param spaceArray
+     * @param zoneTypeList
+     * @param objFrom  flooIds /  bulidingIds
+     * @param relCode
+     */
+    private void querySpaceByFl(QueryCriteria dmpRequest, InstanceUrlParam context, List spaceArray, List<String> zoneTypeList, String objFrom, String relCode){
+        QueryCriteria queryCriteria = ensureQueryCommParm(dmpRequest,context, zoneTypeList, "space");
+        addRelationTo(queryCriteria,objFrom,relCode);
+        DmpResult<JSONArray> dmpResult = queryObj(context, queryCriteria);
+        if(CollUtil.isNotEmpty(dmpResult.getData())){
+            spaceArray.addAll(dmpResult.getData());
+        }
+    }
 
     /**
-     * 查询空间flooId对应的infos中height存在的 flool
+     * 空间的类型是根据项目自定义的
+     * 参见中心
+     * @Select("SELECT s.object_type as type,d.name  FROM zone_space_base s
+     * LEFT JOIN dict.dict_space_project d ON s.object_type = d.id WHERE s.project_id = #{projectId} AND d.project_id = #{projectId}
+     * GROUP BY object_type, d.name")
      * @param context
-     * @param spId2FlId_map
      * @return
      */
-    private DmpResult<JSONArray> queryFloors(InstanceUrlParam context, Map<String, String> spId2FlId_map){
-        QueryCriteria criteriaObject = new QueryCriteria();
-        ObjectNode criteriaPe = JsonNodeFactory.instance.objectNode();
-        ArrayNode array = criteriaPe.putObject("id").putArray("$in");
-        spId2FlId_map.values().forEach(floorId -> array.add(floorId));
-        criteriaPe.put("classCode", "floor");
-        criteriaPe.put("objType", "floor");
-
-        JSONObject height = new JSONObject();
-        height.put("$gt", 0f);
-        criteriaPe.putPOJO("height", height);
+    @Override
+    public List<JSONObject> doQuerySpaceTypes(InstanceUrlParam context) {
+        //根据项目id查询空间类型
+        Map<String, String> codeNameMap = queryProjectDefineType(context);
+        if(CollUtil.isNotEmpty(codeNameMap)){
+            //查询object
+            JSONArray demObjs = queryAndDealObjs(context, codeNameMap.keySet());
+            if(CollUtil.isNotEmpty(demObjs)){
+                List<AdmSpace> spaceList = JSONArray.parseArray(JSONUtil.toJsonStr(demObjs), AdmSpace.class);
+                Set<String> classCodes = spaceList.stream().map(space -> space.getClassCode()).collect(Collectors.toSet());
+                if(CollUtil.isNotEmpty(classCodes)){
+                    codeNameMap.keySet().removeIf(code -> !classCodes.contains(code));
+                }
+            }
+        }
+        if(CollUtil.isNotEmpty(codeNameMap)){
+            List<JSONObject> list = new ArrayList<>(codeNameMap.size());
+            codeNameMap.keySet().stream().forEach(code ->{
+                JSONObject jsonObject = new JSONObject();
+                jsonObject.put("name",codeNameMap.get(code));
+                jsonObject.put("code",code);
+                list.add(jsonObject);
+            });
+            return  list;
+        }else{
+            return null;
+        }
+    }
 
-        criteriaObject.setCriteria(criteriaPe);
-        criteriaObject.setSize(spId2FlId_map.size() * 1L);
-        criteriaObject.setPage(1L);
-        criteriaObject.setWithoutCount(true);
-        // 转换参数
+    private DmpResult<JSONArray> queryObj(InstanceUrlParam context, QueryCriteria criteriaObject){
         JSONObject paraPe = null;
         try {
             String paraStr = objectMapper.writeValueAsString(criteriaObject);
             paraPe = JSONObject.parseObject(paraStr);
         } catch (JsonProcessingException e) {
-            log.error(e.getMessage(), e);
-            return null;
+            throw new RuntimeException("转换查询条件出错:" + e.getMessage());
         }
         return rwdClient.queryObject(context, paraPe);
     }
 
+    private QueryCriteria ensureQueryCommParm(QueryCriteria dmpRequest, InstanceUrlParam context, Collection<String> classCodes, String objType){
+        ObjectNode criteriaEq = JsonNodeFactory.instance.objectNode();
+        if(CollUtil.isNotEmpty(classCodes)){
+            ArrayNode array = criteriaEq.putObject("classCode").putArray("$in");
+            classCodes.forEach(code -> array.add(code));
+        }
+        criteriaEq.put("objType", objType);
+        dmpRequest.setCriteria(criteriaEq);
+        return dmpRequest;
+    }
+
+    private JSONArray queryAndDealObjs(InstanceUrlParam context, Set<String> codes){
+        QueryCriteria criteriaObject = ensureQueryCommParm(new QueryCriteria(), context, codes,"space");
+        criteriaObject.setSize(50L);
+        DmpResult<JSONArray> dmpResult = queryObj(context, criteriaObject);
+        if(CollUtil.isEmpty(dmpResult.getData())){
+            return null;
+        }
+        JSONArray demObjs = dmpResult.getData();
+        if(dmpResult.getCount() > criteriaObject.getSize()){
+            for(int page = 2; page < dmpResult.getCount()/criteriaObject.getSize()+1; page++){
+                criteriaObject.setPage(page*1L);
+                demObjs.addAll(queryObj(context, criteriaObject).getData());
+            }
+        }
+        return demObjs;
+    }
+
+    private Map<String, String> queryProjectDefineType(InstanceUrlParam context){
+        Map<String, String> codeNameMap = null;
+        ObjectNode criteriaEq = JsonNodeFactory.instance.objectNode();
+        criteriaEq.put("projectId", context.getProjectId());
+        criteriaEq.put("objType", "space");
+        DmpResult<JSONArray> resultDef = queryDefineType(context, criteriaEq);
+        if(resultDef.getResult().equals(DmpResult.SUCCESS) && CollUtil.isNotEmpty(resultDef.getData())){
+            List<ObjectTypeDefine> defineList = JSONUtil.toList(resultDef.getData().toString(), ObjectTypeDefine.class);
+            codeNameMap = defineList.stream().collect(Collectors.toMap(ObjectTypeDefine::getCode, ObjectTypeDefine::getName, (k1,k2)->k1));
+        }
+        return codeNameMap;
+    }
+
+    /**
+     * 查询空间flooId对应的infos中height存在的 flool
+     * @param context
+     * @param floolIds
+     * @return
+     */
+    private DmpResult<JSONArray> queryFloorsByFloorIds(InstanceUrlParam context, Collection<String> floolIds){
+        QueryCriteria queryCriteria = ensureQueryCommParm(new QueryCriteria(),context, CollUtil.newArrayList("floor"),"floor");
+        ObjectNode criteriaPe = queryCriteria.getCriteria();
+        if(CollUtil.isNotEmpty(floolIds)){
+            ArrayNode array = criteriaPe.putObject("id").putArray("$in");
+            floolIds.forEach(floorId -> array.add(floorId));
+        }
+        JSONObject height = new JSONObject();
+        height.put("$gt", 0f);
+        criteriaPe.putPOJO("height", height);
+        queryCriteria.setCriteria(criteriaPe);
+        queryCriteria.setWithoutCount(true);
+        return queryObj(context, queryCriteria);
+    }
+
     /**
      * space.height = floor.infos.height
      * @param spaceIdMap
@@ -254,74 +378,72 @@ public class AdmSpaceServiceImpl extends AbstractAdmBaseServiceImpl<AdmSpace> im
     private void deleteRelation(InstanceUrlParam context, String relCode, String ObjType){
     }
 
-    /** 根据floorId查询关系 Fl2Sp
-     * @return*/
-    private DmpResult<List<ObjRelationDTO>> queryRelationByFloorId(InstanceUrlParam context, String relCode, String objFrom){
-        QueryCriteria dmpRequest = new QueryCriteria();
-        ObjectNode criteria = JsonNodeFactory.instance.objectNode();
-        criteria.put("relCode", relCode);
-        if(StrUtil.isNotEmpty(objFrom)){
-            criteria.put("objFrom", objFrom);
-        }
-        dmpRequest.setCriteria(criteria);
-        dmpRequest.setPage(1L);
-        dmpRequest.setWithoutCount(true);
-        // 转换参数
-        JSONObject paraRel = null;
-        try {
-            String paraStr = objectMapper.writeValueAsString(dmpRequest);
-            paraRel = JSONObject.parseObject(paraStr);
-        } catch (JsonProcessingException e) {
-            log.error(e.getMessage(), e);
-        }
-        return rwdClient.queryRelation(context, dmpRequest);
-    }
 
     /**
      * 转换为目标实体,并增加属性
      */
-    private void transTo(InstanceUrlParam context, List<JSONObject> defineList, Set<String> relations){
+    private void assembleDefineTypes(InstanceUrlParam context, List<JSONObject> defineList, String floorId){
         boolean needCount = true;
         defineList.stream().forEach(defineType -> {
             //查询空间数量
-            int count = needCount ? countSpace(context, defineType.getString("code"), relations) : 0;
-            defineType.put("count", count);
-            defineType.put("projectId", context.getProjectId());
+            int count = needCount ? countSpace(context, defineType.getString("code"), floorId) : 0;
+            //处理单个对象
+            assembleDefineObj(defineType, count, context.getProjectId());
         });
     }
 
     /**
-     * 查询存在空间的数量
+     * 单个转换为目标实体,并增加属性
+     */
+    private void assembleDefineObj(JSONObject defineType, int count, String projectId){
+        defineType.put("count", count);
+        defineType.put("projectId", projectId);
+        defineType.remove("aliasName");
+        defineType.remove("aliasCode");
+        defineType.remove("valid");
+        defineType.remove("objType");
+        defineType.remove("groupCode");
+        defineType.remove("parentCode");
+        defineType.remove("id");
+    }
+
+    private void addRelationTo(QueryCriteria rwdQueryCriteria, String objFrom, String relCode){
+        ObjectNode relationTO = JsonNodeFactory.instance.objectNode();
+        relationTO.put("relCode", relCode);
+        relationTO.put("objFrom", objFrom);
+        ObjectNode criteria = rwdQueryCriteria.getCriteria();
+        criteria.putPOJO("relationTo", relationTO);
+        rwdQueryCriteria.setCriteria(criteria);
+    }
+
+    private void addRelationFrom(QueryCriteria rwdQueryCriteria, String objTo, String relCode){
+        ObjectNode relationFrom = JsonNodeFactory.instance.objectNode();
+        if(StrUtil.isNotEmpty(objTo)){
+            relationFrom.put("objTo", objTo);
+        }
+        ObjectNode criteria = rwdQueryCriteria.getCriteria();
+        criteria.putPOJO("relationFrom", relationFrom);
+        rwdQueryCriteria.setCriteria(criteria);
+    }
+    /**
+     *  查询存在空间的数量
      * @param context
      * @param classCode
-     * @param spaceIds
+     * @param objFrom
      * @return
      */
-    private int countSpace(InstanceUrlParam context, String classCode, Set<String> spaceIds){
-        QueryCriteria rwdQueryCriteria = new QueryCriteria();
-        ObjectNode rwdCriteria = JsonNodeFactory.instance.objectNode();
-        ArrayNode arrayIds = rwdCriteria.putObject("id").putArray("$in");
-        spaceIds.forEach(spaceId -> arrayIds.add(spaceId));
-        rwdCriteria.put("objType", "space");
-        rwdCriteria.put("classCode", classCode);
-        rwdQueryCriteria.setCriteria(rwdCriteria);
-        rwdQueryCriteria.setOnlyCount(true);
-        // 转换参数
-        JSONObject paraRel = null;
-        try {
-            String paraStr = objectMapper.writeValueAsString(rwdQueryCriteria);
-            paraRel = JSONObject.parseObject(paraStr);
-        } catch (JsonProcessingException e) {
-            log.error(e.getMessage(), e);
-        }
-        return rwdClient.queryObject(context, paraRel).getCount();
+    private int countSpace(InstanceUrlParam context, String classCode, String objFrom){
+        QueryCriteria queryCriteria = ensureQueryCommParm(new QueryCriteria(), context, CollUtil.newArrayList(classCode),"space");
+        addRelationTo(queryCriteria, objFrom,"Fl2Sp");
+        queryCriteria.setOnlyCount(true);
+        DmpResult<JSONArray> dmpResult = queryObj(context, queryCriteria);
+        return dmpResult.getCount();
     }
 
 
-    private DmpResult<JSONArray> queryDefineType(InstanceUrlParam context){
+    private DmpResult<JSONArray> queryDefineType(InstanceUrlParam context, ObjectNode criteriaEq){
         QueryCriteria criteriaObject = new QueryCriteria();
-        ObjectNode criteriaEq = JsonNodeFactory.instance.objectNode();
-        criteriaEq.put("parentCode", "space");
+        criteriaObject.setCriteria(criteriaEq);
         JSONObject paraPe = null;
         try {
             String paraStr = objectMapper.writeValueAsString(criteriaObject);

+ 5 - 5
src/main/java/com/persagy/proxy/adm/service/impl/RelationReportService.java

@@ -18,8 +18,8 @@ import com.persagy.proxy.adm.constant.AdmCommonConstant;
 import com.persagy.proxy.adm.constant.AdmRelationType;
 import com.persagy.proxy.adm.model.AdmRelationObject;
 import com.persagy.proxy.adm.service.IRelationReportService;
-import com.persagy.proxy.adm.strategy.QueryRelationObjectContext;
-import com.persagy.proxy.adm.strategy.relationdata.QueryRelationObjectStrategy;
+import com.persagy.proxy.adm.strategy.RelationObjectContext;
+import com.persagy.proxy.adm.strategy.relationdata.RelationObjectStrategy;
 
 import cn.hutool.core.collection.CollectionUtil;
 import cn.hutool.core.util.StrUtil;
@@ -46,7 +46,7 @@ public class RelationReportService implements IRelationReportService {
 	private String defaultCode;
 
 	@Autowired
-	private QueryRelationObjectContext queryRelationObjectContext;
+	private RelationObjectContext relationObjectContext;
 	
 	@Override
 	public ObjectNode getObjectNode(String groupCode, String projectId, String id) {
@@ -64,7 +64,7 @@ public class RelationReportService implements IRelationReportService {
 		if (StrUtil.isBlank(code)) {
 			return null;
 		}
-		String key = QueryRelationObjectStrategy.OBJNAME_2_TYPE.get(code);
+		String key = RelationObjectStrategy.OBJNAME_2_TYPE.get(code);
 		if (StrUtil.isBlank(key)) {
 			return null;
 		}
@@ -128,7 +128,7 @@ public class RelationReportService implements IRelationReportService {
 			relType = AdmRelationType.EQ2SP;
         }
 		log.info("下载报表: groupCode[{}], projectId[{}], relType[{}], code[{}]", groupCode, projectId, relType, code);
-		return this.queryRelationObjectContext.findRelationObject(groupCode, projectId, relType);
+		return this.relationObjectContext.findRelationObject(groupCode, projectId, relType);
 	}
 
 }

+ 32 - 9
src/main/java/com/persagy/proxy/adm/strategy/QueryRelationObjectContext.java

@@ -1,5 +1,6 @@
 package com.persagy.proxy.adm.strategy;
 
+import java.util.ArrayList;
 import java.util.List;
 import java.util.Map;
 
@@ -9,8 +10,10 @@ import org.springframework.stereotype.Component;
 
 import com.fasterxml.jackson.databind.node.ObjectNode;
 import com.google.common.collect.Lists;
+import com.persagy.dmp.basic.dto.RequestData;
+import com.persagy.dmp.digital.entity.ObjectDigital;
 import com.persagy.proxy.adm.model.AdmRelationObject;
-import com.persagy.proxy.adm.strategy.relationdata.QueryRelationObjectStrategy;
+import com.persagy.proxy.adm.strategy.relationdata.RelationObjectStrategy;
 
 /**
  * 获取关系对象的上下文类
@@ -21,12 +24,12 @@ import com.persagy.proxy.adm.strategy.relationdata.QueryRelationObjectStrategy;
  * @date 2021年9月2日 下午10:44:32
  */
 @Component
-public class QueryRelationObjectContext {
+public class RelationObjectContext {
 
 	/**
 	 * 策略执行类
 	 */
-	private Map<String, QueryRelationObjectStrategy> relationObjectStrategyMap;
+	private Map<String, RelationObjectStrategy> relationObjectStrategyMap;
 	
 	/**
 	 * 自动注入 byName
@@ -34,7 +37,7 @@ public class QueryRelationObjectContext {
 	 * @param relationObjectStrategyMap
 	 */
 	@Resource
-	public void relationObjectStrategyMap(Map<String, QueryRelationObjectStrategy> relationObjectStrategyMap) {
+	public void relationObjectStrategyMap(Map<String, RelationObjectStrategy> relationObjectStrategyMap) {
 		this.relationObjectStrategyMap = relationObjectStrategyMap;
 	}
 	
@@ -47,7 +50,7 @@ public class QueryRelationObjectContext {
 	 * @return
 	 */
 	public List<AdmRelationObject> findRelationObject(String groupCode, String projectId, String relType) {
-		QueryRelationObjectStrategy strategy = this.relationObjectStrategyMap.get(relType);
+		RelationObjectStrategy strategy = this.relationObjectStrategyMap.get(relType);
 		return strategy == null ? Lists.newArrayList() : strategy.findRelationObject(groupCode, projectId);
 	}
 	
@@ -60,7 +63,7 @@ public class QueryRelationObjectContext {
 	 * @return String - 校验失败的原因, ObjectNode -- BDTP接口的参数,不会返回null,请用instanceOf 判断返回值
 	 */
 	public Object checkRelationObject(AdmRelationObject relationObject, String groupCode, String projectId, String relType, String code) {
-		QueryRelationObjectStrategy strategy = this.relationObjectStrategyMap.get(relType);
+		RelationObjectStrategy strategy = this.relationObjectStrategyMap.get(relType);
 		if (strategy == null) {
 			return "不存在此策略类";
 		}
@@ -78,7 +81,7 @@ public class QueryRelationObjectContext {
 	 * @return 
 	 */
 	public boolean saveRelationObjects(List<ObjectNode> relationObjects, String groupCode, String projectId, String relType) {
-		QueryRelationObjectStrategy strategy = this.relationObjectStrategyMap.get(relType);
+		RelationObjectStrategy strategy = this.relationObjectStrategyMap.get(relType);
 		if (strategy == null) {
 			return false;
 		}
@@ -94,12 +97,32 @@ public class QueryRelationObjectContext {
 	 * @param relType ADM-传过来的边类型
 	 * @return 
 	 */
-	public int countRelationObjects(String groupCode, String projectId, String relType) {
-		QueryRelationObjectStrategy strategy = this.relationObjectStrategyMap.get(relType);
+	public long countRelationObjects(String groupCode, String projectId, String relType) {
+		RelationObjectStrategy strategy = this.relationObjectStrategyMap.get(relType);
 		if (strategy == null) {
 			return 0;
 		}
 		
 		return strategy.countRelationObjects(groupCode, projectId);
 	}
+	
+	/**
+	 * 分页查询关系对象数据
+	 * 
+	 * @param masterObjs 查询的数据集存储地方
+	 * @param requestData 请求参数
+	 * @param groupCode 集团编码
+	 * @param projectId 项目ID
+	 * @param relType 
+	 */
+	public List<ObjectDigital> queryPageObjectInfo(RequestData requestData, String groupCode, String projectId, String relType) {
+		List<ObjectDigital> masterObjs = new ArrayList<ObjectDigital>();
+		RelationObjectStrategy strategy = this.relationObjectStrategyMap.get(relType);
+		if (strategy == null) {
+			return masterObjs;
+		}
+		strategy.queryPageObjectInfo(masterObjs, requestData, groupCode, projectId, requestData.getPage());
+		return masterObjs;
+	}
+	
 }

+ 67 - 0
src/main/java/com/persagy/proxy/adm/strategy/relationdata/AbstractRelationObject.java

@@ -0,0 +1,67 @@
+package com.persagy.proxy.adm.strategy.relationdata;
+
+import java.util.List;
+
+import com.fasterxml.jackson.databind.node.ObjectNode;
+import com.persagy.dmp.basic.dto.RequestData;
+import com.persagy.dmp.digital.client.DigitalObjectFacade;
+import com.persagy.dmp.digital.client.DigitalRelationFacade;
+import com.persagy.dmp.digital.entity.ObjectDigital;
+import com.persagy.dmp.digital.entity.ObjectRelation;
+import com.persagy.proxy.adm.constant.AdmCommonConstant;
+import com.persagy.proxy.adm.model.AdmRelationObject;
+import com.persagy.proxy.adm.service.IRelationReportService;
+
+import cn.hutool.core.collection.CollectionUtil;
+
+/**
+ * 普通操作抽象类
+ * 
+ * @version 1.0.0
+ * @company persagy 
+ * @author zhangqiankun
+ * @date 2021年9月2日 下午11:00:26
+ */
+public abstract class AbstractRelationObject implements RelationObjectStrategy {
+
+	protected IRelationReportService relationReportService;
+	
+	public AbstractRelationObject(IRelationReportService reportDownloadService) {
+		this.relationReportService = reportDownloadService;
+	}
+	
+	@Override
+	public void queryPageObjectInfo(List<ObjectDigital> masterObjs, RequestData requestData, String groupCode, String projectId, Long page) {
+		requestData.setPage(page);
+		List<ObjectDigital> objectDigitals = DigitalObjectFacade.queryObjectListByGraphCodeAndRelCode(groupCode, projectId, AdmCommonConstant.APP_ID, AdmCommonConstant.USER_ID, requestData);
+		if (CollectionUtil.isEmpty(objectDigitals)) {
+			return;
+		}
+		masterObjs.addAll(objectDigitals);
+		this.queryPageObjectInfo(masterObjs, requestData, groupCode, projectId, ++page);
+	}
+	
+	@Override
+	public boolean saveRelationObject(ObjectNode relationObject, String groupCode, String projectId) {
+		ObjectRelation objectRelation = DigitalRelationFacade.createOne(groupCode, projectId, AdmCommonConstant.APP_ID, AdmCommonConstant.USER_ID, relationObject);
+		return 	objectRelation != null;
+	}
+	
+	@Override
+	public boolean saveRelationObjects(List<ObjectNode> relationObjects, String groupCode, String projectId) {
+		List<ObjectRelation> create = DigitalRelationFacade.create(groupCode, projectId, AdmCommonConstant.APP_ID, AdmCommonConstant.USER_ID, relationObjects);
+		return 	CollectionUtil.isNotEmpty(create);
+	}
+	
+	/**************************************************** 默认不实现的类 *******************************************************/
+	
+	@Override
+	public List<AdmRelationObject> findRelationObject(String groupCode, String projectId) {
+		throw new UnsupportedOperationException("未实现的策略类");
+	}
+
+	@Override
+	public Object beforeSaveRelationObject(AdmRelationObject relationObject, String groupCode, String projectId, String code) {
+		throw new UnsupportedOperationException("未实现的策略类");
+	}
+}

+ 5 - 35
src/main/java/com/persagy/proxy/adm/strategy/relationdata/AbstractQueryRelationObject.java

@@ -5,10 +5,7 @@ import java.util.List;
 
 import com.fasterxml.jackson.databind.node.ObjectNode;
 import com.persagy.dmp.basic.dto.RequestData;
-import com.persagy.dmp.digital.client.DigitalObjectFacade;
-import com.persagy.dmp.digital.client.DigitalRelationFacade;
 import com.persagy.dmp.digital.entity.ObjectDigital;
-import com.persagy.dmp.digital.entity.ObjectRelation;
 import com.persagy.proxy.adm.constant.AdmCommonConstant;
 import com.persagy.proxy.adm.constant.AdmRelationTypeEnum;
 import com.persagy.proxy.adm.constant.ObjTypeMapping;
@@ -19,20 +16,19 @@ import cn.hutool.core.collection.CollectionUtil;
 import cn.hutool.core.util.StrUtil;
 
 /**
+ * 报表数据抽象类
  * 
  * @version 1.0.0
  * @company persagy 
  * @author zhangqiankun
  * @date 2021年9月2日 下午11:00:26
  */
-public abstract class AbstractQueryRelationObject implements QueryRelationObjectStrategy {
+public abstract class AbstractReportRelationObject extends AbstractRelationObject {
 
-	protected IRelationReportService relationReportService;
-	
-	public AbstractQueryRelationObject(IRelationReportService reportDownloadService) {
-		this.relationReportService = reportDownloadService;
+	public AbstractReportRelationObject(IRelationReportService reportDownloadService) {
+		super(reportDownloadService);
 	}
-	
+
 	/**
 	 * 根据项目ID,查询出所有的对象信息
 	 * 
@@ -51,25 +47,6 @@ public abstract class AbstractQueryRelationObject implements QueryRelationObject
 	}
 	
 	/**
-	 * 分页查询
-	 * 
-	 * @param masterObjs
-	 * @param requestData
-	 * @param groupCode
-	 * @param projectId
-	 * @param page
-	 */
-	private void queryPageObjectInfo(List<ObjectDigital> tempList, RequestData requestData, String groupCode, String projectId, Long page) {
-		requestData.setPage(page);
-		List<ObjectDigital> objectDigitals = DigitalObjectFacade.queryObjectListByGraphCodeAndRelCode(groupCode, projectId, AdmCommonConstant.APP_ID, AdmCommonConstant.USER_ID, requestData);
-		if (CollectionUtil.isEmpty(objectDigitals)) {
-			return;
-		}
-		tempList.addAll(objectDigitals);
-		this.queryPageObjectInfo(tempList, requestData, groupCode, projectId, ++page);
-	}
-	
-	/**
 	 * 处理中台响应数据,转换为ADM所需要的数据
 	 * 
 	 * @param masterObjs
@@ -153,13 +130,6 @@ public abstract class AbstractQueryRelationObject implements QueryRelationObject
 		return relationObject;
 	}
 	
-	
-	@Override
-	public boolean saveRelationObjects(List<ObjectNode> relationObjects, String groupCode, String projectId) {
-		List<ObjectRelation> create = DigitalRelationFacade.create(groupCode, projectId, AdmCommonConstant.APP_ID, AdmCommonConstant.USER_ID, relationObjects);
-		return 	CollectionUtil.isEmpty(create) ? false : true;
-	}
-	
 	/**
 	 * 检查关系对象数据的正确性,并完成额外字段的赋值功能
 	 * 

+ 45 - 0
src/main/java/com/persagy/proxy/adm/strategy/relationdata/Bd2FlSubRelationObject.java

@@ -0,0 +1,45 @@
+package com.persagy.proxy.adm.strategy.relationdata;
+
+import java.util.List;
+
+import org.springframework.stereotype.Component;
+
+import com.fasterxml.jackson.databind.node.ObjectNode;
+import com.persagy.dmp.basic.model.QueryCriteria;
+import com.persagy.dmp.common.model.response.CommonResult;
+import com.persagy.dmp.digital.client.DigitalRelationFacade;
+import com.persagy.dmp.digital.entity.ObjectRelation;
+import com.persagy.proxy.adm.constant.AdmCommonConstant;
+import com.persagy.proxy.adm.constant.AdmRelationType;
+import com.persagy.proxy.adm.constant.GraphCodeEnum;
+import com.persagy.proxy.adm.constant.RelCodeEnum;
+import com.persagy.proxy.adm.service.IRelationReportService;
+
+/**
+ * 
+ * @version 1.0.0
+ * @company persagy 
+ * @author zhangqiankun
+ * @date 2021年9月9日 下午5:28:21
+ */
+@Component(value = AdmRelationType.BD2FL_ARCHSUBSET)
+public class Bd2FlSubRelationObject extends AbstractRelationObject {
+
+	public Bd2FlSubRelationObject(IRelationReportService reportDownloadService) {
+		super(reportDownloadService);
+	}
+
+	@Override
+	public long countRelationObjects(String groupCode, String projectId) {
+		QueryCriteria queryCriteria = new QueryCriteria();
+		ObjectNode objectNode = OBJECT_MAPPER.createObjectNode();
+		objectNode.put("graphCode", GraphCodeEnum.ArchSubset.name());
+		objectNode.put("relCode", RelCodeEnum.Bd2Fl.name());
+		queryCriteria.setCriteria(objectNode);
+		queryCriteria.setOnlyCount(true);
+		
+		CommonResult<List<ObjectRelation>> result = DigitalRelationFacade.queryPrototype(groupCode, projectId, AdmCommonConstant.APP_ID, AdmCommonConstant.USER_ID, queryCriteria);
+		return result == null ? 0 : (result.getCount() == null ? 0 : result.getCount());
+	}
+
+}

+ 5 - 5
src/main/java/com/persagy/proxy/adm/strategy/relationdata/Eq2BdForRelationObject.java

@@ -7,6 +7,7 @@ import org.springframework.stereotype.Component;
 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.response.CommonResult;
 import com.persagy.dmp.digital.client.DigitalRelationFacade;
 import com.persagy.dmp.digital.entity.ObjectDigital;
 import com.persagy.dmp.digital.entity.ObjectRelation;
@@ -17,7 +18,6 @@ import com.persagy.proxy.adm.constant.RelCodeEnum;
 import com.persagy.proxy.adm.model.AdmRelationObject;
 import com.persagy.proxy.adm.service.IRelationReportService;
 
-import cn.hutool.core.collection.CollectionUtil;
 import cn.hutool.core.util.StrUtil;
 
 /**
@@ -28,14 +28,14 @@ import cn.hutool.core.util.StrUtil;
  * @date 2021年9月3日 上午9:42:46
  */
 @Component(value = AdmRelationType.EQ2BD_FOR)
-public class Eq2BdForRelationObject extends AbstractQueryRelationObject {
+public class Eq2BdForRelationObject extends AbstractReportRelationObject {
 
 	public Eq2BdForRelationObject(IRelationReportService relationReportService) {
 		super(relationReportService);
 	}
 	
 	@Override
-	public int countRelationObjects(String groupCode, String projectId) {
+	public long countRelationObjects(String groupCode, String projectId) {
 		QueryCriteria queryCriteria = new QueryCriteria();
 		ObjectNode objectNode = OBJECT_MAPPER.createObjectNode();
 		objectNode.put("graphCode", AdmRelationTypeEnum.EQ2BD_FOR.getGraphCode());
@@ -43,8 +43,8 @@ public class Eq2BdForRelationObject extends AbstractQueryRelationObject {
 		queryCriteria.setCriteria(objectNode);
 		queryCriteria.setOnlyCount(true);
 		
-		List<ObjectRelation> result = DigitalRelationFacade.query(groupCode, projectId, AdmCommonConstant.APP_ID, AdmCommonConstant.USER_ID, queryCriteria);
-		return CollectionUtil.isEmpty(result) ? 0 : result.size();
+		CommonResult<List<ObjectRelation>> result = DigitalRelationFacade.queryPrototype(groupCode, projectId, AdmCommonConstant.APP_ID, AdmCommonConstant.USER_ID, queryCriteria);
+		return result == null ? 0 : (result.getCount() == null ? 0 : result.getCount());
 	}
 
 	@Override

+ 5 - 6
src/main/java/com/persagy/proxy/adm/strategy/relationdata/Eq2BdRelationObject.java

@@ -7,6 +7,7 @@ import org.springframework.stereotype.Component;
 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.response.CommonResult;
 import com.persagy.dmp.digital.client.DigitalRelationFacade;
 import com.persagy.dmp.digital.entity.ObjectDigital;
 import com.persagy.dmp.digital.entity.ObjectRelation;
@@ -17,8 +18,6 @@ import com.persagy.proxy.adm.constant.RelCodeEnum;
 import com.persagy.proxy.adm.model.AdmRelationObject;
 import com.persagy.proxy.adm.service.IRelationReportService;
 
-import cn.hutool.core.collection.CollectionUtil;
-
 /**
  * 
  * @version 1.0.0
@@ -27,14 +26,14 @@ import cn.hutool.core.collection.CollectionUtil;
  * @date 2021年9月3日 上午9:42:46
  */
 @Component(value = AdmRelationType.EQ2BD)
-public class Eq2BdRelationObject extends AbstractQueryRelationObject {
+public class Eq2BdRelationObject extends AbstractReportRelationObject {
 
 	public Eq2BdRelationObject(IRelationReportService relationReportService) {
 		super(relationReportService);
 	}
 	
 	@Override
-	public int countRelationObjects(String groupCode, String projectId) {
+	public long countRelationObjects(String groupCode, String projectId) {
 		QueryCriteria queryCriteria = new QueryCriteria();
 		ObjectNode objectNode = OBJECT_MAPPER.createObjectNode();
 		objectNode.put("graphCode", AdmRelationTypeEnum.EQ2BD.getGraphCode());
@@ -42,8 +41,8 @@ public class Eq2BdRelationObject extends AbstractQueryRelationObject {
 		queryCriteria.setCriteria(objectNode);
 		queryCriteria.setOnlyCount(true);
 		
-		List<ObjectRelation> result = DigitalRelationFacade.query(groupCode, projectId, AdmCommonConstant.APP_ID, AdmCommonConstant.USER_ID, queryCriteria);
-		return CollectionUtil.isEmpty(result) ? 0 : result.size();
+		CommonResult<List<ObjectRelation>> result = DigitalRelationFacade.queryPrototype(groupCode, projectId, AdmCommonConstant.APP_ID, AdmCommonConstant.USER_ID, queryCriteria);
+		return result == null ? 0 : (result.getCount() == null ? 0 : result.getCount());
 	}
 
 	@Override

+ 5 - 11
src/main/java/com/persagy/proxy/adm/strategy/relationdata/Eq2EqEqBackupRelationObject.java

@@ -6,6 +6,7 @@ import org.springframework.stereotype.Component;
 
 import com.fasterxml.jackson.databind.node.ObjectNode;
 import com.persagy.dmp.basic.model.QueryCriteria;
+import com.persagy.dmp.common.model.response.CommonResult;
 import com.persagy.dmp.digital.client.DigitalRelationFacade;
 import com.persagy.dmp.digital.entity.ObjectDigital;
 import com.persagy.dmp.digital.entity.ObjectRelation;
@@ -16,8 +17,6 @@ import com.persagy.proxy.adm.constant.AdmRelationTypeEnum;
 import com.persagy.proxy.adm.model.AdmRelationObject;
 import com.persagy.proxy.adm.service.IRelationReportService;
 
-import cn.hutool.core.collection.CollectionUtil;
-
 /**
  * 
  * @version 1.0.0
@@ -26,14 +25,14 @@ import cn.hutool.core.collection.CollectionUtil;
  * @date 2021年9月3日 上午9:42:46
  */
 @Component(value = AdmRelationType.EQ2EQ_EQUIPPOWER_2)
-public class Eq2EqEqBackupRelationObject extends AbstractQueryRelationObject {
+public class Eq2EqEqBackupRelationObject extends AbstractReportRelationObject {
 	
 	public Eq2EqEqBackupRelationObject(IRelationReportService relationReportService) {
 		super(relationReportService);
 	}
 
 	@Override
-	public int countRelationObjects(String groupCode, String projectId) {
+	public long countRelationObjects(String groupCode, String projectId) {
 		QueryCriteria queryCriteria = new QueryCriteria();
 		ObjectNode objectNode = OBJECT_MAPPER.createObjectNode();
 		objectNode.put("graphCode", AdmRelationTypeEnum.EQ2EQ_EQUIPPOWER_2.getGraphCode());
@@ -41,16 +40,11 @@ public class Eq2EqEqBackupRelationObject extends AbstractQueryRelationObject {
 		queryCriteria.setCriteria(objectNode);
 		queryCriteria.setOnlyCount(true);
 		
-		List<ObjectRelation> result = DigitalRelationFacade.query(groupCode, projectId, AdmCommonConstant.APP_ID, AdmCommonConstant.USER_ID, queryCriteria);
-		return CollectionUtil.isEmpty(result) ? 0 : result.size();
+		CommonResult<List<ObjectRelation>> result = DigitalRelationFacade.queryPrototype(groupCode, projectId, AdmCommonConstant.APP_ID, AdmCommonConstant.USER_ID, queryCriteria);
+		return result == null ? 0 : (result.getCount() == null ? 0 : result.getCount());
 	}
 	
 	@Override
-	public List<AdmRelationObject> findRelationObject(String groupCode, String projectId) {
-		throw new UnsupportedOperationException("未实现的策略类");
-	}
-
-	@Override
 	protected AdmRelationObject handleObjectDigital(ObjectDigital master, ObjectDigital slave, String groupCode, String projectId) {
 		throw new UnsupportedOperationException("未实现的策略类");
 	}

+ 5 - 11
src/main/java/com/persagy/proxy/adm/strategy/relationdata/Eq2EqEqNormalRelationObject.java

@@ -6,6 +6,7 @@ import org.springframework.stereotype.Component;
 
 import com.fasterxml.jackson.databind.node.ObjectNode;
 import com.persagy.dmp.basic.model.QueryCriteria;
+import com.persagy.dmp.common.model.response.CommonResult;
 import com.persagy.dmp.digital.client.DigitalRelationFacade;
 import com.persagy.dmp.digital.entity.ObjectDigital;
 import com.persagy.dmp.digital.entity.ObjectRelation;
@@ -16,8 +17,6 @@ import com.persagy.proxy.adm.constant.AdmRelationTypeEnum;
 import com.persagy.proxy.adm.model.AdmRelationObject;
 import com.persagy.proxy.adm.service.IRelationReportService;
 
-import cn.hutool.core.collection.CollectionUtil;
-
 /**
  * 
  * @version 1.0.0
@@ -26,14 +25,14 @@ import cn.hutool.core.collection.CollectionUtil;
  * @date 2021年9月3日 上午9:42:46
  */
 @Component(value = AdmRelationType.EQ2EQ_EQUIPPOWER_1)
-public class Eq2EqEqNormalRelationObject extends AbstractQueryRelationObject {
+public class Eq2EqEqNormalRelationObject extends AbstractReportRelationObject {
 	
 	public Eq2EqEqNormalRelationObject(IRelationReportService relationReportService) {
 		super(relationReportService);
 	}
 
 	@Override
-	public int countRelationObjects(String groupCode, String projectId) {
+	public long countRelationObjects(String groupCode, String projectId) {
 		QueryCriteria queryCriteria = new QueryCriteria();
 		ObjectNode objectNode = OBJECT_MAPPER.createObjectNode();
 		objectNode.put("graphCode", AdmRelationTypeEnum.EQ2EQ_EQUIPPOWER_1.getGraphCode());
@@ -41,16 +40,11 @@ public class Eq2EqEqNormalRelationObject extends AbstractQueryRelationObject {
 		queryCriteria.setCriteria(objectNode);
 		queryCriteria.setOnlyCount(true);
 		
-		List<ObjectRelation> result = DigitalRelationFacade.query(groupCode, projectId, AdmCommonConstant.APP_ID, AdmCommonConstant.USER_ID, queryCriteria);
-		return CollectionUtil.isEmpty(result) ? 0 : result.size();
+		CommonResult<List<ObjectRelation>> result = DigitalRelationFacade.queryPrototype(groupCode, projectId, AdmCommonConstant.APP_ID, AdmCommonConstant.USER_ID, queryCriteria);
+		return result == null ? 0 : (result.getCount() == null ? 0 : result.getCount());
 	}
 	
 	@Override
-	public List<AdmRelationObject> findRelationObject(String groupCode, String projectId) {
-		throw new UnsupportedOperationException("未实现的策略类");
-	}
-
-	@Override
 	protected AdmRelationObject handleObjectDigital(ObjectDigital master, ObjectDigital slave, String groupCode, String projectId) {
 		throw new UnsupportedOperationException("未实现的策略类");
 	}

+ 5 - 11
src/main/java/com/persagy/proxy/adm/strategy/relationdata/Eq2EqSyBackupRelationObject.java

@@ -6,6 +6,7 @@ import org.springframework.stereotype.Component;
 
 import com.fasterxml.jackson.databind.node.ObjectNode;
 import com.persagy.dmp.basic.model.QueryCriteria;
+import com.persagy.dmp.common.model.response.CommonResult;
 import com.persagy.dmp.digital.client.DigitalRelationFacade;
 import com.persagy.dmp.digital.entity.ObjectDigital;
 import com.persagy.dmp.digital.entity.ObjectRelation;
@@ -16,8 +17,6 @@ import com.persagy.proxy.adm.constant.AdmRelationTypeEnum;
 import com.persagy.proxy.adm.model.AdmRelationObject;
 import com.persagy.proxy.adm.service.IRelationReportService;
 
-import cn.hutool.core.collection.CollectionUtil;
-
 /**
  * 
  * @version 1.0.0
@@ -26,14 +25,14 @@ import cn.hutool.core.collection.CollectionUtil;
  * @date 2021年9月3日 上午9:42:46
  */
 @Component(value = AdmRelationType.EQ2EQ_EQUIPPOWER_4)
-public class Eq2EqSyBackupRelationObject extends AbstractQueryRelationObject {
+public class Eq2EqSyBackupRelationObject extends AbstractReportRelationObject {
 	
 	public Eq2EqSyBackupRelationObject(IRelationReportService relationReportService) {
 		super(relationReportService);
 	}
 	
 	@Override
-	public int countRelationObjects(String groupCode, String projectId) {
+	public long countRelationObjects(String groupCode, String projectId) {
 		QueryCriteria queryCriteria = new QueryCriteria();
 		ObjectNode objectNode = OBJECT_MAPPER.createObjectNode();
 		objectNode.put("graphCode", AdmRelationTypeEnum.EQ2EQ_EQUIPPOWER_4.getGraphCode());
@@ -41,13 +40,8 @@ public class Eq2EqSyBackupRelationObject extends AbstractQueryRelationObject {
 		queryCriteria.setCriteria(objectNode);
 		queryCriteria.setOnlyCount(true);
 		
-		List<ObjectRelation> result = DigitalRelationFacade.query(groupCode, projectId, AdmCommonConstant.APP_ID, AdmCommonConstant.USER_ID, queryCriteria);
-		return CollectionUtil.isEmpty(result) ? 0 : result.size();
-	}
-
-	@Override
-	public List<AdmRelationObject> findRelationObject(String groupCode, String projectId) {
-		throw new UnsupportedOperationException("未实现的策略类");
+		CommonResult<List<ObjectRelation>> result = DigitalRelationFacade.queryPrototype(groupCode, projectId, AdmCommonConstant.APP_ID, AdmCommonConstant.USER_ID, queryCriteria);
+		return result == null ? 0 : (result.getCount() == null ? 0 : result.getCount());
 	}
 
 	@Override

+ 5 - 11
src/main/java/com/persagy/proxy/adm/strategy/relationdata/Eq2EqSyNormalRelationObject.java

@@ -6,6 +6,7 @@ import org.springframework.stereotype.Component;
 
 import com.fasterxml.jackson.databind.node.ObjectNode;
 import com.persagy.dmp.basic.model.QueryCriteria;
+import com.persagy.dmp.common.model.response.CommonResult;
 import com.persagy.dmp.digital.client.DigitalRelationFacade;
 import com.persagy.dmp.digital.entity.ObjectDigital;
 import com.persagy.dmp.digital.entity.ObjectRelation;
@@ -16,8 +17,6 @@ import com.persagy.proxy.adm.constant.AdmRelationTypeEnum;
 import com.persagy.proxy.adm.model.AdmRelationObject;
 import com.persagy.proxy.adm.service.IRelationReportService;
 
-import cn.hutool.core.collection.CollectionUtil;
-
 /**
  * 
  * @version 1.0.0
@@ -26,14 +25,14 @@ import cn.hutool.core.collection.CollectionUtil;
  * @date 2021年9月3日 上午9:42:46
  */
 @Component(value = AdmRelationType.EQ2EQ_EQUIPPOWER_3)
-public class Eq2EqSyNormalRelationObject extends AbstractQueryRelationObject {
+public class Eq2EqSyNormalRelationObject extends AbstractReportRelationObject {
 	
 	public Eq2EqSyNormalRelationObject(IRelationReportService relationReportService) {
 		super(relationReportService);
 	}
 
 	@Override
-	public int countRelationObjects(String groupCode, String projectId) {
+	public long countRelationObjects(String groupCode, String projectId) {
 		QueryCriteria queryCriteria = new QueryCriteria();
 		ObjectNode objectNode = OBJECT_MAPPER.createObjectNode();
 		objectNode.put("graphCode", AdmRelationTypeEnum.EQ2EQ_EQUIPPOWER_3.getGraphCode());
@@ -41,13 +40,8 @@ public class Eq2EqSyNormalRelationObject extends AbstractQueryRelationObject {
 		queryCriteria.setCriteria(objectNode);
 		queryCriteria.setOnlyCount(true);
 		
-		List<ObjectRelation> result = DigitalRelationFacade.query(groupCode, projectId, AdmCommonConstant.APP_ID, AdmCommonConstant.USER_ID, queryCriteria);
-		return CollectionUtil.isEmpty(result) ? 0 : result.size();
-	}
-	
-	@Override
-	public List<AdmRelationObject> findRelationObject(String groupCode, String projectId) {
-		throw new UnsupportedOperationException("未实现的策略类");
+		CommonResult<List<ObjectRelation>> result = DigitalRelationFacade.queryPrototype(groupCode, projectId, AdmCommonConstant.APP_ID, AdmCommonConstant.USER_ID, queryCriteria);
+		return result == null ? 0 : (result.getCount() == null ? 0 : result.getCount());
 	}
 
 	@Override

+ 5 - 5
src/main/java/com/persagy/proxy/adm/strategy/relationdata/Eq2FlForRelationObject.java

@@ -7,6 +7,7 @@ import org.springframework.stereotype.Component;
 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.response.CommonResult;
 import com.persagy.dmp.digital.client.DigitalRelationFacade;
 import com.persagy.dmp.digital.entity.ObjectDigital;
 import com.persagy.dmp.digital.entity.ObjectRelation;
@@ -17,7 +18,6 @@ import com.persagy.proxy.adm.constant.RelCodeEnum;
 import com.persagy.proxy.adm.model.AdmRelationObject;
 import com.persagy.proxy.adm.service.IRelationReportService;
 
-import cn.hutool.core.collection.CollectionUtil;
 import cn.hutool.core.util.StrUtil;
 
 /**
@@ -28,14 +28,14 @@ import cn.hutool.core.util.StrUtil;
  * @date 2021年9月3日 上午9:42:46
  */
 @Component(value = AdmRelationType.EQ2FL_FOR)
-public class Eq2FlForRelationObject extends AbstractQueryRelationObject {
+public class Eq2FlForRelationObject extends AbstractReportRelationObject {
 
 	public Eq2FlForRelationObject(IRelationReportService relationReportService) {
 		super(relationReportService);
 	}
 
 	@Override
-	public int countRelationObjects(String groupCode, String projectId) {
+	public long countRelationObjects(String groupCode, String projectId) {
 		QueryCriteria queryCriteria = new QueryCriteria();
 		ObjectNode objectNode = OBJECT_MAPPER.createObjectNode();
 		objectNode.put("graphCode", AdmRelationTypeEnum.EQ2FL_FOR.getGraphCode());
@@ -43,8 +43,8 @@ public class Eq2FlForRelationObject extends AbstractQueryRelationObject {
 		queryCriteria.setCriteria(objectNode);
 		queryCriteria.setOnlyCount(true);
 		
-		List<ObjectRelation> result = DigitalRelationFacade.query(groupCode, projectId, AdmCommonConstant.APP_ID, AdmCommonConstant.USER_ID, queryCriteria);
-		return CollectionUtil.isEmpty(result) ? 0 : result.size();
+		CommonResult<List<ObjectRelation>> result = DigitalRelationFacade.queryPrototype(groupCode, projectId, AdmCommonConstant.APP_ID, AdmCommonConstant.USER_ID, queryCriteria);
+		return result == null ? 0 : (result.getCount() == null ? 0 : result.getCount());
 	}
 	
 	@Override

+ 5 - 6
src/main/java/com/persagy/proxy/adm/strategy/relationdata/Eq2FlRelationObject.java

@@ -7,6 +7,7 @@ import org.springframework.stereotype.Component;
 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.response.CommonResult;
 import com.persagy.dmp.digital.client.DigitalRelationFacade;
 import com.persagy.dmp.digital.entity.ObjectDigital;
 import com.persagy.dmp.digital.entity.ObjectRelation;
@@ -16,8 +17,6 @@ import com.persagy.proxy.adm.constant.AdmRelationTypeEnum;
 import com.persagy.proxy.adm.model.AdmRelationObject;
 import com.persagy.proxy.adm.service.IRelationReportService;
 
-import cn.hutool.core.collection.CollectionUtil;
-
 /**
  * 
  * @version 1.0.0
@@ -26,14 +25,14 @@ import cn.hutool.core.collection.CollectionUtil;
  * @date 2021年9月3日 上午9:42:46
  */
 @Component(value = AdmRelationType.EQ2FL)
-public class Eq2FlRelationObject extends AbstractQueryRelationObject {
+public class Eq2FlRelationObject extends AbstractReportRelationObject {
 
 	public Eq2FlRelationObject(IRelationReportService relationReportService) {
 		super(relationReportService);
 	}
 
 	@Override
-	public int countRelationObjects(String groupCode, String projectId) {
+	public long countRelationObjects(String groupCode, String projectId) {
 		QueryCriteria queryCriteria = new QueryCriteria();
 		ObjectNode objectNode = OBJECT_MAPPER.createObjectNode();
 		objectNode.put("graphCode", AdmRelationTypeEnum.EQ2FL.getGraphCode());
@@ -41,8 +40,8 @@ public class Eq2FlRelationObject extends AbstractQueryRelationObject {
 		queryCriteria.setCriteria(objectNode);
 		queryCriteria.setOnlyCount(true);
 		
-		List<ObjectRelation> result = DigitalRelationFacade.query(groupCode, projectId, AdmCommonConstant.APP_ID, AdmCommonConstant.USER_ID, queryCriteria);
-		return CollectionUtil.isEmpty(result) ? 0 : result.size();
+		CommonResult<List<ObjectRelation>> result = DigitalRelationFacade.queryPrototype(groupCode, projectId, AdmCommonConstant.APP_ID, AdmCommonConstant.USER_ID, queryCriteria);
+		return result == null ? 0 : (result.getCount() == null ? 0 : result.getCount());
 	}
 	
 	@Override

+ 5 - 5
src/main/java/com/persagy/proxy/adm/strategy/relationdata/Eq2ShForRelationObject.java

@@ -7,6 +7,7 @@ import org.springframework.stereotype.Component;
 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.response.CommonResult;
 import com.persagy.dmp.digital.client.DigitalRelationFacade;
 import com.persagy.dmp.digital.entity.ObjectDigital;
 import com.persagy.dmp.digital.entity.ObjectRelation;
@@ -17,7 +18,6 @@ import com.persagy.proxy.adm.constant.RelCodeEnum;
 import com.persagy.proxy.adm.model.AdmRelationObject;
 import com.persagy.proxy.adm.service.IRelationReportService;
 
-import cn.hutool.core.collection.CollectionUtil;
 import cn.hutool.core.util.StrUtil;
 
 /**
@@ -28,14 +28,14 @@ import cn.hutool.core.util.StrUtil;
  * @date 2021年9月3日 上午9:42:46
  */
 @Component(value = AdmRelationType.EQ2SH_FOR)
-public class Eq2ShForRelationObject extends AbstractQueryRelationObject {
+public class Eq2ShForRelationObject extends AbstractReportRelationObject {
 
 	public Eq2ShForRelationObject(IRelationReportService relationReportService) {
 		super(relationReportService);
 	}
 
 	@Override
-	public int countRelationObjects(String groupCode, String projectId) {
+	public long countRelationObjects(String groupCode, String projectId) {
 		QueryCriteria queryCriteria = new QueryCriteria();
 		ObjectNode objectNode = OBJECT_MAPPER.createObjectNode();
 		objectNode.put("graphCode", AdmRelationTypeEnum.EQ2SH_FOR.getGraphCode());
@@ -43,8 +43,8 @@ public class Eq2ShForRelationObject extends AbstractQueryRelationObject {
 		queryCriteria.setCriteria(objectNode);
 		queryCriteria.setOnlyCount(true);
 		
-		List<ObjectRelation> result = DigitalRelationFacade.query(groupCode, projectId, AdmCommonConstant.APP_ID, AdmCommonConstant.USER_ID, queryCriteria);
-		return CollectionUtil.isEmpty(result) ? 0 : result.size();
+		CommonResult<List<ObjectRelation>> result = DigitalRelationFacade.queryPrototype(groupCode, projectId, AdmCommonConstant.APP_ID, AdmCommonConstant.USER_ID, queryCriteria);
+		return result == null ? 0 : (result.getCount() == null ? 0 : result.getCount());
 	}
 	
 	@Override

+ 5 - 6
src/main/java/com/persagy/proxy/adm/strategy/relationdata/Eq2SpRelationObject.java

@@ -7,6 +7,7 @@ import org.springframework.stereotype.Component;
 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.response.CommonResult;
 import com.persagy.dmp.digital.client.DigitalRelationFacade;
 import com.persagy.dmp.digital.entity.ObjectDigital;
 import com.persagy.dmp.digital.entity.ObjectRelation;
@@ -16,8 +17,6 @@ import com.persagy.proxy.adm.constant.AdmRelationTypeEnum;
 import com.persagy.proxy.adm.model.AdmRelationObject;
 import com.persagy.proxy.adm.service.IRelationReportService;
 
-import cn.hutool.core.collection.CollectionUtil;
-
 /**
  * 此类型需转为 AdmRelationTypeEnum.EQ2SP_IN 进行数据查询
  * 
@@ -27,14 +26,14 @@ import cn.hutool.core.collection.CollectionUtil;
  * @date 2021年9月3日 上午9:42:46
  */
 @Component(value = AdmRelationType.EQ2SP)
-public class Eq2SpRelationObject extends AbstractQueryRelationObject {
+public class Eq2SpRelationObject extends AbstractReportRelationObject {
 
 	public Eq2SpRelationObject(IRelationReportService relationReportService) {
 		super(relationReportService);
 	}
 
 	@Override
-	public int countRelationObjects(String groupCode, String projectId) {
+	public long countRelationObjects(String groupCode, String projectId) {
 		QueryCriteria queryCriteria = new QueryCriteria();
 		ObjectNode objectNode = OBJECT_MAPPER.createObjectNode();
 		objectNode.put("graphCode", AdmRelationTypeEnum.EQ2SP_IN.getGraphCode());
@@ -42,8 +41,8 @@ public class Eq2SpRelationObject extends AbstractQueryRelationObject {
 		queryCriteria.setCriteria(objectNode);
 		queryCriteria.setOnlyCount(true);
 		
-		List<ObjectRelation> result = DigitalRelationFacade.query(groupCode, projectId, AdmCommonConstant.APP_ID, AdmCommonConstant.USER_ID, queryCriteria);
-		return CollectionUtil.isEmpty(result) ? 0 : result.size();
+		CommonResult<List<ObjectRelation>> result = DigitalRelationFacade.queryPrototype(groupCode, projectId, AdmCommonConstant.APP_ID, AdmCommonConstant.USER_ID, queryCriteria);
+		return result == null ? 0 : (result.getCount() == null ? 0 : result.getCount());
 	}
 	
 	@Override

+ 26 - 3
src/main/java/com/persagy/proxy/adm/strategy/relationdata/QueryRelationObjectStrategy.java

@@ -6,7 +6,9 @@ import java.util.Map;
 
 import com.fasterxml.jackson.databind.ObjectMapper;
 import com.fasterxml.jackson.databind.node.ObjectNode;
+import com.persagy.dmp.basic.dto.RequestData;
 import com.persagy.dmp.common.helper.SpringHelper;
+import com.persagy.dmp.digital.entity.ObjectDigital;
 import com.persagy.proxy.adm.model.AdmRelationObject;
 
 /**
@@ -16,7 +18,7 @@ import com.persagy.proxy.adm.model.AdmRelationObject;
  * @author zhangqiankun
  * @date 2021年9月2日 下午10:46:03
  */
-public interface QueryRelationObjectStrategy {
+public interface RelationObjectStrategy {
 
 	String WHERE_IN = "$in";
 	
@@ -42,7 +44,7 @@ public interface QueryRelationObjectStrategy {
 	 * @param projectId
 	 * @return
 	 */
-	int countRelationObjects(String groupCode, String projectId);
+    long countRelationObjects(String groupCode, String projectId);
     
 	/**
 	 * 查询出所有的关系信息
@@ -54,6 +56,17 @@ public interface QueryRelationObjectStrategy {
 	List<AdmRelationObject> findRelationObject(String groupCode, String projectId);
 	
 	/**
+	 * 分页查询关系对象数据
+	 * 
+	 * @param masterObjs 查询的数据集存储地方
+	 * @param requestData 请求参数
+	 * @param groupCode 集团编码
+	 * @param projectId 项目ID
+	 * @param page 分页起始位置
+	 */
+	void queryPageObjectInfo(List<ObjectDigital> masterObjs, RequestData requestData, String groupCode, String projectId, Long page);
+	
+	/**
 	 * 保存之前校验数据的合法性
 	 * 
 	 * @param relationObject 需要校验的对象
@@ -65,9 +78,19 @@ public interface QueryRelationObjectStrategy {
 	Object beforeSaveRelationObject(AdmRelationObject relationObject, String groupCode, String projectId, String code);
 
 	/**
+	 * 保存对象之间的关系
+	 * 
+	 * @param relationObject
+	 * @param groupCode
+	 * @param projectId
+	 * @return 
+	 */
+	boolean saveRelationObject(ObjectNode relationObject, String groupCode, String projectId);
+	
+	/**
 	 * 批量保存对象之间的关系
 	 * 
-	 * @param admRelationObject
+	 * @param relationObjects
 	 * @param groupCode
 	 * @param projectId
 	 * @return 

+ 5 - 6
src/main/java/com/persagy/proxy/adm/strategy/relationdata/Sh2BdForRelationObject.java

@@ -7,6 +7,7 @@ import org.springframework.stereotype.Component;
 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.response.CommonResult;
 import com.persagy.dmp.digital.client.DigitalRelationFacade;
 import com.persagy.dmp.digital.entity.ObjectDigital;
 import com.persagy.dmp.digital.entity.ObjectRelation;
@@ -16,8 +17,6 @@ import com.persagy.proxy.adm.constant.AdmRelationTypeEnum;
 import com.persagy.proxy.adm.model.AdmRelationObject;
 import com.persagy.proxy.adm.service.IRelationReportService;
 
-import cn.hutool.core.collection.CollectionUtil;
-
 /**
  * 
  * @version 1.0.0
@@ -26,14 +25,14 @@ import cn.hutool.core.collection.CollectionUtil;
  * @date 2021年9月3日 上午9:42:46
  */
 @Component(value = AdmRelationType.SH2BD_ARCHFORARCH)
-public class Sh2BdForRelationObject extends AbstractQueryRelationObject {
+public class Sh2BdForRelationObject extends AbstractReportRelationObject {
 
 	public Sh2BdForRelationObject(IRelationReportService relationReportService) {
 		super(relationReportService);
 	}
 
 	@Override
-	public int countRelationObjects(String groupCode, String projectId) {
+	public long countRelationObjects(String groupCode, String projectId) {
 		QueryCriteria queryCriteria = new QueryCriteria();
 		ObjectNode objectNode = OBJECT_MAPPER.createObjectNode();
 		objectNode.put("graphCode", AdmRelationTypeEnum.SH2BD_ARCHFORARCH.getGraphCode());
@@ -41,8 +40,8 @@ public class Sh2BdForRelationObject extends AbstractQueryRelationObject {
 		queryCriteria.setCriteria(objectNode);
 		queryCriteria.setOnlyCount(true);
 		
-		List<ObjectRelation> result = DigitalRelationFacade.query(groupCode, projectId, AdmCommonConstant.APP_ID, AdmCommonConstant.USER_ID, queryCriteria);
-		return CollectionUtil.isEmpty(result) ? 0 : result.size();
+		CommonResult<List<ObjectRelation>> result = DigitalRelationFacade.queryPrototype(groupCode, projectId, AdmCommonConstant.APP_ID, AdmCommonConstant.USER_ID, queryCriteria);
+		return result == null ? 0 : (result.getCount() == null ? 0 : result.getCount());
 	}
 	
 	@Override

+ 5 - 6
src/main/java/com/persagy/proxy/adm/strategy/relationdata/Sh2FlForRelationObject.java

@@ -7,6 +7,7 @@ import org.springframework.stereotype.Component;
 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.response.CommonResult;
 import com.persagy.dmp.digital.client.DigitalRelationFacade;
 import com.persagy.dmp.digital.entity.ObjectDigital;
 import com.persagy.dmp.digital.entity.ObjectRelation;
@@ -17,8 +18,6 @@ import com.persagy.proxy.adm.constant.RelCodeEnum;
 import com.persagy.proxy.adm.model.AdmRelationObject;
 import com.persagy.proxy.adm.service.IRelationReportService;
 
-import cn.hutool.core.collection.CollectionUtil;
-
 /**
  * 
  * @version 1.0.0
@@ -27,14 +26,14 @@ import cn.hutool.core.collection.CollectionUtil;
  * @date 2021年9月3日 上午9:42:46
  */
 @Component(value = AdmRelationType.SH2FL_ARCHFORARCH)
-public class Sh2FlForRelationObject extends AbstractQueryRelationObject {
+public class Sh2FlForRelationObject extends AbstractReportRelationObject {
 
 	public Sh2FlForRelationObject(IRelationReportService relationReportService) {
 		super(relationReportService);
 	}
 
 	@Override
-	public int countRelationObjects(String groupCode, String projectId) {
+	public long countRelationObjects(String groupCode, String projectId) {
 		QueryCriteria queryCriteria = new QueryCriteria();
 		ObjectNode objectNode = OBJECT_MAPPER.createObjectNode();
 		objectNode.put("graphCode", AdmRelationTypeEnum.SH2FL_ARCHFORARCH.getGraphCode());
@@ -42,8 +41,8 @@ public class Sh2FlForRelationObject extends AbstractQueryRelationObject {
 		queryCriteria.setCriteria(objectNode);
 		queryCriteria.setOnlyCount(true);
 		
-		List<ObjectRelation> result = DigitalRelationFacade.query(groupCode, projectId, AdmCommonConstant.APP_ID, AdmCommonConstant.USER_ID, queryCriteria);
-		return CollectionUtil.isEmpty(result) ? 0 : result.size();
+		CommonResult<List<ObjectRelation>> result = DigitalRelationFacade.queryPrototype(groupCode, projectId, AdmCommonConstant.APP_ID, AdmCommonConstant.USER_ID, queryCriteria);
+		return result == null ? 0 : (result.getCount() == null ? 0 : result.getCount());
 	}
 	
 	@Override

+ 5 - 6
src/main/java/com/persagy/proxy/adm/strategy/relationdata/Sh2ShForRelationObject.java

@@ -7,6 +7,7 @@ import org.springframework.stereotype.Component;
 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.response.CommonResult;
 import com.persagy.dmp.digital.client.DigitalRelationFacade;
 import com.persagy.dmp.digital.entity.ObjectDigital;
 import com.persagy.dmp.digital.entity.ObjectRelation;
@@ -16,8 +17,6 @@ import com.persagy.proxy.adm.constant.AdmRelationTypeEnum;
 import com.persagy.proxy.adm.model.AdmRelationObject;
 import com.persagy.proxy.adm.service.IRelationReportService;
 
-import cn.hutool.core.collection.CollectionUtil;
-
 /**
  * 
  * @version 1.0.0
@@ -26,14 +25,14 @@ import cn.hutool.core.collection.CollectionUtil;
  * @date 2021年9月3日 上午9:42:46
  */
 @Component(value = AdmRelationType.SH2SH_ARCHFORARCH)
-public class Sh2ShForRelationObject extends AbstractQueryRelationObject {
+public class Sh2ShForRelationObject extends AbstractReportRelationObject {
 
 	public Sh2ShForRelationObject(IRelationReportService relationReportService) {
 		super(relationReportService);
 	}
 	
 	@Override
-	public int countRelationObjects(String groupCode, String projectId) {
+	public long countRelationObjects(String groupCode, String projectId) {
 		QueryCriteria queryCriteria = new QueryCriteria();
 		ObjectNode objectNode = OBJECT_MAPPER.createObjectNode();
 		objectNode.put("graphCode", AdmRelationTypeEnum.SH2SH_ARCHFORARCH.getGraphCode());
@@ -41,8 +40,8 @@ public class Sh2ShForRelationObject extends AbstractQueryRelationObject {
 		queryCriteria.setCriteria(objectNode);
 		queryCriteria.setOnlyCount(true);
 		
-		List<ObjectRelation> result = DigitalRelationFacade.query(groupCode, projectId, AdmCommonConstant.APP_ID, AdmCommonConstant.USER_ID, queryCriteria);
-		return CollectionUtil.isEmpty(result) ? 0 : result.size();
+		CommonResult<List<ObjectRelation>> result = DigitalRelationFacade.queryPrototype(groupCode, projectId, AdmCommonConstant.APP_ID, AdmCommonConstant.USER_ID, queryCriteria);
+		return result == null ? 0 : (result.getCount() == null ? 0 : result.getCount());
 	}
 
 	@Override

+ 5 - 5
src/main/java/com/persagy/proxy/adm/strategy/relationdata/Sh2SpForRelationObject.java

@@ -7,6 +7,7 @@ import org.springframework.stereotype.Component;
 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.response.CommonResult;
 import com.persagy.dmp.digital.client.DigitalRelationFacade;
 import com.persagy.dmp.digital.entity.ObjectDigital;
 import com.persagy.dmp.digital.entity.ObjectRelation;
@@ -17,7 +18,6 @@ import com.persagy.proxy.adm.constant.RelCodeEnum;
 import com.persagy.proxy.adm.model.AdmRelationObject;
 import com.persagy.proxy.adm.service.IRelationReportService;
 
-import cn.hutool.core.collection.CollectionUtil;
 import cn.hutool.core.util.StrUtil;
 
 /**
@@ -28,14 +28,14 @@ import cn.hutool.core.util.StrUtil;
  * @date 2021年9月3日 上午9:42:46
  */
 @Component(value = AdmRelationType.SH2SP_ARCHFORARCH)
-public class Sh2SpForRelationObject extends AbstractQueryRelationObject {
+public class Sh2SpForRelationObject extends AbstractReportRelationObject {
 
 	public Sh2SpForRelationObject(IRelationReportService relationReportService) {
 		super(relationReportService);
 	}
 
 	@Override
-	public int countRelationObjects(String groupCode, String projectId) {
+	public long countRelationObjects(String groupCode, String projectId) {
 		QueryCriteria queryCriteria = new QueryCriteria();
 		ObjectNode objectNode = OBJECT_MAPPER.createObjectNode();
 		objectNode.put("graphCode", AdmRelationTypeEnum.SH2SP_ARCHFORARCH.getGraphCode());
@@ -43,8 +43,8 @@ public class Sh2SpForRelationObject extends AbstractQueryRelationObject {
 		queryCriteria.setCriteria(objectNode);
 		queryCriteria.setOnlyCount(true);
 		
-		List<ObjectRelation> result = DigitalRelationFacade.query(groupCode, projectId, AdmCommonConstant.APP_ID, AdmCommonConstant.USER_ID, queryCriteria);
-		return CollectionUtil.isEmpty(result) ? 0 : result.size();
+		CommonResult<List<ObjectRelation>> result = DigitalRelationFacade.queryPrototype(groupCode, projectId, AdmCommonConstant.APP_ID, AdmCommonConstant.USER_ID, queryCriteria);
+		return result == null ? 0 : (result.getCount() == null ? 0 : result.getCount());
 	}
 	
 	@Override

+ 5 - 5
src/main/java/com/persagy/proxy/adm/strategy/relationdata/Sp2BdForRelationObject.java

@@ -7,6 +7,7 @@ import org.springframework.stereotype.Component;
 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.response.CommonResult;
 import com.persagy.dmp.digital.client.DigitalRelationFacade;
 import com.persagy.dmp.digital.entity.ObjectDigital;
 import com.persagy.dmp.digital.entity.ObjectRelation;
@@ -17,7 +18,6 @@ import com.persagy.proxy.adm.constant.RelCodeEnum;
 import com.persagy.proxy.adm.model.AdmRelationObject;
 import com.persagy.proxy.adm.service.IRelationReportService;
 
-import cn.hutool.core.collection.CollectionUtil;
 import cn.hutool.core.util.StrUtil;
 
 /**
@@ -28,14 +28,14 @@ import cn.hutool.core.util.StrUtil;
  * @date 2021年9月3日 上午9:42:46
  */
 @Component(value = AdmRelationType.SP2BD_ARCHFORARCH)
-public class Sp2BdForRelationObject extends AbstractQueryRelationObject {
+public class Sp2BdForRelationObject extends AbstractReportRelationObject {
 
 	public Sp2BdForRelationObject(IRelationReportService relationReportService) {
 		super(relationReportService);
 	}
 	
 	@Override
-	public int countRelationObjects(String groupCode, String projectId) {
+	public long countRelationObjects(String groupCode, String projectId) {
 		QueryCriteria queryCriteria = new QueryCriteria();
 		ObjectNode objectNode = OBJECT_MAPPER.createObjectNode();
 		objectNode.put("graphCode", AdmRelationTypeEnum.SP2BD_ARCHFORARCH.getGraphCode());
@@ -43,8 +43,8 @@ public class Sp2BdForRelationObject extends AbstractQueryRelationObject {
 		queryCriteria.setCriteria(objectNode);
 		queryCriteria.setOnlyCount(true);
 		
-		List<ObjectRelation> result = DigitalRelationFacade.query(groupCode, projectId, AdmCommonConstant.APP_ID, AdmCommonConstant.USER_ID, queryCriteria);
-		return CollectionUtil.isEmpty(result) ? 0 : result.size();
+		CommonResult<List<ObjectRelation>> result = DigitalRelationFacade.queryPrototype(groupCode, projectId, AdmCommonConstant.APP_ID, AdmCommonConstant.USER_ID, queryCriteria);
+		return result == null ? 0 : (result.getCount() == null ? 0 : result.getCount());
 	}
 
 	@Override

+ 5 - 5
src/main/java/com/persagy/proxy/adm/strategy/relationdata/Sp2FlForRelationObject.java

@@ -7,6 +7,7 @@ import org.springframework.stereotype.Component;
 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.response.CommonResult;
 import com.persagy.dmp.digital.client.DigitalRelationFacade;
 import com.persagy.dmp.digital.entity.ObjectDigital;
 import com.persagy.dmp.digital.entity.ObjectRelation;
@@ -17,7 +18,6 @@ import com.persagy.proxy.adm.constant.RelCodeEnum;
 import com.persagy.proxy.adm.model.AdmRelationObject;
 import com.persagy.proxy.adm.service.IRelationReportService;
 
-import cn.hutool.core.collection.CollectionUtil;
 import cn.hutool.core.util.StrUtil;
 
 /**
@@ -28,14 +28,14 @@ import cn.hutool.core.util.StrUtil;
  * @date 2021年9月3日 上午9:42:46
  */
 @Component(value = AdmRelationType.SP2FL_ARCHFORARCH)
-public class Sp2FlForRelationObject extends AbstractQueryRelationObject {
+public class Sp2FlForRelationObject extends AbstractReportRelationObject {
 
 	public Sp2FlForRelationObject(IRelationReportService relationReportService) {
 		super(relationReportService);
 	}
 
 	@Override
-	public int countRelationObjects(String groupCode, String projectId) {
+	public long countRelationObjects(String groupCode, String projectId) {
 		QueryCriteria queryCriteria = new QueryCriteria();
 		ObjectNode objectNode = OBJECT_MAPPER.createObjectNode();
 		objectNode.put("graphCode", AdmRelationTypeEnum.SP2FL_ARCHFORARCH.getGraphCode());
@@ -43,8 +43,8 @@ public class Sp2FlForRelationObject extends AbstractQueryRelationObject {
 		queryCriteria.setCriteria(objectNode);
 		queryCriteria.setOnlyCount(true);
 		
-		List<ObjectRelation> result = DigitalRelationFacade.query(groupCode, projectId, AdmCommonConstant.APP_ID, AdmCommonConstant.USER_ID, queryCriteria);
-		return CollectionUtil.isEmpty(result) ? 0 : result.size();
+		CommonResult<List<ObjectRelation>> result = DigitalRelationFacade.queryPrototype(groupCode, projectId, AdmCommonConstant.APP_ID, AdmCommonConstant.USER_ID, queryCriteria);
+		return result == null ? 0 : (result.getCount() == null ? 0 : result.getCount());
 	}
 	
 	@Override

+ 5 - 11
src/main/java/com/persagy/proxy/adm/strategy/relationdata/Sp2SpConnectRelationObject.java

@@ -6,6 +6,7 @@ import org.springframework.stereotype.Component;
 
 import com.fasterxml.jackson.databind.node.ObjectNode;
 import com.persagy.dmp.basic.model.QueryCriteria;
+import com.persagy.dmp.common.model.response.CommonResult;
 import com.persagy.dmp.digital.client.DigitalRelationFacade;
 import com.persagy.dmp.digital.entity.ObjectDigital;
 import com.persagy.dmp.digital.entity.ObjectRelation;
@@ -16,8 +17,6 @@ import com.persagy.proxy.adm.constant.SpaceTypeEnum;
 import com.persagy.proxy.adm.model.AdmRelationObject;
 import com.persagy.proxy.adm.service.IRelationReportService;
 
-import cn.hutool.core.collection.CollectionUtil;
-
 /**
  * 
  * @version 1.0.0
@@ -26,14 +25,14 @@ import cn.hutool.core.collection.CollectionUtil;
  * @date 2021年9月3日 上午9:42:46
  */
 @Component(value = AdmRelationType.SP2SP_RADIATIONNETWORK_2)
-public class Sp2SpConnectRelationObject extends AbstractQueryRelationObject {
+public class Sp2SpConnectRelationObject extends AbstractReportRelationObject {
 	
 	public Sp2SpConnectRelationObject(IRelationReportService relationReportService) {
 		super(relationReportService);
 	}
 
 	@Override
-	public int countRelationObjects(String groupCode, String projectId) {
+	public long countRelationObjects(String groupCode, String projectId) {
 		QueryCriteria queryCriteria = new QueryCriteria();
 		ObjectNode objectNode = OBJECT_MAPPER.createObjectNode();
 		objectNode.put("graphCode", AdmRelationTypeEnum.SP2SP_RADIATIONNETWORK_2.getGraphCode());
@@ -41,16 +40,11 @@ public class Sp2SpConnectRelationObject extends AbstractQueryRelationObject {
 		queryCriteria.setCriteria(objectNode);
 		queryCriteria.setOnlyCount(true);
 		
-		List<ObjectRelation> result = DigitalRelationFacade.query(groupCode, projectId, AdmCommonConstant.APP_ID, AdmCommonConstant.USER_ID, queryCriteria);
-		return CollectionUtil.isEmpty(result) ? 0 : result.size();
+		CommonResult<List<ObjectRelation>> result = DigitalRelationFacade.queryPrototype(groupCode, projectId, AdmCommonConstant.APP_ID, AdmCommonConstant.USER_ID, queryCriteria);
+		return result == null ? 0 : (result.getCount() == null ? 0 : result.getCount());
 	}
 	
 	@Override
-	public List<AdmRelationObject> findRelationObject(String groupCode, String projectId) {
-		throw new UnsupportedOperationException("未实现的策略类");
-	}
-
-	@Override
 	protected AdmRelationObject handleObjectDigital(ObjectDigital master, ObjectDigital slave, String groupCode, String projectId) {
 		throw new UnsupportedOperationException("未实现的策略类");
 	}

+ 5 - 11
src/main/java/com/persagy/proxy/adm/strategy/relationdata/Sp2SpFFCloseRelationObject.java

@@ -6,6 +6,7 @@ import org.springframework.stereotype.Component;
 
 import com.fasterxml.jackson.databind.node.ObjectNode;
 import com.persagy.dmp.basic.model.QueryCriteria;
+import com.persagy.dmp.common.model.response.CommonResult;
 import com.persagy.dmp.digital.client.DigitalRelationFacade;
 import com.persagy.dmp.digital.entity.ObjectDigital;
 import com.persagy.dmp.digital.entity.ObjectRelation;
@@ -16,8 +17,6 @@ import com.persagy.proxy.adm.constant.SpaceTypeEnum;
 import com.persagy.proxy.adm.model.AdmRelationObject;
 import com.persagy.proxy.adm.service.IRelationReportService;
 
-import cn.hutool.core.collection.CollectionUtil;
-
 /**
  * 
  * @version 1.0.0
@@ -26,14 +25,14 @@ import cn.hutool.core.collection.CollectionUtil;
  * @date 2021年9月3日 上午9:42:46
  */
 @Component(value = AdmRelationType.SP2SP_TRAFFICNETWORK_3)
-public class Sp2SpFFCloseRelationObject extends AbstractQueryRelationObject {
+public class Sp2SpFFCloseRelationObject extends AbstractReportRelationObject {
 	
 	public Sp2SpFFCloseRelationObject(IRelationReportService relationReportService) {
 		super(relationReportService);
 	}
 
 	@Override
-	public int countRelationObjects(String groupCode, String projectId) {
+	public long countRelationObjects(String groupCode, String projectId) {
 		QueryCriteria queryCriteria = new QueryCriteria();
 		ObjectNode objectNode = OBJECT_MAPPER.createObjectNode();
 		objectNode.put("graphCode", AdmRelationTypeEnum.SP2SP_TRAFFICNETWORK_3.getGraphCode());
@@ -41,16 +40,11 @@ public class Sp2SpFFCloseRelationObject extends AbstractQueryRelationObject {
 		queryCriteria.setCriteria(objectNode);
 		queryCriteria.setOnlyCount(true);
 		
-		List<ObjectRelation> result = DigitalRelationFacade.query(groupCode, projectId, AdmCommonConstant.APP_ID, AdmCommonConstant.USER_ID, queryCriteria);
-		return CollectionUtil.isEmpty(result) ? 0 : result.size();
+		CommonResult<List<ObjectRelation>> result = DigitalRelationFacade.queryPrototype(groupCode, projectId, AdmCommonConstant.APP_ID, AdmCommonConstant.USER_ID, queryCriteria);
+		return result == null ? 0 : (result.getCount() == null ? 0 : result.getCount());
 	}
 	
 	@Override
-	public List<AdmRelationObject> findRelationObject(String groupCode, String projectId) {
-		throw new UnsupportedOperationException("未实现的策略类");
-	}
-
-	@Override
 	protected AdmRelationObject handleObjectDigital(ObjectDigital master, ObjectDigital slave, String groupCode, String projectId) {
 		throw new UnsupportedOperationException("未实现的策略类");
 	}

+ 5 - 11
src/main/java/com/persagy/proxy/adm/strategy/relationdata/Sp2SpFFOpenRelationObject.java

@@ -6,6 +6,7 @@ import org.springframework.stereotype.Component;
 
 import com.fasterxml.jackson.databind.node.ObjectNode;
 import com.persagy.dmp.basic.model.QueryCriteria;
+import com.persagy.dmp.common.model.response.CommonResult;
 import com.persagy.dmp.digital.client.DigitalRelationFacade;
 import com.persagy.dmp.digital.entity.ObjectDigital;
 import com.persagy.dmp.digital.entity.ObjectRelation;
@@ -16,8 +17,6 @@ import com.persagy.proxy.adm.constant.SpaceTypeEnum;
 import com.persagy.proxy.adm.model.AdmRelationObject;
 import com.persagy.proxy.adm.service.IRelationReportService;
 
-import cn.hutool.core.collection.CollectionUtil;
-
 /**
  * 
  * @version 1.0.0
@@ -26,14 +25,14 @@ import cn.hutool.core.collection.CollectionUtil;
  * @date 2021年9月3日 上午9:42:46
  */
 @Component(value = AdmRelationType.SP2SP_TRAFFICNETWORK_2)
-public class Sp2SpFFOpenRelationObject extends AbstractQueryRelationObject {
+public class Sp2SpFFOpenRelationObject extends AbstractReportRelationObject {
 	
 	public Sp2SpFFOpenRelationObject(IRelationReportService relationReportService) {
 		super(relationReportService);
 	}
 
 	@Override
-	public int countRelationObjects(String groupCode, String projectId) {
+	public long countRelationObjects(String groupCode, String projectId) {
 		QueryCriteria queryCriteria = new QueryCriteria();
 		ObjectNode objectNode = OBJECT_MAPPER.createObjectNode();
 		objectNode.put("graphCode", AdmRelationTypeEnum.SP2SP_TRAFFICNETWORK_2.getGraphCode());
@@ -41,16 +40,11 @@ public class Sp2SpFFOpenRelationObject extends AbstractQueryRelationObject {
 		queryCriteria.setCriteria(objectNode);
 		queryCriteria.setOnlyCount(true);
 		
-		List<ObjectRelation> result = DigitalRelationFacade.query(groupCode, projectId, AdmCommonConstant.APP_ID, AdmCommonConstant.USER_ID, queryCriteria);
-		return CollectionUtil.isEmpty(result) ? 0 : result.size();
+		CommonResult<List<ObjectRelation>> result = DigitalRelationFacade.queryPrototype(groupCode, projectId, AdmCommonConstant.APP_ID, AdmCommonConstant.USER_ID, queryCriteria);
+		return result == null ? 0 : (result.getCount() == null ? 0 : result.getCount());
 	}
 	
 	@Override
-	public List<AdmRelationObject> findRelationObject(String groupCode, String projectId) {
-		throw new UnsupportedOperationException("未实现的策略类");
-	}
-
-	@Override
 	protected AdmRelationObject handleObjectDigital(ObjectDigital master, ObjectDigital slave, String groupCode, String projectId) {
 		throw new UnsupportedOperationException("未实现的策略类");
 	}

+ 5 - 11
src/main/java/com/persagy/proxy/adm/strategy/relationdata/Sp2SpMixMechRelationObject.java

@@ -6,6 +6,7 @@ import org.springframework.stereotype.Component;
 
 import com.fasterxml.jackson.databind.node.ObjectNode;
 import com.persagy.dmp.basic.model.QueryCriteria;
+import com.persagy.dmp.common.model.response.CommonResult;
 import com.persagy.dmp.digital.client.DigitalRelationFacade;
 import com.persagy.dmp.digital.entity.ObjectDigital;
 import com.persagy.dmp.digital.entity.ObjectRelation;
@@ -16,8 +17,6 @@ import com.persagy.proxy.adm.constant.SpaceTypeEnum;
 import com.persagy.proxy.adm.model.AdmRelationObject;
 import com.persagy.proxy.adm.service.IRelationReportService;
 
-import cn.hutool.core.collection.CollectionUtil;
-
 /**
  * 
  * @version 1.0.0
@@ -26,14 +25,14 @@ import cn.hutool.core.collection.CollectionUtil;
  * @date 2021年9月3日 上午9:42:46
  */
 @Component(value = AdmRelationType.SP2SP_CONVECTIONNETWORK_2)
-public class Sp2SpMixMechRelationObject extends AbstractQueryRelationObject {
+public class Sp2SpMixMechRelationObject extends AbstractReportRelationObject {
 	
 	public Sp2SpMixMechRelationObject(IRelationReportService relationReportService) {
 		super(relationReportService);
 	}
 
 	@Override
-	public int countRelationObjects(String groupCode, String projectId) {
+	public long countRelationObjects(String groupCode, String projectId) {
 		QueryCriteria queryCriteria = new QueryCriteria();
 		ObjectNode objectNode = OBJECT_MAPPER.createObjectNode();
 		objectNode.put("graphCode", AdmRelationTypeEnum.SP2SP_CONVECTIONNETWORK_2.getGraphCode());
@@ -41,16 +40,11 @@ public class Sp2SpMixMechRelationObject extends AbstractQueryRelationObject {
 		queryCriteria.setCriteria(objectNode);
 		queryCriteria.setOnlyCount(true);
 		
-		List<ObjectRelation> result = DigitalRelationFacade.query(groupCode, projectId, AdmCommonConstant.APP_ID, AdmCommonConstant.USER_ID, queryCriteria);
-		return CollectionUtil.isEmpty(result) ? 0 : result.size();
+		CommonResult<List<ObjectRelation>> result = DigitalRelationFacade.queryPrototype(groupCode, projectId, AdmCommonConstant.APP_ID, AdmCommonConstant.USER_ID, queryCriteria);
+		return result == null ? 0 : (result.getCount() == null ? 0 : result.getCount());
 	}
 	
 	@Override
-	public List<AdmRelationObject> findRelationObject(String groupCode, String projectId) {
-		throw new UnsupportedOperationException("未实现的策略类");
-	}
-
-	@Override
 	protected AdmRelationObject handleObjectDigital(ObjectDigital master, ObjectDigital slave, String groupCode, String projectId) {
 		throw new UnsupportedOperationException("未实现的策略类");
 	}

+ 5 - 11
src/main/java/com/persagy/proxy/adm/strategy/relationdata/Sp2SpNaturalRelationObject.java

@@ -6,6 +6,7 @@ import org.springframework.stereotype.Component;
 
 import com.fasterxml.jackson.databind.node.ObjectNode;
 import com.persagy.dmp.basic.model.QueryCriteria;
+import com.persagy.dmp.common.model.response.CommonResult;
 import com.persagy.dmp.digital.client.DigitalRelationFacade;
 import com.persagy.dmp.digital.entity.ObjectDigital;
 import com.persagy.dmp.digital.entity.ObjectRelation;
@@ -16,8 +17,6 @@ import com.persagy.proxy.adm.constant.SpaceTypeEnum;
 import com.persagy.proxy.adm.model.AdmRelationObject;
 import com.persagy.proxy.adm.service.IRelationReportService;
 
-import cn.hutool.core.collection.CollectionUtil;
-
 /**
  * 
  * @version 1.0.0
@@ -26,14 +25,14 @@ import cn.hutool.core.collection.CollectionUtil;
  * @date 2021年9月3日 上午9:42:46
  */
 @Component(value = AdmRelationType.SP2SP_CONVECTIONNETWORK_1)
-public class Sp2SpNaturalRelationObject extends AbstractQueryRelationObject {
+public class Sp2SpNaturalRelationObject extends AbstractReportRelationObject {
 	
 	public Sp2SpNaturalRelationObject(IRelationReportService relationReportService) {
 		super(relationReportService);
 	}
 
 	@Override
-	public int countRelationObjects(String groupCode, String projectId) {
+	public long countRelationObjects(String groupCode, String projectId) {
 		QueryCriteria queryCriteria = new QueryCriteria();
 		ObjectNode objectNode = OBJECT_MAPPER.createObjectNode();
 		objectNode.put("graphCode", AdmRelationTypeEnum.SP2SP_CONVECTIONNETWORK_1.getGraphCode());
@@ -41,16 +40,11 @@ public class Sp2SpNaturalRelationObject extends AbstractQueryRelationObject {
 		queryCriteria.setCriteria(objectNode);
 		queryCriteria.setOnlyCount(true);
 		
-		List<ObjectRelation> result = DigitalRelationFacade.query(groupCode, projectId, AdmCommonConstant.APP_ID, AdmCommonConstant.USER_ID, queryCriteria);
-		return CollectionUtil.isEmpty(result) ? 0 : result.size();
+		CommonResult<List<ObjectRelation>> result = DigitalRelationFacade.queryPrototype(groupCode, projectId, AdmCommonConstant.APP_ID, AdmCommonConstant.USER_ID, queryCriteria);
+		return result == null ? 0 : (result.getCount() == null ? 0 : result.getCount());
 	}
 	
 	@Override
-	public List<AdmRelationObject> findRelationObject(String groupCode, String projectId) {
-		throw new UnsupportedOperationException("未实现的策略类");
-	}
-
-	@Override
 	protected AdmRelationObject handleObjectDigital(ObjectDigital master, ObjectDigital slave, String groupCode, String projectId) {
 		throw new UnsupportedOperationException("未实现的策略类");
 	}

+ 5 - 11
src/main/java/com/persagy/proxy/adm/strategy/relationdata/Sp2SpNormalRelationObject.java

@@ -6,6 +6,7 @@ import org.springframework.stereotype.Component;
 
 import com.fasterxml.jackson.databind.node.ObjectNode;
 import com.persagy.dmp.basic.model.QueryCriteria;
+import com.persagy.dmp.common.model.response.CommonResult;
 import com.persagy.dmp.digital.client.DigitalRelationFacade;
 import com.persagy.dmp.digital.entity.ObjectDigital;
 import com.persagy.dmp.digital.entity.ObjectRelation;
@@ -16,8 +17,6 @@ import com.persagy.proxy.adm.constant.SpaceTypeEnum;
 import com.persagy.proxy.adm.model.AdmRelationObject;
 import com.persagy.proxy.adm.service.IRelationReportService;
 
-import cn.hutool.core.collection.CollectionUtil;
-
 /**
  * 
  * @version 1.0.0
@@ -26,14 +25,14 @@ import cn.hutool.core.collection.CollectionUtil;
  * @date 2021年9月3日 上午9:42:46
  */
 @Component(value = AdmRelationType.SP2SP_TRAFFICNETWORK_1)
-public class Sp2SpNormalRelationObject extends AbstractQueryRelationObject {
+public class Sp2SpNormalRelationObject extends AbstractReportRelationObject {
 	
 	public Sp2SpNormalRelationObject(IRelationReportService relationReportService) {
 		super(relationReportService);
 	}
 	
 	@Override
-	public int countRelationObjects(String groupCode, String projectId) {
+	public long countRelationObjects(String groupCode, String projectId) {
 		QueryCriteria queryCriteria = new QueryCriteria();
 		ObjectNode objectNode = OBJECT_MAPPER.createObjectNode();
 		objectNode.put("graphCode", AdmRelationTypeEnum.SP2SP_TRAFFICNETWORK_1.getGraphCode());
@@ -41,13 +40,8 @@ public class Sp2SpNormalRelationObject extends AbstractQueryRelationObject {
 		queryCriteria.setCriteria(objectNode);
 		queryCriteria.setOnlyCount(true);
 		
-		List<ObjectRelation> result = DigitalRelationFacade.query(groupCode, projectId, AdmCommonConstant.APP_ID, AdmCommonConstant.USER_ID, queryCriteria);
-		return CollectionUtil.isEmpty(result) ? 0 : result.size();
-	}
-
-	@Override
-	public List<AdmRelationObject> findRelationObject(String groupCode, String projectId) {
-		throw new UnsupportedOperationException("未实现的策略类");
+		CommonResult<List<ObjectRelation>> result = DigitalRelationFacade.queryPrototype(groupCode, projectId, AdmCommonConstant.APP_ID, AdmCommonConstant.USER_ID, queryCriteria);
+		return result == null ? 0 : (result.getCount() == null ? 0 : result.getCount());
 	}
 
 	@Override

+ 5 - 11
src/main/java/com/persagy/proxy/adm/strategy/relationdata/Sp2SpOnewayMechRelationObject.java

@@ -6,6 +6,7 @@ import org.springframework.stereotype.Component;
 
 import com.fasterxml.jackson.databind.node.ObjectNode;
 import com.persagy.dmp.basic.model.QueryCriteria;
+import com.persagy.dmp.common.model.response.CommonResult;
 import com.persagy.dmp.digital.client.DigitalRelationFacade;
 import com.persagy.dmp.digital.entity.ObjectDigital;
 import com.persagy.dmp.digital.entity.ObjectRelation;
@@ -16,8 +17,6 @@ import com.persagy.proxy.adm.constant.SpaceTypeEnum;
 import com.persagy.proxy.adm.model.AdmRelationObject;
 import com.persagy.proxy.adm.service.IRelationReportService;
 
-import cn.hutool.core.collection.CollectionUtil;
-
 /**
  * 
  * @version 1.0.0
@@ -26,14 +25,14 @@ import cn.hutool.core.collection.CollectionUtil;
  * @date 2021年9月3日 上午9:42:46
  */
 @Component(value = AdmRelationType.SP2SP_CONVECTIONNETWORK_3)
-public class Sp2SpOnewayMechRelationObject extends AbstractQueryRelationObject {
+public class Sp2SpOnewayMechRelationObject extends AbstractReportRelationObject {
 	
 	public Sp2SpOnewayMechRelationObject(IRelationReportService relationReportService) {
 		super(relationReportService);
 	}
 
 	@Override
-	public int countRelationObjects(String groupCode, String projectId) {
+	public long countRelationObjects(String groupCode, String projectId) {
 		QueryCriteria queryCriteria = new QueryCriteria();
 		ObjectNode objectNode = OBJECT_MAPPER.createObjectNode();
 		objectNode.put("graphCode", AdmRelationTypeEnum.SP2SP_CONVECTIONNETWORK_3.getGraphCode());
@@ -41,16 +40,11 @@ public class Sp2SpOnewayMechRelationObject extends AbstractQueryRelationObject {
 		queryCriteria.setCriteria(objectNode);
 		queryCriteria.setOnlyCount(true);
 		
-		List<ObjectRelation> result = DigitalRelationFacade.query(groupCode, projectId, AdmCommonConstant.APP_ID, AdmCommonConstant.USER_ID, queryCriteria);
-		return CollectionUtil.isEmpty(result) ? 0 : result.size();
+		CommonResult<List<ObjectRelation>> result = DigitalRelationFacade.queryPrototype(groupCode, projectId, AdmCommonConstant.APP_ID, AdmCommonConstant.USER_ID, queryCriteria);
+		return result == null ? 0 : (result.getCount() == null ? 0 : result.getCount());
 	}
 	
 	@Override
-	public List<AdmRelationObject> findRelationObject(String groupCode, String projectId) {
-		throw new UnsupportedOperationException("未实现的策略类");
-	}
-
-	@Override
 	protected AdmRelationObject handleObjectDigital(ObjectDigital master, ObjectDigital slave, String groupCode, String projectId) {
 		throw new UnsupportedOperationException("未实现的策略类");
 	}

+ 5 - 6
src/main/java/com/persagy/proxy/adm/strategy/relationdata/Sp2SpTransparentRelationObject.java

@@ -6,6 +6,7 @@ import org.springframework.stereotype.Component;
 
 import com.fasterxml.jackson.databind.node.ObjectNode;
 import com.persagy.dmp.basic.model.QueryCriteria;
+import com.persagy.dmp.common.model.response.CommonResult;
 import com.persagy.dmp.digital.client.DigitalRelationFacade;
 import com.persagy.dmp.digital.entity.ObjectDigital;
 import com.persagy.dmp.digital.entity.ObjectRelation;
@@ -16,8 +17,6 @@ import com.persagy.proxy.adm.constant.SpaceTypeEnum;
 import com.persagy.proxy.adm.model.AdmRelationObject;
 import com.persagy.proxy.adm.service.IRelationReportService;
 
-import cn.hutool.core.collection.CollectionUtil;
-
 /**
  * 
  * @version 1.0.0
@@ -26,14 +25,14 @@ import cn.hutool.core.collection.CollectionUtil;
  * @date 2021年9月3日 上午9:42:46
  */
 @Component(value = AdmRelationType.SP2SP_RADIATIONNETWORK_1)
-public class Sp2SpTransparentRelationObject extends AbstractQueryRelationObject {
+public class Sp2SpTransparentRelationObject extends AbstractReportRelationObject {
 	
 	public Sp2SpTransparentRelationObject(IRelationReportService relationReportService) {
 		super(relationReportService);
 	}
 
 	@Override
-	public int countRelationObjects(String groupCode, String projectId) {
+	public long countRelationObjects(String groupCode, String projectId) {
 		QueryCriteria queryCriteria = new QueryCriteria();
 		ObjectNode objectNode = OBJECT_MAPPER.createObjectNode();
 		objectNode.put("graphCode", AdmRelationTypeEnum.SP2SP_RADIATIONNETWORK_1.getGraphCode());
@@ -41,8 +40,8 @@ public class Sp2SpTransparentRelationObject extends AbstractQueryRelationObject
 		queryCriteria.setCriteria(objectNode);
 		queryCriteria.setOnlyCount(true);
 		
-		List<ObjectRelation> result = DigitalRelationFacade.query(groupCode, projectId, AdmCommonConstant.APP_ID, AdmCommonConstant.USER_ID, queryCriteria);
-		return CollectionUtil.isEmpty(result) ? 0 : result.size();
+		CommonResult<List<ObjectRelation>> result = DigitalRelationFacade.queryPrototype(groupCode, projectId, AdmCommonConstant.APP_ID, AdmCommonConstant.USER_ID, queryCriteria);
+		return result == null ? 0 : (result.getCount() == null ? 0 : result.getCount());
 	}
 	
 	@Override

+ 5 - 6
src/main/java/com/persagy/proxy/adm/strategy/relationdata/Ss2EqShipRelationObject.java

@@ -6,6 +6,7 @@ import org.springframework.stereotype.Component;
 
 import com.fasterxml.jackson.databind.node.ObjectNode;
 import com.persagy.dmp.basic.model.QueryCriteria;
+import com.persagy.dmp.common.model.response.CommonResult;
 import com.persagy.dmp.digital.client.DigitalRelationFacade;
 import com.persagy.dmp.digital.entity.ObjectDigital;
 import com.persagy.dmp.digital.entity.ObjectRelation;
@@ -16,8 +17,6 @@ import com.persagy.proxy.adm.constant.AdmRelationTypeEnum;
 import com.persagy.proxy.adm.model.AdmRelationObject;
 import com.persagy.proxy.adm.service.IRelationReportService;
 
-import cn.hutool.core.collection.CollectionUtil;
-
 /**
  * 图类型编码 -- SensorRelationship
  * 
@@ -27,14 +26,14 @@ import cn.hutool.core.collection.CollectionUtil;
  * @date 2021年9月3日 上午9:42:46
  */
 @Component(value = AdmRelationType.EQ2EQ_SENSORRELATIONSHIP_SS2EQ)
-public class Ss2EqShipRelationObject extends AbstractQueryRelationObject {
+public class Ss2EqShipRelationObject extends AbstractReportRelationObject {
 	
 	public Ss2EqShipRelationObject(IRelationReportService relationReportService) {
 		super(relationReportService);
 	}
 
 	@Override
-	public int countRelationObjects(String groupCode, String projectId) {
+	public long countRelationObjects(String groupCode, String projectId) {
 		QueryCriteria queryCriteria = new QueryCriteria();
 		ObjectNode objectNode = OBJECT_MAPPER.createObjectNode();
 		objectNode.put("graphCode", AdmRelationTypeEnum.EQ2EQ_SENSORRELATIONSHIP_SS2EQ.getGraphCode());
@@ -42,8 +41,8 @@ public class Ss2EqShipRelationObject extends AbstractQueryRelationObject {
 		queryCriteria.setCriteria(objectNode);
 		queryCriteria.setOnlyCount(true);
 		
-		List<ObjectRelation> result = DigitalRelationFacade.query(groupCode, projectId, AdmCommonConstant.APP_ID, AdmCommonConstant.USER_ID, queryCriteria);
-		return CollectionUtil.isEmpty(result) ? 0 : result.size();
+		CommonResult<List<ObjectRelation>> result = DigitalRelationFacade.queryPrototype(groupCode, projectId, AdmCommonConstant.APP_ID, AdmCommonConstant.USER_ID, queryCriteria);
+		return result == null ? 0 : (result.getCount() == null ? 0 : result.getCount());
 	}
 	
 	@Override

+ 5 - 6
src/main/java/com/persagy/proxy/adm/strategy/relationdata/Ss2SpShipRelationObject.java

@@ -6,6 +6,7 @@ import org.springframework.stereotype.Component;
 
 import com.fasterxml.jackson.databind.node.ObjectNode;
 import com.persagy.dmp.basic.model.QueryCriteria;
+import com.persagy.dmp.common.model.response.CommonResult;
 import com.persagy.dmp.digital.client.DigitalRelationFacade;
 import com.persagy.dmp.digital.entity.ObjectDigital;
 import com.persagy.dmp.digital.entity.ObjectRelation;
@@ -16,8 +17,6 @@ import com.persagy.proxy.adm.constant.AdmRelationTypeEnum;
 import com.persagy.proxy.adm.model.AdmRelationObject;
 import com.persagy.proxy.adm.service.IRelationReportService;
 
-import cn.hutool.core.collection.CollectionUtil;
-
 /**
  * 图类型编码 -- SensorRelationship
  * 
@@ -27,14 +26,14 @@ import cn.hutool.core.collection.CollectionUtil;
  * @date 2021年9月3日 上午9:42:46
  */
 @Component(value = AdmRelationType.EQ2SP_SENSORRELATIONSHIP_SS2SP)
-public class Ss2SpShipRelationObject extends AbstractQueryRelationObject {
+public class Ss2SpShipRelationObject extends AbstractReportRelationObject {
 	
 	public Ss2SpShipRelationObject(IRelationReportService relationReportService) {
 		super(relationReportService);
 	}
 	
 	@Override
-	public int countRelationObjects(String groupCode, String projectId) {
+	public long countRelationObjects(String groupCode, String projectId) {
 		QueryCriteria queryCriteria = new QueryCriteria();
 		ObjectNode objectNode = OBJECT_MAPPER.createObjectNode();
 		objectNode.put("graphCode", AdmRelationTypeEnum.EQ2SP_SENSORRELATIONSHIP_SS2SP.getGraphCode());
@@ -42,8 +41,8 @@ public class Ss2SpShipRelationObject extends AbstractQueryRelationObject {
 		queryCriteria.setCriteria(objectNode);
 		queryCriteria.setOnlyCount(true);
 		
-		List<ObjectRelation> result = DigitalRelationFacade.query(groupCode, projectId, AdmCommonConstant.APP_ID, AdmCommonConstant.USER_ID, queryCriteria);
-		return CollectionUtil.isEmpty(result) ? 0 : result.size();
+		CommonResult<List<ObjectRelation>> result = DigitalRelationFacade.queryPrototype(groupCode, projectId, AdmCommonConstant.APP_ID, AdmCommonConstant.USER_ID, queryCriteria);
+		return result == null ? 0 : (result.getCount() == null ? 0 : result.getCount());
 	}
 
 	@Override

+ 5 - 6
src/main/java/com/persagy/proxy/adm/strategy/relationdata/Ss2SyShipRelationObject.java

@@ -6,6 +6,7 @@ import org.springframework.stereotype.Component;
 
 import com.fasterxml.jackson.databind.node.ObjectNode;
 import com.persagy.dmp.basic.model.QueryCriteria;
+import com.persagy.dmp.common.model.response.CommonResult;
 import com.persagy.dmp.digital.client.DigitalRelationFacade;
 import com.persagy.dmp.digital.entity.ObjectDigital;
 import com.persagy.dmp.digital.entity.ObjectRelation;
@@ -16,8 +17,6 @@ import com.persagy.proxy.adm.constant.AdmRelationTypeEnum;
 import com.persagy.proxy.adm.model.AdmRelationObject;
 import com.persagy.proxy.adm.service.IRelationReportService;
 
-import cn.hutool.core.collection.CollectionUtil;
-
 /**
  * 图类型编码 -- SensorRelationship
  * 
@@ -27,14 +26,14 @@ import cn.hutool.core.collection.CollectionUtil;
  * @date 2021年9月3日 上午9:42:46
  */
 @Component(value = AdmRelationType.EQ2SY_SENSORRELATIONSHIP_SS2SY)
-public class Ss2SyShipRelationObject extends AbstractQueryRelationObject {
+public class Ss2SyShipRelationObject extends AbstractReportRelationObject {
 	
 	public Ss2SyShipRelationObject(IRelationReportService relationReportService) {
 		super(relationReportService);
 	}
 
 	@Override
-	public int countRelationObjects(String groupCode, String projectId) {
+	public long countRelationObjects(String groupCode, String projectId) {
 		QueryCriteria queryCriteria = new QueryCriteria();
 		ObjectNode objectNode = OBJECT_MAPPER.createObjectNode();
 		objectNode.put("graphCode", AdmRelationTypeEnum.EQ2SY_SENSORRELATIONSHIP_SS2SY.getGraphCode());
@@ -42,8 +41,8 @@ public class Ss2SyShipRelationObject extends AbstractQueryRelationObject {
 		queryCriteria.setCriteria(objectNode);
 		queryCriteria.setOnlyCount(true);
 		
-		List<ObjectRelation> result = DigitalRelationFacade.query(groupCode, projectId, AdmCommonConstant.APP_ID, AdmCommonConstant.USER_ID, queryCriteria);
-		return CollectionUtil.isEmpty(result) ? 0 : result.size();
+		CommonResult<List<ObjectRelation>> result = DigitalRelationFacade.queryPrototype(groupCode, projectId, AdmCommonConstant.APP_ID, AdmCommonConstant.USER_ID, queryCriteria);
+		return result == null ? 0 : (result.getCount() == null ? 0 : result.getCount());
 	}
 	
 	@Override

+ 5 - 6
src/main/java/com/persagy/proxy/adm/strategy/relationdata/Sy2BdForRelationObject.java

@@ -7,6 +7,7 @@ import org.springframework.stereotype.Component;
 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.response.CommonResult;
 import com.persagy.dmp.digital.client.DigitalRelationFacade;
 import com.persagy.dmp.digital.entity.ObjectDigital;
 import com.persagy.dmp.digital.entity.ObjectRelation;
@@ -16,8 +17,6 @@ import com.persagy.proxy.adm.constant.AdmRelationTypeEnum;
 import com.persagy.proxy.adm.model.AdmRelationObject;
 import com.persagy.proxy.adm.service.IRelationReportService;
 
-import cn.hutool.core.collection.CollectionUtil;
-
 /**
  * 
  * @version 1.0.0
@@ -26,14 +25,14 @@ import cn.hutool.core.collection.CollectionUtil;
  * @date 2021年9月3日 上午9:42:46
  */
 @Component(value = AdmRelationType.SY2BD_FOR)
-public class Sy2BdForRelationObject extends AbstractQueryRelationObject {
+public class Sy2BdForRelationObject extends AbstractReportRelationObject {
 
 	public Sy2BdForRelationObject(IRelationReportService relationReportService) {
 		super(relationReportService);
 	}
 	
 	@Override
-	public int countRelationObjects(String groupCode, String projectId) {
+	public long countRelationObjects(String groupCode, String projectId) {
 		QueryCriteria queryCriteria = new QueryCriteria();
 		ObjectNode objectNode = OBJECT_MAPPER.createObjectNode();
 		objectNode.put("graphCode", AdmRelationTypeEnum.SY2BD_FOR.getGraphCode());
@@ -41,8 +40,8 @@ public class Sy2BdForRelationObject extends AbstractQueryRelationObject {
 		queryCriteria.setCriteria(objectNode);
 		queryCriteria.setOnlyCount(true);
 		
-		List<ObjectRelation> result = DigitalRelationFacade.query(groupCode, projectId, AdmCommonConstant.APP_ID, AdmCommonConstant.USER_ID, queryCriteria);
-		return CollectionUtil.isEmpty(result) ? 0 : result.size();
+		CommonResult<List<ObjectRelation>> result = DigitalRelationFacade.queryPrototype(groupCode, projectId, AdmCommonConstant.APP_ID, AdmCommonConstant.USER_ID, queryCriteria);
+		return result == null ? 0 : (result.getCount() == null ? 0 : result.getCount());
 	}
 
 	@Override

+ 5 - 6
src/main/java/com/persagy/proxy/adm/strategy/relationdata/Sy2FlForRelationObject.java

@@ -7,6 +7,7 @@ import org.springframework.stereotype.Component;
 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.response.CommonResult;
 import com.persagy.dmp.digital.client.DigitalRelationFacade;
 import com.persagy.dmp.digital.entity.ObjectDigital;
 import com.persagy.dmp.digital.entity.ObjectRelation;
@@ -17,8 +18,6 @@ import com.persagy.proxy.adm.constant.RelCodeEnum;
 import com.persagy.proxy.adm.model.AdmRelationObject;
 import com.persagy.proxy.adm.service.IRelationReportService;
 
-import cn.hutool.core.collection.CollectionUtil;
-
 /**
  * 
  * @version 1.0.0
@@ -27,14 +26,14 @@ import cn.hutool.core.collection.CollectionUtil;
  * @date 2021年9月3日 上午9:42:46
  */
 @Component(value = AdmRelationType.SY2FL_FOR)
-public class Sy2FlForRelationObject extends AbstractQueryRelationObject {
+public class Sy2FlForRelationObject extends AbstractReportRelationObject {
 
 	public Sy2FlForRelationObject(IRelationReportService relationReportService) {
 		super(relationReportService);
 	}
 
 	@Override
-	public int countRelationObjects(String groupCode, String projectId) {
+	public long countRelationObjects(String groupCode, String projectId) {
 		QueryCriteria queryCriteria = new QueryCriteria();
 		ObjectNode objectNode = OBJECT_MAPPER.createObjectNode();
 		objectNode.put("graphCode", AdmRelationTypeEnum.SY2FL_FOR.getGraphCode());
@@ -42,8 +41,8 @@ public class Sy2FlForRelationObject extends AbstractQueryRelationObject {
 		queryCriteria.setCriteria(objectNode);
 		queryCriteria.setOnlyCount(true);
 		
-		List<ObjectRelation> result = DigitalRelationFacade.query(groupCode, projectId, AdmCommonConstant.APP_ID, AdmCommonConstant.USER_ID, queryCriteria);
-		return CollectionUtil.isEmpty(result) ? 0 : result.size();
+		CommonResult<List<ObjectRelation>> result = DigitalRelationFacade.queryPrototype(groupCode, projectId, AdmCommonConstant.APP_ID, AdmCommonConstant.USER_ID, queryCriteria);
+		return result == null ? 0 : (result.getCount() == null ? 0 : result.getCount());
 	}
 	
 	@Override

+ 5 - 6
src/main/java/com/persagy/proxy/adm/strategy/relationdata/Sy2ShForRelationObject.java

@@ -7,6 +7,7 @@ import org.springframework.stereotype.Component;
 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.response.CommonResult;
 import com.persagy.dmp.digital.client.DigitalRelationFacade;
 import com.persagy.dmp.digital.entity.ObjectDigital;
 import com.persagy.dmp.digital.entity.ObjectRelation;
@@ -16,8 +17,6 @@ import com.persagy.proxy.adm.constant.AdmRelationTypeEnum;
 import com.persagy.proxy.adm.model.AdmRelationObject;
 import com.persagy.proxy.adm.service.IRelationReportService;
 
-import cn.hutool.core.collection.CollectionUtil;
-
 /**
  * 
  * @version 1.0.0
@@ -26,14 +25,14 @@ import cn.hutool.core.collection.CollectionUtil;
  * @date 2021年9月3日 上午9:42:46
  */
 @Component(value = AdmRelationType.SY2SH_FOR)
-public class Sy2ShForRelationObject extends AbstractQueryRelationObject {
+public class Sy2ShForRelationObject extends AbstractReportRelationObject {
 
 	public Sy2ShForRelationObject(IRelationReportService relationReportService) {
 		super(relationReportService);
 	}
 	
 	@Override
-	public int countRelationObjects(String groupCode, String projectId) {
+	public long countRelationObjects(String groupCode, String projectId) {
 		QueryCriteria queryCriteria = new QueryCriteria();
 		ObjectNode objectNode = OBJECT_MAPPER.createObjectNode();
 		objectNode.put("graphCode", AdmRelationTypeEnum.SY2SH_FOR.getGraphCode());
@@ -41,8 +40,8 @@ public class Sy2ShForRelationObject extends AbstractQueryRelationObject {
 		queryCriteria.setCriteria(objectNode);
 		queryCriteria.setOnlyCount(true);
 		
-		List<ObjectRelation> result = DigitalRelationFacade.query(groupCode, projectId, AdmCommonConstant.APP_ID, AdmCommonConstant.USER_ID, queryCriteria);
-		return CollectionUtil.isEmpty(result) ? 0 : result.size();
+		CommonResult<List<ObjectRelation>> result = DigitalRelationFacade.queryPrototype(groupCode, projectId, AdmCommonConstant.APP_ID, AdmCommonConstant.USER_ID, queryCriteria);
+		return result == null ? 0 : (result.getCount() == null ? 0 : result.getCount());
 	}
 
 	@Override

+ 5 - 5
src/main/java/com/persagy/proxy/adm/strategy/relationdata/Sy2SpForRelationObject.java

@@ -7,6 +7,7 @@ import org.springframework.stereotype.Component;
 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.response.CommonResult;
 import com.persagy.dmp.digital.client.DigitalRelationFacade;
 import com.persagy.dmp.digital.entity.ObjectDigital;
 import com.persagy.dmp.digital.entity.ObjectRelation;
@@ -17,7 +18,6 @@ import com.persagy.proxy.adm.constant.RelCodeEnum;
 import com.persagy.proxy.adm.model.AdmRelationObject;
 import com.persagy.proxy.adm.service.IRelationReportService;
 
-import cn.hutool.core.collection.CollectionUtil;
 import cn.hutool.core.util.StrUtil;
 
 /**
@@ -28,14 +28,14 @@ import cn.hutool.core.util.StrUtil;
  * @date 2021年9月3日 上午9:42:46
  */
 @Component(value = AdmRelationType.SY2SP_FOR)
-public class Sy2SpForRelationObject extends AbstractQueryRelationObject {
+public class Sy2SpForRelationObject extends AbstractReportRelationObject {
 
 	public Sy2SpForRelationObject(IRelationReportService relationReportService) {
 		super(relationReportService);
 	}
 
 	@Override
-	public int countRelationObjects(String groupCode, String projectId) {
+	public long countRelationObjects(String groupCode, String projectId) {
 		QueryCriteria queryCriteria = new QueryCriteria();
 		ObjectNode objectNode = OBJECT_MAPPER.createObjectNode();
 		objectNode.put("graphCode", AdmRelationTypeEnum.SY2SP_FOR.getGraphCode());
@@ -43,8 +43,8 @@ public class Sy2SpForRelationObject extends AbstractQueryRelationObject {
 		queryCriteria.setCriteria(objectNode);
 		queryCriteria.setOnlyCount(true);
 		
-		List<ObjectRelation> result = DigitalRelationFacade.query(groupCode, projectId, AdmCommonConstant.APP_ID, AdmCommonConstant.USER_ID, queryCriteria);
-		return CollectionUtil.isEmpty(result) ? 0 : result.size();
+		CommonResult<List<ObjectRelation>> result = DigitalRelationFacade.queryPrototype(groupCode, projectId, AdmCommonConstant.APP_ID, AdmCommonConstant.USER_ID, queryCriteria);
+		return result == null ? 0 : (result.getCount() == null ? 0 : result.getCount());
 	}
 	
 	@Override