Browse Source

feat 修改管道绘制与控制逻辑、增加跳转关系界面功能

lihao1 3 years ago
parent
commit
4d80cf866b

+ 4 - 2
cadengine/src/main/java/cn/sagacloud/android/cadengine/FloorScene.kt

@@ -52,6 +52,8 @@ open class FloorScene : SGraphyScene() {
     var mapType: String? = "nothing"
     var choseSpace: TunableSpaceItem? = null
     var pipeLineList: ArrayList<PointF> = ArrayList()
+    /**  正在绘制的管道 */
+    val drawingPipeItemList = ArrayList<PipeLineItem>()
 
     /** item 数据  */
     var data: FloorData? = null
@@ -482,8 +484,8 @@ open class FloorScene : SGraphyScene() {
             var item = PipeLineItem(pipe, null)
             item!!.isVisible = true
             item!!.zOrder = 100000f
-            pipeItemList.add(item)
-            for (item in pipeItemList) {
+            drawingPipeItemList.add(item)
+            for (item in drawingPipeItemList) {
                 item.isVisible = isShowSpace
                 item.zOrder = 100000f
                 addItem(item)

+ 2 - 2
cadengine/src/main/java/cn/sagacloud/android/cadengine/items/PipeLineItem.kt

@@ -54,8 +54,8 @@ class PipeLineItem(val data: PipeLine, parent: SGraphyItem? = null) : SGraphyIte
         outPaint.style = Paint.Style.STROKE
         outPaint.strokeJoin = Paint.Join.ROUND
         outPaint.isAntiAlias = true
-        outPaint.color = Color.rgb(0x44, 0x71, 0xa3)
-        outPaint.strokeWidth = 100f
+        outPaint.color = Color.rgb(0x66, 0x66, 0xff)
+        outPaint.strokeWidth = 150f
 
         //内圈
         mPaint_inner.color = Color.parseColor("#0c90eb")

+ 3 - 0
cadengine/src/main/java/cn/sagacloud/android/cadengine/types/Point.kt

@@ -15,4 +15,7 @@ class Point {
     var mY = 0f
 
     var scalePoint = 1.0f
+    var remark: String? = null
+    var type: String? = null
+    var position: String? = null
 }

+ 51 - 8
demo/src/main/java/com/sybotan/android/demo/activities/GraphyActivity.kt

@@ -46,6 +46,7 @@ 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.activities.poc.RelationActivity
 import com.sybotan.android.demo.adapter.PipeAdapter
 import com.sybotan.android.demo.bean.result.*
 import com.sybotan.android.demo.retrofit.BaseViewModelInterface
@@ -189,8 +190,9 @@ class GraphyActivity : BaseActivity() {
                     } else {
                         if (equipLl.visibility == View.GONE) {
                             drawLl.visibility = View.VISIBLE
+                            spaceName2.text = scene.choseSpace!!.data.localName
                             graphyVM.getSpaceEq(scene.choseSpace)
-                            graphyVM.spacePipe(scene.choseSpace)
+//                            graphyVM.spacePipe(scene.choseSpace)
                         }
                         equipLocation.setText("($x,$y)")
 
@@ -214,10 +216,6 @@ class GraphyActivity : BaseActivity() {
                     }
                     scene.equipList.clear()
                     scene.qrcodeItemList.clear()
-                    for (item in scene.pipeItemList) {
-                        scene.removeItem(item)
-                    }
-                    scene.pipeItemList.clear()
                 }
 
                 //打点业务
@@ -243,6 +241,19 @@ class GraphyActivity : BaseActivity() {
                             break
                         }
                     }
+
+                    for (point in scene.equipList) {
+                        val sqrt = Math.sqrt(
+                                Math.pow(
+                                        Math.abs(x - point.data.mX).toDouble(),
+                                        2.0
+                                ) + Math.pow(Math.abs(y - point.data.mY).toDouble(), 2.0)
+                        ).toInt()
+                        if (sqrt < realDistance) {
+                            Toast.makeText(this@GraphyActivity, "${point.data.type}\n${point.data.remark}\n${point.data.position}", Toast.LENGTH_LONG).show()
+                            break
+                        }
+                    }
                     return
                 }
 
@@ -322,11 +333,11 @@ class GraphyActivity : BaseActivity() {
             pipeLl.visibility = View.GONE
             drawLl.visibility = View.VISIBLE
             scene.type = "normal"
-            for (item in scene.pipeItemList) {
+            for (item in scene.drawingPipeItemList) {
                 scene.removeItem(item)
             }
             scene.pipeLineList.clear()
-            scene.pipeItemList.clear()
+            scene.drawingPipeItemList.clear()
         }
 
         /** 绑定二维码下一步 */
@@ -401,6 +412,28 @@ class GraphyActivity : BaseActivity() {
             intent.putExtra("equip", bundle)
             startActivityForResult(intent, REQUEST_CODE_EQUIP)
         }
+
+        /** 服务 */
+        eqSpServe.setOnClickListener { skipRelationship("eq_sp_serve") }
+        /** 控制 */
+        eqEqCtrl.setOnClickListener { skipRelationship("eq_eq_ctrl") }
+        /** 测量 */
+        eqEqSs.setOnClickListener { skipRelationship("eq_eq_ss") }
+        /** 供电 */
+        eqEqPower.setOnClickListener { skipRelationship("eq_eq_power") }
+        /** 阀门 */
+        eqEqVv.setOnClickListener { skipRelationship("eq_eq_vv") }
+        /** 连接 */
+        eqPipeCnct.setOnClickListener { skipRelationship("eq_pipe_cnct") }
+    }
+
+    private fun skipRelationship(code: String) {
+        val intent = Intent(this, RelationActivity::class.java)
+        val bundle = Bundle()
+        bundle.putString("spaceId", scene.choseSpace!!.data.id)
+        bundle.putString("code", code)
+        intent.putExtra("params", bundle)
+        startActivity(intent)
     }
 
     /**
@@ -447,6 +480,9 @@ class GraphyActivity : BaseActivity() {
                             scene.addItem(item)
                         }
                     }
+                    if (from.equals("scene")) {
+                        graphyVM.floorPipe()
+                    }
                 }
 
                 /** 添加空间核查问题 */
@@ -581,10 +617,14 @@ class GraphyActivity : BaseActivity() {
                     for (item in scene.pipeItemList) {
                         scene.removeItem(item)
                     }
+                    for (item in scene.drawingPipeItemList) {
+                        scene.removeItem(item)
+                    }
                     scene.pipeLineList.clear()
                     scene.pipeItemList.clear()
+                    scene.drawingPipeItemList.clear()
 
-                    graphyVM.spacePipe(scene.choseSpace)
+                    graphyVM.floorPipe()
                 }
 
                 /** 查询空间下的管道 */
@@ -670,6 +710,9 @@ class GraphyActivity : BaseActivity() {
                     var position = gson.fromJson(child.position, Position::class.java)
                     point.mX = position.x.toFloat()
                     point.mY = position.y.toFloat()
+                    point.remark = child.remark
+                    point.type = model.type
+                    point.position = child.position
 
                     var item = EquipItem(point, null, scene.defaultPointScale)
                     item.isVisible = true

+ 9 - 0
demo/src/main/java/com/sybotan/android/demo/bean/request/ReqFloorPipe.kt

@@ -0,0 +1,9 @@
+package com.sybotan.android.demo.bean.request
+
+/**
+ * Created by lihao.
+ * Date: 6/15/21
+ */
+class ReqFloorPipe {
+    var floorId: String? = null
+}

+ 2 - 2
demo/src/main/java/com/sybotan/android/demo/retrofit/API.java

@@ -181,8 +181,8 @@ public interface API {
     /**
      * 查询空间下的管道
      */
-    @POST("clmt/query/space_pipe")
-    Observable<BaseModel<ArrayList<SpacePipeModel>>> spacePipe(@Body RequestBody body);
+    @POST("clmt/query/floor_pipe")
+    Observable<BaseModel<ArrayList<SpacePipeModel>>> floorPipe(@Body RequestBody body);
 
     /**
      * 查询管道类型

+ 5 - 7
demo/src/main/java/com/sybotan/android/demo/viewmodel/GraphyVM.kt

@@ -221,14 +221,12 @@ class GraphyVM(b: BaseViewModelInterface?, activity: BaseActivity?, //建筑id
     }
 
     /**
-     * 查询空间下的管道
-     * @param choseSpace    被选中的空间
+     * 查询楼层下的管道数据
      */
-    fun spacePipe(choseSpace: TunableSpaceItem?) {
-        val bean = ReqSpacePipe()
-        bean.spaceId = choseSpace!!.data.id
-        bean.group = true
-        val observable = RetrofitFactory.getInstance().spacePipe(getRequestBody(bean))
+    fun floorPipe() {
+        val bean = ReqFloorPipe()
+        bean.floorId = floorId
+        val observable = RetrofitFactory.getInstance().floorPipe(getRequestBody(bean))
         sendRequest(observable, object : BaseObserver<java.util.ArrayList<SpacePipeModel>>(mActivity, this) {
             override fun onSuccess(models: java.util.ArrayList<SpacePipeModel>) {
                 mEmitter.SendDircetive(SPACE_PIPE, models)

+ 187 - 40
demo/src/main/res/layout/activity_graphy.xml

@@ -29,6 +29,21 @@
     android:orientation="vertical"
     tools:context="com.sybotan.android.demo.activities.GraphyActivity">
 
+    <ScrollView
+        android:layout_width="match_parent"
+        android:layout_height="80dp"
+        android:background="@color/grey_100"
+        android:scrollbars="none">
+
+        <com.sybotan.android.demo.tools.WordWrapView
+            android:id="@+id/pipeWwv"
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:layout_marginLeft="20dp"
+            android:layout_marginTop="5dp"
+            android:layout_marginRight="20dp" />
+    </ScrollView>
+
     <com.sybotan.android.graphy.SGraphyView
         android:id="@+id/graphyView"
         android:layout_width="match_parent"
@@ -38,7 +53,8 @@
 
     <RelativeLayout
         android:layout_width="match_parent"
-        android:layout_height="wrap_content">
+        android:layout_height="wrap_content"
+        android:background="@color/grey_100">
 
         <LinearLayout
             android:id="@+id/spaceStructure"
@@ -286,12 +302,21 @@
             android:layout_width="match_parent"
             android:layout_height="wrap_content"
             android:orientation="vertical"
-            android:paddingBottom="20dp"
+            android:paddingBottom="10dp"
             android:visibility="gone">
 
+            <TextView
+                android:id="@+id/spaceName2"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:layout_gravity="center_horizontal"
+                android:text=""
+                android:textColor="@color/grey_900"
+                android:textSize="12sp" />
+
             <ScrollView
                 android:layout_width="match_parent"
-                android:layout_height="100dp"
+                android:layout_height="80dp"
                 android:scrollbars="none">
 
                 <com.sybotan.android.demo.tools.WordWrapView
@@ -302,56 +327,178 @@
                     android:layout_marginRight="20dp" />
             </ScrollView>
 
-            <TextView
-                android:id="@+id/drawEquip"
-                android:layout_width="wrap_content"
+            <LinearLayout
+                android:layout_width="match_parent"
                 android:layout_height="wrap_content"
-                android:layout_gravity="center_horizontal"
-                android:layout_marginTop="5dp"
-                android:background="@drawable/bg_blue_3bacb2"
-                android:paddingLeft="10dp"
-                android:paddingTop="5dp"
-                android:paddingRight="10dp"
-                android:paddingBottom="5dp"
-                android:text="发现新设备"
-                android:textColor="@color/white"
-                android:textSize="15sp" />
+                android:layout_marginLeft="20dp"
+                android:layout_marginRight="20dp"
+                android:orientation="horizontal">
 
-            <ScrollView
+                <TextView
+                    android:id="@+id/drawEquip"
+                    android:layout_width="0dp"
+                    android:layout_height="wrap_content"
+                    android:layout_gravity="center_horizontal"
+                    android:layout_marginTop="5dp"
+                    android:layout_weight="1"
+                    android:background="@drawable/bg_blue_3bacb2"
+                    android:gravity="center"
+                    android:paddingLeft="10dp"
+                    android:paddingTop="5dp"
+                    android:paddingRight="10dp"
+                    android:paddingBottom="5dp"
+                    android:text="发现新设备"
+                    android:textColor="@color/white"
+                    android:textSize="15sp" />
+
+                <TextView
+                    android:id="@+id/drawPipe"
+                    android:layout_width="0dp"
+                    android:layout_height="wrap_content"
+                    android:layout_gravity="center_horizontal"
+                    android:layout_marginLeft="50dp"
+                    android:layout_marginTop="5dp"
+                    android:layout_weight="1"
+                    android:background="@drawable/bg_blue_3bacb2"
+                    android:gravity="center"
+                    android:paddingLeft="10dp"
+                    android:paddingTop="5dp"
+                    android:paddingRight="10dp"
+                    android:paddingBottom="5dp"
+                    android:text="绘制管道桥架"
+                    android:textColor="@color/white"
+                    android:textSize="15sp" />
+            </LinearLayout>
+
+            <LinearLayout
                 android:layout_width="match_parent"
-                android:layout_height="100dp"
-                android:scrollbars="none">
+                android:layout_height="wrap_content"
+                android:layout_marginLeft="20dp"
+                android:orientation="vertical">
 
-                <com.sybotan.android.demo.tools.WordWrapView
-                    android:id="@+id/pipeWwv"
+                <TextView
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:text="设备服务当前空间"
+                    android:textColor="@color/grey_900"
+                    android:textSize="12sp" />
+
+                <TextView
+                    android:id="@+id/eqSpServe"
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:layout_marginTop="5dp"
+                    android:background="@drawable/bg_blue_3bacb2"
+                    android:gravity="center"
+                    android:paddingLeft="20dp"
+                    android:paddingTop="2dp"
+                    android:paddingRight="20dp"
+                    android:paddingBottom="2dp"
+                    android:text="服务"
+                    android:textColor="@color/white"
+                    android:textSize="14sp" />
+
+                <TextView
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:layout_marginTop="5dp"
+                    android:text="当前空间内设备与设备"
+                    android:textColor="@color/grey_900"
+                    android:textSize="12sp" />
+
+                <LinearLayout
                     android:layout_width="match_parent"
                     android:layout_height="wrap_content"
-                    android:layout_marginLeft="20dp"
                     android:layout_marginTop="5dp"
-                    android:layout_marginRight="20dp" />
-            </ScrollView>
+                    android:layout_marginRight="20dp"
+                    android:orientation="horizontal">
+
+                    <TextView
+                        android:id="@+id/eqEqCtrl"
+                        android:layout_width="0dp"
+                        android:layout_height="wrap_content"
+                        android:layout_weight="1"
+                        android:background="@drawable/bg_blue_3bacb2"
+                        android:gravity="center"
+                        android:paddingTop="2dp"
+                        android:paddingBottom="2dp"
+                        android:text="控制"
+                        android:textColor="@color/white"
+                        android:textSize="14sp" />
+
+                    <TextView
+                        android:id="@+id/eqEqSs"
+                        android:layout_width="0dp"
+                        android:layout_height="wrap_content"
+                        android:layout_marginLeft="20dp"
+                        android:layout_weight="1"
+                        android:background="@drawable/bg_blue_3bacb2"
+                        android:gravity="center"
+                        android:paddingTop="2dp"
+                        android:paddingBottom="2dp"
+                        android:text="测量"
+                        android:textColor="@color/white"
+                        android:textSize="14sp" />
+
+                    <TextView
+                        android:id="@+id/eqEqPower"
+                        android:layout_width="0dp"
+                        android:layout_height="wrap_content"
+                        android:layout_marginLeft="20dp"
+                        android:layout_weight="1"
+                        android:background="@drawable/bg_blue_3bacb2"
+                        android:gravity="center"
+                        android:paddingTop="2dp"
+                        android:paddingBottom="2dp"
+                        android:text="供电"
+                        android:textColor="@color/white"
+                        android:textSize="14sp" />
+
+                    <TextView
+                        android:id="@+id/eqEqVv"
+                        android:layout_width="0dp"
+                        android:layout_height="wrap_content"
+                        android:layout_marginLeft="20dp"
+                        android:layout_weight="1"
+                        android:background="@drawable/bg_blue_3bacb2"
+                        android:gravity="center"
+                        android:paddingTop="2dp"
+                        android:paddingBottom="2dp"
+                        android:text="阀门"
+                        android:textColor="@color/white"
+                        android:textSize="14sp" />
+                </LinearLayout>
 
-            <TextView
-                android:id="@+id/drawPipe"
-                android:layout_width="wrap_content"
-                android:layout_height="wrap_content"
-                android:layout_gravity="center_horizontal"
-                android:layout_marginTop="5dp"
-                android:background="@drawable/bg_blue_3bacb2"
-                android:paddingLeft="10dp"
-                android:paddingTop="5dp"
-                android:paddingRight="10dp"
-                android:paddingBottom="5dp"
-                android:text="绘制管道桥架"
-                android:textColor="@color/white"
-                android:textSize="15sp" />
+                <TextView
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:layout_marginTop="5dp"
+                    android:text="当前空间内设备与管道"
+                    android:textColor="@color/grey_900"
+                    android:textSize="12sp" />
+
+                <TextView
+                    android:id="@+id/eqPipeCnct"
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:layout_marginTop="5dp"
+                    android:background="@drawable/bg_blue_3bacb2"
+                    android:gravity="center"
+                    android:paddingLeft="20dp"
+                    android:paddingTop="2dp"
+                    android:paddingRight="20dp"
+                    android:paddingBottom="2dp"
+                    android:text="连接"
+                    android:textColor="@color/white"
+                    android:textSize="14sp" />
+            </LinearLayout>
 
             <CheckBox
                 android:id="@+id/sceneCheckBox"
                 android:layout_width="wrap_content"
                 android:layout_height="wrap_content"
                 android:layout_gravity="center_horizontal"
-                android:layout_marginTop="22dp"
+                android:layout_marginTop="12dp"
                 android:text="此空间勘测完毕,模型和现场无区别" />
 
 
@@ -360,7 +507,7 @@
                 android:layout_width="wrap_content"
                 android:layout_height="wrap_content"
                 android:layout_gravity="center_horizontal"
-                android:layout_marginTop="12dp"
+                android:layout_marginTop="8dp"
                 android:alpha="0.3"
                 android:background="@drawable/bg_blue_3bacb2"
                 android:enabled="false"