浏览代码

add 设备类新增统一信息点功能

lihao1 3 年之前
父节点
当前提交
f985606710

+ 14 - 0
demo/src/main/java/com/sybotan/android/demo/activities/Scene3DActivity.kt

@@ -2,10 +2,12 @@ package com.sybotan.android.demo.activities
 
 import androidx.appcompat.app.AppCompatActivity
 import android.os.Bundle
+import android.webkit.JavascriptInterface
 import android.webkit.WebSettings
 import android.webkit.WebView
 import android.webkit.WebViewClient
 import com.sybotan.android.demo.R
+import com.sybotan.android.demo.tools.ToastUtils
 
 class Scene3DActivity : AppCompatActivity() {
     private lateinit var webview: WebView
@@ -20,9 +22,21 @@ class Scene3DActivity : AppCompatActivity() {
         settings.loadsImagesAutomatically = true
         settings.layoutAlgorithm = WebSettings.LayoutAlgorithm.SINGLE_COLUMN
         webview.webViewClient = MyWebViewClient()
+        settings.loadWithOverviewMode = true
+        settings.domStorageEnabled = true
+        settings.databaseEnabled = true
+        settings.mixedContentMode = WebSettings.MIXED_CONTENT_ALWAYS_ALLOW
+        webview.addJavascriptInterface(this, "android")
         webview.loadUrl("http://60.205.177.43:8000/APP/#/?PageType=2")
     }
 
+    @JavascriptInterface
+    fun MeshClick(meshObject: String) {
+        runOnUiThread {
+            ToastUtils.showMyToast("选中了ID:${meshObject}")
+        }
+    }
+
     class MyWebViewClient : WebViewClient() {
         //兼容低版本
         override fun shouldOverrideUrlLoading(view: WebView, url: String): Boolean {

+ 24 - 9
demo/src/main/java/com/sybotan/android/demo/viewmodel/EquipDetailVM.kt

@@ -79,22 +79,37 @@ class EquipDetailVM(
     fun getEquipInfosConfig(equipmentEntity: EquipmentEntity) {
         viewModelScope.launch {
             val infosConfig = repo.getInfosConfigByEquipCode(equipmentEntity.code!!)
-            if (CommonUtils.IsNull(infosConfig)) {
+            val equipConfig = repo.getInfosConfigByEquipCode("equipment")
+            var configs = ArrayList<Infos>()
+            if (!CommonUtils.IsNull(equipConfig)) {
+                configs.addAll(gson.fromJson(equipConfig[0].infos, object : TypeToken<ArrayList<Infos?>?>() {}.type))
+            }
+            if (!CommonUtils.IsNull(infosConfig)) {
+                configs.addAll(gson.fromJson<List<Infos>>(infosConfig[0].infos, object : TypeToken<List<Infos?>?>() {}.type))
+            }
+
+            if (CommonUtils.IsNull(configs)) {
                 mEmitter.SendDirective(EQUIP_INFO, null)
                 return@launch
             }
-            val infos = infosConfig.get(0).infos
-            val infoList = gson.fromJson<List<Infos>>(
-                infos,
-                object : TypeToken<List<Infos?>?>() {}.type
-            )
-            mergeInfo(equipmentEntity, infoList)
-            mEmitter.SendDirective(EQUIP_INFO, infoList)
+
+            mergeInfo(equipmentEntity, configs)
+            mEmitter.SendDirective(EQUIP_INFO, configs)
 
         }
     }
 
-    private suspend fun mergeInfo(equipmentEntity: EquipmentEntity, infoList: List<Infos>) {
+    private suspend fun mergeInfo(equipmentEntity: EquipmentEntity, infoList: ArrayList<Infos>) {
+        val iterator = infoList.iterator()
+        val codeList = ArrayList<String>()
+        while (iterator.hasNext()) {
+            val item = iterator.next()
+            if (codeList.contains(item.code)) {
+                iterator.remove()
+            } else {
+                codeList.add(item.code)
+            }
+        }
         for (info in infoList) {
             val infoEntity =
                 repo.getInfoByClassCodeAndCode(equipmentEntity.code!!, "equipment", info.code)