|
@@ -1,10 +1,11 @@
|
|
|
package com.persagy.proxy.dictionary.service.impl;
|
|
|
|
|
|
import cn.hutool.core.collection.CollUtil;
|
|
|
-import com.alibaba.fastjson.JSON;
|
|
|
-import com.alibaba.fastjson.JSONObject;
|
|
|
+import cn.hutool.core.map.MapUtil;
|
|
|
+import cn.hutool.core.util.StrUtil;
|
|
|
import com.fasterxml.jackson.databind.node.JsonNodeFactory;
|
|
|
import com.fasterxml.jackson.databind.node.ObjectNode;
|
|
|
+import com.persagy.dmp.common.exception.BusinessException;
|
|
|
import com.persagy.dmp.digital.entity.ObjectRelationProjectCal;
|
|
|
import com.persagy.proxy.adm.constant.AdmCommonConstant;
|
|
|
import com.persagy.proxy.adm.constant.AdmRelationTypeEnum;
|
|
@@ -23,7 +24,6 @@ import com.persagy.proxy.object.service.IAdmEquipmentService;
|
|
|
import com.persagy.proxy.object.service.IAdmFloorService;
|
|
|
import com.persagy.proxy.object.service.IAdmISpaceService;
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
-import org.apache.commons.lang.StringUtils;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
|
|
@@ -40,18 +40,14 @@ import java.util.*;
|
|
|
@Slf4j
|
|
|
public class AdmModelRelServiceImpl extends AbstractAdmBaseServiceImpl<AdmModelRel> implements IAdmModelRelService {
|
|
|
|
|
|
-
|
|
|
@Autowired
|
|
|
private IAdmFloorService floorService;
|
|
|
-
|
|
|
@Autowired
|
|
|
private IAdmEquipmentService equipmentService;
|
|
|
-
|
|
|
@Autowired
|
|
|
private IAdmISpaceService iSpaceService;
|
|
|
-
|
|
|
@Autowired
|
|
|
- private IAdmObjectRelationCalService iAdmObjectRelationCalService;
|
|
|
+ private IAdmObjectRelationCalService relationCalService;
|
|
|
|
|
|
/**
|
|
|
* 模型修改设备元空间的建筑楼层信息
|
|
@@ -61,319 +57,190 @@ public class AdmModelRelServiceImpl extends AbstractAdmBaseServiceImpl<AdmModelR
|
|
|
* @return
|
|
|
*/
|
|
|
@Override
|
|
|
- public List<AdmModelRel> doUpdateModelInfo(InstanceUrlParam context, Class<AdmModelRel> clazz, AdmModelRel vo) throws Exception{
|
|
|
- log.info("模型修改设备元空间参数{},{}"+context,vo);
|
|
|
- //1.查询模型文件是否有楼层在使用
|
|
|
- AdmModelRel floorCriteria = new AdmModelRel();
|
|
|
- floorCriteria.setModelId(vo.getModelId());
|
|
|
- List<AdmFloor> floorList = queryFloorEntity(context,floorCriteria);
|
|
|
- if(CollUtil.isNotEmpty(floorList)){
|
|
|
- Set<String> floorQueryTypes = getFloorQueryTypes(floorList);
|
|
|
- List<ObjectRelationProjectCal> relationProjectCals = iAdmObjectRelationCalService.queryCalRelByRelationType(context, floorQueryTypes);
|
|
|
- if(CollUtil.isNotEmpty(relationProjectCals)){
|
|
|
- //更新边类型计算状态:computationalState为2
|
|
|
- relationProjectCals.forEach(item->{
|
|
|
- item.setComputationalState(2);
|
|
|
- });
|
|
|
- log.info("修改设备计算状态{},{}"+context,relationProjectCals);
|
|
|
- iAdmObjectRelationCalService.updateObjectCalRel(context,relationProjectCals);
|
|
|
- }
|
|
|
- }
|
|
|
- //2.修改设备和元空间的建筑楼层信息
|
|
|
- String oldBimId = vo.getOldBimId();
|
|
|
- String bimId = vo.getBimId();
|
|
|
-
|
|
|
- if(StringUtils.isNotEmpty(oldBimId) && !oldBimId.equals(bimId)){
|
|
|
- //根据模型id重置设备元空间的建筑楼层信息
|
|
|
- resetEquipIspaceInfo(context,vo);
|
|
|
- }
|
|
|
-
|
|
|
- //查询楼层实体
|
|
|
- floorCriteria = new AdmModelRel();
|
|
|
- floorCriteria.setFloorId(vo.getFloorId());
|
|
|
- List<AdmFloor> admFloors = queryFloorEntity(context, floorCriteria);
|
|
|
+ public void doUpdateModelInfo(InstanceUrlParam context, Class<AdmModelRel> clazz, AdmModelRel vo){
|
|
|
+ // 查询楼层实体
|
|
|
+ List<AdmFloor> admFloors = queryFloorEntity(context, null, vo.getFloorId());
|
|
|
if(CollUtil.isEmpty(admFloors)){
|
|
|
- throw new Exception("楼层不存在");
|
|
|
+ throw new BusinessException("楼层不存在");
|
|
|
}
|
|
|
+ log.info("模型修改设备元空间参数{},{}"+context,vo);
|
|
|
+ // 在用模型的楼层计算状态改为2
|
|
|
+ processFloorCalState(context, vo.getModelId());
|
|
|
AdmFloor floorEntity = admFloors.get(0);
|
|
|
- //2.1 模型修改设备的建筑楼层信息
|
|
|
- if(CollUtil.isEmpty(floorEntity.getOutline())){
|
|
|
- //如果楼层的轮廓线为空的话,直接修改
|
|
|
- updateEquipModelInfo(context, vo,floorEntity);
|
|
|
- }else{
|
|
|
- //判断该设备的坐标是否在层楼的轮廓中,若在,修改;不在,不修改
|
|
|
- List<AdmEquipment> admEquipments = queryModelEquip(context, vo);
|
|
|
- Boolean pointInPolygon = isPointInPolygon(admEquipments, floorEntity);
|
|
|
- if(pointInPolygon){
|
|
|
- updateEquipModelInfo(context, vo,floorEntity);
|
|
|
- }
|
|
|
+ processRelObjects(context, vo.getOldBimId(), vo.getBimId(), floorEntity);
|
|
|
+ // 补充楼层属性
|
|
|
+ Map<String, Object> infos = floorEntity.getInfos();
|
|
|
+ if(CollUtil.isEmpty(infos)){
|
|
|
+ infos = new HashMap<>(16);
|
|
|
+ floorEntity.setInfos(infos);
|
|
|
}
|
|
|
- //2.2 模型修改元空间的建筑楼层信息
|
|
|
- updateIspaceModelInfo(context, vo,floorEntity);
|
|
|
-
|
|
|
- //3. 修改楼层平面图地址
|
|
|
- if(StringUtils.isNotEmpty(vo.getFloorMap())){
|
|
|
- if(CollUtil.isEmpty(floorEntity.getInfos())){
|
|
|
- Map<String, Object> infos = new HashMap<>(16);
|
|
|
- infos.put("floorMap",vo.getFloorMap());
|
|
|
- }else{
|
|
|
- floorEntity.getInfos().put("floorMap",vo.getFloorMap());
|
|
|
- }
|
|
|
+ infos.put("floorMap",vo.getFloorMap());
|
|
|
+ Double floorElevation = MapUtil.getDouble(vo.getAttributeMap(), AdmCommonConstant.FLOOR_ELEVATION);
|
|
|
+ if(floorElevation != null){
|
|
|
+ infos.put(AdmCommonConstant.FLOOR_ELEVATION, floorElevation/1000);
|
|
|
}
|
|
|
floorEntity.setModelId(vo.getModelId());
|
|
|
floorEntity.setBimIdPre(vo.getBimId());
|
|
|
-
|
|
|
- //4.处理楼层自定义属性:楼层标高
|
|
|
- ObjectNode attributeMap = vo.getAttributeMap();
|
|
|
- if(attributeMap!=null){
|
|
|
- updateFloorElevation(vo.getAttributeMap().toString(),floorEntity);
|
|
|
- }
|
|
|
-
|
|
|
//5.修改楼层信息
|
|
|
- ArrayList<AdmFloor> floors = new ArrayList<>();
|
|
|
- floors.add(floorEntity);
|
|
|
- List<AdmFloor> floorUpresult = floorService.doUpdate(context, AdmFloor.class, floors);
|
|
|
- if(CollUtil.isEmpty(floorUpresult)) {
|
|
|
- //6.发送消息,BDTP已发送,不再重复发送修改对象消息
|
|
|
- }
|
|
|
- return null;
|
|
|
+ floorService.doUpdate(context, AdmFloor.class, CollUtil.newArrayList(floorEntity));
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
- * 模型修改设备的建筑楼层信息
|
|
|
+ * 处理在用模型文件的楼层计算状态
|
|
|
+ * @param context
|
|
|
+ * @param modelId
|
|
|
*/
|
|
|
- private void updateEquipModelInfo(InstanceUrlParam context, AdmModelRel modelRel,AdmFloor floorEntity){
|
|
|
-
|
|
|
- //查询模型下的设备信息
|
|
|
- AdmQueryCriteria criteria = new AdmQueryCriteria();
|
|
|
- StringBuilder filters = new StringBuilder();
|
|
|
- if(StringUtils.isNotEmpty(modelRel.getBimId())){
|
|
|
- filters.append("bimId contain '"+modelRel.getBimId()+"%'");
|
|
|
- }
|
|
|
- /*if(StringUtils.isNotEmpty(modelRel.getFloorId())){
|
|
|
- if(filters != null && filters.length()>0){
|
|
|
- filters.append(" ; ");
|
|
|
- }
|
|
|
- filters.append("floorId = '"+modelRel.getFloorId()+"'");
|
|
|
- }*/
|
|
|
- criteria.setFilters(filters.toString());
|
|
|
- criteria.setName("equipment");
|
|
|
- AdmResponse admResponse = equipmentService.query(criteria);
|
|
|
- List<AdmEquipment> content = (List<AdmEquipment>) admResponse.getContent();
|
|
|
- if(CollUtil.isEmpty(content)){
|
|
|
+ private void processFloorCalState(InstanceUrlParam context, String modelId) {
|
|
|
+ List<AdmFloor> floorList = queryFloorEntity(context, modelId, null);
|
|
|
+ if(CollUtil.isEmpty(floorList)) {
|
|
|
return;
|
|
|
}
|
|
|
- for (AdmEquipment admEquipment : content) {
|
|
|
- //修改设备的建筑楼层信息
|
|
|
- admEquipment.setBuildingId(floorEntity.getBuildingId());
|
|
|
- admEquipment.setFloorId(floorEntity.getId());
|
|
|
- }
|
|
|
- List<AdmEquipment> admEquipments = equipmentService.doUpdate(context, AdmEquipment.class, content);
|
|
|
- log.info("模型修改设备建筑楼层信息结果"+admEquipments);
|
|
|
- }
|
|
|
-
|
|
|
-
|
|
|
- /**
|
|
|
- * 模型修改元空间的建筑楼层信息
|
|
|
- */
|
|
|
- private void updateIspaceModelInfo(InstanceUrlParam context, AdmModelRel modelRel,AdmFloor floorEntity){
|
|
|
-
|
|
|
- //查询模型下的元空间信息
|
|
|
- AdmQueryCriteria criteria = new AdmQueryCriteria();
|
|
|
- StringBuilder filters = new StringBuilder();
|
|
|
- if(StringUtils.isNotEmpty(modelRel.getBimId())){
|
|
|
- filters.append("bimId contain '"+modelRel.getBimId()+"%'");
|
|
|
- }
|
|
|
- /*if(StringUtils.isNotEmpty(modelRel.getFloorId())){
|
|
|
- if(filters != null && filters.length()>0){
|
|
|
- filters.append(" ; ");
|
|
|
- }
|
|
|
- filters.append("floorId = '"+modelRel.getFloorId()+"'");
|
|
|
- }*/
|
|
|
- criteria.setName("ispace");
|
|
|
- criteria.setFilters(filters.toString());
|
|
|
- AdmResponse admResponse = iSpaceService.doQuery(context, criteria, AdmISpace.class);
|
|
|
- List<AdmISpace> content = (List<AdmISpace>) admResponse.getContent();
|
|
|
- if(CollUtil.isEmpty(content)){
|
|
|
+ Set<String> floorQueryTypes = getFloorQueryTypes(floorList);
|
|
|
+ List<ObjectRelationProjectCal> needCals = relationCalService.queryCalRelByRelationType(context, floorQueryTypes);
|
|
|
+ if(CollUtil.isEmpty(needCals)) {
|
|
|
return;
|
|
|
}
|
|
|
- for (AdmISpace admIspace : content) {
|
|
|
- //修改设备的建筑楼层信息
|
|
|
- admIspace.setBuildingId(floorEntity.getBuildingId());
|
|
|
- admIspace.setFloorId(floorEntity.getId());
|
|
|
- }
|
|
|
- List<AdmISpace> admEquipments = iSpaceService.doUpdate(context, AdmISpace.class, content);
|
|
|
- log.info("模型修改元空间的建筑楼层信息结果"+admEquipments);
|
|
|
+ //更新边类型计算状态:computationalState为2
|
|
|
+ needCals.forEach(item->{
|
|
|
+ item.setComputationalState(2);
|
|
|
+ });
|
|
|
+ relationCalService.updateObjectCalRel(context, needCals);
|
|
|
}
|
|
|
|
|
|
-
|
|
|
/**
|
|
|
- * 判断点是否在面中
|
|
|
- * @return
|
|
|
+ * 处理关联的元空间和设备
|
|
|
+ * @param context
|
|
|
+ * @param oldBimId
|
|
|
+ * @param bimId
|
|
|
+ * @param floor
|
|
|
*/
|
|
|
- private Boolean isPointInPolygon(List<AdmEquipment> equipments,AdmFloor floor){
|
|
|
- if(CollUtil.isEmpty(equipments)){
|
|
|
- return false;
|
|
|
+ private void processRelObjects(InstanceUrlParam context, String oldBimId, String bimId, AdmFloor floor) {
|
|
|
+ // 如果bimId不一致,则清空原来的楼层信息
|
|
|
+ if(StrUtil.isNotBlank(oldBimId) && !StrUtil.equals(oldBimId, bimId)) {
|
|
|
+ updateRelEquipments(context, oldBimId, null);
|
|
|
+ updateRelISpace(context, oldBimId, null);
|
|
|
}
|
|
|
- Boolean flag = true;
|
|
|
- //楼层轮廓线
|
|
|
-// List<ObjectNode> outline = floor.getOutline();
|
|
|
-// for (AdmEquipment equipment : equipments) {
|
|
|
-// //设备BIM坐标
|
|
|
-// String bimLocation = equipment.getBimLocation();
|
|
|
-// //判断点是否在面中:即设备位置是否在该楼层轮廓线中
|
|
|
-// if(StringUtils.isEmpty(bimLocation)){
|
|
|
-// continue;
|
|
|
-// }
|
|
|
-// String[] split = bimLocation.split(",");
|
|
|
-// ObjectNode node = JsonNodeFactory.instance.objectNode();
|
|
|
-// node.put("x",Double.valueOf(split[0]));
|
|
|
-// node.put("y",Double.valueOf(split[1]));
|
|
|
-// node.put("z",Double.valueOf(split[2]));
|
|
|
-// flag = GeoToolsUtil.isPointInPoly(node,outline);
|
|
|
-// if(!flag){
|
|
|
-// return flag;
|
|
|
-// }
|
|
|
-// }
|
|
|
- return flag;
|
|
|
+ // 更新新关联的
|
|
|
+ updateRelEquipments(context, bimId, floor);
|
|
|
+ updateRelISpace(context, bimId, floor);
|
|
|
}
|
|
|
|
|
|
-
|
|
|
/**
|
|
|
- * 楼层属性修改
|
|
|
- * @param floorMapStr
|
|
|
- * @param floorEntity
|
|
|
+ * 更新设备
|
|
|
+ * @param context
|
|
|
+ * @param bimId
|
|
|
+ * @param floor
|
|
|
*/
|
|
|
- private void updateFloorMap(String floorMapStr,AdmFloor floorEntity){
|
|
|
- if(StringUtils.isEmpty(floorMapStr)){
|
|
|
+ private void updateRelEquipments(InstanceUrlParam context, String bimId, AdmFloor floor) {
|
|
|
+ if(StrUtil.isBlank(bimId)) {
|
|
|
return;
|
|
|
}
|
|
|
- Map<String, Object> floorMap = JSONObject.toJavaObject(JSON.parseObject(floorMapStr), Map.class);
|
|
|
- Map<String, Object> infos = floorEntity.getInfos();
|
|
|
- for(Map.Entry<String,Object> map : floorMap.entrySet()){
|
|
|
- infos.put(map.getKey(),map.getValue());
|
|
|
- }
|
|
|
- floorEntity.setInfos(infos);
|
|
|
- }
|
|
|
-
|
|
|
- /**
|
|
|
- * 处理楼层标高
|
|
|
- * @param floorMapStr
|
|
|
- * @param floorEntity
|
|
|
- */
|
|
|
- private void updateFloorElevation(String floorMapStr,AdmFloor floorEntity){
|
|
|
- if(StringUtils.isEmpty(floorMapStr)){
|
|
|
+ //查询模型下的设备信息
|
|
|
+ AdmQueryCriteria criteria = new AdmQueryCriteria();
|
|
|
+ criteria.addFilters("bimId startwith '" + bimId + ":'");
|
|
|
+ criteria.setName(AdmEquipment.OBJ_TYPE);
|
|
|
+ AdmResponse admResponse = equipmentService.doQuery(context, criteria, AdmEquipment.class);
|
|
|
+ List<AdmEquipment> content = (List<AdmEquipment>) admResponse.getContent();
|
|
|
+ if(CollUtil.isEmpty(content)) {
|
|
|
return;
|
|
|
}
|
|
|
- Map<String, Object> floorMap = JSONObject.toJavaObject(JSON.parseObject(floorMapStr), Map.class);
|
|
|
-
|
|
|
- Map<String, Object> infos = floorEntity.getInfos();
|
|
|
- if(floorMap.containsKey(AdmCommonConstant.FLOOR_ELEVATION)){
|
|
|
- Object object = floorMap.get(AdmCommonConstant.FLOOR_ELEVATION);
|
|
|
- if(object != null){
|
|
|
- double floorElevation = Double.valueOf(object.toString()) / 1000;
|
|
|
- infos.put(AdmCommonConstant.FLOOR_ELEVATION,floorElevation);
|
|
|
+ List<String> nullList = CollUtil.newArrayList("buildingId", "floorId");
|
|
|
+ List<AdmEquipment> rsList = new ArrayList<>();
|
|
|
+ for (AdmEquipment admEquipment : content) {
|
|
|
+ if(floor == null) {
|
|
|
+ admEquipment.setNullList(nullList);
|
|
|
+ rsList.add(admEquipment);
|
|
|
+ continue;
|
|
|
}
|
|
|
+ if(!isPointInPolygon(admEquipment, floor.getOutline())) {
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ //修改设备的建筑楼层信息
|
|
|
+ admEquipment.setBuildingId(floor.getBuildingId());
|
|
|
+ admEquipment.setFloorId(floor.getId());
|
|
|
+ rsList.add(admEquipment);
|
|
|
}
|
|
|
- }
|
|
|
-
|
|
|
-
|
|
|
- /**
|
|
|
- * 根据模型id重置设备元空间的建筑楼层信息
|
|
|
- * @param context
|
|
|
- * @param vo
|
|
|
- */
|
|
|
- private void resetEquipIspaceInfo(InstanceUrlParam context, AdmModelRel vo){
|
|
|
- //重置历史设备的建筑楼层信息
|
|
|
- List<AdmEquipment> admEquipments = queryEquipmentByBimId(context, vo);
|
|
|
- if(CollUtil.isNotEmpty(admEquipments)){
|
|
|
- admEquipments.forEach(item->{
|
|
|
- item.setFloorId(null);
|
|
|
- item.setBuildingId(null);
|
|
|
- });
|
|
|
- }
|
|
|
- equipmentService.doUpdate(context,AdmEquipment.class,admEquipments);
|
|
|
-
|
|
|
- //重置历史元空间的建筑楼层信息
|
|
|
- List<AdmISpace> admISpaces = queryIspaceByBimId(context, vo);
|
|
|
- if(CollUtil.isNotEmpty(admISpaces)){
|
|
|
- admISpaces.forEach(item->{
|
|
|
- item.setFloorId(null);
|
|
|
- item.setBuildingId(null);
|
|
|
- });
|
|
|
+ if(CollUtil.isEmpty(rsList)) {
|
|
|
+ return;
|
|
|
}
|
|
|
- iSpaceService.doUpdate(context,AdmISpace.class,admISpaces);
|
|
|
+ equipmentService.doUpdate(context, AdmEquipment.class, rsList);
|
|
|
}
|
|
|
|
|
|
-
|
|
|
/**
|
|
|
- * 查询设备信息
|
|
|
+ * 更新元空间
|
|
|
* @param context
|
|
|
- * @param modelRel
|
|
|
+ * @param bimId
|
|
|
+ * @param floor
|
|
|
*/
|
|
|
- private List<AdmEquipment> queryModelEquip(InstanceUrlParam context, AdmModelRel modelRel){
|
|
|
+ private void updateRelISpace(InstanceUrlParam context, String bimId, AdmFloor floor) {
|
|
|
+ if(StrUtil.isBlank(bimId)) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
//查询模型下的设备信息
|
|
|
AdmQueryCriteria criteria = new AdmQueryCriteria();
|
|
|
- criteria.setFilters("bimId = '"+modelRel.getBimId()+"' and floorId = '"+modelRel.getFloorId()+"'");
|
|
|
- // criteria.setFilters("floorId = '"+modelRel.getFloorId()+"'");
|
|
|
- AdmResponse admResponse = equipmentService.query(criteria);
|
|
|
- if(CollUtil.isEmpty(admResponse.getContent())){
|
|
|
- return new ArrayList<>();
|
|
|
+ criteria.addFilters("bimId startwith '" + bimId + ":'");
|
|
|
+ criteria.setName(AdmISpace.OBJ_TYPE);
|
|
|
+ AdmResponse admResponse = iSpaceService.doQuery(context, criteria, AdmISpace.class);
|
|
|
+ List<AdmISpace> content = (List<AdmISpace>) admResponse.getContent();
|
|
|
+ if(CollUtil.isEmpty(content)) {
|
|
|
+ return;
|
|
|
}
|
|
|
- return (List<AdmEquipment>) admResponse.getContent();
|
|
|
- }
|
|
|
-
|
|
|
- /**
|
|
|
- * 根据BIMID查询历史设备信息
|
|
|
- */
|
|
|
- private List<AdmEquipment> queryEquipmentByBimId(InstanceUrlParam context, AdmModelRel vo){
|
|
|
- AdmQueryCriteria criteria = new AdmQueryCriteria();
|
|
|
- criteria.setFilters("bimId = '"+vo.getOldBimId()+"'");
|
|
|
- criteria.setName("equipment");
|
|
|
- AdmResponse admResponse = equipmentService.query(criteria);
|
|
|
- return (List<AdmEquipment>)admResponse.getContent();
|
|
|
+ List<String> nullList = CollUtil.newArrayList("buildingId", "floorId");
|
|
|
+ for (AdmISpace iSpace : content) {
|
|
|
+ if(floor == null) {
|
|
|
+ iSpace.setNullList(nullList);
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ //修改设备的建筑楼层信息
|
|
|
+ iSpace.setBuildingId(floor.getBuildingId());
|
|
|
+ iSpace.setFloorId(floor.getId());
|
|
|
+ }
|
|
|
+ iSpaceService.doUpdate(context, AdmISpace.class, content);
|
|
|
}
|
|
|
|
|
|
-
|
|
|
/**
|
|
|
- * 根据BIMID查询历史元空间信息
|
|
|
+ * 判断点是否在面中
|
|
|
+ * @return
|
|
|
*/
|
|
|
- private List<AdmISpace> queryIspaceByBimId(InstanceUrlParam context, AdmModelRel vo){
|
|
|
- AdmQueryCriteria criteria = new AdmQueryCriteria();
|
|
|
- criteria.setFilters("bimId = '"+vo.getOldBimId()+"'");
|
|
|
- criteria.setName("ispace");
|
|
|
- AdmResponse admResponse = iSpaceService.doQuery(context, criteria, AdmISpace.class);
|
|
|
- return (List<AdmISpace>)admResponse.getContent();
|
|
|
+ private boolean isPointInPolygon(AdmEquipment equipment, List<ObjectNode> outline){
|
|
|
+ // 如果为空,表示无限边界
|
|
|
+ if(CollUtil.isEmpty(outline)) {
|
|
|
+ return true;
|
|
|
+ }
|
|
|
+ Boolean flag = true;
|
|
|
+ //设备BIM坐标
|
|
|
+ String bimLocation = equipment.getBimLocation();
|
|
|
+ //判断点是否在面中:即设备位置是否在该楼层轮廓线中
|
|
|
+ if(StrUtil.isBlank(bimLocation)){
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ String[] split = bimLocation.split(",");
|
|
|
+ ObjectNode node = JsonNodeFactory.instance.objectNode();
|
|
|
+ node.put("x",Double.valueOf(split[0]));
|
|
|
+ node.put("y",Double.valueOf(split[1]));
|
|
|
+ node.put("z",Double.valueOf(split[2]));
|
|
|
+ return GeoToolsUtil.isPointInPoly(node,outline);
|
|
|
}
|
|
|
|
|
|
-
|
|
|
/**
|
|
|
* 查询模型文件是否有楼层在使用
|
|
|
*/
|
|
|
- private List<AdmFloor> queryFloorEntity(InstanceUrlParam context, AdmModelRel vo){
|
|
|
- if(StringUtils.isEmpty(vo.getModelId()) && StringUtils.isEmpty(vo.getFloorId())){
|
|
|
+ private List<AdmFloor> queryFloorEntity(InstanceUrlParam context, String modelId, String floorId){
|
|
|
+ if(StrUtil.isBlank(modelId) && StrUtil.isBlank(floorId)){
|
|
|
return new ArrayList<>();
|
|
|
}
|
|
|
AdmQueryCriteria criteria = new AdmQueryCriteria();
|
|
|
-
|
|
|
- StringBuilder filters = new StringBuilder();
|
|
|
- if(StringUtils.isNotEmpty(vo.getModelId())){
|
|
|
- filters.append("modelId = '"+vo.getModelId()+"'");
|
|
|
+ if(StrUtil.isNotBlank(modelId)) {
|
|
|
+ criteria.addFilters(" modelId = '" + modelId + "' ");
|
|
|
}
|
|
|
- if(StringUtils.isNotEmpty(vo.getFloorId())){
|
|
|
- if(filters != null && filters.length()>0){
|
|
|
- filters.append(" ; ");
|
|
|
- }
|
|
|
- filters.append("id = '"+vo.getFloorId()+"'");
|
|
|
+ if(StrUtil.isNotBlank(floorId)) {
|
|
|
+ criteria.addFilters(" id = '"+floorId+"' ");
|
|
|
}
|
|
|
- criteria.setFilters(filters.toString());
|
|
|
- criteria.setName("floor");
|
|
|
- log.info("查询模型文件是否有楼层在使用入参:{},{}"+context,criteria);
|
|
|
+ criteria.setName(AdmFloor.OBJ_TYPE);
|
|
|
AdmResponse admResponse = floorService.doQuery(context, criteria, AdmFloor.class);
|
|
|
return (List<AdmFloor>)admResponse.getContent();
|
|
|
}
|
|
|
|
|
|
-
|
|
|
/**
|
|
|
* 获取楼层查询类型
|
|
|
* @param floorList
|