Browse Source

修改供电关系对象类型

yucheng 3 years ago
parent
commit
f66dacc6a0

+ 78 - 66
src/main/java/com/persagy/proxy/report/controller/AdmSpaceInfoController.java

@@ -14,6 +14,7 @@ import com.persagy.proxy.adm.request.AdmQueryCriteria;
 import com.persagy.proxy.adm.request.AdmResponse;
 import com.persagy.proxy.adm.utils.AdmContextUtil;
 import com.persagy.proxy.adm.utils.GeoToolsUtil;
+import com.persagy.proxy.common.entity.InstanceUrlParam;
 import com.persagy.proxy.object.model.AdmEquipment;
 import com.persagy.proxy.object.model.AdmISpace;
 import com.persagy.proxy.object.model.AdmSpace;
@@ -99,7 +100,7 @@ public class AdmSpaceInfoController {
 	 */
 	@PostMapping("/unspace-in-eq")
 	public AdmResponse unSpaceEq(@QueryParam("type") String type, @QueryParam("spaceId") String spaceId, @RequestBody AdmQueryCriteria request) {
-		return unSpaceEq(type, spaceId, request, "MechInArch", false);
+		return queryEquipmentUnSpaceDirectly(type, spaceId, "MechInArch", request);
 	}
 
 	/**
@@ -111,14 +112,14 @@ public class AdmSpaceInfoController {
 	 */
 	@PostMapping("/unspace-for-eq")
 	public AdmResponse unSpaceForEq(@QueryParam("type") String type, @QueryParam("spaceId") String spaceId, @RequestBody AdmQueryCriteria request) {
-		return unSpaceEq(type, spaceId, request, "MechForArch",false);
+		return queryEquipmentUnSpaceDirectly(type, spaceId, "MechForArch", request);
 	}
 	/**
 	 * 空间内没有服务于当前空间的设备
 	 */
 	@PostMapping("/unspace-for-eq-point")
 	public AdmResponse unSpaceForEqPoint(@QueryParam("type") String type, @QueryParam("spaceId") String spaceId, @RequestBody AdmQueryCriteria request) {
-		return unSpaceEq(type, spaceId, request, "MechForArch",true);
+		return queryEquipmentUnSpacePolygon(type, spaceId, "MechForArch", request);
 	}
 
 	/**
@@ -126,7 +127,7 @@ public class AdmSpaceInfoController {
 	 */
 	@PostMapping("/unspace-fIn-eq-point")
 	public AdmResponse unSpaceInEqPoint(@QueryParam("type") String type, @QueryParam("spaceId") String spaceId, @RequestBody AdmQueryCriteria request) {
-		return unSpaceEq(type, spaceId, request, "MechInArch", true);
+		return queryEquipmentUnSpacePolygon(type, spaceId, "MechInArch", request);
 	}
 
 	/**
@@ -145,6 +146,79 @@ public class AdmSpaceInfoController {
 		responseIspace.setZoneType(objectType);
 		return responseIspace;
 	}
+
+	/**
+	 * 查询未关联指定空间的设备
+	 * @param type
+	 * @param spaceId
+	 * @param graphCode
+	 * @param request
+	 * @return
+	 */
+	private AdmResponse queryEquipmentUnSpaceDirectly(String type, String spaceId, String graphCode, AdmQueryCriteria request) {
+		if (StrUtil.isBlank(spaceId)) {
+			return AdmResponse.failure(ResponseCode.A0400.getDesc() + "空间id为空");
+		}
+		request.setName(AdmEquipment.OBJ_TYPE);
+		// 设置关系条件
+		request.resetRelationCond(true, graphCode, "Eq2Sp", type, spaceId, false);
+		return equipmentService.doQuery(AdmContextUtil.toDmpContext(), request, AdmEquipment.class);
+	}
+
+	/**
+	 * 查询未关联指定空间的设备,并且要在空间轮廓范围内
+	 * @param type
+	 * @param spaceId
+	 * @param graphCode
+	 * @param request
+	 * @return
+	 */
+	private AdmResponse queryEquipmentUnSpacePolygon(String type, String spaceId, String graphCode, AdmQueryCriteria request) {
+		if (StrUtil.isBlank(spaceId)) {
+			return AdmResponse.failure(ResponseCode.A0400.getDesc() + "空间id为空");
+		}
+		InstanceUrlParam context = AdmContextUtil.toDmpContext();
+		// 查询空间
+		AdmQueryCriteria queryCriteria = new AdmQueryCriteria();
+		queryCriteria.setName(AdmSpace.OBJ_TYPE);
+		queryCriteria.addFilters("id = '"+spaceId+"'");
+		AdmResponse spaceRes = spaceService.doQuery(context, queryCriteria, AdmSpace.class);
+		if(spaceRes == null || CollUtil.isEmpty(spaceRes.getContent())) {
+			return AdmResponse.failure(ResponseCode.A0400.getDesc() + "没有找到对应的空间");
+		}
+		AdmSpace admSpace = (AdmSpace) spaceRes.getContent().get(0);
+		// 查询设备
+		request.addFilters("not bimLocation isnull");
+		request.setPageSize(Integer.MAX_VALUE);
+		request.setName(AdmEquipment.OBJ_TYPE);
+		// 设置关系条件
+		request.resetRelationCond(true, graphCode, "Eq2Sp", type, spaceId, false);
+		AdmResponse equipmentRes = equipmentService.doQuery(AdmContextUtil.toDmpContext(), request, AdmEquipment.class);
+		if(equipmentRes == null || CollUtil.isEmpty(equipmentRes.getContent())) {
+			return equipmentRes;
+		}
+		//根据空间轮廓和设备坐标过滤掉不在空间内的设备
+		List<AdmEquipment> allEquipments = (List<AdmEquipment>) equipmentRes.getContent();
+		List<AdmEquipment> filterEquipments = new ArrayList<>(16);
+		ObjectMapper objectMapper = SpringHelper.getBean(ObjectMapper.class);
+		ArrayNode jsonNodes = admSpace.getOutline();
+		for(AdmEquipment equipment : allEquipments){
+			String[] location = equipment.getBimLocation().split(",");
+			ObjectNode bimLocation = objectMapper.createObjectNode()
+					.put("x", location[0])
+					.put("y", location[1]);
+			if(location.length > 2){
+				bimLocation.put("z", location[2]);
+			}
+			if(GeoToolsUtil.isPointInPoly(bimLocation, jsonNodes)){
+				filterEquipments.add(equipment);
+			}
+		}
+		equipmentRes.setContent(filterEquipments);
+		equipmentRes.setTotal(Long.valueOf(CollUtil.size(filterEquipments)));
+		return equipmentRes;
+	}
+
 	/*
 	@PostMapping("/unspace-ispace")
 	public AdmResponse unSpaceIspace(@QueryParam("objectType") String objectType, @RequestBody AdmDCSQueryRequest request) {
@@ -192,66 +266,4 @@ public class AdmSpaceInfoController {
 			return responseIspace;
 		}
 	}*/
-
-	/**
-	 * 根据空间和设备的关系,查询设备
-	 * @param type
-	 * @param spaceId
-	 * @param request
-	 * @param graphCode
-	 * @param isCalPoint 是否需要 设备的点位在空间轮廓线内 默认 true
-	 * @return
-	 */
-	private AdmResponse unSpaceEq(String type, String spaceId, AdmQueryCriteria request, String graphCode, Boolean isCalPoint) {
-		if (StrUtil.isBlank(spaceId)) {
-			return AdmResponse.failure(ResponseCode.A0400.getDesc() + "空间id为空");
-		}
-		AdmResponse responseEq = null;
-		AdmResponse responseSpace = null;
-		if(isCalPoint){
-			AdmQueryCriteria queryCriteria = new AdmQueryCriteria();
-			queryCriteria.setName(AdmSpace.OBJ_TYPE);
-			queryCriteria.setFilters(request.getFilters());
-			queryCriteria.addFilters("id = '"+spaceId+"'");
-			queryCriteria.addFilters("classCode = '"+type+"'");
-			queryCriteria.setPageSize(1);
-			responseSpace = spaceService.query(queryCriteria);
-		}
-		request.addFilters("not bimLocation isnull");
-		request.setName(AdmEquipment.OBJ_TYPE);
-		// 设置关系条件
-		request.resetRelationCond(true, graphCode, "Eq2Sp", type, spaceId, false);
-		request.setPageSize(100000);
-		responseEq = equipmentService.query(request);
-
-		if(isCalPoint && CollUtil.isNotEmpty(responseEq.getContent()) && null != responseSpace && CollUtil.isNotEmpty(responseSpace.getContent())){
-			//根据空间轮廓和设备坐标过滤掉不在空间内的设备
-			List<AdmEquipment> equipmentList = (List<AdmEquipment>) responseEq.getContent();
-			List<AdmEquipment> equipmentListNew = new ArrayList<>(16);
-			AdmSpace admSpace = (AdmSpace) responseSpace.getContent().get(0);
-			ObjectMapper objectMapper = SpringHelper.getBean(ObjectMapper.class);
-			ArrayNode jsonNodes = admSpace.getOutline();
-			for(AdmEquipment equipment : equipmentList){
-				String[] location = equipment.getBimLocation().split(",");
-				ObjectNode bimLocation = objectMapper.createObjectNode()
-						.put("x", location[0])
-						.put("y", location[1]);
-				if(location.length > 2){
-					bimLocation.put("z", location[2]);
-				}
-				if(GeoToolsUtil.isPointInPoly(bimLocation, jsonNodes)){
-					equipmentListNew.add(equipment);
-				}else{
-					continue;
-				}
-			}
-			responseEq.setContent(equipmentListNew);
-			if(CollUtil.isNotEmpty(equipmentListNew)){
-				responseEq.setTotal(equipmentListNew.size()*1L);
-			}else{
-				responseEq.setTotal(0L);
-			}
-		}
-		return responseEq;
-	}
 }