Browse Source

add poc2.0界面拆分

lihao1 3 years ago
parent
commit
5746dff1e5

+ 13 - 8
demo/src/main/AndroidManifest.xml

@@ -12,7 +12,8 @@
         android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"
         tools:ignore="ProtectedPermissions" /> <!-- 向SDCard写入数据权限 -->
     <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
-    <uses-permission android:name="android.permission.READ_PRIVILEGED_PHONE_STATE"
+    <uses-permission
+        android:name="android.permission.READ_PRIVILEGED_PHONE_STATE"
         tools:ignore="ProtectedPermissions" />
     <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <!-- 摄像头 -->
     <uses-permission android:name="android.permission.CAMERA" />
@@ -21,7 +22,8 @@
 
     <uses-feature android:name="android.hardware.camera" />
     <uses-feature android:name="android.hardware.camera.autofocus" />
-    <uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES"/>
+
+    <uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES" />
 
 
     <application
@@ -35,12 +37,12 @@
         android:supportsRtl="true"
         android:theme="@style/AppTheme">
 
-<!--        <meta-data-->
-<!--            android:name="design_width_in_dp"-->
-<!--            android:value="960" />-->
-<!--        <meta-data-->
-<!--            android:name="design_height_in_dp"-->
-<!--            android:value="600" />-->
+        <!--        <meta-data-->
+        <!--            android:name="design_width_in_dp"-->
+        <!--            android:value="960" />-->
+        <!--        <meta-data-->
+        <!--            android:name="design_height_in_dp"-->
+        <!--            android:value="600" />-->
 
         <provider
             android:name=".tools.MyProvider"
@@ -103,6 +105,9 @@
         <activity
             android:name="com.zbar.lib.CaptureActivity"
             android:exported="true" />
+        <activity
+            android:name=".activities.SpaceMapActivity"
+            android:exported="true" />
     </application>
 
 </manifest>

File diff suppressed because it is too large
+ 1021 - 0
demo/src/main/java/com/sybotan/android/demo/activities/SpaceMapActivity.kt


+ 2 - 1
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.SpaceMapActivity
 import com.sybotan.android.demo.adapter.ExpandAdapter
 import com.sybotan.android.demo.entitiies.Build
 import com.sybotan.android.demo.entitiies.Floor
@@ -31,7 +32,7 @@ class SpaceActivity : BaseActivity() {
                 Toast.makeText(this@SpaceActivity, "该楼层没有平面图", Toast.LENGTH_LONG).show()
                 return@setOnChildClickListener true
             }
-            val intent = Intent(this, GraphyActivity::class.java)
+            val intent = Intent(this, SpaceMapActivity::class.java)
             val bundle = Bundle()
             bundle.putString("buildingId", floor.buildingId)
             bundle.putString("floorId", floor.id)

+ 1 - 0
demo/src/main/java/com/sybotan/android/demo/bean/result/SpaceJobModel.java

@@ -24,6 +24,7 @@ public class SpaceJobModel extends BaseModel {
     public String projectId;
     public String state;
     //    public String statistics;
+    //01-有结构核查任务 02-有结构问题 03-结构核查完毕 04-有现场勘测任务 05-已完成勘测任务
     public String job;
     public ArrayList<ArrayList<ArrayList<PointZ>>> outline = new ArrayList<>();
 

+ 437 - 0
demo/src/main/java/com/sybotan/android/demo/viewmodel/SpaceMapVM.kt

@@ -0,0 +1,437 @@
+package com.sybotan.android.demo.viewmodel
+
+import android.app.Application
+import android.graphics.PointF
+import android.text.TextUtils
+import androidx.lifecycle.viewModelScope
+import cn.sagacloud.android.cadengine.Lasso
+import cn.sagacloud.android.cadengine.items.PipeLineItem
+import cn.sagacloud.android.cadengine.items.PointItem
+import cn.sagacloud.android.cadengine.items.TunableSpaceItem
+import cn.sagacloud.android.cadengine.types.*
+import com.framework.mvvm.model.db.entity.*
+import com.framework.mvvm.model.repository.AdmRepository
+import com.sybotan.android.demo.bean.result.ProblemsModel
+import com.google.gson.Gson
+import com.google.gson.reflect.TypeToken
+import com.sybotan.android.demo.activities.BaseActivity
+import com.sybotan.android.demo.bean.request.*
+import com.sybotan.android.demo.bean.result.*
+import com.sybotan.android.demo.bean.result.Position
+import com.sybotan.android.demo.bean.result.Z
+import com.sybotan.android.demo.retrofit.BaseViewModelInterface
+import com.sybotan.android.demo.tools.CommonUtils
+import com.sybotan.android.demo.tools.ToastUtils
+import com.sybotan.base.utils.SJsonUtil
+import kotlinx.coroutines.launch
+import org.kodein.di.DI
+import org.kodein.di.DIAware
+import org.kodein.di.android.x.closestDI
+import org.kodein.di.instance
+import java.util.*
+import kotlin.collections.ArrayList
+import com.sybotan.android.demo.bean.*
+
+
+/**
+ * Created by lihao.
+ * Date: 2021/6/9
+ */
+class SpaceMapVM(
+    app: Application,
+    b: BaseViewModelInterface?, activity: BaseActivity?, //建筑id
+    private val buildingId: String, //楼层id
+    private val floorId: String,
+    private val projectId: String
+) : BaseViewModel(app, b, activity), DIAware {
+    private val gson = Gson()
+
+    override val di: DI by closestDI()
+    private val repo: AdmRepository by instance()
+
+    /**
+     * 查询空间和任务
+     * archState 1:核查中;2:核查完毕
+     * job:01-有结构核查任务 02-有结构问题 03-结构核查完毕 04-有现场勘测任务 05-已完成勘测任务
+     */
+    fun getSpaceJob() {
+        viewModelScope.launch {
+            val spaceList: ArrayList<SpaceEntity> = ArrayList()
+            val spaceByArchState1 = repo.getSpaceByArchStateFloorId(floorId, "1")
+            val spaceByArchState2 = repo.getSpaceByArchStateFloorId(floorId, "2")
+            spaceList.addAll(spaceByArchState1)
+            spaceList.addAll(spaceByArchState2)
+
+            val spaceJobList = ArrayList<SpaceJobModel>()
+            for (spaceEntity in spaceList) {
+                val spaceJobModel = SpaceJobModel()
+                val objectEntity = repo.getObject(spaceEntity.spaceId)
+                spaceJobModel.buildingId = buildingId
+                spaceJobModel.id = spaceEntity.spaceId
+                spaceJobModel.localName = objectEntity!!.localName
+                spaceJobModel.name = objectEntity.name
+                spaceJobModel.projectId = projectId
+                val strInfo = gson.fromJson(objectEntity.strInfos, StrInfos::class.java)
+                spaceJobModel.outline = strInfo.outline
+                spaceJobModel.objectEntity = objectEntity
+                val problems = repo.getProblemByAvalible(floorId)
+                var hasProblem = false
+                val list: ArrayList<PointF> = ArrayList()
+                for (line in spaceJobModel.outline[0]!!) {
+                    if (line.size < 1) {
+                        list.add(PointF(line[0].x, line[0].y))
+                        continue
+                    }
+                    for (p in line) {
+                        list.add(PointF(p.x, p.y))
+                    }
+                }
+                for (problem in problems) {
+                    val geomList = gson.fromJson<List<PointF>>(
+                        problem.strGeom,
+                        object : TypeToken<List<PointF?>?>() {}.type
+                    )
+                    for (gemo in geomList) {
+                        val pointF = if (geomList.size == 1) {
+                            android.graphics.Point(
+                                gemo.x.toInt(),
+                                -gemo.y.toInt()
+                            )
+                        } else {
+                            android.graphics.Point(
+                                gemo.x.toInt(),
+                                gemo.y.toInt()
+                            )
+                        }
+                        if (Lasso.isPolygonContainsPoint(list, pointF)) {
+                            hasProblem = true
+                            break
+                        }
+                    }
+                }
+                if (spaceEntity.archState == 1) {
+                    if (hasProblem) {
+                        spaceJobModel.job = "02"
+                    } else {
+                        spaceJobModel.job = "01"
+                    }
+                } else {
+                    spaceJobModel.job = "03"
+                }
+                spaceJobList.add(spaceJobModel)
+            }
+            mEmitter.SendDircetive(SPACE_JOB, spaceJobList)
+
+        }
+    }
+
+    /**
+     * 添加空间核查问题
+     *
+     * @param x          x坐标
+     * @param y          y坐标
+     */
+    fun addProblem(
+        point: PointItem?,
+        photos: ArrayList<Photos>,
+        content: String,
+        x: Float,
+        y: Float,
+        linePoints: ArrayList<PipeLineItem>,
+        isLine: Boolean
+    ) {
+        viewModelScope.launch {
+            //插入问题数据
+            val array = ArrayList<PointF>()
+            if (!isLine) {
+                val position = PointF()
+                position.x = x
+                position.y = y
+                if (point != null && point.data.mX != 0f) {
+                    position.x = point.data.mX
+                    position.y = point.data.mY
+                }
+                array.add(position)
+            } else {
+                val list = linePoints[linePoints.size - 1]
+                for (p in list.data.points) {
+                    val position = PointF()
+                    position.x = p.x
+                    position.y = p.y
+                    array.add(position)
+                }
+            }
+            val toJson: String = gson.toJson(array)
+            val toString = if (point != null && !TextUtils.isEmpty(point.data.id)) {
+                point.data.id!!
+            } else {
+                UUID.randomUUID().toString().replace("-", "")
+            }
+
+            val problem = ProblemArchEntity(
+                id = toString,
+                floorId = floorId,
+                projectId = projectId,
+                buildingId = buildingId,
+                geomType = if (array.size == 1) "point" else "line",
+                workId = "",
+                problemType = "",
+                problemState = 1,
+                message = content,
+                creator = "",
+                creationTime = "",
+                modifier = "android",
+                modifiedTime = "",
+                uploadFlag = "",
+                valid = 1,
+                strGeom = toJson,
+                state = "1",
+                geom = null
+            )
+            repo.insProblem(problem)
+
+
+            //插入文件数据
+            for ((order, photo) in photos.withIndex()) {
+                if (order != 0) {
+                    val uuid = if (TextUtils.isEmpty(photo.id)) {
+                        UUID.randomUUID().toString().replace("-", "")
+                    } else {
+                        photo.id
+                    }
+
+                    val file = FileEntity(
+                        id = uuid,
+                        bizType = "problem_arch",
+                        filePath = photo.key,
+                        fileType = "photo",
+                        clientPath = photo.path,
+                        refObjId = toString,
+                        refInfoCode = "",
+                        remark = "",
+                        orderNum = order,
+                        projectId = projectId,
+                        buildingId = buildingId,
+                        floorId = floorId,
+                        creator = "android",
+                        creationTime = "",
+                        modifier = "",
+                        modifiedTime = null,
+                        valid = 1,
+                        uploadFlag = "", state = "1"
+                    )
+                    repo.insFile(file)
+                }
+            }
+            mEmitter.SendDircetive(ADD_PROBLEM, null)
+        }
+    }
+
+    /**
+     * 查询空间核查问题
+     *
+     * @param choseSpace 选中的空间
+     */
+    fun getProblem(choseSpace: TunableSpaceItem?) {
+        viewModelScope.launch {
+            val problems = repo.getProblemByFloor(floorId)
+            val models: ArrayList<ProblemsModel> = ArrayList()
+            for (problem in problems) {
+                if (problem.problemState == 1) {
+                    val promodel = ProblemsModel()
+                    promodel.content = problem.message
+                    promodel.floorId = floorId
+                    promodel.spaceId = choseSpace!!.data.id
+                    promodel.id = problem.id
+
+                    val geomList = gson.fromJson<List<PointF>>(
+                        problem.strGeom,
+                        object : TypeToken<List<PointF?>?>() {}.type
+                    )
+                    promodel.geomType = problem.geomType
+                    if (problem.geomType!! == "point") {
+                        promodel.position = gson.toJson(geomList[0])
+                    } else if (problem.geomType == "line") {
+                        promodel.position = gson.toJson(geomList)
+                    }
+                    val refFiles = repo.getRefFile(problem.id)
+                    for (file in refFiles) {
+                        val photo = Photos()
+                        photo.key = file.filePath
+                        photo.id = file.id
+                        photo.itemType = 0
+                        photo.path = file.clientPath
+                        promodel.photos.add(photo)
+                    }
+                    models.add(promodel)
+                }
+            }
+            mEmitter.SendDircetive(GET_PROBLEM, models)
+        }
+    }
+
+    /**
+     * 关闭空间核查问题
+     *
+     * @param point      点位
+     */
+    fun closeProblem(point: PointItem) {
+        viewModelScope.launch {
+            val problem = repo.getProblemById(point.data.id!!)
+            problem.problemState = 2
+            repo.insProblem(problem)
+            mEmitter.SendDircetive(CLOSE_PROBLEM, null)
+        }
+    }
+
+    /**
+     * 绑定二维码
+     *
+     * @param choseSpace 选中的空间
+     * @param result     二维码uuid
+     * @param point      点位信息
+     * @param toString   z轴描述
+     */
+    fun bindQrcode(choseSpace: TunableSpaceItem?, result: String?, point: Point, toString: String) {
+        viewModelScope.launch {
+            val pointZ = PointZ()
+            pointZ.x = point.mX
+            pointZ.y = point.mY
+            pointZ.z = toString.toFloat()
+            val toJson = gson.toJson(pointZ)
+            val qrcode = QrCodeEntity(
+                id = UUID.randomUUID().toString(),
+                qrCode = result!!,
+                objId = choseSpace!!.data.id!!,
+                projectId = projectId,
+                buildingId = buildingId,
+                floorId = floorId,
+                strLocation = toJson,
+                remark = "wall",
+                creator = "Anroid",
+                creationTime = "",
+                modifier = "Android",
+                modifiedTime = "",
+                valid = 1,
+                uploadFlag = "", state = "1", location = null
+            )
+            repo.insQrcode(qrcode)
+            mEmitter.SendDircetive(BIND_QECODE, null)
+        }
+    }
+
+    /**
+     * 查询对象绑定的二维码
+     *
+     * @param choseSpace 选中的空间
+     */
+    fun getQrcode(choseSpace: TunableSpaceItem?) {
+        viewModelScope.launch {
+            val qrcodes = repo.getQrcode(choseSpace!!.data.id!!)
+            val qrcodeModels = ArrayList<QrcodeModel>()
+            for (qrcode in qrcodes!!) {
+                val qrcodeModel = QrcodeModel()
+                qrcodeModel.obj_id = qrcode.objId
+                qrcodeModel.qr_code = qrcode.qrCode
+                val pointZ = gson.fromJson(qrcode.strLocation, PointZ::class.java)
+                val position = Position()
+                position.x = pointZ.x.toString()
+                position.y = pointZ.y.toString()
+                position.z = Z()
+                position.z.offset = pointZ.z.toString()
+                position.z.region = "wall"
+                qrcodeModel.position = gson.toJson(position)
+                qrcodeModels.add(qrcodeModel)
+            }
+            mEmitter.SendDircetive(GET_QECODE, qrcodeModels)
+        }
+    }
+
+    /**
+     * 设置空间的任务状态(新建和修改)
+     *
+     * @param choseSpace 选中的空间
+     */
+    fun setJob(choseSpace: TunableSpaceItem?, jobStatus: String) {
+        viewModelScope.launch {
+            if (jobStatus == "03") {
+                val qrcodes = repo.getQrcode(choseSpace!!.data.id!!)
+                if (CommonUtils.IsNull(qrcodes)) {
+                    ToastUtils.showMyToast("未安装空间二维码,不能完成空间核查")
+                    return@launch
+                }
+            }
+            val space = repo.getSpaceBySpaceId(choseSpace!!.data.id!!)
+            when (jobStatus) {
+                "01" -> {
+                    space.archState = 1
+                }
+                "03" -> {
+                    space.archState = 2
+                }
+                "04" -> {
+                    space.archState = 2
+                    space.equipState = 1
+                }
+                "05" -> {
+                    space.archState = 2
+                    space.equipState = 2
+                }
+            }
+            space.state = "1"
+            repo.insSpace(space)
+            mEmitter.SendDircetive(SET_JOB, null)
+        }
+    }
+
+
+    fun getMap() {
+        viewModelScope.launch {
+            val floors = repo.getFloors()
+            for (floor in floors) {
+                if (floor.id == floorId) {
+                    if (TextUtils.isEmpty(floor.floorMap)) {
+                        ToastUtils.showMyToast("没有地图")
+                        break
+                    }
+                    val floorOfflineData =
+                        SJsonUtil.fromJson(floor.floorMap!!, FloorData::class.java)
+                    mEmitter.SendDircetive(MAP_LOAD, gson.toJson(floorOfflineData))
+                    break
+                }
+            }
+
+        }
+    }
+
+
+    companion object {
+        const val MAP_LOAD = "MAP_LOAD"
+
+        //查询空间和任务
+        const val SPACE_JOB = "SPACE_JOB"
+
+        //添加空间核查问题
+        const val ADD_PROBLEM = "ADD_PROBLEM"
+
+        //查询空间核查问题
+        const val GET_PROBLEM = "GET_PROBLEM"
+
+        //设置空间核查问题的信息和状态
+        const val SET_PROBLEM = "SET_PROBLEM"
+
+        //关闭空间核查问题
+        const val CLOSE_PROBLEM = "CLOSE_PROBLEM"
+
+        //绑定二维码
+        const val BIND_QECODE = "BIND_QECODE"
+
+        //查询对象绑定的二维码
+        const val GET_QECODE = "GET_QECODE"
+
+        //设置空间的任务状态(新建和修改)
+        const val SET_JOB = "SET_JOB"
+        const val PIPE = "PIPE"
+
+    }
+}

+ 463 - 0
demo/src/main/res/layout/activity_space_map.xml

@@ -0,0 +1,463 @@
+<?xml version="1.0" encoding="utf-8"?><!--
+  ~ *********************************************************************************************************************
+  ~
+  ~               iFHS7.
+  ~              ;BBMBMBMc                  rZMBMBR              BMB
+  ~              MBEr:;PBM,               7MBMMEOBB:             BBB                       RBW
+  ~     XK:      BO     SB.     :SZ       MBM.       c;;     ir  BBM :FFr       :SSF:    ;xBMB:r   iuGXv.    i:. iF2;
+  ~     DBBM0r.  :D     S7   ;XMBMB       GMBMu.     MBM:   BMB  MBMBBBMBMS   WMBMBMBBK  MBMBMBM  BMBRBMBW  .MBMBMBMBB
+  ~      :JMRMMD  ..    ,  1MMRM1;         ;MBMBBR:   MBM  ;MB:  BMB:   MBM. RMBr   sBMH   BM0         UMB,  BMB.  KMBv
+  ~     ;.   XOW  B1; :uM: 1RE,   i           .2BMBs  rMB. MBO   MBO    JMB; MBB     MBM   BBS    7MBMBOBM:  MBW   :BMc
+  ~     OBRJ.SEE  MRDOWOR, 3DE:7OBM       .     ;BMB   RMR7BM    BMB    MBB. BMB    ,BMR  .BBZ   MMB   rMB,  BMM   rMB7
+  ~     :FBRO0D0  RKXSXPR. JOKOOMPi       BMBSSWBMB;    BMBB:    MBMB0ZMBMS  .BMBOXRBMB    MBMDE RBM2;SMBM;  MBB   xBM2
+  ~         iZGE  O0SHSPO. uGZ7.          sBMBMBDL      :BMO     OZu:BMBK,     rRBMB0;     ,EBMB  xBMBr:ER.  RDU   :OO;
+  ~     ,BZ, 1D0  RPSFHXR. xWZ .SMr                  . .BBB
+  ~      :0BMRDG  RESSSKR. 2WOMBW;                   BMBMR
+  ~         i0BM: SWKHKGO  MBDv
+  ~           .UB  OOGDM. MK,                                          Copyright (c) 2015-2019.  斯伯坦机器人
+  ~              ,  XMW  ..
+  ~                  r                                                                     All rights reserved.
+  ~
+  ~ *********************************************************************************************************************
+  -->
+
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:app="http://schemas.android.com/apk/res-auto"
+    xmlns:tools="http://schemas.android.com/tools"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    android:background="@color/white"
+    android:orientation="vertical"
+    tools:context="com.sybotan.android.demo.activities.GraphyActivity">
+
+    <ScrollView
+        android:layout_width="match_parent"
+        android:layout_height="80dp"
+        android:background="@color/grey_100"
+        android:scrollbars="none">
+
+        <com.sybotan.android.demo.tools.WordWrapView
+            android:id="@+id/pipeWwv"
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:layout_marginTop="5dp" />
+    </ScrollView>
+
+    <RelativeLayout
+        android:layout_width="match_parent"
+        android:layout_height="0dp"
+        android:layout_weight="1">
+
+        <com.sybotan.android.graphy.SGraphyView
+            android:id="@+id/graphyView"
+            android:layout_width="match_parent"
+            android:layout_height="match_parent"
+            android:layout_marginBottom="5dp" />
+
+        <com.sybotan.android.graphy.SGraphyView
+            android:id="@+id/eagleView"
+            android:layout_width="120dp"
+            android:layout_height="120dp"
+            android:visibility="gone" />
+    </RelativeLayout>
+
+    <RelativeLayout
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:background="@color/grey_100">
+
+        <LinearLayout
+            android:id="@+id/spaceStructure"
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:layout_marginTop="5dp"
+            android:layout_marginBottom="20dp"
+            android:orientation="vertical"
+            android:visibility="gone">
+
+            <TextView
+                android:id="@+id/spaceName"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:layout_gravity="center_horizontal"
+                android:layout_marginBottom="5dp"
+                android:paddingLeft="90dp"
+                android:paddingTop="5dp"
+                android:paddingRight="90dp"
+                android:textColor="@color/grey_900"
+                android:textSize="12sp" />
+
+            <TextView
+                android:id="@+id/addDot"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:layout_gravity="center_horizontal"
+                android:background="@drawable/bg_red_f76b65"
+                android:paddingLeft="90dp"
+                android:paddingTop="10dp"
+                android:paddingRight="90dp"
+                android:paddingBottom="10dp"
+                android:text="记录空间问题"
+                android:textColor="@color/white"
+                android:textSize="15sp" />
+
+            <LinearLayout
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:layout_gravity="center_horizontal"
+                android:layout_marginTop="12dp"
+                android:orientation="horizontal">
+
+                <TextView
+                    android:id="@+id/qrcode"
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:layout_gravity="center_horizontal"
+                    android:background="@drawable/bg_blue_3bacb2"
+                    android:paddingLeft="20dp"
+                    android:paddingTop="10dp"
+                    android:paddingRight="20dp"
+                    android:paddingBottom="10dp"
+                    android:text="绑定二维码"
+                    android:textColor="@color/white"
+                    android:textSize="15sp" />
+
+                <TextView
+                    android:id="@+id/nfc"
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:layout_gravity="center_horizontal"
+                    android:layout_marginLeft="20dp"
+                    android:background="@drawable/bg_blue_3bacb2"
+                    android:paddingLeft="20dp"
+                    android:paddingTop="10dp"
+                    android:paddingRight="20dp"
+                    android:paddingBottom="10dp"
+                    android:text="绑定NFC标签"
+                    android:textColor="@color/white"
+                    android:textSize="15sp" />
+            </LinearLayout>
+
+            <CheckBox
+                android:id="@+id/modelCheckBox"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:layout_gravity="center_horizontal"
+                android:layout_marginTop="22dp"
+                android:text="此空间核查完毕,模型和现场无区别" />
+
+            <TextView
+                android:id="@+id/addSpaceDetail"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:layout_gravity="center_horizontal"
+                android:background="@drawable/bg_yellow_700"
+                android:paddingLeft="90dp"
+                android:paddingTop="10dp"
+                android:paddingRight="90dp"
+                android:paddingBottom="10dp"
+                android:text="记录空间信息"
+                android:textColor="@color/black_272727"
+                android:textSize="15sp" />
+
+            <EditText
+                android:id="@+id/codeEdit"
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:layout_gravity="center_horizontal"
+                android:layout_marginLeft="65dp"
+                android:layout_marginTop="12dp"
+                android:layout_marginRight="65dp"
+                android:hint="输入数字化交付编码"
+                android:textColor="@color/black_272727"
+                android:textColorHint="@color/grey_500"
+                android:textSize="16sp"
+                android:visibility="gone" />
+
+            <TextView
+                android:id="@+id/modelSubmit"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:layout_gravity="center_horizontal"
+                android:layout_marginTop="12dp"
+                android:alpha="0.3"
+                android:background="@drawable/bg_blue_3bacb2"
+                android:enabled="false"
+                android:paddingLeft="100dp"
+                android:paddingTop="10dp"
+                android:paddingRight="100dp"
+                android:paddingBottom="10dp"
+                android:text="核查完成"
+                android:textColor="@color/white"
+                android:textSize="15sp" />
+        </LinearLayout>
+
+        <LinearLayout
+            android:id="@+id/doneSpaceStructure"
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:orientation="vertical"
+            android:visibility="gone">
+
+            <TextView
+                android:id="@+id/spaceName4"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:layout_gravity="center_horizontal"
+                android:layout_marginBottom="5dp"
+                android:paddingLeft="90dp"
+                android:paddingTop="5dp"
+                android:paddingRight="90dp"
+                android:textColor="@color/grey_900"
+                android:textSize="12sp" />
+
+            <TextView
+                android:id="@+id/addSpaceDetail2"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:layout_gravity="center_horizontal"
+                android:background="@drawable/bg_yellow_700"
+                android:paddingLeft="90dp"
+                android:paddingTop="10dp"
+                android:paddingRight="90dp"
+                android:paddingBottom="10dp"
+                android:text="记录空间信息"
+                android:textColor="@color/black_272727"
+                android:textSize="15sp" />
+
+            <TextView
+                android:id="@+id/resetSpaceState"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:layout_gravity="center_horizontal"
+                android:layout_marginTop="15dp"
+                android:layout_marginBottom="10dp"
+                android:background="@drawable/bg_yellow_700"
+                android:paddingLeft="90dp"
+                android:paddingTop="10dp"
+                android:paddingRight="90dp"
+                android:paddingBottom="10dp"
+                android:text="重置空间状态"
+                android:textColor="@color/black_272727"
+                android:textSize="15sp" />
+        </LinearLayout>
+
+        <LinearLayout
+            android:id="@+id/qrcodeLl"
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:background="@color/white"
+            android:orientation="vertical"
+            android:paddingTop="20dp"
+            android:paddingBottom="20dp"
+            android:visibility="gone">
+
+            <TextView
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:layout_gravity="center_horizontal"
+                android:text="请在平面图上放置二维码或NFC标签位置"
+                android:textColor="@color/grey_900"
+                android:textSize="16sp" />
+
+            <TextView
+                android:id="@+id/qrcodeLocation"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:layout_gravity="center_horizontal"
+                android:layout_marginTop="12dp"
+                android:text="(0,0)"
+                android:textColor="@color/grey_900"
+                android:textSize="16sp" />
+
+            <EditText
+                android:id="@+id/qrcodeEdit"
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:layout_gravity="center_horizontal"
+                android:layout_marginLeft="50dp"
+                android:layout_marginTop="12dp"
+                android:layout_marginRight="50dp"
+                android:hint="距离地面高度,米"
+                android:inputType="numberDecimal"
+                android:textColor="@color/black_272727"
+                android:textColorHint="@color/grey_500"
+                android:textSize="16sp" />
+
+            <TextView
+                android:id="@+id/qrcodeNext"
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:layout_below="@+id/quesTv"
+                android:layout_centerHorizontal="true"
+                android:layout_gravity="center_horizontal"
+                android:layout_marginLeft="50dp"
+                android:layout_marginTop="12dp"
+                android:layout_marginRight="50dp"
+                android:background="@drawable/bg_blue_3bacb2"
+                android:gravity="center"
+                android:paddingLeft="15dp"
+                android:paddingTop="10dp"
+                android:paddingRight="15dp"
+                android:paddingBottom="10dp"
+                android:text="下一步"
+                android:textColor="@color/white"
+                android:textSize="15sp" />
+
+            <TextView
+                android:id="@+id/qrcodeCancel"
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:layout_below="@+id/quesTv"
+                android:layout_centerHorizontal="true"
+                android:layout_gravity="center_horizontal"
+                android:layout_marginLeft="50dp"
+                android:layout_marginTop="12dp"
+                android:layout_marginRight="50dp"
+                android:background="@drawable/bg_grey_e6e6e6"
+                android:gravity="center"
+                android:paddingLeft="15dp"
+                android:paddingTop="10dp"
+                android:paddingRight="15dp"
+                android:paddingBottom="10dp"
+                android:text="取消"
+                android:textColor="@color/grey_900"
+                android:textSize="15sp" />
+
+        </LinearLayout>
+
+        <androidx.appcompat.widget.LinearLayoutCompat
+            android:id="@+id/problemLl"
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:background="@color/white_ffffff"
+            android:orientation="vertical"
+            android:padding="10dp"
+            android:visibility="gone">
+
+            <TextView
+                android:id="@+id/spaceName3"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:layout_gravity="center_horizontal"
+                android:layout_marginBottom="5dp"
+                android:paddingLeft="90dp"
+                android:paddingTop="5dp"
+                android:paddingRight="90dp"
+                android:textColor="@color/grey_900"
+                android:textSize="12sp"
+                tools:text="12" />
+
+            <RadioGroup
+                android:id="@+id/problemRg"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:layout_gravity="center_horizontal"
+                android:orientation="horizontal">
+
+                <RadioButton
+                    android:id="@+id/pointRb"
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:checked="true"
+                    android:paddingLeft="10dp"
+                    android:paddingRight="20dp"
+                    android:text="点"
+                    android:textSize="16dp" />
+
+                <RadioButton
+                    android:id="@+id/lineRb"
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:paddingLeft="10dp"
+                    android:paddingRight="20dp"
+                    android:text="线段"
+                    android:textSize="16dp" />
+            </RadioGroup>
+
+            <TextView
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:text="问题描述"
+                android:textColor="@color/black_272727"
+                android:textSize="13sp" />
+
+            <androidx.appcompat.widget.AppCompatEditText
+                android:id="@+id/problemDesc"
+                android:layout_width="match_parent"
+                android:layout_height="60dp"
+                android:layout_marginTop="8dp"
+                android:background="@drawable/bg_gray_f2f3f6"
+                android:gravity="start"
+                android:hint="请输入问题描述"
+                android:padding="5dp"
+                android:textColor="@color/black_272727"
+                android:textSize="13sp" />
+
+            <TextView
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:layout_marginTop="8dp"
+                android:text="照片补充"
+                android:textColor="@color/black_272727"
+                android:textSize="13sp" />
+
+            <com.sybotan.android.demo.view.MaxHeightRecyclerView
+                android:id="@+id/problemPicRecycler"
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:minHeight="20dp"
+                app:maxHeight="120dp" />
+
+            <androidx.appcompat.widget.LinearLayoutCompat
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:layout_marginLeft="16dp"
+                android:layout_marginTop="8dp"
+                android:layout_marginRight="16dp"
+                android:orientation="horizontal">
+
+                <TextView
+                    android:id="@+id/problemClose"
+                    android:layout_width="0dp"
+                    android:layout_height="wrap_content"
+                    android:layout_weight="1"
+                    android:background="@drawable/bg_grey_e6e6e6"
+                    android:gravity="center"
+                    android:paddingTop="5dp"
+                    android:paddingBottom="5dp"
+                    android:text="关闭"
+                    android:textColor="@color/black_272727"
+                    android:textSize="13sp" />
+
+                <TextView
+                    android:id="@+id/problemDone"
+                    android:layout_width="0dp"
+                    android:layout_height="wrap_content"
+                    android:layout_marginLeft="16dp"
+                    android:layout_weight="1"
+                    android:background="@drawable/bg_grey_e6e6e6"
+                    android:gravity="center"
+                    android:paddingTop="5dp"
+                    android:paddingBottom="5dp"
+                    android:text="已解决"
+                    android:textColor="@color/black_272727"
+                    android:textSize="13sp" />
+
+                <TextView
+                    android:id="@+id/problemSave"
+                    android:layout_width="0dp"
+                    android:layout_height="wrap_content"
+                    android:layout_marginLeft="16dp"
+                    android:layout_weight="1"
+                    android:background="@drawable/bg_yellow_700"
+                    android:gravity="center"
+                    android:paddingTop="5dp"
+                    android:paddingBottom="5dp"
+                    android:text="保存"
+                    android:textColor="@color/black_272727"
+                    android:textSize="13sp" />
+            </androidx.appcompat.widget.LinearLayoutCompat>
+        </androidx.appcompat.widget.LinearLayoutCompat>
+    </RelativeLayout>
+</LinearLayout>