|
@@ -2,9 +2,11 @@ package com.sybotan.android.demo.viewmodel
|
|
|
|
|
|
import android.app.Activity.RESULT_OK
|
|
import android.app.Activity.RESULT_OK
|
|
import android.app.Application
|
|
import android.app.Application
|
|
|
|
+import android.graphics.Path
|
|
import android.graphics.PointF
|
|
import android.graphics.PointF
|
|
import android.text.TextUtils
|
|
import android.text.TextUtils
|
|
import androidx.lifecycle.viewModelScope
|
|
import androidx.lifecycle.viewModelScope
|
|
|
|
+import cn.sagacloud.android.cadengine.Lasso
|
|
import cn.sagacloud.android.cadengine.items.PointItem
|
|
import cn.sagacloud.android.cadengine.items.PointItem
|
|
import cn.sagacloud.android.cadengine.items.SpaceItem
|
|
import cn.sagacloud.android.cadengine.items.SpaceItem
|
|
import cn.sagacloud.android.cadengine.items.TunableSpaceItem
|
|
import cn.sagacloud.android.cadengine.items.TunableSpaceItem
|
|
@@ -15,6 +17,7 @@ import com.sybotan.android.demo.bean.result.ProblemsModel
|
|
import com.google.gson.Gson
|
|
import com.google.gson.Gson
|
|
import com.google.gson.reflect.TypeToken
|
|
import com.google.gson.reflect.TypeToken
|
|
import com.sybotan.android.demo.activities.BaseActivity
|
|
import com.sybotan.android.demo.activities.BaseActivity
|
|
|
|
+import com.sybotan.android.demo.activities.GraphyActivity
|
|
import com.sybotan.android.demo.bean.request.*
|
|
import com.sybotan.android.demo.bean.request.*
|
|
import com.sybotan.android.demo.bean.result.*
|
|
import com.sybotan.android.demo.bean.result.*
|
|
import com.sybotan.android.demo.bean.result.Position
|
|
import com.sybotan.android.demo.bean.result.Position
|
|
@@ -80,9 +83,42 @@ class GraphyVM(
|
|
spaceJobModel.localName = objectEntity!!.localName
|
|
spaceJobModel.localName = objectEntity!!.localName
|
|
spaceJobModel.name = objectEntity.name
|
|
spaceJobModel.name = objectEntity.name
|
|
spaceJobModel.projectId = projectId
|
|
spaceJobModel.projectId = projectId
|
|
|
|
+ val strInfo = gson.fromJson(objectEntity.strInfos, StrInfos::class.java)
|
|
|
|
+ spaceJobModel.outline = strInfo.outline
|
|
|
|
+ spaceJobModel.objectEntity = objectEntity
|
|
if (from.equals("space")) {
|
|
if (from.equals("space")) {
|
|
|
|
+ val problems = repo.getProblemByAvalible(floorId)
|
|
|
|
+ var hasProblem = false
|
|
|
|
+ var list: ArrayList<PointF> = ArrayList()
|
|
|
|
+ for (line in spaceJobModel.outline[0]!!) {
|
|
|
|
+ if (line.size < 1) {
|
|
|
|
+ list.add(PointF(line[0].x, line[0].y))
|
|
|
|
+ continue
|
|
|
|
+ }
|
|
|
|
+ for (p in line) {
|
|
|
|
+ list.add(PointF(p.x, p.y))
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ for (problem in problems) {
|
|
|
|
+ val geomList = gson.fromJson<List<PointF>>(
|
|
|
|
+ problem.strGeom,
|
|
|
|
+ object : TypeToken<List<PointF?>?>() {}.type
|
|
|
|
+ )
|
|
|
|
+ val pointF = android.graphics.Point(
|
|
|
|
+ geomList.get(0).x.toInt(),
|
|
|
|
+ -geomList.get(0).y.toInt()
|
|
|
|
+ )
|
|
|
|
+ if (Lasso.isPolygonContainsPoint(list, pointF)) {
|
|
|
|
+ hasProblem = true
|
|
|
|
+ break
|
|
|
|
+ }
|
|
|
|
+ }
|
|
if (spaceEntity.archState == 1) {
|
|
if (spaceEntity.archState == 1) {
|
|
- spaceJobModel.job = "01"
|
|
+ if (hasProblem) {
|
|
|
|
+ spaceJobModel.job = "02"
|
|
|
|
+ } else {
|
|
|
|
+ spaceJobModel.job = "01"
|
|
|
|
+ }
|
|
} else {
|
|
} else {
|
|
spaceJobModel.job = "03"
|
|
spaceJobModel.job = "03"
|
|
}
|
|
}
|
|
@@ -104,10 +140,6 @@ class GraphyVM(
|
|
// } else if (spaceEntity.archState == 2 && spaceEntity.equipState == 2) {
|
|
// } else if (spaceEntity.archState == 2 && spaceEntity.equipState == 2) {
|
|
// spaceJobModel.job = "05"
|
|
// spaceJobModel.job = "05"
|
|
// }
|
|
// }
|
|
- val strInfo = gson.fromJson(objectEntity.strInfos, StrInfos::class.java)
|
|
|
|
-
|
|
|
|
- spaceJobModel.outline = strInfo.outline
|
|
|
|
- spaceJobModel.objectEntity = objectEntity
|
|
|
|
spaceJobList.add(spaceJobModel)
|
|
spaceJobList.add(spaceJobModel)
|
|
}
|
|
}
|
|
mEmitter.SendDircetive(SPACE_JOB, spaceJobList)
|
|
mEmitter.SendDircetive(SPACE_JOB, spaceJobList)
|
|
@@ -248,7 +280,7 @@ class GraphyVM(
|
|
*/
|
|
*/
|
|
fun getProblem(choseSpace: TunableSpaceItem?) {
|
|
fun getProblem(choseSpace: TunableSpaceItem?) {
|
|
viewModelScope.launch {
|
|
viewModelScope.launch {
|
|
- val problems = repo.getProblem()
|
|
+ val problems = repo.getProblemByFloor(floorId)
|
|
var models: ArrayList<ProblemsModel> = ArrayList()
|
|
var models: ArrayList<ProblemsModel> = ArrayList()
|
|
for (problem in problems) {
|
|
for (problem in problems) {
|
|
if (problem.problemState == 1) {
|
|
if (problem.problemState == 1) {
|
|
@@ -377,7 +409,7 @@ class GraphyVM(
|
|
viewModelScope.launch {
|
|
viewModelScope.launch {
|
|
val qrcodes = repo.getQrcode(choseSpace!!.data.id!!)
|
|
val qrcodes = repo.getQrcode(choseSpace!!.data.id!!)
|
|
val qrcodeModels = ArrayList<QrcodeModel>()
|
|
val qrcodeModels = ArrayList<QrcodeModel>()
|
|
- for (qrcode in qrcodes) {
|
|
+ for (qrcode in qrcodes!!) {
|
|
var qrcodeModel = QrcodeModel()
|
|
var qrcodeModel = QrcodeModel()
|
|
qrcodeModel.obj_id = qrcode.objId
|
|
qrcodeModel.obj_id = qrcode.objId
|
|
qrcodeModel.qr_code = qrcode.qrCode
|
|
qrcodeModel.qr_code = qrcode.qrCode
|
|
@@ -411,6 +443,13 @@ class GraphyVM(
|
|
*/
|
|
*/
|
|
fun setJob(choseSpace: TunableSpaceItem?, jobStatus: String) {
|
|
fun setJob(choseSpace: TunableSpaceItem?, jobStatus: String) {
|
|
viewModelScope.launch {
|
|
viewModelScope.launch {
|
|
|
|
+ if (jobStatus.equals("03")) {
|
|
|
|
+ val qrcodes = repo.getQrcode(choseSpace!!.data.id!!)
|
|
|
|
+ if (CommonUtils.IsNull(qrcodes)) {
|
|
|
|
+ ToastUtils.showMyToast("未安装空间二维码,不能完成空间核查")
|
|
|
|
+ return@launch
|
|
|
|
+ }
|
|
|
|
+ }
|
|
var space = repo.getSpaceBySpaceId(choseSpace!!.data.id!!)
|
|
var space = repo.getSpaceBySpaceId(choseSpace!!.data.id!!)
|
|
if (jobStatus.equals("01")) {
|
|
if (jobStatus.equals("01")) {
|
|
space.archState = 1
|
|
space.archState = 1
|
|
@@ -714,6 +753,17 @@ class GraphyVM(
|
|
position: Position
|
|
position: Position
|
|
) {
|
|
) {
|
|
viewModelScope.launch {
|
|
viewModelScope.launch {
|
|
|
|
+ val objects = repo.getObjects()
|
|
|
|
+ if (!CommonUtils.IsNull(objects)) {
|
|
|
|
+ for (obj in objects) {
|
|
|
|
+ if (!TextUtils.isEmpty(obj.localId) && obj.localId!!.toUpperCase()
|
|
|
|
+ .equals(localId.toUpperCase())
|
|
|
|
+ ) {
|
|
|
|
+ ToastUtils.showMyToast("已有此编码的设备")
|
|
|
|
+ return@launch
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
hashMap!!.put("equipContent", equipContent)
|
|
hashMap!!.put("equipContent", equipContent)
|
|
hashMap!!.put("equipPhoto", gson.toJson(beans))
|
|
hashMap!!.put("equipPhoto", gson.toJson(beans))
|
|
hashMap!!.put("equipCheck", checked)
|
|
hashMap!!.put("equipCheck", checked)
|
|
@@ -873,7 +923,7 @@ class GraphyVM(
|
|
for (parent in pipeParent) {
|
|
for (parent in pipeParent) {
|
|
var pipes = ArrayList<PipeEntity>()
|
|
var pipes = ArrayList<PipeEntity>()
|
|
for (floorPipe in floorPipes) {
|
|
for (floorPipe in floorPipes) {
|
|
- if ((floorPipe.objFrom.equals(deviceId) || floorPipe.objTo.equals(deviceId)) && floorPipe.pipeType.equals(
|
|
+ if ((floorPipe.objFrom.equals(equipId) || floorPipe.objTo.equals(equipId)) && floorPipe.pipeType.equals(
|
|
parent.entity.pipeType
|
|
parent.entity.pipeType
|
|
) && floorPipe.pipeSubType.equals(parent.entity.pipeSubType)
|
|
) && floorPipe.pipeSubType.equals(parent.entity.pipeSubType)
|
|
) {
|
|
) {
|
|
@@ -893,11 +943,18 @@ class GraphyVM(
|
|
|
|
|
|
private suspend fun bindPipeName(floorPipe: PipeEntity) {
|
|
private suspend fun bindPipeName(floorPipe: PipeEntity) {
|
|
val from = repo.getObject(floorPipe.objFrom!!)
|
|
val from = repo.getObject(floorPipe.objFrom!!)
|
|
- floorPipe.objFromLocalId =
|
|
+ if (from == null) {
|
|
- if (from!!.id.startsWith("Eq")) from!!.localId else from!!.localName
|
|
+ floorPipe.objFromLocalId = "该设备"
|
|
|
|
+ } else {
|
|
|
|
+ floorPipe.objFromLocalId =
|
|
|
|
+ if (from!!.id.startsWith("Eq")) from!!.localId else from!!.localName
|
|
|
|
+ }
|
|
val to = repo.getObject(floorPipe.objTo!!)
|
|
val to = repo.getObject(floorPipe.objTo!!)
|
|
- floorPipe.objToLocalId =
|
|
+ if (to == null) {
|
|
- if (to!!.id.startsWith("Eq")) to!!.localId else to!!.localName
|
|
+ floorPipe.objToLocalId = "该设备"
|
|
|
|
+ } else {
|
|
|
|
+ floorPipe.objToLocalId = if (to!!.id.startsWith("Eq")) to!!.localId else to!!.localName
|
|
|
|
+ }
|
|
}
|
|
}
|
|
|
|
|
|
private fun loadPipeCfgs(
|
|
private fun loadPipeCfgs(
|
|
@@ -978,11 +1035,18 @@ class GraphyVM(
|
|
) {
|
|
) {
|
|
for (rel in entitys) {
|
|
for (rel in entitys) {
|
|
val from = repo.getObject(rel.objFrom!!)
|
|
val from = repo.getObject(rel.objFrom!!)
|
|
- rel.objFromLocalId =
|
|
+ if (from == null) {
|
|
- if (from!!.id.startsWith("Eq")) from!!.localId else from!!.localName
|
|
+ rel.objFromLocalId = "该设备"
|
|
|
|
+ } else {
|
|
|
|
+ rel.objFromLocalId =
|
|
|
|
+ if (from!!.id.startsWith("Eq")) from!!.localId else from!!.localName
|
|
|
|
+ }
|
|
val to = repo.getObject(rel.objTo!!)
|
|
val to = repo.getObject(rel.objTo!!)
|
|
- rel.objToLocalId =
|
|
+ if (to == null) {
|
|
- if (to!!.id.startsWith("Eq")) to!!.localId else to!!.localName
|
|
+ rel.objToLocalId = "该设备"
|
|
|
|
+ } else {
|
|
|
|
+ rel.objToLocalId = if (to!!.id.startsWith("Eq")) to!!.localId else to!!.localName
|
|
|
|
+ }
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
@@ -1019,6 +1083,7 @@ class GraphyVM(
|
|
tartgetType.graphCode = group.entity.graphCode
|
|
tartgetType.graphCode = group.entity.graphCode
|
|
tartgetType.relCode = group.entity.relCode
|
|
tartgetType.relCode = group.entity.relCode
|
|
tartgetType.targetCode = cfgTarget
|
|
tartgetType.targetCode = cfgTarget
|
|
|
|
+ tartgetType.direction = cfg.direction
|
|
group.targetTypes.add(tartgetType)
|
|
group.targetTypes.add(tartgetType)
|
|
}
|
|
}
|
|
if (targetAsTo) {
|
|
if (targetAsTo) {
|
|
@@ -1036,7 +1101,7 @@ class GraphyVM(
|
|
tartgetType.canTo = true
|
|
tartgetType.canTo = true
|
|
tartgetType.canFrom = true
|
|
tartgetType.canFrom = true
|
|
} else {
|
|
} else {
|
|
- tartgetType.canFrom = true
|
|
+ tartgetType.connect = true
|
|
// !targetCanBeTo && !targetCanBeFrom 表示无方向选择
|
|
// !targetCanBeTo && !targetCanBeFrom 表示无方向选择
|
|
}
|
|
}
|
|
|
|
|
|
@@ -1260,6 +1325,24 @@ class GraphyVM(
|
|
)
|
|
)
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ fun insEquip(ob: ObjectEntity, position: Position) {
|
|
|
|
+ viewModelScope.launch {
|
|
|
|
+ var obj = repo.getObject(ob.id)
|
|
|
|
+ val hashMap = gson.fromJson(obj!!.strInfos, HashMap::class.java) as HashMap<String, Any>
|
|
|
|
+ val z = PointZ()
|
|
|
|
+ z.x = position.x.toFloat()
|
|
|
|
+ z.y = -position.y.toFloat()
|
|
|
|
+ z.z = position.z.offset.toFloat()
|
|
|
|
+ hashMap.put("location", z)
|
|
|
|
+ hashMap.put("zRegion", position.z.region)
|
|
|
|
+ obj.strInfos = gson.toJson(hashMap)
|
|
|
|
+ obj.state = "1"
|
|
|
|
+ repo.insObject(obj)
|
|
|
|
+ mEmitter.SendDircetive(UPDATE_LOCATION, null)
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ }
|
|
|
|
+
|
|
companion object {
|
|
companion object {
|
|
const val UPDATE_APP = "UPDATE_APP"
|
|
const val UPDATE_APP = "UPDATE_APP"
|
|
const val MAP_LOAD = "MAP_LOAD"
|
|
const val MAP_LOAD = "MAP_LOAD"
|
|
@@ -1317,6 +1400,7 @@ class GraphyVM(
|
|
const val REL_OBJECT = "REL_OBJECT"
|
|
const val REL_OBJECT = "REL_OBJECT"
|
|
const val PIPE_OBJECT = "PIPE_OBJECT"
|
|
const val PIPE_OBJECT = "PIPE_OBJECT"
|
|
const val PIPE = "PIPE"
|
|
const val PIPE = "PIPE"
|
|
|
|
+ const val UPDATE_LOCATION = "UPDATE_LOCATION"
|
|
}
|
|
}
|
|
|
|
|
|
}
|
|
}
|