Browse Source

@task: relation eq to pipe

bai 3 years ago
parent
commit
5a5379b9ad

+ 39 - 9
demo/src/main/java/com/sybotan/android/demo/activities/poc/RelationActivity.kt

@@ -8,12 +8,13 @@ import android.widget.ListView
 import android.widget.TextView
 import com.sybotan.android.demo.R
 import com.sybotan.android.demo.activities.BaseActivity
-import com.sybotan.android.demo.adapter.EqToEqRelAdapter
 import com.sybotan.android.demo.adapter.RelationAdapter
 import com.sybotan.android.demo.adapter.ServerRelAdapter
+import com.sybotan.android.demo.adapter.SpacePipeAdapter
 import com.sybotan.android.demo.bean.request.ReqEqToEqRel
 import com.sybotan.android.demo.bean.request.ReqEqToRel
 import com.sybotan.android.demo.entitiies.RelationEq
+import com.sybotan.android.demo.entitiies.SpacePipe
 import com.sybotan.android.demo.retrofit.BaseViewModelInterface
 import com.sybotan.android.demo.viewmodel.RelationVM
 
@@ -163,7 +164,12 @@ class RelationActivity : BaseActivity() {
                 }
 
                 EQ_PIPE_CNCT -> {
-
+                    val rel = ReqEqToEqRel(
+                        eq_id = mMajorEqToEq?.deviceId ?: "",
+                        target_id = mPipe?.pipeId ?: "",
+                        rel = EQ_PIPE_CNCT
+                    )
+                    mVm.addEqToEq(rel)
                 }
             }
 
@@ -174,18 +180,23 @@ class RelationActivity : BaseActivity() {
     }
 
 
-    private lateinit var mEqs: List<RelationEq>
+    private var mEqs = mutableListOf<RelationEq>()
+    private var mPipes = mutableListOf<SpacePipe>()
     private var serverRelEqs = mutableListOf<RelationEq>()
 
     private lateinit var mVm: RelationVM
     private var mMajorEqToEq: RelationEq? = null
     private var mMinorEqToEq: RelationEq? = null
-
+    private var mPipe: SpacePipe? = null
+    private var mPipeVM: RelationVM? = null
     private fun initViewModel() {
         mVm = RelationVM(BaseViewModelInterface { name, params ->
-            mEqs = params as List<RelationEq>
+
             when (name) {
                 EQ_SP_SERVE -> {
+                    val eqs = params as List<RelationEq>
+                    mEqs.clear()
+                    mEqs.addAll(eqs)
                     val adapter = ServerRelAdapter(mEqs, this@RelationActivity) { eq ->
                         serverRelEqs.clear()
                         serverRelEqs.addAll(eq)
@@ -194,7 +205,10 @@ class RelationActivity : BaseActivity() {
                     mMajorLv.setAdapter(adapter)
                 }
 
-                EQ_EQ_SS, EQ_EQ_VV, EQ_EQ_CTRL, EQ_EQ_POWER -> {
+                EQ_EQ_SS, EQ_EQ_VV, EQ_EQ_CTRL, EQ_EQ_POWER, EQ_PIPE_CNCT -> {
+                    val eqs = params as List<RelationEq>
+                    mEqs.clear()
+                    mEqs.addAll(eqs)
                     val majorAdapter = RelationAdapter(mEqs, this@RelationActivity) { eq ->
                         mMajorEqToEq = eq
                     }
@@ -205,13 +219,29 @@ class RelationActivity : BaseActivity() {
                     mMinorLv.adapter = minorAdapter
 
                 }
-                EQ_PIPE_CNCT -> {
 
-                }
             }
 
         }, this)
+
+
         mVm.getEqs(mSpaceId, code)
-    }
 
+        mPipeVM = RelationVM(BaseViewModelInterface { name, params ->
+            if (name == EQ_PIPE_CNCT) {
+                val pipes = params as List<SpacePipe>
+                println("pipes: $pipes")
+                mPipes.clear()
+                mPipes.addAll(pipes)
+                val pipeAdapter = SpacePipeAdapter(mPipes, this@RelationActivity) { pipe ->
+                    mPipe = pipe
+                }
+                mMinorLv.adapter = pipeAdapter
+            }
+        }, this)
+
+        if (code == EQ_PIPE_CNCT) {
+            mPipeVM?.getPipes(mSpaceId, code)
+        }
+    }
 }

+ 70 - 0
demo/src/main/java/com/sybotan/android/demo/adapter/PipeAdapter.kt

@@ -0,0 +1,70 @@
+package com.sybotan.android.demo.adapter
+
+import android.content.Context
+import android.view.LayoutInflater
+import android.view.View
+import android.view.ViewGroup
+import android.widget.BaseAdapter
+import android.widget.CheckBox
+import com.sybotan.android.demo.R
+import com.sybotan.android.demo.entitiies.SpacePipe
+
+class SpacePipeAdapter(
+    val pipes: List<SpacePipe>,
+    val context: Context,
+    val block: (eq: SpacePipe?) -> Unit
+) : BaseAdapter() {
+    private val holders = mutableListOf<Holder>()
+    private var result: SpacePipe? = null
+    override fun getCount(): Int {
+        return pipes.size
+    }
+
+    override fun getItem(position: Int): SpacePipe {
+        return pipes[position]
+    }
+
+    override fun getItemId(position: Int): Long {
+        return pipes[position].pipeId.hashCode().toLong()
+    }
+
+    override fun getView(position: Int, convertView: View?, parent: ViewGroup?): View {
+        var view = convertView
+        val holder: Holder
+        if (view == null) {
+            holder = Holder()
+            view = LayoutInflater.from(context).inflate(R.layout.item_relation, parent, false)
+            holder.relationCb = view.findViewById(R.id.relationCb)
+
+            view.tag = holder
+        } else {
+            holder = view.tag as Holder
+        }
+        holders.add(holder)
+        val eq = pipes[position]
+        holder.relationCb.text = eq.type
+        holder.relationCb.setOnClickListener {
+            holders.forEach { h ->
+                h.relationCb.isSelected = false
+                h.relationCb.isChecked = false
+            }
+            val cb = it as CheckBox
+            if (!cb.isSelected) {
+                cb.isSelected = true
+                cb.isChecked = true
+                result = eq
+            } else {
+                cb.isSelected = false
+                cb.isChecked = false
+                result = null
+            }
+
+            block(result)
+        }
+        return view!!
+    }
+
+    inner class Holder {
+        lateinit var relationCb: CheckBox
+    }
+}

+ 16 - 0
demo/src/main/java/com/sybotan/android/demo/entitiies/SpacePipe.kt

@@ -0,0 +1,16 @@
+package com.sybotan.android.demo.entitiies
+
+data class SpacePipe(
+    val name: String,
+    val pipeId: String,
+    val position: List<Position>,
+    val remark: String,
+    val spaceId: String,
+    val type: String,
+    val typeName: String
+)
+
+data class Position(
+    val x: Double,
+    val y: Double
+)

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

@@ -3,14 +3,11 @@ package com.sybotan.android.demo.retrofit;
 
 import com.sybotan.android.demo.bean.BaseModel;
 import com.sybotan.android.demo.bean.result.*;
-import com.sybotan.android.demo.entitiies.Build;
-import com.sybotan.android.demo.entitiies.DeviceType;
+import com.sybotan.android.demo.entitiies.*;
 
 import java.util.ArrayList;
 import java.util.List;
 
-import com.sybotan.android.demo.entitiies.EqEntity;
-import com.sybotan.android.demo.entitiies.RelationEq;
 import io.reactivex.Observable;
 import okhttp3.RequestBody;
 import retrofit2.http.Body;
@@ -179,17 +176,21 @@ public interface API {
     @POST("clmt/dict/pipe_list")
     Observable<BaseModel<ArrayList<PipeListModel>>> pipeList(@Body RequestBody body);
 
+    // 查询空间下的设备
     @POST("clmt/query/space_eq")
     Observable<BaseModel<List<RelationEq>>> getRelationEqs(@Body RequestBody body);
 
+    // 查询空间下的管道
+    @POST("clmt/query/space_pipe")
+    Observable<BaseModel<List<SpacePipe>>> getSpacePipe(@Body RequestBody body);
+
     // 添加设备与服务的关系
     @POST("clmt/job/add_eq_sp_rel")
     Observable<BaseModel<ResEqRel>> addEqToSerRel(@Body RequestBody body);
 
-     // 添加设备与服务的关系
+    // 添加设备与服务的关系
     @POST("clmt/job/add_rel")
     Observable<BaseModel<ResEqRel>> addEqToEqRel(@Body RequestBody body);
 
 
-
 }

+ 14 - 0
demo/src/main/java/com/sybotan/android/demo/viewmodel/RelationVM.kt

@@ -6,6 +6,7 @@ import com.sybotan.android.demo.bean.request.ReqEqToRel
 import com.sybotan.android.demo.bean.request.ReqRelationEq
 import com.sybotan.android.demo.bean.result.ResEqRel
 import com.sybotan.android.demo.entitiies.RelationEq
+import com.sybotan.android.demo.entitiies.SpacePipe
 import com.sybotan.android.demo.retrofit.BaseObserver
 import com.sybotan.android.demo.retrofit.BaseViewModelInterface
 import com.sybotan.android.demo.retrofit.RetrofitFactory
@@ -42,6 +43,19 @@ class RelationVM(b: BaseViewModelInterface, a: BaseActivity) : BaseViewModel(b,
 
     }
 
+     fun getPipes(spaceId: String, code: String) {
+        val req = ReqRelationEq(spaceId)
+        val observable = RetrofitFactory.getInstance().getSpacePipe(getRequestBody(req))
+        sendRequest(observable, object : BaseObserver<List<SpacePipe>>(mActivity, this) {
+            override fun onSuccess(pipes: List<SpacePipe>) {
+                mEmitter.SendDircetive(code, pipes)
+            }
+        }, true)
+
+    }
+
+
+
     fun addEqToSer(rel: ReqEqToRel) {
         val observable = RetrofitFactory.getInstance().addEqToSerRel(getRequestBody(rel))
         this.sendRequest(observable, object : BaseObserver<ResEqRel>(mActivity, this) {