Browse Source

@task: relation eq to eq

bai 3 years ago
parent
commit
6e86fa57bb

+ 36 - 10
demo/src/main/java/com/sybotan/android/demo/activities/poc/RelationActivity.kt

@@ -1,6 +1,5 @@
 package com.sybotan.android.demo.activities.poc
 
-import android.support.v7.app.AppCompatActivity
 import android.os.Bundle
 import android.view.View
 import android.widget.Button
@@ -9,16 +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.ExpandAdapter
+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.bean.request.ReqEqToEqRel
 import com.sybotan.android.demo.bean.request.ReqEqToRel
-import com.sybotan.android.demo.bean.result.SpaceEqModel
-import com.sybotan.android.demo.entitiies.Build
-import com.sybotan.android.demo.entitiies.EqEntity
 import com.sybotan.android.demo.entitiies.RelationEq
 import com.sybotan.android.demo.retrofit.BaseViewModelInterface
-import com.sybotan.android.demo.viewmodel.BuildVM
 import com.sybotan.android.demo.viewmodel.RelationVM
 
 
@@ -92,7 +88,7 @@ class RelationActivity : BaseActivity() {
         mSpaceId = bundle?.getString("spaceId") ?: ""
         type = bundle?.getString("type") ?: ""
         code = bundle?.getString("code") ?: ""
-
+        println("code: $code")
         when (code) {
             EQ_SP_SERVE -> {
                 mMinorTv.visibility = View.GONE
@@ -154,7 +150,20 @@ class RelationActivity : BaseActivity() {
                 EQ_SP_SERVE -> {
                     val list = serverRelEqs.map { it.deviceId }
                     val rel = ReqEqToRel(eq_id = list, target_id = mSpaceId, rel = EQ_SP_SERVE)
-                    mVm.addEq(rel)
+                    mVm.addEqToSer(rel)
+                }
+
+                EQ_EQ_SS, EQ_EQ_VV, EQ_EQ_CTRL, EQ_EQ_POWER -> {
+                    val rel = ReqEqToEqRel(
+                        eq_id = mMajorEqToEq?.deviceId ?: "",
+                        target_id = mMinorEqToEq?.deviceId ?: "",
+                        rel = code
+                    )
+                    mVm.addEqToEq(rel)
+                }
+
+                EQ_PIPE_CNCT -> {
+
                 }
             }
 
@@ -162,7 +171,6 @@ class RelationActivity : BaseActivity() {
         mBackIv.setOnClickListener {
             finish()
         }
-
     }
 
 
@@ -170,6 +178,9 @@ class RelationActivity : BaseActivity() {
     private var serverRelEqs = mutableListOf<RelationEq>()
 
     private lateinit var mVm: RelationVM
+    private var mMajorEqToEq: RelationEq? = null
+    private var mMinorEqToEq: RelationEq? = null
+
     private fun initViewModel() {
         mVm = RelationVM(BaseViewModelInterface { name, params ->
             mEqs = params as List<RelationEq>
@@ -182,10 +193,25 @@ class RelationActivity : BaseActivity() {
                     }
                     mMajorLv.setAdapter(adapter)
                 }
+
+                EQ_EQ_SS, EQ_EQ_VV, EQ_EQ_CTRL, EQ_EQ_POWER -> {
+                    val majorAdapter = RelationAdapter(mEqs, this@RelationActivity) { eq ->
+                        mMajorEqToEq = eq
+                    }
+                    mMajorLv.adapter = majorAdapter
+                    val minorAdapter = RelationAdapter(mEqs, this@RelationActivity) { eq ->
+                        mMinorEqToEq = eq
+                    }
+                    mMinorLv.adapter = minorAdapter
+
+                }
+                EQ_PIPE_CNCT -> {
+
+                }
             }
 
         }, this)
-        mVm.getEqs(mSpaceId)
+        mVm.getEqs(mSpaceId, code)
     }
 
 }

+ 1 - 1
demo/src/main/java/com/sybotan/android/demo/adapter/DeviceTypeAdapter.kt

@@ -60,7 +60,7 @@ class DeviceTypeAdapter(
             } else {
                 cb.isSelected = false
                 cb.isChecked = false
-                checkType = type
+                checkType = null
              //   checkTypes.remove(type)
             }
 

+ 76 - 0
demo/src/main/java/com/sybotan/android/demo/adapter/EqToEqRelAdapter.kt

@@ -0,0 +1,76 @@
+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.RelationEq
+
+class EqToEqRelAdapter(
+    val eqs: List<RelationEq>,
+    val context: Context,
+    val code: String,
+    val block: (major: RelationEq, minor: RelationEq) -> Unit
+) : BaseAdapter() {
+    private val holders = mutableListOf<Holder>()
+
+    private var eq: RelationEq? = null
+
+    override fun getCount(): Int {
+        return eqs.size
+    }
+
+    override fun getItem(position: Int): RelationEq {
+        return eqs[position]
+    }
+
+    override fun getItemId(position: Int): Long {
+        return eqs[position].deviceId.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 = eqs[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
+                // checkType = type
+                //  checkTypes.add(type)
+
+            } else {
+                cb.isSelected = false
+                cb.isChecked = false
+                //checkType = type
+                //   checkTypes.remove(type)
+            }
+
+            //block(checkType!!)
+        }
+        return view!!
+    }
+
+    inner class Holder {
+        lateinit var relationCb: CheckBox
+    }
+}

+ 5 - 11
demo/src/main/java/com/sybotan/android/demo/adapter/RelationAdapter.kt

@@ -12,13 +12,10 @@ import com.sybotan.android.demo.entitiies.RelationEq
 class RelationAdapter(
     val eqs: List<RelationEq>,
     val context: Context,
-    val code: String,
-    val block: (eq: RelationEq) -> Unit
+    val block: (eq: RelationEq?) -> Unit
 ) : BaseAdapter() {
     private val holders = mutableListOf<Holder>()
-
-    private var eq: RelationEq? = null
-
+    private var result: RelationEq? = null
     override fun getCount(): Int {
         return eqs.size
     }
@@ -55,17 +52,14 @@ class RelationAdapter(
             if (!cb.isSelected) {
                 cb.isSelected = true
                 cb.isChecked = true
-                // checkType = type
-                //  checkTypes.add(type)
-
+                result = eq
             } else {
                 cb.isSelected = false
                 cb.isChecked = false
-                //checkType = type
-                //   checkTypes.remove(type)
+                result = null
             }
 
-            //block(checkType!!)
+            block(result)
         }
         return view!!
     }

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

@@ -0,0 +1,9 @@
+package com.sybotan.android.demo.bean.request
+
+data class ReqEqToEqRel(
+    val eq_id: String,
+    val target_id: String,
+    val rel: String,
+    val target: String = "action"
+)
+

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

@@ -184,6 +184,12 @@ public interface API {
 
     // 添加设备与服务的关系
     @POST("clmt/job/add_eq_sp_rel")
-    Observable<BaseModel<ResEqRel>> addEqToRel(@Body RequestBody body);
+    Observable<BaseModel<ResEqRel>> addEqToSerRel(@Body RequestBody body);
+
+     // 添加设备与服务的关系
+    @POST("clmt/job/add_rel")
+    Observable<BaseModel<ResEqRel>> addEqToEqRel(@Body RequestBody body);
+
+
 
 }

+ 15 - 5
demo/src/main/java/com/sybotan/android/demo/viewmodel/RelationVM.kt

@@ -1,9 +1,9 @@
 package com.sybotan.android.demo.viewmodel
 
 import com.sybotan.android.demo.activities.BaseActivity
+import com.sybotan.android.demo.bean.request.ReqEqToEqRel
 import com.sybotan.android.demo.bean.request.ReqEqToRel
 import com.sybotan.android.demo.bean.request.ReqRelationEq
-import com.sybotan.android.demo.bean.result.ResDeviceModel
 import com.sybotan.android.demo.bean.result.ResEqRel
 import com.sybotan.android.demo.entitiies.RelationEq
 import com.sybotan.android.demo.retrofit.BaseObserver
@@ -31,19 +31,19 @@ class RelationVM(b: BaseViewModelInterface, a: BaseActivity) : BaseViewModel(b,
         const val EQ_PIPE_CNCT = "EQ_PIPE_CNCT"
     }
 
-    fun getEqs(spaceId: String) {
+    fun getEqs(spaceId: String, code: String) {
         val req = ReqRelationEq(spaceId)
         val observable = RetrofitFactory.getInstance().getRelationEqs(getRequestBody(req))
         sendRequest(observable, object : BaseObserver<List<RelationEq>>(mActivity, this) {
             override fun onSuccess(models: List<RelationEq>) {
-                mEmitter.SendDircetive(EQ_SP_SERVE, models)
+                mEmitter.SendDircetive(code, models)
             }
         }, true)
 
     }
 
-    fun addEq(rel: ReqEqToRel) {
-        val observable = RetrofitFactory.getInstance().addEqToRel(getRequestBody(rel))
+    fun addEqToSer(rel: ReqEqToRel) {
+        val observable = RetrofitFactory.getInstance().addEqToSerRel(getRequestBody(rel))
         this.sendRequest(observable, object : BaseObserver<ResEqRel>(mActivity, this) {
             override fun onSuccess(t: ResEqRel?) {
                 mActivity.finish()
@@ -51,4 +51,14 @@ class RelationVM(b: BaseViewModelInterface, a: BaseActivity) : BaseViewModel(b,
         }, true)
     }
 
+    fun addEqToEq(rel: ReqEqToEqRel) {
+        val observable = RetrofitFactory.getInstance().addEqToEqRel(getRequestBody(rel))
+        this.sendRequest(observable, object : BaseObserver<ResEqRel>(mActivity, this) {
+            override fun onSuccess(t: ResEqRel?) {
+                mActivity.finish()
+            }
+        }, true)
+    }
+
+
 }