|
@@ -1,17 +1,36 @@
|
|
|
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.items.PointItem
|
|
|
import cn.sagacloud.android.cadengine.items.TunableSpaceItem
|
|
|
+import cn.sagacloud.android.cadengine.types.Photos
|
|
|
import cn.sagacloud.android.cadengine.types.Point
|
|
|
+import cn.sagacloud.android.cadengine.types.PointZ
|
|
|
+import com.arashivision.arvbmg.shandowclone.TrackTarget
|
|
|
+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.entitiies.Info
|
|
|
import com.sybotan.android.demo.retrofit.BaseObserver
|
|
|
import com.sybotan.android.demo.retrofit.BaseViewModelInterface
|
|
|
import com.sybotan.android.demo.retrofit.RetrofitFactory
|
|
|
+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.text.SimpleDateFormat
|
|
|
+import java.util.*
|
|
|
import kotlin.collections.ArrayList
|
|
|
|
|
|
/**
|
|
@@ -19,10 +38,16 @@ import kotlin.collections.ArrayList
|
|
|
* Date: 2021/6/9
|
|
|
*/
|
|
|
class GraphyVM(
|
|
|
+ app: Application,
|
|
|
b: BaseViewModelInterface?, activity: BaseActivity?, //建筑id
|
|
|
private val buildingId: String, //楼层id
|
|
|
- private val floorId: String
|
|
|
-) : BaseViewModel(b, activity) {
|
|
|
+ private val floorId: String,
|
|
|
+ private val projectId: String
|
|
|
+) : BaseViewModel(app, b, activity), DIAware {
|
|
|
+ private val gson = Gson()
|
|
|
+
|
|
|
+ override val di: DI by closestDI()
|
|
|
+ val repo: AdmRepository by instance()
|
|
|
|
|
|
/**
|
|
|
* 查询空间和任务
|
|
@@ -53,20 +78,101 @@ class GraphyVM(
|
|
|
* @param x x坐标
|
|
|
* @param y y坐标
|
|
|
*/
|
|
|
- fun addProblem(choseSpace: TunableSpaceItem, x: Float, y: Float) {
|
|
|
- val bean = ReqAddProblem()
|
|
|
- bean.spaceId = choseSpace.data.id
|
|
|
- bean.floorId = floorId
|
|
|
- val position = Position()
|
|
|
- position.x = x.toString() + ""
|
|
|
- position.y = y.toString() + ""
|
|
|
- bean.position = position
|
|
|
- val observable = RetrofitFactory.getInstance().addProblem(getRequestBody(bean))
|
|
|
- sendRequest(observable, object : BaseObserver<AddProblemModel>(mActivity, this) {
|
|
|
- override fun onSuccess(model: AddProblemModel) {
|
|
|
- mEmitter.SendDircetive(ADD_PROBLEM, model)
|
|
|
+ fun addProblem(
|
|
|
+ point: PointItem?,
|
|
|
+ photos: ArrayList<Photos>,
|
|
|
+ content: String,
|
|
|
+ choseSpace: TunableSpaceItem,
|
|
|
+ x: Float,
|
|
|
+ y: Float
|
|
|
+ ) {
|
|
|
+ viewModelScope.launch {
|
|
|
+ //插入问题数据
|
|
|
+ val position = PointF()
|
|
|
+ position.x = x
|
|
|
+ position.y = y
|
|
|
+ var toJson = ""
|
|
|
+ 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)
|
|
|
}
|
|
|
- }, true)
|
|
|
+ var time = SimpleDateFormat("yyyyMMddHHmmss").format(Date(System.currentTimeMillis()))
|
|
|
+ var toString = ""
|
|
|
+ if (point != null && !TextUtils.isEmpty(point.data.id)) {
|
|
|
+ toString = point.data.id!!
|
|
|
+ } else {
|
|
|
+ toString = UUID.randomUUID().toString().replace("-", "")
|
|
|
+ }
|
|
|
+
|
|
|
+ var problem = ProblemArchEntity(
|
|
|
+ toString,
|
|
|
+ floorId,
|
|
|
+ projectId,
|
|
|
+ buildingId,
|
|
|
+ "point", "",
|
|
|
+ "",
|
|
|
+ 1,
|
|
|
+ content,
|
|
|
+ "",
|
|
|
+ time,
|
|
|
+ "android", time, "0", 1, toJson
|
|
|
+ )
|
|
|
+ repo.insProblem(problem)
|
|
|
+
|
|
|
+
|
|
|
+ //插入文件数据
|
|
|
+ var order = 0
|
|
|
+ for (photo in photos) {
|
|
|
+ if (order != 0) {
|
|
|
+ var uuid = ""
|
|
|
+ if (TextUtils.isEmpty(photo.id)) {
|
|
|
+ uuid = UUID.randomUUID().toString().replace("-", "")
|
|
|
+ } else {
|
|
|
+ uuid = photo.id
|
|
|
+ }
|
|
|
+
|
|
|
+ val file = FileEntity(
|
|
|
+ uuid,
|
|
|
+ "problem_arch",
|
|
|
+ photo.key,
|
|
|
+ "photo",
|
|
|
+ photo.path,
|
|
|
+ toString,
|
|
|
+ "",
|
|
|
+ "",
|
|
|
+ order,
|
|
|
+ projectId,
|
|
|
+ buildingId,
|
|
|
+ floorId,
|
|
|
+ "android",
|
|
|
+ time,
|
|
|
+ "",
|
|
|
+ time,
|
|
|
+ 1,
|
|
|
+ "0"
|
|
|
+ )
|
|
|
+ repo.insFile(file)
|
|
|
+ }
|
|
|
+ order++
|
|
|
+ }
|
|
|
+ mEmitter.SendDircetive(ADD_PROBLEM, null)
|
|
|
+ }
|
|
|
+// val bean = ReqAddProblem()
|
|
|
+// bean.spaceId = choseSpace.data.id
|
|
|
+// bean.floorId = floorId
|
|
|
+// val position = Position()
|
|
|
+// position.x = x.toString() + ""
|
|
|
+// position.y = y.toString() + ""
|
|
|
+// bean.position = position
|
|
|
+// val observable = RetrofitFactory.getInstance().addProblem(getRequestBody(bean))
|
|
|
+// sendRequest(observable, object : BaseObserver<AddProblemModel>(mActivity, this) {
|
|
|
+// override fun onSuccess(model: AddProblemModel) {
|
|
|
+// mEmitter.SendDircetive(ADD_PROBLEM, model)
|
|
|
+// }
|
|
|
+// }, true)
|
|
|
}
|
|
|
|
|
|
/**
|
|
@@ -75,15 +181,41 @@ class GraphyVM(
|
|
|
* @param choseSpace 选中的空间
|
|
|
*/
|
|
|
fun getProblem(choseSpace: TunableSpaceItem?) {
|
|
|
- val bean = ReqProblems()
|
|
|
- bean.floorId = floorId
|
|
|
-// bean.spaceId = choseSpace!!.data.id
|
|
|
- val observable = RetrofitFactory.getInstance().problems(getRequestBody(bean))
|
|
|
- sendRequest(observable, object : BaseObserver<List<ProblemsModel>>(mActivity, this) {
|
|
|
- override fun onSuccess(models: List<ProblemsModel>) {
|
|
|
- mEmitter.SendDircetive(GET_PROBLEM, models)
|
|
|
+ viewModelScope.launch {
|
|
|
+ val problems = repo.getProblem()
|
|
|
+ var 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
|
|
|
+ promodel.position = problem.geom
|
|
|
+ val refFiles = repo.getRefFile(problem.id)
|
|
|
+ for (file in refFiles) {
|
|
|
+ var photo = Photos()
|
|
|
+ photo.key = file.filePath
|
|
|
+ photo.id = file.id
|
|
|
+ photo.itemType = 0
|
|
|
+ photo.path = file.clientPath
|
|
|
+ promodel.photos.add(photo)
|
|
|
+ }
|
|
|
+ models.add(promodel)
|
|
|
+ }
|
|
|
}
|
|
|
- }, true)
|
|
|
+ mEmitter.SendDircetive(GET_PROBLEM, models)
|
|
|
+ }
|
|
|
+
|
|
|
+// val bean = ReqProblems()
|
|
|
+// bean.floorId = floorId
|
|
|
+//// bean.spaceId = choseSpace!!.data.id
|
|
|
+// val observable = RetrofitFactory.getInstance().problems(getRequestBody(bean))
|
|
|
+// sendRequest(observable, object : BaseObserver<List<ProblemsModel>>(mActivity, this) {
|
|
|
+// override fun onSuccess(models: List<ProblemsModel>) {
|
|
|
+// mEmitter.SendDircetive(GET_PROBLEM, models)
|
|
|
+// }
|
|
|
+// }, true)
|
|
|
}
|
|
|
|
|
|
/**
|
|
@@ -93,15 +225,21 @@ class GraphyVM(
|
|
|
* @param choseSpace 选中的空间
|
|
|
*/
|
|
|
fun closeProblem(point: PointItem, choseSpace: TunableSpaceItem?) {
|
|
|
- val bean = ReqCloseProblem()
|
|
|
- bean.problemId = point.data.id
|
|
|
- bean.spaceId = choseSpace!!.data.id
|
|
|
- val observable = RetrofitFactory.getInstance().closeProblem(getRequestBody(bean))
|
|
|
- sendRequest(observable, object : BaseObserver<CloseProblemModel>(mActivity, this) {
|
|
|
- override fun onSuccess(setProblemModel: CloseProblemModel) {
|
|
|
- mEmitter.SendDircetive(CLOSE_PROBLEM, null)
|
|
|
- }
|
|
|
- }, true)
|
|
|
+ viewModelScope.launch {
|
|
|
+ val problem = repo.getProblemById(point.data.id!!)
|
|
|
+ problem.problemState = 2
|
|
|
+ repo.insProblem(problem)
|
|
|
+ mEmitter.SendDircetive(CLOSE_PROBLEM, null)
|
|
|
+ }
|
|
|
+// val bean = ReqCloseProblem()
|
|
|
+// bean.problemId = point.data.id
|
|
|
+// bean.spaceId = choseSpace!!.data.id
|
|
|
+// val observable = RetrofitFactory.getInstance().closeProblem(getRequestBody(bean))
|
|
|
+// sendRequest(observable, object : BaseObserver<CloseProblemModel>(mActivity, this) {
|
|
|
+// override fun onSuccess(setProblemModel: CloseProblemModel) {
|
|
|
+// mEmitter.SendDircetive(CLOSE_PROBLEM, null)
|
|
|
+// }
|
|
|
+// }, true)
|
|
|
}
|
|
|
|
|
|
/**
|
|
@@ -113,23 +251,49 @@ class GraphyVM(
|
|
|
* @param toString z轴描述
|
|
|
*/
|
|
|
fun bindQrcode(choseSpace: TunableSpaceItem?, result: String?, point: Point, toString: String) {
|
|
|
- val bean = ReqBindQrcode()
|
|
|
- bean.objId = choseSpace!!.data.id
|
|
|
- bean.objType = "space"
|
|
|
- bean.uuid = result
|
|
|
- val position = Position()
|
|
|
- position.x = java.lang.String.valueOf(point.mX)
|
|
|
- position.y = java.lang.String.valueOf(point.mY)
|
|
|
- position.z = Z()
|
|
|
- position.z.offset = toString
|
|
|
- position.z.region = "wall"
|
|
|
- bean.position = position
|
|
|
- val observable = RetrofitFactory.getInstance().bindQrcode(getRequestBody(bean))
|
|
|
- sendRequest(observable, object : BaseObserver<BindQrcodeModel?>(mActivity, this) {
|
|
|
- override fun onSuccess(bindQrcodeModel: BindQrcodeModel?) {
|
|
|
- mEmitter.SendDircetive(BIND_QECODE, null)
|
|
|
- }
|
|
|
- }, true)
|
|
|
+ viewModelScope.launch {
|
|
|
+ var pointZ = PointZ()
|
|
|
+ pointZ.x = point.mX
|
|
|
+ pointZ.y = point.mY
|
|
|
+ pointZ.z = toString.toFloat()
|
|
|
+ val toJson = gson.toJson(pointZ)
|
|
|
+ var time = SimpleDateFormat("yyyyMMddHHmmss").format(Date(System.currentTimeMillis()))
|
|
|
+ val qrcode = QrCodeEntity(
|
|
|
+ id = UUID.randomUUID().toString(),
|
|
|
+ qrCode = result!!,
|
|
|
+ objId = choseSpace!!.data.id!!,
|
|
|
+ projectId = projectId,
|
|
|
+ buildingId = buildingId,
|
|
|
+ floorId = floorId,
|
|
|
+ location = toJson,
|
|
|
+ remark = "wall",
|
|
|
+ creator = "Anroid",
|
|
|
+ creationTime = time,
|
|
|
+ modifier = "Android",
|
|
|
+ modifiedTime = time,
|
|
|
+ valid = 1,
|
|
|
+ uploadFlag = "0"
|
|
|
+ )
|
|
|
+ repo.insQrcode(qrcode)
|
|
|
+ mEmitter.SendDircetive(BIND_QECODE, null)
|
|
|
+ }
|
|
|
+// val bean = ReqBindQrcode()
|
|
|
+// bean.objId = choseSpace!!.data.id
|
|
|
+// bean.objType = "space"
|
|
|
+// bean.uuid = result
|
|
|
+// val position = Position()
|
|
|
+// position.x = java.lang.String.valueOf(point.mX)
|
|
|
+// position.y = java.lang.String.valueOf(point.mY)
|
|
|
+// position.z = Z()
|
|
|
+// position.z.offset = toString
|
|
|
+// position.z.region = "wall"
|
|
|
+// bean.position = position
|
|
|
+// val observable = RetrofitFactory.getInstance().bindQrcode(getRequestBody(bean))
|
|
|
+// sendRequest(observable, object : BaseObserver<BindQrcodeModel?>(mActivity, this) {
|
|
|
+// override fun onSuccess(bindQrcodeModel: BindQrcodeModel?) {
|
|
|
+// mEmitter.SendDircetive(BIND_QECODE, null)
|
|
|
+// }
|
|
|
+// }, true)
|
|
|
}
|
|
|
|
|
|
/**
|
|
@@ -138,14 +302,33 @@ class GraphyVM(
|
|
|
* @param choseSpace 选中的空间
|
|
|
*/
|
|
|
fun getQrcode(choseSpace: TunableSpaceItem?) {
|
|
|
- val bean = ReqQrcode()
|
|
|
- bean.objId = choseSpace!!.data.id
|
|
|
- val observable = RetrofitFactory.getInstance().qrcode(getRequestBody(bean))
|
|
|
- sendRequest(observable, object : BaseObserver<ArrayList<QrcodeModel>>(mActivity, this) {
|
|
|
- override fun onSuccess(qrcodeModels: ArrayList<QrcodeModel>) {
|
|
|
- mEmitter.SendDircetive(GET_QECODE, qrcodeModels)
|
|
|
+ viewModelScope.launch {
|
|
|
+ val qrcodes = repo.getQrcode(choseSpace!!.data.id!!)
|
|
|
+ val qrcodeModels = ArrayList<QrcodeModel>()
|
|
|
+ for (qrcode in qrcodes) {
|
|
|
+ var qrcodeModel = QrcodeModel()
|
|
|
+ qrcodeModel.obj_id = qrcode.objId
|
|
|
+ qrcodeModel.qr_code = qrcode.qrCode
|
|
|
+ var pointZ = gson.fromJson(qrcode.location, 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)
|
|
|
}
|
|
|
- }, true)
|
|
|
+ mEmitter.SendDircetive(GET_QECODE, qrcodeModels)
|
|
|
+ }
|
|
|
+// val bean = ReqQrcode()
|
|
|
+// bean.objId = choseSpace!!.data.id
|
|
|
+// val observable = RetrofitFactory.getInstance().qrcode(getRequestBody(bean))
|
|
|
+// sendRequest(observable, object : BaseObserver<ArrayList<QrcodeModel>>(mActivity, this) {
|
|
|
+// override fun onSuccess(qrcodeModels: ArrayList<QrcodeModel>) {
|
|
|
+// mEmitter.SendDircetive(GET_QECODE, qrcodeModels)
|
|
|
+// }
|
|
|
+// }, true)
|
|
|
}
|
|
|
|
|
|
/**
|
|
@@ -160,6 +343,7 @@ class GraphyVM(
|
|
|
bean.floorId = floorId
|
|
|
bean.spaceId.add(choseSpace!!.data.id)
|
|
|
bean.jobStatus = jobStatus
|
|
|
+ bean.spaceCode = "test"
|
|
|
val observable = RetrofitFactory.getInstance().setJob(getRequestBody(bean))
|
|
|
sendRequest(observable, object : BaseObserver<SetJobModel>(mActivity, this) {
|
|
|
override fun onSuccess(model: SetJobModel) {
|
|
@@ -244,6 +428,20 @@ class GraphyVM(
|
|
|
)
|
|
|
}
|
|
|
|
|
|
+ fun getInfosConfig(spaceId: String) {
|
|
|
+ viewModelScope.launch {
|
|
|
+ val infosConfig = repo.getInfosConfigByObjType("space")
|
|
|
+ val strInfos = infosConfig.get(0).strInfos
|
|
|
+
|
|
|
+// var infoList = gson.fromJson(strInfos, ArrayList<Infos>()::class.java)
|
|
|
+ var infoList = gson.fromJson<List<Infos>>(
|
|
|
+ strInfos,
|
|
|
+ object : TypeToken<List<Infos?>?>() {}.type
|
|
|
+ )
|
|
|
+ mEmitter.SendDircetive(SPACE_INFO, infoList)
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
companion object {
|
|
|
//查询空间和任务
|
|
|
const val SPACE_JOB = "SPACE_JOB"
|
|
@@ -280,6 +478,9 @@ class GraphyVM(
|
|
|
|
|
|
//查询空间下的管道
|
|
|
const val SPACE_PIPE = "SPACE_PIPE"
|
|
|
+
|
|
|
+ //查询空间详情
|
|
|
+ const val SPACE_INFO = "SPACE_INFO"
|
|
|
}
|
|
|
|
|
|
}
|