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