|
@@ -25,7 +25,10 @@ package com.sybotan.android.demo.activities
|
|
|
|
|
|
import android.content.Intent
|
|
|
import android.graphics.Color
|
|
|
+import android.graphics.PointF
|
|
|
import android.os.Bundle
|
|
|
+import android.support.v7.widget.GridLayoutManager
|
|
|
+import android.support.v7.widget.LinearLayoutManager
|
|
|
import android.util.Log
|
|
|
import android.view.Gravity
|
|
|
import android.view.View
|
|
@@ -34,13 +37,16 @@ import android.widget.Toast
|
|
|
import cn.sagacloud.android.cadengine.FloorScene
|
|
|
import cn.sagacloud.android.cadengine.Opt
|
|
|
import cn.sagacloud.android.cadengine.items.*
|
|
|
+import cn.sagacloud.android.cadengine.types.PipeLine
|
|
|
import cn.sagacloud.android.cadengine.types.Point
|
|
|
import cn.sagacloud.android.cadengine.types.Space
|
|
|
import cn.sagacloud.android.cadengine.types.TunableSpace
|
|
|
import cn.sagacloud.cadengine.HttpDownloadMap
|
|
|
import com.google.gson.Gson
|
|
|
+import com.google.gson.reflect.TypeToken
|
|
|
import com.sybotan.android.demo.R
|
|
|
import com.sybotan.android.demo.activities.poc.DeviceActivity
|
|
|
+import com.sybotan.android.demo.adapter.PipeAdapter
|
|
|
import com.sybotan.android.demo.bean.result.*
|
|
|
import com.sybotan.android.demo.retrofit.BaseViewModelInterface
|
|
|
import com.sybotan.android.demo.tools.DensityUtils
|
|
@@ -90,6 +96,9 @@ class GraphyActivity : BaseActivity() {
|
|
|
/** 缩放后的同比例距离 */
|
|
|
var realDistance = 0f
|
|
|
|
|
|
+ /** 管道类型数据 */
|
|
|
+ lateinit var pipeTypeList: ArrayList<PipeListModel>
|
|
|
+
|
|
|
val scene = FloorScene()
|
|
|
val gson = Gson()
|
|
|
|
|
@@ -163,6 +172,9 @@ class GraphyActivity : BaseActivity() {
|
|
|
private fun initSingleTopUp() {
|
|
|
scene.setOnSingleTopUp(object : FloorScene.OnSingleTopUp {
|
|
|
override fun onSingUp(x: Float, y: Float) {
|
|
|
+ if ("pipe".equals(scene.type)) {
|
|
|
+ return
|
|
|
+ }
|
|
|
//选中空间完毕界面逻辑
|
|
|
if (scene.mapType.equals("space")) {
|
|
|
if ("space".equals(from)) {
|
|
@@ -178,6 +190,7 @@ class GraphyActivity : BaseActivity() {
|
|
|
if (equipLl.visibility == View.GONE) {
|
|
|
drawLl.visibility = View.VISIBLE
|
|
|
graphyVM.getSpaceEq(scene.choseSpace)
|
|
|
+ graphyVM.spacePipe(scene.choseSpace)
|
|
|
}
|
|
|
equipLocation.setText("($x,$y)")
|
|
|
|
|
@@ -201,6 +214,10 @@ class GraphyActivity : BaseActivity() {
|
|
|
}
|
|
|
scene.equipList.clear()
|
|
|
scene.qrcodeItemList.clear()
|
|
|
+ for (item in scene.pipeItemList) {
|
|
|
+ scene.removeItem(item)
|
|
|
+ }
|
|
|
+ scene.pipeItemList.clear()
|
|
|
}
|
|
|
|
|
|
//打点业务
|
|
@@ -258,9 +275,25 @@ class GraphyActivity : BaseActivity() {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ /** checkBox */
|
|
|
+ sceneCheckBox.setOnCheckedChangeListener { buttonView, isChecked ->
|
|
|
+ if (isChecked) {
|
|
|
+ sceneSubmit.isEnabled = true
|
|
|
+ sceneSubmit.alpha = 1f
|
|
|
+ } else {
|
|
|
+ sceneSubmit.isEnabled = false
|
|
|
+ sceneSubmit.alpha = 0.3f
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /** 设置空间的任务状态完成 */
|
|
|
+ sceneSubmit.setOnClickListener {
|
|
|
+ graphyVM.setJob(scene.choseSpace, codeEdit.text.toString(), "05")
|
|
|
+ }
|
|
|
+
|
|
|
/** 设置空间的任务状态完成 */
|
|
|
modelSubmit.setOnClickListener {
|
|
|
- graphyVM.setJob(scene.choseSpace, codeEdit.text.toString())
|
|
|
+ graphyVM.setJob(scene.choseSpace, codeEdit.text.toString(), "03")
|
|
|
}
|
|
|
|
|
|
/** 打点按钮 */
|
|
@@ -284,12 +317,35 @@ class GraphyActivity : BaseActivity() {
|
|
|
scene.item?.let { it1 -> scene.removeItem(it1) }
|
|
|
}
|
|
|
|
|
|
- /** 下一步 */
|
|
|
+ /** 取消绘制管道 */
|
|
|
+ pipeCancel.setOnClickListener {
|
|
|
+ pipeLl.visibility = View.GONE
|
|
|
+ drawLl.visibility = View.VISIBLE
|
|
|
+ scene.type = "normal"
|
|
|
+ for (item in scene.pipeItemList) {
|
|
|
+ scene.removeItem(item)
|
|
|
+ }
|
|
|
+ scene.pipeLineList.clear()
|
|
|
+ scene.pipeItemList.clear()
|
|
|
+ }
|
|
|
+
|
|
|
+ /** 绑定二维码下一步 */
|
|
|
qrcodeNext.setOnClickListener {
|
|
|
val intent = Intent(this@GraphyActivity, CaptureActivity::class.java)
|
|
|
startActivityForResult(intent, REQUEST_CODE_SCAN)
|
|
|
}
|
|
|
|
|
|
+ /** 添加管线下一步 */
|
|
|
+ pipeNext.setOnClickListener {
|
|
|
+ for (model in pipeTypeList) {
|
|
|
+ if (model.isCheck) {
|
|
|
+ graphyVM.addPipe(model, scene.pipeLineList, pipeEdit.text.toString(), scene.choseSpace)
|
|
|
+ break
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
/** 添加设备 */
|
|
|
drawEquip.setOnClickListener {
|
|
|
scene.type = "equip"
|
|
@@ -298,10 +354,21 @@ class GraphyActivity : BaseActivity() {
|
|
|
|
|
|
}
|
|
|
|
|
|
+ /** 添加管线 */
|
|
|
+ drawPipe.setOnClickListener {
|
|
|
+ scene.type = "pipe"
|
|
|
+ drawLl.visibility = View.GONE
|
|
|
+ pipeLl.visibility = View.VISIBLE
|
|
|
+// piprRv.layoutManager = LinearLayoutManager(this, LinearLayoutManager.HORIZONTAL, false)
|
|
|
+ piprRv.layoutManager = GridLayoutManager(this, 3, LinearLayoutManager.HORIZONTAL, false)
|
|
|
+ graphyVM.pipeList()
|
|
|
+ }
|
|
|
+
|
|
|
/** 取消添加设备 */
|
|
|
equipCancel.setOnClickListener {
|
|
|
drawLl.visibility = View.VISIBLE
|
|
|
equipLl.visibility = View.GONE
|
|
|
+ scene.eqItem?.let { it1 -> scene.removeItem(it1) }
|
|
|
scene.type = "normal"
|
|
|
}
|
|
|
|
|
@@ -498,12 +565,97 @@ class GraphyActivity : BaseActivity() {
|
|
|
}
|
|
|
refreshEquip(list)
|
|
|
}
|
|
|
+
|
|
|
+ /** 查询管道类型树 */
|
|
|
+ GraphyVM.PIPE_LIST -> {
|
|
|
+ pipeTypeList = params as ArrayList<PipeListModel>
|
|
|
+ val adapter = PipeAdapter(this, pipeTypeList)
|
|
|
+ piprRv.adapter = adapter
|
|
|
+ }
|
|
|
+
|
|
|
+ /** 添加管线 */
|
|
|
+ GraphyVM.ADD_PIPE -> {
|
|
|
+ pipeLl.visibility = View.GONE
|
|
|
+ drawLl.visibility = View.VISIBLE
|
|
|
+ scene.type = "normal"
|
|
|
+ for (item in scene.pipeItemList) {
|
|
|
+ scene.removeItem(item)
|
|
|
+ }
|
|
|
+ scene.pipeLineList.clear()
|
|
|
+ scene.pipeItemList.clear()
|
|
|
+
|
|
|
+ graphyVM.spacePipe(scene.choseSpace)
|
|
|
+ }
|
|
|
+
|
|
|
+ /** 查询空间下的管道 */
|
|
|
+ GraphyVM.SPACE_PIPE -> {
|
|
|
+ val spacePipeModel = params as ArrayList<SpacePipeModel>
|
|
|
+
|
|
|
+ //流式布局
|
|
|
+ pipeWwv.removeAllViews()
|
|
|
+ for (model in spacePipeModel) {
|
|
|
+ val textview = TextView(this)
|
|
|
+ textview.setText(model.typeName + "(${model.children.size})")
|
|
|
+ textview.setSingleLine()
|
|
|
+ textview.gravity = Gravity.CENTER
|
|
|
+ textview.textSize = 12f
|
|
|
+ textview.height = DensityUtils.dp2px(this, 30f)
|
|
|
+ if (model.isCheck) {
|
|
|
+ textview.background = resources.getDrawable(R.drawable.shape_filter_normal)
|
|
|
+ textview.textColor = resources.getColor(R.color.grey_900)
|
|
|
+ } else {
|
|
|
+ textview.background = resources.getDrawable(R.drawable.shape_filter_selected)
|
|
|
+ textview.textColor = resources.getColor(R.color.white)
|
|
|
+ }
|
|
|
+ textview.setOnClickListener {
|
|
|
+ model.isCheck = !model.isCheck
|
|
|
+ if (model.isCheck) {
|
|
|
+ textview.background = resources.getDrawable(R.drawable.shape_filter_normal)
|
|
|
+ textview.textColor = resources.getColor(R.color.grey_900)
|
|
|
+ } else {
|
|
|
+ textview.background = resources.getDrawable(R.drawable.shape_filter_selected)
|
|
|
+ textview.textColor = resources.getColor(R.color.white)
|
|
|
+ }
|
|
|
+ refreshPipe(spacePipeModel)
|
|
|
+ }
|
|
|
+ pipeWwv.addView(textview)
|
|
|
+
|
|
|
+ }
|
|
|
+ refreshPipe(spacePipeModel)
|
|
|
+ }
|
|
|
}
|
|
|
}, this, buildingId, floorId)
|
|
|
graphyVM.getSpaceJob(from)
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
+ * 刷新地图上管线
|
|
|
+ */
|
|
|
+ private fun refreshPipe(spacePipeModel: ArrayList<SpacePipeModel>) {
|
|
|
+ for (item in scene.pipeItemList) {
|
|
|
+ scene.removeItem(item)
|
|
|
+ }
|
|
|
+ scene.pipeItemList.clear()
|
|
|
+
|
|
|
+ for (model in spacePipeModel) {
|
|
|
+ if (!model.children.isEmpty() && !model.isCheck) {
|
|
|
+ for (child in model.children) {
|
|
|
+ val pipe = PipeLine()
|
|
|
+ var points: ArrayList<ArrayList<PointF>> = ArrayList()
|
|
|
+ points.add(child.position)
|
|
|
+ pipe.points!!.addAll(points)
|
|
|
+ val pipeItem = PipeLineItem(pipe, null)
|
|
|
+ pipeItem.isVisible = true
|
|
|
+ pipeItem.zOrder = 100000f
|
|
|
+ scene.pipeItemList.add(pipeItem)
|
|
|
+ scene.addItem(pipeItem)
|
|
|
+
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
* 刷新地图上设备
|
|
|
*/
|
|
|
private fun refreshEquip(list: List<SpaceEqModel>) {
|
|
@@ -626,11 +778,16 @@ class GraphyActivity : BaseActivity() {
|
|
|
REQUEST_CODE_EQUIP -> {
|
|
|
if (resultCode == RESULT_OK) {
|
|
|
equipLocation.setText("")
|
|
|
+ equipEdit.setText("")
|
|
|
+ scene.eqItem?.let { it1 -> scene.removeItem(it1) }
|
|
|
roof.isChecked = false
|
|
|
floor.isChecked = false
|
|
|
wall.isChecked = false
|
|
|
air.isChecked = false
|
|
|
scene.point = Point()
|
|
|
+ scene.type = "normal"
|
|
|
+ equipLl.visibility = View.GONE
|
|
|
+ drawLl.visibility = View.VISIBLE
|
|
|
graphyVM.getSpaceEq(scene.choseSpace)
|
|
|
}
|
|
|
}
|