|
@@ -36,6 +36,7 @@ import com.persagy.server.mappers.ICalcSpecialMapper
|
|
|
import com.persagy.server.datacenter.models.entities.Connector
|
|
|
import com.persagy.server.datacenter.models.entities.Duct
|
|
|
import com.persagy.server.datacenter.models.entities.Pipe
|
|
|
+import com.persagy.server.datacenter.models.service.BaseDataService
|
|
|
import com.persagy.server.datacenter.models.wrapperobj.ClassCodeEnum
|
|
|
import com.persagy.server.datacenter.services.objects.BuildingService
|
|
|
import com.persagy.server.datacenter.services.objects.EquipmentService
|
|
@@ -274,7 +275,7 @@ open class CalcSpecialService {
|
|
|
|
|
|
for (building in buildings) {
|
|
|
val buildingId = building.id!!
|
|
|
- val floors = FloorService.select(SFilter.eq("projectId",projectId), SFilter.eq("buildingId",buildingId)).exec()
|
|
|
+ val floors = FloorService.select(SFilter.eq("projectId",projectId), SFilter.eq("buildingId",buildingId), SFilter.eq("id","Fl44030700030232b37b40f84312932da8cb6046698a")).exec()
|
|
|
for (floor in floors) {
|
|
|
if (!floor.modelId.isNullOrEmpty()) {
|
|
|
modelIds.add(floor.modelId!!)
|
|
@@ -288,34 +289,37 @@ open class CalcSpecialService {
|
|
|
// for (floor in floors) {
|
|
|
// if (!floor.modelId.isNullOrEmpty()) {
|
|
|
// val connectors = mapper.connectorOrder(floor.modelId!!)
|
|
|
- val connectors = connectorService.select(SFilter.inList("modelId",modelIds)).exec()
|
|
|
+ val connectors = connectorService.select(SFilter.inList("modelId",modelIds), SFilter.ne("domain","DomainPiping")).exec()
|
|
|
|
|
|
// val dcEquipments = EquipmentService.select(SFilter.eq("projectId",projectId), SFilter.eq("floorId",floor.id!!)).exec()
|
|
|
val dcEquipments = EquipmentService.select(SFilter.eq("projectId",projectId),SFilter.eq("buildingId",building.id!!)).exec()
|
|
|
- val dcEquipMap = HashMap<String, Equipment>(4096)
|
|
|
+ val dcEquipMap = HashMap<String, Equipment>(10000)
|
|
|
for (equipment in dcEquipments) {
|
|
|
if(!equipment.bimId.isNullOrEmpty()){
|
|
|
dcEquipMap[equipment.bimId!!] = equipment
|
|
|
}
|
|
|
|
|
|
}
|
|
|
-
|
|
|
+ val equipments = BaseDataService.equipmentService.select(SFilter.inList("modelId",modelIds)).projection("id").exec()
|
|
|
+ val equipIds = equipments.map { e -> e.id!! }
|
|
|
val connectorMap = HashMap<String, Connector>(100000)
|
|
|
- val typeMap = HashMap<String, String>(20000)
|
|
|
- val eqBelongMap = HashMap<String, String>(20000)
|
|
|
+ val typeMap = HashMap<String, String>()
|
|
|
+ val eqBelongMap = HashMap<String, String>(10000)
|
|
|
for (connector in connectors) {
|
|
|
connectorMap[connector.id!!] = connector
|
|
|
|
|
|
- val belong = connector.belongBimId ?: continue
|
|
|
+ val belong = connector.belong ?: continue
|
|
|
val belongType = connector.belongType
|
|
|
- val id = connector.id!!
|
|
|
if (belongType != null) {
|
|
|
- typeMap[id] = belongType
|
|
|
- }
|
|
|
- if(belongType == "Equipment"){
|
|
|
- eqBelongMap[id] = belong
|
|
|
+ if(belongType != "Equipment"){
|
|
|
+ typeMap[belong] = belongType
|
|
|
+ }else if(equipIds.contains(belong)){
|
|
|
+ typeMap[belong] = belongType
|
|
|
+ }
|
|
|
+
|
|
|
}
|
|
|
|
|
|
+
|
|
|
}
|
|
|
|
|
|
val belongMap = HashMap<String, HashSet<String>>()
|
|
@@ -325,32 +329,37 @@ open class CalcSpecialService {
|
|
|
//拿到所属类
|
|
|
val belongType = connector.belongType
|
|
|
//拿到所属id
|
|
|
- val belong = connector.id
|
|
|
+ val belong = connector.belong
|
|
|
+ if(belong == "6570cc5d8dff11eba822e9f08377214a"){
|
|
|
+ print("111")
|
|
|
+ }
|
|
|
if(belong != null){
|
|
|
- belongMap[belong] = HashSet()
|
|
|
+ if(belongType == "Equipment"){
|
|
|
+ eqBelongMap[belong] = connector.belongBimId!!
|
|
|
+ }
|
|
|
+ if(!belongMap.containsKey(belong)){
|
|
|
+ belongMap[belong] = HashSet()
|
|
|
+ }
|
|
|
+// if(connector.belongType == "Equipment"){
|
|
|
+// eqBelongSet.add(belong)
|
|
|
+// }
|
|
|
+
|
|
|
eqBelongSet.add(belong)
|
|
|
+
|
|
|
//如果连接件有连接
|
|
|
if (connector.connectIdJson!!.size > 0) {
|
|
|
val connectorId = connector!!.connectIdJson?.get(0)
|
|
|
var currentConnector = connectorMap[connectorId!!]
|
|
|
- val cBelong = currentConnector?.id
|
|
|
- if (cBelong != null) {
|
|
|
-// if(belongType == "Equipment"){
|
|
|
-// eqBelongSet.add(belong)
|
|
|
+ //系统不同
|
|
|
+// if(connector.mepSystemType != currentConnector?.mepSystemType){
|
|
|
+// continue
|
|
|
// }
|
|
|
-
|
|
|
- if (belongMap.containsKey(belong)) {
|
|
|
- val belongs = belongMap[belong]!!
|
|
|
- belongs.add(cBelong)
|
|
|
- belongMap[belong] = belongs
|
|
|
- } else {
|
|
|
- belongMap[belong] = hashSetOf(cBelong)
|
|
|
- }
|
|
|
- }else{
|
|
|
- belongMap[belong] = HashSet()
|
|
|
+ val cBelong = currentConnector?.belong
|
|
|
+ if (cBelong != null) {
|
|
|
+ val belongs = belongMap[belong]!!
|
|
|
+ belongs.add(cBelong)
|
|
|
+ belongMap[belong] = belongs
|
|
|
}
|
|
|
- }else {
|
|
|
- belongMap[belong] = HashSet()
|
|
|
}
|
|
|
if(connector.riserState != null && connector.riserState!! > 0 && listOf("Duct","Pipe").contains(connector.belongType)){
|
|
|
for (key in riserMap.keys) {
|
|
@@ -373,48 +382,14 @@ open class CalcSpecialService {
|
|
|
var dSet: HashSet<String>
|
|
|
println(eqBelongSet.size)
|
|
|
for (key in eqBelongSet) {
|
|
|
- val e1 = dcEquipMap[eqBelongMap[key]]
|
|
|
- if(e1 == null || !enumList.contains(e1.classCode)){
|
|
|
- continue
|
|
|
- }
|
|
|
|
|
|
- val belongSet = belongMap[key]!!
|
|
|
|
|
|
+ val belongSet = belongMap[key]!!
|
|
|
dSet = directDist(HashSet(belongSet),belongMap,typeMap)
|
|
|
dBlockId ++
|
|
|
|
|
|
- for (s in dSet!!) {
|
|
|
- if(typeMap[s] == "Equipment" && key != s){
|
|
|
- val e2 = dcEquipMap[eqBelongMap[key]]
|
|
|
- if(e2 == null || !enumList.contains(e2.classCode)){
|
|
|
- continue
|
|
|
- }
|
|
|
- if(e1.classCode == e2.classCode){
|
|
|
- continue
|
|
|
- }
|
|
|
-
|
|
|
- val connectedBlock = ConnectedBlock()
|
|
|
- connectedBlock.id1 = e1.id!!
|
|
|
- connectedBlock.id2 = e2.id!!
|
|
|
- connectedBlock.type1 = "Equipment"
|
|
|
- connectedBlock.type2 = "Equipment"
|
|
|
- connectedBlock.modelId1 = connectorMap[key]!!.modelId
|
|
|
- connectedBlock.modelId2 = connectorMap[s]!!.modelId
|
|
|
-// connectedBlock.domain = connector.domain
|
|
|
-// connectedBlock.mepSystemType = connector.mepSystemType
|
|
|
- connectedBlock.projectId = projectId
|
|
|
- connectedBlock.buildingId = buildingId
|
|
|
- connectedBlock.depth = 0
|
|
|
- connectedBlock.blockId = dBlockId.toString()
|
|
|
- connectedBlock.typeCode1 = e1?.classCode
|
|
|
- connectedBlock.typeCode2 = e2?.classCode
|
|
|
- if (!connectedBlocks.contains(connectedBlock)) {
|
|
|
- connectedBlocks.add(connectedBlock)
|
|
|
- }
|
|
|
-
|
|
|
- }
|
|
|
- }
|
|
|
|
|
|
+ fSet = null
|
|
|
for (block in fBlockMap.keys) {
|
|
|
val set = fBlockMap[block]!!
|
|
|
if(set.contains(key)){
|
|
@@ -428,9 +403,6 @@ open class CalcSpecialService {
|
|
|
fBlockId ++
|
|
|
cBlockId = fBlockId
|
|
|
fBlockMap[cBlockId] = HashSet(fSet)
|
|
|
- if(cBlockId == 1){
|
|
|
- println(fBlockMap[cBlockId]!!.toJson())
|
|
|
- }
|
|
|
}
|
|
|
// fSet = fullDist(HashSet(belongSet),belongMap)
|
|
|
// println(fSet.contains(key))
|
|
@@ -438,40 +410,81 @@ open class CalcSpecialService {
|
|
|
|
|
|
fMap[key] = fSet
|
|
|
dMap[key] = dSet
|
|
|
- for (s in fSet!!) {
|
|
|
- if(typeMap[s] == "Equipment" && key != s){
|
|
|
- val e2 = dcEquipMap[eqBelongMap[key]]
|
|
|
- if(e2 == null || !enumList.contains(e2.classCode)){
|
|
|
- continue
|
|
|
- }
|
|
|
- if(e1.classCode == e2.classCode){
|
|
|
- continue
|
|
|
- }
|
|
|
|
|
|
- val connectedBlock = ConnectedBlock()
|
|
|
|
|
|
- connectedBlock.id1 = e1.id!!
|
|
|
- connectedBlock.id2 = e2.id!!
|
|
|
- connectedBlock.type1 = "Equipment"
|
|
|
- connectedBlock.type2 = "Equipment"
|
|
|
- connectedBlock.modelId1 = connectorMap[key]!!.modelId
|
|
|
- connectedBlock.modelId2 = connectorMap[s]!!.modelId
|
|
|
+ if(typeMap[key] == "Equipment"){
|
|
|
+ val e1 = dcEquipMap[eqBelongMap[key]]
|
|
|
+ if(e1 == null || !enumList.contains(e1.classCode)){
|
|
|
+ continue
|
|
|
+ }
|
|
|
+ for (s in dSet!!) {
|
|
|
+ if(typeMap[s] == "Equipment" && key != s){
|
|
|
+ val e2 = dcEquipMap[eqBelongMap[s]]
|
|
|
+ if(e2 == null || !enumList.contains(e2.classCode)){
|
|
|
+ continue
|
|
|
+ }
|
|
|
+// if(e1.classCode == e2.classCode){
|
|
|
+// continue
|
|
|
+// }
|
|
|
+
|
|
|
+ val connectedBlock = ConnectedBlock()
|
|
|
+ connectedBlock.id1 = e1.id!!
|
|
|
+ connectedBlock.id2 = e2.id!!
|
|
|
+ connectedBlock.type1 = "Equipment"
|
|
|
+ connectedBlock.type2 = "Equipment"
|
|
|
+// connectedBlock.modelId1 = connectorMap[key]!!.modelId
|
|
|
+// connectedBlock.modelId2 = connectorMap[s]!!.modelId
|
|
|
// connectedBlock.domain = connector.domain
|
|
|
// connectedBlock.mepSystemType = connector.mepSystemType
|
|
|
- connectedBlock.projectId = projectId
|
|
|
- connectedBlock.buildingId = buildingId
|
|
|
- connectedBlock.depth = 1
|
|
|
- connectedBlock.blockId = cBlockId.toString()
|
|
|
- connectedBlock.typeCode1 = e1?.classCode
|
|
|
- connectedBlock.typeCode2 = e2?.classCode
|
|
|
- if (!connectedBlocks.contains(connectedBlock)) {
|
|
|
- connectedBlocks.add(connectedBlock)
|
|
|
+ connectedBlock.projectId = projectId
|
|
|
+ connectedBlock.buildingId = buildingId
|
|
|
+ connectedBlock.depth = 0
|
|
|
+ connectedBlock.blockId = dBlockId.toString()
|
|
|
+ connectedBlock.typeCode1 = e1?.classCode
|
|
|
+ connectedBlock.typeCode2 = e2?.classCode
|
|
|
+ if (!connectedBlocks.contains(connectedBlock)) {
|
|
|
+ connectedBlocks.add(connectedBlock)
|
|
|
+ }
|
|
|
+
|
|
|
}
|
|
|
+ }
|
|
|
+ for (s in fSet!!) {
|
|
|
+ if(typeMap[s] == "Equipment" && key != s){
|
|
|
+ val e2 = dcEquipMap[eqBelongMap[s]]
|
|
|
+ if(e2 == null || !enumList.contains(e2.classCode)){
|
|
|
+ continue
|
|
|
+ }
|
|
|
+// if(e1.classCode == e2.classCode){
|
|
|
+// continue
|
|
|
+// }
|
|
|
+
|
|
|
+ val connectedBlock = ConnectedBlock()
|
|
|
+
|
|
|
+ connectedBlock.id1 = e1.id!!
|
|
|
+ connectedBlock.id2 = e2.id!!
|
|
|
+ connectedBlock.type1 = "Equipment"
|
|
|
+ connectedBlock.type2 = "Equipment"
|
|
|
+// connectedBlock.modelId1 = connectorMap[key]!!.modelId
|
|
|
+// connectedBlock.modelId2 = connectorMap[s]!!.modelId
|
|
|
+// connectedBlock.domain = connector.domain
|
|
|
+// connectedBlock.mepSystemType = connector.mepSystemType
|
|
|
+ connectedBlock.projectId = projectId
|
|
|
+ connectedBlock.buildingId = buildingId
|
|
|
+ connectedBlock.depth = 1
|
|
|
+ connectedBlock.blockId = cBlockId.toString()
|
|
|
+ connectedBlock.typeCode1 = e1?.classCode
|
|
|
+ connectedBlock.typeCode2 = e2?.classCode
|
|
|
+ if (!connectedBlocks.contains(connectedBlock)) {
|
|
|
+ connectedBlocks.add(connectedBlock)
|
|
|
+ }
|
|
|
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
|
|
|
|
|
|
+
|
|
|
+
|
|
|
// }
|
|
|
// }
|
|
|
|
|
@@ -569,7 +582,7 @@ open class CalcSpecialService {
|
|
|
for (modelId in modelIds) {
|
|
|
ducts.add(ductList.stream().filter { duct -> duct.modelId == modelId }.collect(Collectors.toList()))
|
|
|
}
|
|
|
- for (index in ducts.indices-1) {
|
|
|
+ for (index in 0 until ducts.size -1) {
|
|
|
//低楼层管道
|
|
|
val lowerDucts = ducts[index].filter { d -> d.riserState == 2 || d.riserState == 3 }
|
|
|
//高楼层管道
|
|
@@ -581,7 +594,7 @@ open class CalcSpecialService {
|
|
|
val lpoint = lowerDuct.location?.points?.get(0) ?: continue
|
|
|
for (higherDuct in higherDucts) {
|
|
|
val hpoint = higherDuct.location?.points?.get(0)
|
|
|
- if(hpoint != null){
|
|
|
+ if(lowerDuct.mepSystemType == higherDuct.mepSystemType && hpoint != null){
|
|
|
// 求两个点的距离 是否在允许的误差范围内
|
|
|
val connected = sqrt((lpoint.x - hpoint.x).pow(2.0) + (lpoint.y - hpoint.y).pow(2.0)) < distance
|
|
|
if(connected){
|
|
@@ -602,7 +615,7 @@ open class CalcSpecialService {
|
|
|
for (modelId in modelIds) {
|
|
|
pipes.add(pipeList.stream().filter { pipe -> pipe.modelId == modelId }.collect(Collectors.toList()))
|
|
|
}
|
|
|
- for (index in pipes.indices-1) {
|
|
|
+ for (index in 0 until pipes.size -1) {
|
|
|
//低楼层管道
|
|
|
val lowerPipes = pipes[index].filter { d -> d.riserState == 2 || d.riserState == 3 }
|
|
|
//高楼层管道
|