ソースを参照

@task: device type

bai 3 年 前
コミット
208212ea2d

+ 3 - 3
demo/src/main/AndroidManifest.xml

@@ -14,6 +14,7 @@
 
     <uses-feature android:name="android.hardware.camera" />
     <uses-feature android:name="android.hardware.camera.autofocus" />
+
     <uses-permission android:name="android.permission.CAMERA" />
 
     <application
@@ -42,7 +43,7 @@
         <activity
             android:name=".activities.poc.SpaceActivity"
             android:exported="true" />
-        <activity android:name=".activities.MainActivity" >
+        <activity android:name=".activities.MainActivity">
             <intent-filter>
                 <action android:name="android.intent.action.MAIN" />
 
@@ -54,8 +55,7 @@
         <activity android:name=".activities.PocActivity">
 
         </activity>
-        <activity android:name="com.zbar.lib.CaptureActivity"/>
-        <activity android:name=".activities.PocActivity" />
+        <activity android:name="com.zbar.lib.CaptureActivity" />
     </application>
 
 </manifest>

+ 16 - 3
demo/src/main/java/com/sybotan/android/demo/activities/poc/DeviceActivity.kt

@@ -1,20 +1,23 @@
 package com.sybotan.android.demo.activities.poc
 
+import android.content.Intent
 import android.os.Bundle
 import android.support.constraint.ConstraintLayout
-import android.support.v7.app.AppCompatActivity
 import android.widget.Button
 import android.widget.Toast
 import com.sybotan.android.demo.R
+import com.sybotan.android.demo.activities.BaseActivity
 import org.jetbrains.anko.startActivity
 
-class DeviceActivity : AppCompatActivity() {
+class DeviceActivity : BaseActivity() {
+    private var device: String = ""
     override fun onCreate(savedInstanceState: Bundle?) {
         super.onCreate(savedInstanceState)
         setContentView(R.layout.activity_device)
         val deviceCl = findViewById<ConstraintLayout>(R.id.deviceCl)
         deviceCl.setOnClickListener {
-            startActivity<DeviceTypeActivity>()
+            val intent = Intent(this, DeviceTypeActivity::class.java)
+            startActivityForResult(intent, 1)
         }
         val infoCl = findViewById<ConstraintLayout>(R.id.infoCl)
         infoCl.setOnClickListener {
@@ -28,4 +31,14 @@ class DeviceActivity : AppCompatActivity() {
     }
 
 
+
+    override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
+        super.onActivityResult(requestCode, resultCode, data)
+        if (requestCode == 1 && resultCode == 1) {
+
+            val bundle = data?.extras
+            val device = bundle?.getString("device") ?: ""
+            Toast.makeText(this, "device:$device", Toast.LENGTH_LONG).show()
+        }
+    }
 }

+ 37 - 69
demo/src/main/java/com/sybotan/android/demo/activities/poc/DeviceTypeActivity.kt

@@ -1,88 +1,56 @@
 package com.sybotan.android.demo.activities.poc
 
 import android.os.Bundle
-import android.support.v7.app.AppCompatActivity
 import android.widget.ImageView
 import android.widget.ListView
 import com.sybotan.android.demo.R
-import com.sybotan.android.demo.adapter.TreeAdapter
-import com.sybotan.android.demo.data.datas
+import com.sybotan.android.demo.activities.BaseActivity
+import com.sybotan.android.demo.entitiies.Device
+import com.sybotan.android.demo.retrofit.BaseViewModelInterface
+import com.sybotan.android.demo.viewmodel.DeviceVM
 
-class DeviceTypeActivity : AppCompatActivity() {
+class DeviceTypeActivity : BaseActivity() {
+    private lateinit var typeLv: ListView
     override fun onCreate(savedInstanceState: Bundle?) {
         super.onCreate(savedInstanceState)
         setContentView(R.layout.activity_device_type)
-        val typeLv = findViewById<ListView>(R.id.typeLv)
-        val adapter = TreeAdapter(datas(), this, typeLv)
-        typeLv.adapter = adapter
-
+        typeLv = findViewById(R.id.typeLv)
+        /* val adapter = TreeAdapter(datas(), this, typeLv)
+         typeLv.adapter = adapter*/
+
+        /* adapter.setOnTreeNodeClickListener(object : OnTreeNodeClickListener<Data> {
+             override fun onClick(node: Node<Data>, position: Int) {
+                 if (!node.isLeaf) return
+                 val intent = Intent()
+                 intent.putExtra("device", "${node.data.label} -> 13213213213")
+                 setResult(1, intent)
+                 finish()
+             }
+
+         })*/
         val backIv = findViewById<ImageView>(R.id.backIv)
         backIv.setOnClickListener {
             finish()
         }
-    }
-}
-
-
-data class DeviceType(
-    val rtn: Rtn
-)
 
-data class Rtn(
-    val content: List<Content>,
-    val message: String,
-    val result: String,
-    val total: Int
-)
 
-data class Content(
-    val aliasCode: String,
-    val aliasName: String,
-    val children: List<Children>,
-    val code: String,
-    val groupCode: String,
-    val name: String,
-    val projectId: String
-)
-
-data class Children(
-    val aliasCode: String,
-    val aliasName: String,
-    val children: List<ChildrenX>,
-    val code: String,
-    val createTime: String,
-    val groupCode: String,
-    val id: String,
-    val lastUpdate: String,
-    val majorCode: String,
-    val name: String,
-    val objType: String,
-    val parentCode: String,
-    val projectId: String,
-    val statistics: StatisticsX,
-    val type: String
-)
+        /*val saveBtn = findViewById<Button>(R.id.saveBtn)
+        saveBtn.setOnClickListener {
+            val intent = Intent()
+            intent.putExtra("device", "13213213213")
+            setResult(1, intent)
+        }*/
+        initViewModel()
+    }
 
-data class ChildrenX(
-    val aliasCode: String,
-    val aliasName: String,
-    val code: String,
-    val createTime: String,
-    val groupCode: String,
-    val id: String,
-    val lastUpdate: String,
-    val majorCode: String,
-    val name: String,
-    val objType: String,
-    val parentCode: String,
-    val projectId: String,
-    val statistics: Statistics,
-    val systemCode: String,
-    val type: String
-)
+    private fun initViewModel() {
+        val deviceVM = DeviceVM(BaseViewModelInterface { name, params ->
+            val types = params as List<Device>
 
-class StatisticsX(
-)
+            //val adapter = TreeAdapter(types, this, typeLv)
+            // typeLv.adapter = adapter
+        }, this)
 
-class Statistics(
-)
+        deviceVM.getDeviceType()
+    }
+}

+ 4 - 3
demo/src/main/java/com/sybotan/android/demo/adapter/TreeAdapter.kt

@@ -7,14 +7,15 @@ import android.widget.ListView
 import android.widget.TextView
 import com.sybotan.android.demo.R
 import com.sybotan.android.demo.data.Data
+import com.sybotan.android.demo.entitiies.MajorEntity
 import com.sybotan.android.demo.tree.BaseTreeAdapter
 import com.sybotan.android.demo.tree.Node
 
 class TreeAdapter(
-    data: List<Data>, context: Context, listView: ListView
-) : BaseTreeAdapter<Data>(data, context, listView) {
+    data: List<MajorEntity>, context: Context, listView: ListView
+) : BaseTreeAdapter<MajorEntity>(data, context, listView) {
     override fun getConvertView(
-        node: Node<Data>,
+        node: Node<MajorEntity>,
         position: Int,
         convertView: View?,
         parent: ViewGroup?

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

@@ -1,7 +1,5 @@
 package com.sybotan.android.demo.bean;
 
-import android.text.TextUtils;
-
 import java.io.Serializable;
 
 /**

+ 94 - 0
demo/src/main/java/com/sybotan/android/demo/entitiies/DeviceEntity.kt

@@ -0,0 +1,94 @@
+package com.sybotan.android.demo.entitiies
+
+import com.sybotan.android.demo.tree.TreeNodeId
+import com.sybotan.android.demo.tree.TreeNodeLabel
+import com.sybotan.android.demo.tree.TreeNodePid
+
+data class Device(
+    @TreeNodeId
+    val id: String,
+    @TreeNodePid
+    var pid: String,            // 父类id
+
+    val code: String,           // 唯一标识
+    @TreeNodeLabel
+    val name: String,
+
+    val majorCode: String,      // 专业编码
+    val systemCode: String,     // 系统编码
+
+    val parentCode: String,     // 父编码
+    val objType: String,        // 对象类型
+    val children: List<Device>,
+
+    val type: String,
+    val aliasCode: String,
+    val aliasName: String,
+    val createTime: String,
+    val groupCode: String,
+    val lastUpdate: String,
+    val projectId: String,
+    val statistics: Statistics
+)
+
+
+data class MajorEntity(
+    val aliasCode: String,
+    @TreeNodeLabel
+    val aliasName: String,
+    val children: List<SystemEntity>,
+    @TreeNodeId
+    val code: String,
+    val groupCode: String,
+    val name: String,
+    val projectId: String
+)
+
+
+data class SystemEntity(
+    val aliasCode: String,
+    val aliasName: String,
+    val children: List<DeviceEntity>,
+    @TreeNodeId
+    val code: String,
+    val createTime: String,
+    val groupCode: String,
+    val id: String,
+    val lastUpdate: String,
+    @TreeNodePid
+    val majorCode: String,
+    @TreeNodeLabel
+    val name: String,
+    val objType: String,
+    val parentCode: String,
+    val projectId: String,
+    val statistics: StatisticsX,
+    val type: String
+)
+
+data class DeviceEntity(
+    val aliasCode: String,
+    val aliasName: String,
+    @TreeNodeId
+    val code: String,
+    val createTime: String,
+    val groupCode: String,
+    val id: String,
+    val lastUpdate: String,
+    val majorCode: String,
+    @TreeNodeLabel
+    val name: String,
+    val objType: String,
+    val parentCode: String,
+    val projectId: String,
+    val statistics: Statistics,
+    @TreeNodePid
+    val systemCode: String,
+    val type: String
+)
+
+class StatisticsX(
+)
+
+class Statistics(
+)

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

@@ -1,21 +1,18 @@
 package com.sybotan.android.demo.retrofit;
 
 
-
 import com.sybotan.android.demo.bean.BaseModel;
+import com.sybotan.android.demo.entitiies.Device;
+import com.sybotan.android.demo.entitiies.MajorEntity;
+import com.sybotan.android.demo.entitiies.SystemEntity;
 import com.sybotan.android.demo.bean.result.SpaceJobModel;
 
-import java.util.ArrayList;
 import java.util.List;
 
 import io.reactivex.Observable;
 import okhttp3.RequestBody;
 import retrofit2.http.Body;
-import retrofit2.http.GET;
 import retrofit2.http.POST;
-import retrofit2.http.PUT;
-import retrofit2.http.Path;
-import retrofit2.http.Query;
 
 /**
  * Created by weimo on 2020/7/13.
@@ -88,9 +85,17 @@ public interface API {
 //    @GET("https://duoduoenv.sagacloud.cn/duoduo-service/fm-service/weather/getCurrent")
 //    Observable<BaseModel<WeatherModel>> getCurrent(@Query("projectId") String projectId);
 //
+
     /**
      * 查询空间和任务
      */
     @POST("clmt/job/space_job")
     Observable<BaseModel<List<SpaceJobModel>>> getSpaceJob(@Body RequestBody body);
+
+    /**
+     * 查询设备类型
+     */
+    @POST("clmt/dict/sys_eq")
+    Observable<BaseModel<List<Device>>> requestDeviceTypeJob();
+
 }

+ 1 - 1
demo/src/main/java/com/sybotan/android/demo/tree/Tree.kt

@@ -13,7 +13,7 @@ annotation class TreeNodePid
 @Retention(AnnotationRetention.RUNTIME)
 annotation class TreeNodeLabel
 
-class Node<T>(val id: Int, val pid: Int, val label: String, val data: T) {
+class Node<T>(val id: String, val pid: String, val label: String, val data: T) {
     /**
      * 节点层级
      */

+ 5 - 5
demo/src/main/java/com/sybotan/android/demo/tree/TreeHelper.kt

@@ -49,26 +49,26 @@ object TreeHelper {
         var node: Node<T>
 
         for (t in list) {
-            var id = -1
-            var pid = -1
+            var id = ""
+            var pid = ""
             var label = ""
             val clazz = t::class.java
             val fields = clazz.declaredFields
             for (field in fields) {
                 if (field.getAnnotation(TreeNodeId::class.java) != null) {
                     field.isAccessible = true
-                    id = field.getInt(t)
+                    id = field.get(t) as String
                 }
                 if (field.getAnnotation(TreeNodePid::class.java) != null) {
                     field.isAccessible = true
-                    pid = field.getInt(t)
+                    pid = field.get(t) as String
                 }
                 if (field.getAnnotation(TreeNodeLabel::class.java) != null) {
                     field.isAccessible = true
                     label = field.get(t) as String
                 }
 
-                if (id != -1 && pid != -1 && label != "") {  // 需要的属性都已经设置完毕
+                if (id != "" && label != "") {  // 需要的属性都已经设置完毕
                     break
                 }
             }

+ 23 - 0
demo/src/main/java/com/sybotan/android/demo/viewmodel/DeviceVM.kt

@@ -0,0 +1,23 @@
+package com.sybotan.android.demo.viewmodel
+
+import com.sybotan.android.demo.activities.BaseActivity
+import com.sybotan.android.demo.entitiies.Device
+import com.sybotan.android.demo.retrofit.BaseObserver
+import com.sybotan.android.demo.retrofit.BaseViewModelInterface
+import com.sybotan.android.demo.retrofit.RetrofitFactory
+
+class DeviceVM(b: BaseViewModelInterface, a: BaseActivity) : BaseViewModel(b, a) {
+    companion object {
+        const val DEVICE_TYPE = "DEVICE_TYPE"
+    }
+
+    fun getDeviceType() {
+        val observable = RetrofitFactory.getInstance().requestDeviceTypeJob()
+        this.sendRequest(observable, object : BaseObserver<List<Device>>(mActivity, this) {
+            override fun onSuccess(t: List<Device>?) {
+                mEmitter.SendDircetive(DEVICE_TYPE, t)
+            }
+        }, true)
+    }
+
+}