lihao1 vor 3 Jahren
Ursprung
Commit
c941f6b72b
21 geänderte Dateien mit 263 neuen und 129 gelöschten Zeilen
  1. 1 1
      demo/src/main/assets/dist/css/app.79d266af.css
  2. 1 1
      demo/src/main/assets/dist/index.html
  3. 0 2
      demo/src/main/assets/dist/js/app.78aef205.js
  4. 0 1
      demo/src/main/assets/dist/js/app.78aef205.js.map
  5. 2 0
      demo/src/main/assets/dist/js/app.dc0e094b.js
  6. 1 0
      demo/src/main/assets/dist/js/app.dc0e094b.js.map
  7. 1 0
      demo/src/main/java/com/framework/mvvm/model/db/entity/task/ObjectEntity.kt
  8. 28 28
      demo/src/main/java/com/sybotan/android/demo/activities/GraphyActivity.kt
  9. 11 2
      demo/src/main/java/com/sybotan/android/demo/activities/PocActivity.kt
  10. 71 3
      demo/src/main/java/com/sybotan/android/demo/activities/Scene3DActivity.kt
  11. 30 17
      demo/src/main/java/com/sybotan/android/demo/activities/Space3DActivity.kt
  12. 27 11
      demo/src/main/java/com/sybotan/android/demo/activities/poc/SceneActivity.kt
  13. 27 14
      demo/src/main/java/com/sybotan/android/demo/activities/poc/SpaceActivity.kt
  14. 24 24
      demo/src/main/java/com/sybotan/android/demo/adapter/StaticInfoAdapter.java
  15. 3 3
      demo/src/main/java/com/sybotan/android/demo/bean/model3d/SetFloorPathModel.java
  16. 2 1
      demo/src/main/java/com/sybotan/android/demo/bean/model3d/SpaceData3D.java
  17. 1 1
      demo/src/main/java/com/sybotan/android/demo/tools/ObjectNameUtils.kt
  18. 15 2
      demo/src/main/java/com/sybotan/android/demo/viewmodel/Scene3DVM.kt
  19. 10 16
      demo/src/main/java/com/sybotan/android/demo/viewmodel/Space3DVM.kt
  20. 6 0
      demo/src/main/java/com/sybotan/android/demo/viewmodel/SpaceDetailVM.kt
  21. 2 2
      gradle.properties

Datei-Diff unterdrückt, da er zu groß ist
+ 1 - 1
demo/src/main/assets/dist/css/app.79d266af.css


Datei-Diff unterdrückt, da er zu groß ist
+ 1 - 1
demo/src/main/assets/dist/index.html


Datei-Diff unterdrückt, da er zu groß ist
+ 0 - 2
demo/src/main/assets/dist/js/app.78aef205.js


Datei-Diff unterdrückt, da er zu groß ist
+ 0 - 1
demo/src/main/assets/dist/js/app.78aef205.js.map


Datei-Diff unterdrückt, da er zu groß ist
+ 2 - 0
demo/src/main/assets/dist/js/app.dc0e094b.js


Datei-Diff unterdrückt, da er zu groß ist
+ 1 - 0
demo/src/main/assets/dist/js/app.dc0e094b.js.map


+ 1 - 0
demo/src/main/java/com/framework/mvvm/model/db/entity/task/ObjectEntity.kt

@@ -82,6 +82,7 @@ data class InfosforBuild(
 data class InfosforFloor(
     val digitalDeliveryID: String,
     val bimIdPre: String,
+    val floorElevation: Double,
 )
 
 data class InfosforSpace(

+ 28 - 28
demo/src/main/java/com/sybotan/android/demo/activities/GraphyActivity.kt

@@ -1181,34 +1181,34 @@ class GraphyActivity : BaseActivity(), ICaptureStatusListener, ICameraChangedCal
             piprRv.layoutManager = GridLayoutManager(this, 3, LinearLayoutManager.HORIZONTAL, false)
             graphyVM.pipeList()
         }
-        roof.setOnCheckedChangeListener { buttonView, isChecked ->
-            if (isChecked) {
-                equipEdit.setText("")
-                equipEdit.isEnabled = false
-                equipEdit.alpha = 0.5f
-            }
-        }
-        wall.setOnCheckedChangeListener { buttonView, isChecked ->
-            if (isChecked) {
-                equipEdit.setText("")
-                equipEdit.isEnabled = true
-                equipEdit.alpha = 1f
-            }
-        }
-        air.setOnCheckedChangeListener { buttonView, isChecked ->
-            if (isChecked) {
-                equipEdit.setText("")
-                equipEdit.isEnabled = true
-                equipEdit.alpha = 1f
-            }
-        }
-        floor.setOnCheckedChangeListener { buttonView, isChecked ->
-            if (isChecked) {
-                equipEdit.setText("0")
-                equipEdit.isEnabled = true
-                equipEdit.alpha = 1f
-            }
-        }
+//        roof.setOnCheckedChangeListener { buttonView, isChecked ->
+//            if (isChecked) {
+//                equipEdit.setText("")
+//                equipEdit.isEnabled = false
+//                equipEdit.alpha = 0.5f
+//            }
+//        }
+//        wall.setOnCheckedChangeListener { buttonView, isChecked ->
+//            if (isChecked) {
+//                equipEdit.setText("")
+//                equipEdit.isEnabled = true
+//                equipEdit.alpha = 1f
+//            }
+//        }
+//        air.setOnCheckedChangeListener { buttonView, isChecked ->
+//            if (isChecked) {
+//                equipEdit.setText("")
+//                equipEdit.isEnabled = true
+//                equipEdit.alpha = 1f
+//            }
+//        }
+//        floor.setOnCheckedChangeListener { buttonView, isChecked ->
+//            if (isChecked) {
+//                equipEdit.setText("0")
+//                equipEdit.isEnabled = true
+//                equipEdit.alpha = 1f
+//            }
+//        }
     }
 
     private fun initProblemPicture(point: PointItem?) {

+ 11 - 2
demo/src/main/java/com/sybotan/android/demo/activities/PocActivity.kt

@@ -69,6 +69,7 @@ class PocActivity : BaseActivity(), DIAware {
     //private val request =
     //    AdmRequest(userId = "bdtp", projectId = "Pj5001120003", groupCode = "XG")
 
+    @RequiresApi(Build.VERSION_CODES.R)
     override fun onCreate(savedInstanceState: Bundle?) {
         super.onCreate(savedInstanceState)
         setContentView(R.layout.activity_poc)
@@ -83,8 +84,16 @@ class PocActivity : BaseActivity(), DIAware {
 
         version = findViewById(R.id.version)
 
-        space3DBtn.setOnClickListener { startActivity<Space3DActivity>() }
-        scene3DBtn.setOnClickListener { startActivity<Scene3DActivity>() }
+        space3DBtn.setOnClickListener {
+            val intent = Intent(this, SpaceActivity::class.java)
+            intent.putExtra("is3D", true)
+            startActivity(intent)
+        }
+        scene3DBtn.setOnClickListener {
+            val intent = Intent(this, SceneActivity::class.java)
+            intent.putExtra("is3D", true)
+            startActivity(intent)
+        }
 
         downloadBtn.setOnClickListener {
             mVm.downloadBuilding(sp) {

+ 71 - 3
demo/src/main/java/com/sybotan/android/demo/activities/Scene3DActivity.kt

@@ -11,17 +11,32 @@ import android.webkit.WebViewClient
 import android.widget.LinearLayout
 import android.widget.TextView
 import com.framework.mvvm.model.db.entity.task.InfosforEq
+import com.framework.mvvm.model.db.entity.task.InfosforFloor
 import com.framework.mvvm.model.db.entity.task.ObjectEntity
 import com.google.gson.Gson
 import com.sybotan.android.demo.R
+import com.sybotan.android.demo.bean.SpaceInfo
 import com.sybotan.android.demo.bean.model3d.FunctionEndBlockModel
+import com.sybotan.android.demo.bean.model3d.SetFloorPathModel
+import com.sybotan.android.demo.bean.model3d.SpaceData3D
 import com.sybotan.android.demo.bean.result.Position
 import com.sybotan.android.demo.bean.result.Z
 import com.sybotan.android.demo.data.PageParam
 import com.sybotan.android.demo.tools.ObjectNameUtils
 import com.sybotan.android.demo.viewmodel.Scene3DVM
+import com.sybotan.android.demo.viewmodel.Space3DVM
+import org.kodein.di.DI
+import org.kodein.di.DIAware
+import org.kodein.di.android.closestDI
+
+class Scene3DActivity : BaseActivity(), DIAware {
+    override val di: DI by closestDI()
+    var isLastSpace = false
+    private lateinit var buildingId: String
+    private lateinit var floorId: String
+    private lateinit var projectId: String
+    private lateinit var floorEntity: ObjectEntity
 
-class Scene3DActivity : BaseActivity() {
     companion object {
         private lateinit var webview: WebView
         private lateinit var viewModel: Scene3DVM
@@ -37,6 +52,10 @@ class Scene3DActivity : BaseActivity() {
     override fun onCreate(savedInstanceState: Bundle?) {
         super.onCreate(savedInstanceState)
         setContentView(R.layout.activity_scene3_dactivity)
+        val floor = intent.getBundleExtra("floor")!!
+        buildingId = floor.getString("buildingId", "")
+        floorId = floor.getString("floorId", "")
+        projectId = floor.getString("projectId", "")
         webview = findViewById(R.id.webview)
         title = findViewById(R.id.title)
         equipDetail = findViewById(R.id.equipDetail)
@@ -66,8 +85,39 @@ class Scene3DActivity : BaseActivity() {
                         title.text = ""
                     }
                 }
+                Scene3DVM.FLOOR_SPACE -> {
+
+                    val spaces = params as ArrayList<ObjectEntity>
+                    val spaceDataList = ArrayList<SpaceData3D>()
+                    val space3D = SpaceData3D()
+                    for (space in spaces) {
+                        val id = SpaceData3D.ID()
+                        id.ID = space.id
+                        id.IsShow = false
+                        val info = gson.fromJson(space.infos, SpaceInfo::class.java)
+                        val outLineString = gson.toJson(info.outline)
+                        id.OutLine = outLineString.replace("\"", "\\\"")
+                        val floorInfo = gson.fromJson(floorEntity.infos, InfosforFloor::class.java)
+                        id.FloorElevation = floorInfo.floorElevation
+                        space3D.ID.add(id)
+                        if (space3D.ID.size >= 5 || space == spaces[spaces.size - 1]) {
+                            if (space === spaces[spaces.size - 1]) {
+                                Thread.sleep(300)
+                                isLastSpace = true
+                            }
+                            spaceDataList.add(space3D)
+                            val sss = gson.toJson(spaceDataList)
+                            webview.loadUrl("javascript:SetSpaceData('${sss}')")
+                            space3D.ID.clear()
+                            spaceDataList.clear()
+                        }
+                    }
+                }
+                Scene3DVM.FLOOR_OBJECT -> {
+                    floorEntity = params as ObjectEntity
+                }
             }
-        }, this)
+        }, this, projectId, buildingId, floorId)
         equipDetail.setOnClickListener {
             val intent = Intent(this@Scene3DActivity, EquipDetailActivity::class.java)
             val infosForEq = gson.fromJson(equipObject.infos, InfosforEq::class.java)
@@ -104,7 +154,25 @@ class Scene3DActivity : BaseActivity() {
         val nameObject = gson.fromJson(name, FunctionEndBlockModel::class.java)
         when (nameObject.Name) {
             "OpenPage" -> {
-                runOnUiThread { webview.loadUrl("javascript:OpenTestData()") }
+//                runOnUiThread { webview.loadUrl("javascript:OpenTestData()") }
+                runOnUiThread { viewModel.getFloorSpace() }
+            }
+            "SetSpaceData" -> {
+                if (isLastSpace) {
+                    runOnUiThread {
+                        val model = SetFloorPathModel()
+                        val floorInfo = gson.fromJson(floorEntity.infos, InfosforFloor::class.java)
+                        model.PorjectID = projectId
+                        model.FloorID = floorInfo.bimIdPre
+                        model.FloorElevation = floorInfo.floorElevation
+                        webview.loadUrl("javascript:SetFloorPath('${gson.toJson(model)}')")
+                    }
+                }
+            }
+            "SetFloorPath" -> {
+                runOnUiThread {
+                    webview.loadUrl("javascript:LoadAllModelWithFloor()")
+                }
             }
             "OpenTestData" -> {
                 runOnUiThread { webview.loadUrl("javascript:LoadAllModelWithFloor()") }

+ 30 - 17
demo/src/main/java/com/sybotan/android/demo/activities/Space3DActivity.kt

@@ -6,6 +6,7 @@ import android.webkit.WebSettings
 import android.webkit.WebView
 import android.webkit.WebViewClient
 import cn.sagacloud.android.cadengine.types.FloorData
+import com.framework.mvvm.model.db.entity.task.InfosforFloor
 import com.framework.mvvm.model.db.entity.task.ObjectEntity
 import com.google.gson.Gson
 import com.sybotan.android.demo.R
@@ -25,6 +26,11 @@ import java.io.File
 class Space3DActivity : BaseActivity(), DIAware {
 
     override val di: DI by closestDI()
+    var isLastSpace = false
+    private lateinit var buildingId: String
+    private lateinit var floorId: String
+    private lateinit var projectId: String
+    private lateinit var floorEntity: ObjectEntity
 
     companion object {
         private lateinit var webview: WebView
@@ -35,6 +41,10 @@ class Space3DActivity : BaseActivity(), DIAware {
     override fun onCreate(savedInstanceState: Bundle?) {
         super.onCreate(savedInstanceState)
         setContentView(R.layout.activity_space3_dactivity)
+        val floor = intent.getBundleExtra("floor")!!
+        buildingId = floor.getString("buildingId", "")
+        floorId = floor.getString("floorId", "")
+        projectId = floor.getString("projectId", "")
         webview = findViewById(R.id.webview)
         webview.clearCache(true)
         val settings: WebSettings = webview.settings
@@ -54,9 +64,6 @@ class Space3DActivity : BaseActivity(), DIAware {
         webview.loadUrl("http://60.205.177.43:8000/APP/")
 //        webview.loadUrl("file:///android_asset/dist/index.html")
 
-        val mapFile = File("/storage/emulated/0/Android/data/com.sybotan.android.demo/files/floorMap/Fl99099900021206b35236df4465845b9dae69ae45bf")
-        val map = mapFile.bufferedReader().use { it.readText() }
-        val floorData = SJsonUtil.fromJson(map, FloorData::class.java)
 
         viewModel = Space3DVM(this.application, { name, param ->
             when (name) {
@@ -67,16 +74,19 @@ class Space3DActivity : BaseActivity(), DIAware {
                     for (space in spaces) {
                         val id = SpaceData3D.ID()
                         id.ID = space.id
-
                         val info = gson.fromJson(space.infos, SpaceInfo::class.java)
                         val outLineString = gson.toJson(info.outline)
                         id.OutLine = outLineString.replace("\"", "\\\"")
-
+                        val floorInfo = gson.fromJson(floorEntity.infos, InfosforFloor::class.java)
+                        id.FloorElevation = floorInfo.floorElevation
                         space3D.ID.add(id)
-                        if (space3D.ID.size >= 5) {
+                        if (space3D.ID.size >= 5 || space == spaces[spaces.size - 1]) {
+                            if (space === spaces[spaces.size - 1]) {
+                                Thread.sleep(300)
+                                isLastSpace = true
+                            }
                             spaceDataList.add(space3D)
                             val sss = gson.toJson(spaceDataList)
-                            val a = "javascript:SetSpaceData('${sss}')"
                             webview.loadUrl("javascript:SetSpaceData('${sss}')")
                             space3D.ID.clear()
                             spaceDataList.clear()
@@ -85,8 +95,11 @@ class Space3DActivity : BaseActivity(), DIAware {
 
 
                 }
+                Space3DVM.FLOOR_OBJECT -> {
+                    floorEntity = param as ObjectEntity
+                }
             }
-        }, this)
+        }, this, projectId, buildingId, floorId)
     }
 
 
@@ -102,21 +115,21 @@ class Space3DActivity : BaseActivity(), DIAware {
         val nameObject = gson.fromJson(name, FunctionEndBlockModel::class.java)
         when (nameObject.Name) {
             "OpenPage" -> {
-                /**
-                {
-                "PorjectID":"Pj9909990002",
-                "FloorID":"Pj99099900022fcaba5e46b611ec821df544d04bf03aB3"
-                }
-                 */
 //                runOnUiThread { webview.loadUrl("javascript:OpenTestData()") }
                 runOnUiThread { viewModel.getFloorSpace() }
             }
             "SetSpaceData" -> {
-                val model = SetFloorPathModel()
-                runOnUiThread { webview.loadUrl("javascript:SetFloorPath('${gson.toJson(model)}')") }
+                if (isLastSpace) {
+                    runOnUiThread {
+                        val model = SetFloorPathModel()
+                        webview.loadUrl("javascript:SetFloorPath('${gson.toJson(model)}')")
+                    }
+                }
             }
             "SetFloorPath" -> {
-                runOnUiThread { webview.loadUrl("javascript:LoadAllModelWithFloor()") }
+                runOnUiThread {
+                    webview.loadUrl("javascript:LoadAllModelWithFloor()")
+                }
             }
             "OpenTestData" -> {
                 runOnUiThread { webview.loadUrl("javascript:LoadAllModelWithFloor()") }

+ 27 - 11
demo/src/main/java/com/sybotan/android/demo/activities/poc/SceneActivity.kt

@@ -7,6 +7,8 @@ import android.widget.ImageView
 import com.sybotan.android.demo.R
 import com.sybotan.android.demo.activities.BaseActivity
 import com.sybotan.android.demo.activities.GraphyActivity
+import com.sybotan.android.demo.activities.Scene3DActivity
+import com.sybotan.android.demo.activities.Space3DActivity
 import com.sybotan.android.demo.adapter.ExpandAdapter
 import com.sybotan.android.demo.entitiies.Build
 import com.sybotan.android.demo.entitiies.Floor
@@ -15,24 +17,38 @@ import com.sybotan.android.demo.viewmodel.BuildVM
 
 class SceneActivity : BaseActivity() {
 
+    private var is3D = false
+
     override fun onCreate(savedInstanceState: Bundle?) {
         super.onCreate(savedInstanceState)
         setContentView(R.layout.activity_scene)
+        is3D = intent.getBooleanExtra("is3D", false)
         val expandLV = findViewById<ExpandableListView>(R.id.expandLv)
         expandLV.setGroupIndicator(null)
         expandLV.divider = null
 
         expandLV.setOnChildClickListener { parent, v, groupPosition, childPosition, id ->
-            val floor = mBuilds[groupPosition].floor[childPosition]
-            val intent = Intent(this, GraphyActivity::class.java)
-            val bundle = Bundle()
-            bundle.putString("buildingId", floor.buildingId)
-            bundle.putString("floorId", floor.id)
-            bundle.putString("floorMap", floor.infos.floorMap)
-            bundle.putString("projectId", floor.projectId)
-            bundle.putString("from", "scene")
-            intent.putExtra("floor", bundle)
-            startActivity(intent)
+            if (is3D) {
+                val floor = mBuilds[groupPosition].floor[childPosition]
+                val intent = Intent(this, Scene3DActivity::class.java)
+                val bundle = Bundle()
+                bundle.putString("buildingId", floor.buildingId)
+                bundle.putString("floorId", floor.id)
+                bundle.putString("projectId", floor.projectId)
+                intent.putExtra("floor", bundle)
+                startActivity(intent)
+            } else {
+                val floor = mBuilds[groupPosition].floor[childPosition]
+                val intent = Intent(this, GraphyActivity::class.java)
+                val bundle = Bundle()
+                bundle.putString("buildingId", floor.buildingId)
+                bundle.putString("floorId", floor.id)
+                bundle.putString("floorMap", floor.infos.floorMap)
+                bundle.putString("projectId", floor.projectId)
+                bundle.putString("from", "scene")
+                intent.putExtra("floor", bundle)
+                startActivity(intent)
+            }
             true
         }
         findViewById<ImageView>(R.id.backIv).setOnClickListener {
@@ -45,7 +61,7 @@ class SceneActivity : BaseActivity() {
 
     private lateinit var mBuilds: List<Build>
     private fun initViewModel() {
-        val vm = BuildVM(this.application,BaseViewModelInterface { name, params ->
+        val vm = BuildVM(this.application, BaseViewModelInterface { name, params ->
             mBuilds = params as List<Build>
             val floors = sep(mBuilds)
             val adapter = ExpandAdapter(this, mBuilds, floors)

+ 27 - 14
demo/src/main/java/com/sybotan/android/demo/activities/poc/SpaceActivity.kt

@@ -9,6 +9,7 @@ import android.widget.ImageView
 import com.sybotan.android.demo.R
 import com.sybotan.android.demo.activities.BaseActivity
 import com.sybotan.android.demo.activities.GraphyActivity
+import com.sybotan.android.demo.activities.Space3DActivity
 import com.sybotan.android.demo.activities.SpaceMapActivity
 import com.sybotan.android.demo.adapter.ExpandAdapter
 import com.sybotan.android.demo.entitiies.Build
@@ -18,29 +19,41 @@ import com.sybotan.android.demo.viewmodel.BuildVM
 
 class SpaceActivity : BaseActivity() {
     private lateinit var expandLv: ExpandableListView
+    private var is3D = false
     override fun onCreate(savedInstanceState: Bundle?) {
         super.onCreate(savedInstanceState)
         setContentView(R.layout.activity_space)
-
+        is3D = intent.getBooleanExtra("is3D", false)
         expandLv = findViewById(R.id.expandLv)
         expandLv.setGroupIndicator(null)
         expandLv.divider = null
 
         expandLv.setOnChildClickListener { parent, v, groupPosition, childPosition, id ->
-            val floor = mBuilds[groupPosition].floor[childPosition]
-            if (floor == null || floor.infos == null || TextUtils.isEmpty(floor.infos.floorMap)) {
-                Toast.makeText(this@SpaceActivity, "该楼层没有平面图", Toast.LENGTH_LONG).show()
-                return@setOnChildClickListener true
+            if (is3D) {
+                val floor = mBuilds[groupPosition].floor[childPosition]
+                val intent = Intent(this, Space3DActivity::class.java)
+                val bundle = Bundle()
+                bundle.putString("buildingId", floor.buildingId)
+                bundle.putString("floorId", floor.id)
+                bundle.putString("projectId", floor.projectId)
+                intent.putExtra("floor", bundle)
+                startActivity(intent)
+            } else {
+                val floor = mBuilds[groupPosition].floor[childPosition]
+                if (floor == null || floor.infos == null || TextUtils.isEmpty(floor.infos.floorMap)) {
+                    Toast.makeText(this@SpaceActivity, "该楼层没有平面图", Toast.LENGTH_LONG).show()
+                    return@setOnChildClickListener true
+                }
+                val intent = Intent(this, SpaceMapActivity::class.java)
+                val bundle = Bundle()
+                bundle.putString("buildingId", floor.buildingId)
+                bundle.putString("floorId", floor.id)
+                bundle.putString("floorMap", floor.infos.floorMap)
+                bundle.putString("from", "space")
+                bundle.putString("projectId", floor.projectId)
+                intent.putExtra("floor", bundle)
+                startActivity(intent)
             }
-            val intent = Intent(this, SpaceMapActivity::class.java)
-            val bundle = Bundle()
-            bundle.putString("buildingId", floor.buildingId)
-            bundle.putString("floorId", floor.id)
-            bundle.putString("floorMap", floor.infos.floorMap)
-            bundle.putString("from", "space")
-            bundle.putString("projectId", floor.projectId)
-            intent.putExtra("floor", bundle)
-            startActivity(intent)
             true
         }
         findViewById<ImageView>(R.id.backIv).setOnClickListener {

+ 24 - 24
demo/src/main/java/com/sybotan/android/demo/adapter/StaticInfoAdapter.java

@@ -342,30 +342,30 @@ public class StaticInfoAdapter extends BaseRecyclerViewAdapter<Infos> {
         editText.addTextChangedListener(textWatcher);
         editText.setTag(textWatcher);
 
-        editText.getViewTreeObserver().addOnGlobalLayoutListener(
-                () -> {
-                    Rect r = new Rect();
-                    editText.getWindowVisibleDisplayFrame(r);
-                    int screenHeight = editText.getRootView()
-                            .getHeight();
-                    int heightDifference = screenHeight - (r.bottom);
-                    if (heightDifference > 200) {
-                        //软键盘显示
-                        editText.setFocusable(true);
-                    } else {
-                        //软键盘隐藏
-                        editText.clearFocus();
-
-                    }
-                });
-        editText.setOnClickListener(v -> {
-            editText.setFocusable(true);
-            editText.setFocusableInTouchMode(true);
-            editText.requestFocus();
-            editText.findFocus();
-            InputMethodManager imm = (InputMethodManager) mContext.getSystemService(Context.INPUT_METHOD_SERVICE);
-            imm.showSoftInput(editText, InputMethodManager.SHOW_FORCED);// 显示输入法
-        });
+//        editText.getViewTreeObserver().addOnGlobalLayoutListener(
+//                () -> {
+//                    Rect r = new Rect();
+//                    editText.getWindowVisibleDisplayFrame(r);
+//                    int screenHeight = editText.getRootView()
+//                            .getHeight();
+//                    int heightDifference = screenHeight - (r.bottom);
+//                    if (heightDifference > 200) {
+//                        //软键盘显示
+//                        editText.setFocusable(true);
+//                    } else {
+//                        //软键盘隐藏
+//                        editText.clearFocus();
+//
+//                    }
+//                });
+//        editText.setOnClickListener(v -> {
+//            editText.setFocusable(true);
+//            editText.setFocusableInTouchMode(true);
+//            editText.requestFocus();
+//            editText.findFocus();
+//            InputMethodManager imm = (InputMethodManager) mContext.getSystemService(Context.INPUT_METHOD_SERVICE);
+//            imm.showSoftInput(editText, InputMethodManager.SHOW_FORCED);// 显示输入法
+//        });
     }
 
     @Override

+ 3 - 3
demo/src/main/java/com/sybotan/android/demo/bean/model3d/SetFloorPathModel.java

@@ -5,7 +5,7 @@ package com.sybotan.android.demo.bean.model3d;
  * Date: 2021/12/7
  */
 public class SetFloorPathModel {
-    public String PorjectID = "Pj9909990002";
-    public String FloorID = "Pj99099900022fcaba5e46b611ec821df544d04bf03aB3";
-    public double FloorElevation = -13.8;
+    public String PorjectID;
+    public String FloorID;
+    public double FloorElevation;
 }

+ 2 - 1
demo/src/main/java/com/sybotan/android/demo/bean/model3d/SpaceData3D.java

@@ -15,10 +15,11 @@ public class SpaceData3D {
         public String OutLine;
         public boolean IsShow = true;
         public int SpaceHeight = 3;
-        public double FloorElevation = -13.8;
+        public double FloorElevation;
     }
 
     public static class Style {
         public String color = "#C4C8F2";
+        public double opacity = 0.5;
     }
 }

+ 1 - 1
demo/src/main/java/com/sybotan/android/demo/tools/ObjectNameUtils.kt

@@ -15,7 +15,7 @@ class ObjectNameUtils {
             if (objectEntity != null && objectEntity.infos == null) {
                 return "--"
             }
-            if (objectEntity?.classCode!!.contains("SELTCC") || objectEntity?.name!!.contains("照明回路")) {
+            if (objectEntity?.classCode!!.contains("SELTCC") || (!TextUtils.isEmpty(objectEntity?.name) && objectEntity?.name!!.contains("照明回路"))) {
                 return if (TextUtils.isEmpty(objectEntity.localId)) "--" else objectEntity.localId.toString()
             }
             val infos = objectEntity?.infos?.asJsonObject

+ 15 - 2
demo/src/main/java/com/sybotan/android/demo/viewmodel/Scene3DVM.kt

@@ -6,7 +6,6 @@ import com.framework.mvvm.model.repository.AdmRepository
 import com.google.gson.Gson
 import com.sybotan.android.demo.activities.BaseActivity
 import com.sybotan.android.demo.bean.model3d.MeshObject
-import com.sybotan.android.demo.retrofit.BaseViewModelInterface
 import kotlinx.coroutines.launch
 import org.kodein.di.DI
 import org.kodein.di.DIAware
@@ -20,7 +19,10 @@ import org.kodein.di.instance
  */
 class Scene3DVM(
     app: Application,
-    b: BaseViewModelInterface?, activity: BaseActivity?, //建筑id
+    b: (name: String, params: Any) -> Unit, activity: BaseActivity?,
+    private val projectId: String,
+    private val buildingId: String,
+    private val floorId: String,
 ) : BaseViewModel(app, b, activity), DIAware {
     private val gson = Gson()
 
@@ -36,7 +38,18 @@ class Scene3DVM(
         }
     }
 
+    fun getFloorSpace() {
+        viewModelScope.launch {
+            val spaces = repo.getSpaceByFloorId(floorId)
+            val floor = repo.getObject(floorId)
+            mEmitter.SendDirective(FLOOR_OBJECT, floor)
+            mEmitter.SendDirective(FLOOR_SPACE, spaces)
+        }
+    }
+
     companion object {
         const val EQUIP_OBJECT = "EQUIP_OBJECT"
+        const val FLOOR_OBJECT = "FLOOR_OBJECT"
+        const val FLOOR_SPACE = "FLOOR_SPACE"
     }
 }

+ 10 - 16
demo/src/main/java/com/sybotan/android/demo/viewmodel/Space3DVM.kt

@@ -7,7 +7,7 @@ import com.framework.mvvm.model.db.entity.task.InfosforFloor
 import com.framework.mvvm.model.repository.AdmRepository
 import com.google.gson.Gson
 import com.sybotan.android.demo.activities.BaseActivity
-import com.sybotan.android.demo.retrofit.BaseViewModelInterface
+import com.sybotan.android.demo.activities.Space3DActivity
 import com.sybotan.base.utils.SJsonUtil
 import kotlinx.coroutines.launch
 import org.kodein.di.DI
@@ -23,7 +23,10 @@ import java.io.File
  */
 class Space3DVM(
     app: Application,
-    b: BaseViewModelInterface?, activity: BaseActivity?, //建筑id
+    b: (name: String, params: Any) -> Unit, activity: BaseActivity,
+    private val projectId: String,
+    private val buildingId: String,
+    private val floorId: String, //建筑id
 ) : BaseViewModel(app, b, activity), DIAware {
     private val gson = Gson()
 
@@ -32,24 +35,15 @@ class Space3DVM(
 
     fun getFloorSpace() {
         viewModelScope.launch {
-//            repo.getSpaceByFloorId()
-            val floors = repo.getObjectByObjType("floor")
-            for (floor in floors) {
-                val mapFile = File("${floor.floorMap}")
-                val map = mapFile.bufferedReader().use { it.readText() }
-                val floorOfflineData = SJsonUtil.fromJson(map, FloorData::class.java)
-
-                val infosforFloor = gson.fromJson(floor.infos, InfosforFloor::class.java)
-                if (infosforFloor.bimIdPre == "Pj99099900022fcaba5e46b611ec821df544d04bf03aB3") {
-                    val spaces = repo.getSpaceByFloorId(floor.id)
-                    mEmitter.SendDirective(FLOOR_SPACE, spaces)
-                    break
-                }
-            }
+            val spaces = repo.getSpaceByFloorId(floorId)
+            val floor = repo.getObject(floorId)
+            mEmitter.SendDirective(FLOOR_OBJECT, floor)
+            mEmitter.SendDirective(FLOOR_SPACE, spaces)
         }
     }
 
     companion object {
         const val FLOOR_SPACE = "FLOOR_SPACE"
+        const val FLOOR_OBJECT = "FLOOR_OBJECT"
     }
 }

+ 6 - 0
demo/src/main/java/com/sybotan/android/demo/viewmodel/SpaceDetailVM.kt

@@ -115,6 +115,12 @@ class SpaceDetailVM(
         viewModelScope.launch {
             val spaceObj = repo.getObject(space.id!!)
             spaceObj!!.infos = gson.toJsonTree(hashMap)
+            if (hashMap!!["localId"] != null && !TextUtils.isEmpty(hashMap["localId"].toString())) {
+                spaceObj.localId = hashMap["localId"].toString()
+            }
+            if (hashMap!!["localName"] != null && !TextUtils.isEmpty(hashMap["localName"].toString())) {
+                spaceObj.localName = hashMap["localName"].toString()
+            }
             spaceObj.state()
             repo.insObject(spaceObj)
             mActivity.setResult(RESULT_OK)

+ 2 - 2
gradle.properties

@@ -17,14 +17,14 @@ SAGA_SERVICE_VERSION=1.4.140
 MAVEN_REPO_RELEASE_URL=http\://dev.dp.sagacloud.cn\:8082/repository/maven-releases/
 EVENTBUS_VERSION=3.1.1
 EASYPERMISSIONS_VERSION=1.2.0
-SAGA_ANDROID_VERSION=1.0.4
+SAGA_ANDROID_VERSION=1.0.5
 JUNIT_VERSION=5.3.1
 KOTLIN_VERSION=1.5.31
 SAGA_GROUP=cn.sagacloud
 SYBOTAN_KOTLIN_VERSION=1.2.42
 android.useAndroidX=true
 LICENSE_NAME=The Apache Software License, Version 2.0
-SAGA_CODE=16
+SAGA_CODE=17
 MAVEN_REPO_SNAPSHOT_URL=http\://dev.dp.sagacloud.cn\:8082/repository/maven-snapshots/
 NEXUS_USERNAME=saga
 DEVELOPER_ID=Andy.Sybotan