Browse Source

@task: add device

bai 3 years ago
parent
commit
9b8eab91c1

+ 35 - 14
demo/src/main/java/com/sybotan/android/demo/activities/poc/DeviceActivity.kt

@@ -10,8 +10,14 @@ import android.widget.TextView
 import android.widget.Toast
 import com.sybotan.android.demo.R
 import com.sybotan.android.demo.activities.BaseActivity
+import com.sybotan.android.demo.bean.request.Position
+import com.sybotan.android.demo.bean.request.ReqDeviceJob
+import com.sybotan.android.demo.bean.result.ResDeviceModel
 import com.sybotan.android.demo.entitiies.DeviceType
+import com.sybotan.android.demo.retrofit.BaseViewModelInterface
+import com.sybotan.android.demo.viewmodel.DeviceVM
 import com.zbar.lib.CaptureActivity
+import com.sybotan.android.demo.bean.request.Z
 
 class DeviceActivity : BaseActivity() {
     companion object {
@@ -26,7 +32,6 @@ class DeviceActivity : BaseActivity() {
         const val RES_CODE_POS = 4
     }
 
-    private var device: String = ""
     private lateinit var infoMsgTv: TextView
     private lateinit var infoOkIv: ImageView
 
@@ -36,6 +41,9 @@ class DeviceActivity : BaseActivity() {
     private lateinit var qrOkIv: ImageView
     private lateinit var qrInfoTv: TextView
 
+    private val qrCodes = mutableSetOf<String>()
+
+
     override fun onCreate(savedInstanceState: Bundle?) {
         super.onCreate(savedInstanceState)
         setContentView(R.layout.activity_device)
@@ -64,25 +72,39 @@ class DeviceActivity : BaseActivity() {
         qrOkIv = findViewById(R.id.qrOkIv)
         qrInfoTv = findViewById(R.id.qrInfoTv)
 
-        /*val posCl = findViewById<ConstraintLayout>(R.id.positionCl)
-        posCl.setOnClickListener {
-            val intent = Intent(this, ::class.java)
-            startActivityForResult(intent, INFO_REQ_CODE)
-        }*/
-
         val saveBtn = findViewById<Button>(R.id.saveBtn)
         saveBtn.setOnClickListener {
-            Toast.makeText(this@DeviceActivity, "hello", Toast.LENGTH_LONG).show()
+            val deivce = ReqDeviceJob(
+                spaceId = "12",
+                type = mType,
+                remark = mRemark,
+                position = Position(x = "1", y = "1",z = Z("2","wall"))
+            )
+            mDeviceModel.addDevice(deivce)
         }
+
+        initViewModel()
     }
 
-    private val qrCodes = mutableSetOf<String>()
+    private lateinit var mDeviceModel: DeviceVM
+    private fun initViewModel() {
+        mDeviceModel = DeviceVM(BaseViewModelInterface { name, params ->
+            if (name == DeviceVM.DEVICE_ADD) {
+                val response = params as ResDeviceModel
+                println("response: $response")
+            }
+        }, this)
+    }
+
+    private var mType = ""
+    private var mRemark = ""
     override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
         super.onActivityResult(requestCode, resultCode, data)
-        // 设备信息
+        // 设备类型信息
         if (requestCode == REQ_CODE_DEVICE && resultCode == RES_CODE_DEVICE) {
             val bundle = data?.extras
             val type = bundle?.getParcelable<DeviceType?>("type")
+            type?.let { mType = it.name }
             deviceInfoTv.text = type?.name ?: ""
             deviceOkIv.visibility = if (type != null) View.VISIBLE else View.INVISIBLE
         }
@@ -99,10 +121,9 @@ class DeviceActivity : BaseActivity() {
         // 记录文本信息
         if (requestCode == REQ_CODE_INFO && resultCode == RES_CODE_INFO) {
             val bundle = data?.extras
-            val info = bundle?.getString("info") ?: ""
-            infoMsgTv.text = info
-            infoOkIv.visibility = if (info.isNotEmpty()) View.VISIBLE else View.INVISIBLE
-            Toast.makeText(this, "info:$info", Toast.LENGTH_LONG).show()
+            mRemark = bundle?.getString("info") ?: ""
+            infoMsgTv.text = mRemark
+            infoOkIv.visibility = if (mRemark.isNotEmpty()) View.VISIBLE else View.INVISIBLE
         }
     }
 }

+ 4 - 0
demo/src/main/java/com/sybotan/android/demo/bean/BaseModel.java

@@ -11,6 +11,7 @@ public class BaseModel<T> implements Serializable {
     public String message;
     public String code;
     private T rtn;
+    private T datas;
 
     public boolean isSuccess() {
 //        if (!TextUtils.isEmpty(result)) {
@@ -25,6 +26,9 @@ public class BaseModel<T> implements Serializable {
         if (rtn != null) {
             return rtn;
         }
+        if (datas != null) {
+            return datas;
+        }
         return null;
     }
 

+ 8 - 8
demo/src/main/java/com/sybotan/android/demo/bean/request/ReqDeviceJob.kt

@@ -1,20 +1,20 @@
 package com.sybotan.android.demo.bean.request
 
 class ReqDeviceJob(
-    val spaceId: String,    // 空间Id
-    val type: String,       // 设备类型
-    val remark: String,     // 文字标记
-    val target: String,     //
-    val position: Position  // 空间坐标
+    val spaceId: String,             // 空间Id
+    val type: String,                // 设备类型
+    val remark: String,              // 文字标记
+    val target: String = "action",   //
+    val position: Position           // 空间坐标
 )
 
 data class Position(
-    val x: Int,
-    val y: Int,
+    val x: String,
+    val y: String,
     val z: Z
 )
 
 data class Z(
-    val offset: Double,
+    val offset: String,
     val region: String
 )

+ 14 - 0
demo/src/main/java/com/sybotan/android/demo/bean/result/ResDeviceModel.kt

@@ -0,0 +1,14 @@
+package com.sybotan.android.demo.bean.result
+
+data class ResDeviceModel(
+    val code: Int,
+    val datas: Data
+)
+
+data class Data(
+    val action: Action
+)
+
+data class Action(
+    val deviceId: String
+)

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

@@ -2,6 +2,7 @@ package com.sybotan.android.demo.retrofit;
 
 
 import com.sybotan.android.demo.bean.BaseModel;
+import com.sybotan.android.demo.bean.result.ResDeviceModel;
 import com.sybotan.android.demo.entitiies.Build;
 import com.sybotan.android.demo.bean.result.AddProblemModel;
 import com.sybotan.android.demo.bean.result.BindQrcodeModel;
@@ -157,5 +158,5 @@ public interface API {
      * 添加设备
      */
     @POST("clmt/job/add_eq")
-    Observable<BaseModel<List<Build>>> saveDeviceJob(@Body RequestBody body);
+    Observable<BaseModel<ResDeviceModel>> addDeviceJob(@Body RequestBody body);
 }

+ 26 - 5
demo/src/main/java/com/sybotan/android/demo/viewmodel/DeviceVM.kt

@@ -1,6 +1,8 @@
 package com.sybotan.android.demo.viewmodel
 
 import com.sybotan.android.demo.activities.BaseActivity
+import com.sybotan.android.demo.bean.request.ReqDeviceJob
+import com.sybotan.android.demo.bean.result.ResDeviceModel
 import com.sybotan.android.demo.entitiies.DeviceType
 import com.sybotan.android.demo.retrofit.BaseObserver
 import com.sybotan.android.demo.retrofit.BaseViewModelInterface
@@ -9,15 +11,34 @@ import com.sybotan.android.demo.retrofit.RetrofitFactory
 class DeviceVM(b: BaseViewModelInterface, a: BaseActivity) : BaseViewModel(b, a) {
     companion object {
         const val DEVICE_TYPE = "DEVICE_TYPE"
+        const val DEVICE_ADD = "DEVICE_ADD"
+
     }
 
     fun getDeviceType() {
         val observable = RetrofitFactory.getInstance().requestDeviceTypeJob()
-        this.sendRequest(observable, object : BaseObserver<List<DeviceType>>(mActivity, this) {
-            override fun onSuccess(t: List<DeviceType>?) {
-                mEmitter.SendDircetive(DEVICE_TYPE, t)
-            }
-        }, true)
+        this.sendRequest(
+            observable,
+            object : BaseObserver<List<DeviceType>>(mActivity, this) {
+                override fun onSuccess(t: List<DeviceType>?) {
+                    mEmitter.SendDircetive(DEVICE_TYPE, t)
+                }
+            }, true
+        )
     }
 
+
+    fun addDevice(device: ReqDeviceJob) {
+        val observable = RetrofitFactory.getInstance().addDeviceJob(getRequestBody(device))
+        this.sendRequest(
+            observable,
+            object : BaseObserver<ResDeviceModel>(mActivity, this) {
+                override fun onSuccess(t: ResDeviceModel?) {
+                    mEmitter.SendDircetive(DEVICE_ADD, t)
+                }
+
+            },
+            true
+        )
+    }
 }