Quellcode durchsuchen

add poc2.0需求

lihao1 vor 3 Jahren
Ursprung
Commit
91fbd821c2

+ 9 - 9
cadengine/src/main/java/cn/sagacloud/android/cadengine/FloorScene.kt

@@ -166,7 +166,7 @@ open class FloorScene : SGraphyScene() {
      *  @param  isGzip      是否为压缩格式
      */
     fun loadUrl(url: String, isGzip: Boolean = true) {
-        Log.e("PLX", "url = $url")
+//        //Log.e("数据源", "url = $url")
         try {
             val json = if (isGzip) {
                 SHttpUtil.getZipRequest(url)
@@ -175,9 +175,9 @@ open class FloorScene : SGraphyScene() {
             }
 //            SJsonUtil.propertyNamingStrategy = PropertyNamingStrategy.PascalCase
             val d = SJsonUtil.fromJson<FloorData>(json)
-            Log.e("PLX", "json = ${d?.toJson()}")
+//            //Log.e("数据源", "json = ${d?.toJson()}")
             data = SJsonUtil.fromJson(json, FloorData::class.java)
-            Log.e("数据源", "json = ${d?.toJson()}")
+//            Log.e("数据源", "json = ${d?.toJson()}")
         } catch (e: Exception) {
             e.printStackTrace()
         }
@@ -186,9 +186,9 @@ open class FloorScene : SGraphyScene() {
     fun loadData(json: FloorData) {
         try {
 //            SJsonUtil.propertyNamingStrategy = PropertyNamingStrategy.PascalCase
-            Log.e("PLX", "json = ${json?.toJson()}")
+//            //Log.e("数据源", "json = ${json?.toJson()}")
             data = json
-            Log.e("数据源", "json = ${json?.toJson()}")
+//            Log.e("数据源", "json = ${json?.toJson()}")
         } catch (e: Exception) {
             e.printStackTrace()
         }
@@ -331,7 +331,7 @@ open class FloorScene : SGraphyScene() {
      */
     open fun addSpace(space: Space) {
         val item = SpaceItem(space)
-        Log.e("打印数据", space.toJson())
+//        Log.e("打印数据", space.toJson())
         item.isVisible = isShowSpace
         spaceList.add(item)
         addItem(item)
@@ -391,14 +391,14 @@ open class FloorScene : SGraphyScene() {
         val segmentSize = 3 * 1024
         val length = msg.length.toLong()
         if (length <= segmentSize) {// 长度小于等于限制直接打印
-            Log.e("PLX", msg)
+            //Log.e("数据源", msg)
         } else {
             while (msg.length > segmentSize) {// 循环分段打印日志
                 val logContent = msg.substring(0, segmentSize)
                 msg = msg.replace(logContent, "")
-                Log.e("PLX", logContent)
+                //Log.e("数据源", logContent)
             }
-            Log.e("PLX", msg)// 打印剩余日志
+            //Log.e("数据源", msg)// 打印剩余日志
         }
     }
 

+ 2 - 2
cadengine/src/main/java/cn/sagacloud/android/cadengine/http/DownloadData.kt

@@ -21,7 +21,7 @@ object DownloadData {
      *  @param  isGzip      是否为压缩格式
      */
     fun loadUrlFile(url: String, isGzip: Boolean = true): FloorData? {
-        Log.e("PLX","url = $url")
+        //Log.e("数据源","url = $url")
         var floorData: FloorData? = null
        return try {
             val json = if (isGzip) {
@@ -31,7 +31,7 @@ object DownloadData {
             }
 //            SJsonUtil.propertyNamingStrategy = PropertyNamingStrategy.PascalCase
             val d = SJsonUtil.fromJson<FloorData>(json)
-            Log.e("PLX", "json = ${d?.toJson()}")
+            //Log.e("数据源", "json = ${d?.toJson()}")
            floorData = SJsonUtil.fromJson(json, FloorData::class.java)
            floorData
         } catch (e: Exception) {

+ 4 - 4
demo/src/main/java/com/framework/mvvm/model/db/dao/PipeDao.kt

@@ -18,11 +18,11 @@ interface PipeDao {
     @Query("select * from pipe where building_id = :id")
     suspend fun getPipeByBuildingId(id: String): List<PipeEntity>
 
-    @Query("select * from pipe where obj_from = :id and pipe_type = :pipeType and valid = 1")
-    suspend fun getPipeByIdFrom(id: String, pipeType: String): List<PipeEntity>
+    @Query("select * from pipe where obj_from = :id and pipe_type = :pipeType and pipe_sub_type=:pipeSubType and valid = 1")
+    suspend fun getPipeByIdFrom(id: String, pipeType: String, pipeSubType: String): List<PipeEntity>
 
-    @Query("select * from pipe where obj_to = :id and pipe_type = :pipeType and valid = 1")
-    suspend fun getPipeByIdTo(id: String, pipeType: String): List<PipeEntity>
+    @Query("select * from pipe where obj_to = :id and pipe_type = :pipeType and pipe_sub_type=:pipeSubType and valid = 1")
+    suspend fun getPipeByIdTo(id: String, pipeType: String, pipeSubType: String): List<PipeEntity>
 
     @Query("select * from pipe where floor_id = :floorId and valid = 1")
     suspend fun getPipeByFloorId(floorId: String): List<PipeEntity>

+ 3 - 0
demo/src/main/java/com/framework/mvvm/model/db/entity/ProblemArchEntity.kt

@@ -3,7 +3,9 @@ package com.framework.mvvm.model.db.entity
 import androidx.room.ColumnInfo
 import androidx.room.Entity
 import androidx.room.PrimaryKey
+import kotlinx.serialization.Contextual
 import kotlinx.serialization.Serializable
+import org.json.JSONObject
 
 /**
  * 结构问题  表
@@ -27,5 +29,6 @@ data class ProblemArchEntity(
     @ColumnInfo(name = "upload_flag") var uploadFlag: String?,      // app端上传数据标记
     @ColumnInfo(name = "valid") val valid: Int?,                    // 1 有效,2 无效
     @ColumnInfo(name = "geom") val geom: String?,                   // 问题记录的几何数据(Json)
+    @ColumnInfo(name = "strGeom") val strGeom: String?,                   // 问题记录的几何数据(Json)
     @ColumnInfo(name = "state") var state: String? = "0"             // 数据状态:0:未处理,1:已处理 2:已上传
 )

+ 14 - 5
demo/src/main/java/com/framework/mvvm/model/repository/AdmRepository.kt

@@ -150,6 +150,7 @@ class AdmRepository(
     suspend fun getRelByCode(graphCode: String, relCode: String): List<RelationEntity> {
         return db.relationDao().getRelationByCode(graphCode, relCode)
     }
+
     suspend fun getRelById(id: String): RelationEntity {
         return db.relationDao().getRelationById(id)
     }
@@ -173,16 +174,25 @@ class AdmRepository(
     suspend fun getPipeByFloorId(floorId: String): List<PipeEntity> {
         return db.pipeDao().getPipeByFloorId(floorId)
     }
+
     suspend fun getPipeById(id: String): PipeEntity {
         return db.pipeDao().getPipeById(id)
     }
 
-    suspend fun getPipeByIdFrom(equipId: String, pipeType: String): List<PipeEntity> {
-        return db.pipeDao().getPipeByIdFrom(equipId, pipeType)
+    suspend fun getPipeByIdFrom(
+        equipId: String,
+        pipeType: String,
+        pipeSubType: String
+    ): List<PipeEntity> {
+        return db.pipeDao().getPipeByIdFrom(equipId, pipeType, pipeSubType)
     }
 
-    suspend fun getPipeByIdTo(equipId: String, pipeType: String): List<PipeEntity> {
-        return db.pipeDao().getPipeByIdTo(equipId, pipeType)
+    suspend fun getPipeByIdTo(
+        equipId: String,
+        pipeType: String,
+        pipeSubType: String
+    ): List<PipeEntity> {
+        return db.pipeDao().getPipeByIdTo(equipId, pipeType, pipeSubType)
     }
 
     suspend fun getObjectByCode(code: String): List<ObjectEntity> {
@@ -206,7 +216,6 @@ class AdmRepository(
     }
 
 
-
     /**
      * 请求框架数据
      */

+ 10 - 3
demo/src/main/java/com/sybotan/android/demo/activities/EquipDetailActivity.kt

@@ -66,8 +66,8 @@ class EquipDetailActivity : BaseActivity(), View.OnTouchListener {
     private lateinit var equipClass: ListItemView
     private lateinit var root: NestedScrollView
     private lateinit var btnSubmit: TextView
-    private lateinit var expandLvPipe: ExpandableListView
-    private lateinit var expandLvRelation: ExpandableListView
+    private lateinit var expandLvPipe: SuperExpandableListView
+    private lateinit var expandLvRelation: SuperExpandableListView
     private lateinit var pictureAdapter: PictureAdapter
     private lateinit var groupRelConfigEntity: RelConfigEntity
     private lateinit var groupPipeConfigEntity: PipeConfigEntity
@@ -294,7 +294,8 @@ class EquipDetailActivity : BaseActivity(), View.OnTouchListener {
                     val hashMap = params as HashMap<String, Any>
                     val parent = hashMap.get("parent") as ArrayList<RelConfigEntity>
                     val children = hashMap.get("child") as MutableList<List<RelationEntity>>
-                    val relAdapter = RelationExpandAdapter(this@EquipDetailActivity, parent, children)
+                    val relAdapter =
+                        RelationExpandAdapter(this@EquipDetailActivity, parent, children)
                     relAdapter.setOnAdd(object : RelationExpandAdapter.AddRel {
                         override fun onAdd(group: RelConfigEntity) {
                             this@EquipDetailActivity.groupRelConfigEntity = group
@@ -307,6 +308,9 @@ class EquipDetailActivity : BaseActivity(), View.OnTouchListener {
                         }
                     })
                     expandLvRelation.setAdapter(relAdapter)
+                    for (index in 0 until expandLvRelation.count) {
+                        expandLvRelation.expandGroup(index)
+                    }
                 }
                 GraphyVM.REL_OBJECT -> {
                     val equipObjects = params as List<ObjectEntity>
@@ -356,6 +360,9 @@ class EquipDetailActivity : BaseActivity(), View.OnTouchListener {
                             graphyVM.deletePipe(item, equipEntity, deviceId, uuid)
                         }
                     })
+                    for (index in 0 until expandLvPipe.count) {
+                        expandLvPipe.expandGroup(index)
+                    }
                 }
                 GraphyVM.PIPE_OBJECT -> {
                     val equipObjects = params as List<ObjectEntity>

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

@@ -1220,7 +1220,7 @@ class GraphyActivity : BaseActivity(), ICaptureStatusListener, ICameraChangedCal
 //                    val list = params as (List<SpaceEntity>)
                     val list = params as (List<SpaceJobModel>)
                     for (model in list) {
-                        if (!model.outline!!.isEmpty()) {
+                        if (model.outline != null && !model.outline!!.isEmpty()) {
                             val space = Space()
                             space.outLine = model.outline.get(0)
                             space.name = model.name

+ 2 - 2
demo/src/main/java/com/sybotan/android/demo/adapter/PipeExpandAdapter.kt

@@ -71,7 +71,7 @@ class PipeExpandAdapter(
         }
         val group: PipeConfigEntity = mGroups[groupPosition]
         val tvGroup = holder?.findViewById(R.id.title) as TextView
-        tvGroup.text = group.pipeType
+        tvGroup.text = group.pipeSubType + "--" + group.pipeType
         val add = holder?.findViewById(R.id.add) as ImageView
         add.setOnClickListener {
             addRel?.onAdd(group)
@@ -100,7 +100,7 @@ class PipeExpandAdapter(
         } else if (item.direction == -1) {
             sb.append("  <—  ")
         } else if (item.direction == 0) {
-            sb.append("  -—  ")
+            sb.append("  —  ")
         }
         sb.append(item.objToLocalId)
         itemTv.text = sb.toString()

+ 32 - 0
demo/src/main/java/com/sybotan/android/demo/view/SuperExpandableListView.java

@@ -0,0 +1,32 @@
+package com.sybotan.android.demo.view;
+
+import android.content.Context;
+import android.util.AttributeSet;
+import android.view.View;
+import android.widget.ExpandableListView;
+
+/**
+ * Created by lihao.
+ * Date: 2021/10/17
+ */
+public class SuperExpandableListView extends ExpandableListView {
+
+    public SuperExpandableListView(Context context) {
+        super(context);
+    }
+
+    public SuperExpandableListView(Context context, AttributeSet attrs) {
+        super(context, attrs);
+    }
+
+    public SuperExpandableListView(Context context, AttributeSet attrs, int defStyleAttr) {
+        super(context, attrs, defStyleAttr);
+    }
+
+    protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
+        // TODO Auto-generated method stub
+        int expandSpec = View.MeasureSpec.makeMeasureSpec(Integer.MAX_VALUE >> 2,
+                View.MeasureSpec.AT_MOST);
+        super.onMeasure(widthMeasureSpec, expandSpec);
+    }
+}

+ 72 - 27
demo/src/main/java/com/sybotan/android/demo/viewmodel/GraphyVM.kt

@@ -137,13 +137,13 @@ class GraphyVM(
             position.x = x
             position.y = y
             var toJson = ""
+            val array = ArrayList<PointF>()
             if (point != null && point.data.mX != 0f) {
                 position.x = point.data.mX
                 position.y = point.data.mY
-                toJson = gson.toJson(position)
-            } else {
-                toJson = gson.toJson(position)
             }
+            array.add(position)
+            toJson = gson.toJson(array)
             var time = SimpleDateFormat("yyyyMMddHHmmss").format(Date(System.currentTimeMillis()))
             var toString = ""
             if (point != null && !TextUtils.isEmpty(point.data.id)) {
@@ -164,10 +164,12 @@ class GraphyVM(
                 creator = "",
                 creationTime = time,
                 modifier = "android",
-                modifiedTime = time,
+                modifiedTime = null,
                 uploadFlag = "",
                 valid = 1,
-                geom = toJson, state = "1"
+                strGeom = toJson,
+                state = "1",
+                geom = null
             )
             repo.insProblem(problem)
 
@@ -199,7 +201,7 @@ class GraphyVM(
                         creator = "android",
                         creationTime = time,
                         modifier = "",
-                        modifiedTime = time,
+                        modifiedTime = null,
                         valid = 1,
                         uploadFlag = "", state = "1"
                     )
@@ -240,7 +242,13 @@ class GraphyVM(
                     promodel.floorId = floorId
                     promodel.spaceId = choseSpace!!.data.id
                     promodel.id = problem.id
-                    promodel.position = problem.geom
+
+                    val geomList = gson.fromJson<List<PointF>>(
+                        problem.strGeom,
+                        object : TypeToken<List<PointF?>?>() {}.type
+                    )
+
+                    promodel.position = gson.toJson(geomList.get(0))
                     val refFiles = repo.getRefFile(problem.id)
                     for (file in refFiles) {
                         var photo = Photos()
@@ -319,7 +327,7 @@ class GraphyVM(
                 creator = "Anroid",
                 creationTime = time,
                 modifier = "Android",
-                modifiedTime = time,
+                modifiedTime = null,
                 valid = 1,
                 uploadFlag = "", state = "1"
             )
@@ -557,7 +565,8 @@ class GraphyVM(
                             gson.fromJson(objFrom!!.strInfos, StrInfosforEquip::class.java)
                         child.position.add(PointF(strInfoFrom.location.x, strInfoFrom.location.y))
 
-                        val strInfoTo = gson.fromJson(objTo!!.strInfos, StrInfosforEquip::class.java)
+                        val strInfoTo =
+                            gson.fromJson(objTo!!.strInfos, StrInfosforEquip::class.java)
                         child.position.add(PointF(strInfoTo.location.x, strInfoTo.location.y))
                         model.children.add(child)
                         hasParent = true
@@ -565,12 +574,13 @@ class GraphyVM(
                 }
                 if (!hasParent) {
                     val pipeModel = SpacePipeModel()
-                    pipeModel.typeName = pipe.pipeType
-
+                    pipeModel.typeName = pipe.pipeSubType + "--" + pipe.pipeType
+                    pipeModel.type = pipe.pipeType
                     val child = ChildrenZ()
                     val objFrom = repo.getObject(pipe.objFrom!!)
                     val objTo = repo.getObject(pipe.objTo!!)
-                    val strInfoFrom = gson.fromJson(objFrom!!.strInfos, StrInfosforEquip::class.java)
+                    val strInfoFrom =
+                        gson.fromJson(objFrom!!.strInfos, StrInfosforEquip::class.java)
                     child.position.add(PointF(strInfoFrom.location.x, strInfoFrom.location.y))
 
                     val strInfoTo = gson.fromJson(objTo!!.strInfos, StrInfosforEquip::class.java)
@@ -580,6 +590,7 @@ class GraphyVM(
                 }
 
             }
+            mEmitter.SendDircetive(SPACE_PIPE, pipeModels)
         }
 //        val bean = ReqFloorPipe()
 //        bean.floorId = floorId
@@ -630,7 +641,8 @@ class GraphyVM(
     fun refreshObject(space: TunableSpace, hashMap: HashMap<String, Any>) {
         viewModelScope.launch {
             var space = repo.getObject(space.id!!)
-            space!!.infos = JSONObject(hashMap as Map<*, *>)
+//            space!!.infos = JSONObject(hashMap as Map<*, *>)
+            space!!.strInfos = gson.toJson(JSONObject(hashMap as Map<*, *>))
             space.state = "1"
             repo.insObject(space)
             mActivity.setResult(RESULT_OK)
@@ -726,7 +738,7 @@ class GraphyVM(
                     creationTime = SimpleDateFormat("yyyyMMddHHmmss").format(Date(System.currentTimeMillis()))
                         .toLong(),
                     modifier = "Android",
-                    modifiedTime = 0,
+                    modifiedTime = null,
                     clientDevice = "",
                     clientId = uuid,
                     updateApp = "",
@@ -742,8 +754,8 @@ class GraphyVM(
                 repo.insObject(objectEntity)
             } else {
                 val equip = repo.getObject(deviceId!!)
-                equip!!.infos = JSONObject(hashMap as Map<*, *>)
-                equip.strInfos = gson.toJson(hashMap)
+//                equip!!.infos = JSONObject(hashMap as Map<*, *>)
+                equip!!.strInfos = gson.toJson(hashMap)
                 repo.insObject(equip)
             }
             //插入文件数据
@@ -781,7 +793,7 @@ class GraphyVM(
                 }
                 order++
             }
-
+            mActivity.setResult(RESULT_OK)
             mActivity.finish()
         }
     }
@@ -823,12 +835,20 @@ class GraphyVM(
                         if (objFrom == null) {
                             rel.objFromLocalId = "该设备"
                         } else {
-                            rel.objFromLocalId = objFrom.localId
+                            if (TextUtils.isEmpty(objFrom.localId)) {
+                                rel.objFromLocalId = objFrom.localName
+                            } else {
+                                rel.objFromLocalId = objFrom.localId
+                            }
                         }
                         if (objTo == null) {
                             rel.objToLocalId = "该设备"
                         } else {
-                            rel.objToLocalId = objTo.localId
+                            if (TextUtils.isEmpty(objTo.localId)) {
+                                rel.objToLocalId = objTo.localName
+                            } else {
+                                rel.objToLocalId = objTo.localId
+                            }
                         }
                     }
                     relList.add(relsFrom)
@@ -846,12 +866,20 @@ class GraphyVM(
                         if (objFrom == null) {
                             rel.objFromLocalId = "该设备"
                         } else {
-                            rel.objFromLocalId = objFrom.localId
+                            if (TextUtils.isEmpty(objFrom.localId)) {
+                                rel.objFromLocalId = objFrom.localName
+                            } else {
+                                rel.objFromLocalId = objFrom.localId
+                            }
                         }
                         if (objTo == null) {
                             rel.objToLocalId = "该设备"
                         } else {
-                            rel.objToLocalId = objTo.localId
+                            if (TextUtils.isEmpty(objTo.localId)) {
+                                rel.objToLocalId = objTo.localName
+                            } else {
+                                rel.objToLocalId = objTo.localId
+                            }
                         }
                     }
                     relList.add(relsTo)
@@ -872,7 +900,8 @@ class GraphyVM(
 
             pipeParent.addAll(pipeFromList)
             for (config in pipeFromList) {
-                val pipeFrom = repo.getPipeByIdFrom(equipId, config.pipeType!!)
+                val pipeFrom =
+                    repo.getPipeByIdFrom(equipId, config.pipeType!!, config.pipeSubType!!)
                 if (!CommonUtils.IsNull(pipeFrom)) {
                     for (rel in pipeFrom) {
                         val objFrom = repo.getObject(rel.objFrom!!)
@@ -880,12 +909,20 @@ class GraphyVM(
                         if (objFrom == null) {
                             rel.objFromLocalId = "该设备"
                         } else {
-                            rel.objFromLocalId = objFrom.localId
+                            if (TextUtils.isEmpty(objFrom.localId)) {
+                                rel.objFromLocalId = objFrom.localName
+                            } else {
+                                rel.objFromLocalId = objFrom.localId
+                            }
                         }
                         if (objTo == null) {
                             rel.objToLocalId = "该设备"
                         } else {
-                            rel.objToLocalId = objTo.localId
+                            if (TextUtils.isEmpty(objTo.localId)) {
+                                rel.objToLocalId = objTo.localName
+                            } else {
+                                rel.objToLocalId = objTo.localId
+                            }
                         }
                     }
                     pipeChildren.add(pipeFrom)
@@ -896,7 +933,7 @@ class GraphyVM(
 
             pipeParent.addAll(pipeToList)
             for (config in pipeToList) {
-                val pipeFrom = repo.getPipeByIdTo(equipId, config.pipeType!!)
+                val pipeFrom = repo.getPipeByIdTo(equipId, config.pipeType!!, config.pipeSubType!!)
                 if (!CommonUtils.IsNull(pipeFrom)) {
                     for (rel in pipeFrom) {
                         val objFrom = repo.getObject(rel.objFrom!!)
@@ -904,12 +941,20 @@ class GraphyVM(
                         if (objFrom == null) {
                             rel.objFromLocalId = "该设备"
                         } else {
-                            rel.objFromLocalId = objFrom.localId
+                            if (TextUtils.isEmpty(objFrom.localId)) {
+                                rel.objFromLocalId = objFrom.localName
+                            } else {
+                                rel.objFromLocalId = objFrom.localId
+                            }
                         }
                         if (objTo == null) {
                             rel.objToLocalId = "该设备"
                         } else {
-                            rel.objToLocalId = objTo.localId
+                            if (TextUtils.isEmpty(objTo.localId)) {
+                                rel.objToLocalId = objTo.localName
+                            } else {
+                                rel.objToLocalId = objTo.localId
+                            }
                         }
                     }
                     pipeChildren.add(pipeFrom)

+ 2 - 2
demo/src/main/res/layout/activity_equip_detail.xml

@@ -98,7 +98,7 @@
             app:LeftText="管道"
             app:Type="4" />
 
-        <ExpandableListView
+        <com.sybotan.android.demo.view.SuperExpandableListView
             android:id="@+id/expandLvPipe"
             android:layout_width="match_parent"
             android:layout_height="wrap_content" />
@@ -109,7 +109,7 @@
             app:LeftText="对象关系"
             app:Type="4" />
 
-        <ExpandableListView
+        <com.sybotan.android.demo.view.SuperExpandableListView
             android:id="@+id/expandLvRelation"
             android:layout_width="match_parent"
             android:layout_height="wrap_content" />