|
|
@@ -4,13 +4,18 @@ import android.nfc.Tag
|
|
|
import androidx.lifecycle.viewModelScope
|
|
|
import com.iscs.bozzys.api.ApiRequest
|
|
|
import com.iscs.bozzys.api.ApiRequest.getResponse
|
|
|
+import com.iscs.bozzys.api.ApiRequest.isCodeOk
|
|
|
import com.iscs.bozzys.api.Attachment
|
|
|
import com.iscs.bozzys.api.FormField
|
|
|
import com.iscs.bozzys.api.Key
|
|
|
+import com.iscs.bozzys.api.KeyNfc
|
|
|
+import com.iscs.bozzys.api.KeyTicket
|
|
|
import com.iscs.bozzys.api.Lock
|
|
|
+import com.iscs.bozzys.api.LockNfc
|
|
|
import com.iscs.bozzys.api.Node
|
|
|
import com.iscs.bozzys.api.Task
|
|
|
import com.iscs.bozzys.api.TaskFormInfo
|
|
|
+import com.iscs.bozzys.api.Ticket
|
|
|
import com.iscs.bozzys.event.RefreshEvent
|
|
|
import com.iscs.bozzys.event.RefreshEventBus
|
|
|
import com.iscs.bozzys.ui.common.VMBase
|
|
|
@@ -54,9 +59,16 @@ class VMDetailTask : VMBase() {
|
|
|
|
|
|
private var locks: ArrayList<Lock> = arrayListOf()
|
|
|
|
|
|
+ /**
|
|
|
+ * 添加钥匙数据监听器
|
|
|
+ */
|
|
|
private val onTaskChangeListener = object : OnTaskStatusChangeListener() {
|
|
|
- override fun onSendTicketSuccess() {
|
|
|
- super.onSendTicketSuccess()
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 作业任务下发成功
|
|
|
+ */
|
|
|
+ override fun onSendTicketSuccess(mac: String) {
|
|
|
+ super.onSendTicketSuccess(mac)
|
|
|
viewModelScope.launch {
|
|
|
val node = _state.value.node
|
|
|
val keyList = _state.value.keys
|
|
|
@@ -74,19 +86,29 @@ class VMDetailTask : VMBase() {
|
|
|
} else {
|
|
|
// 刷新页面
|
|
|
getTaskFormInfo(this@VMDetailTask.task)
|
|
|
- BleTask.removeDeviceUsed(mac)
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
+ override fun onReadTicketSuccess(mac: String, ticket: KeyTicket) {
|
|
|
+ super.onReadTicketSuccess(mac, ticket)
|
|
|
+ val node = _state.value.node
|
|
|
+ val nfc = keys.find { it.macAddress == mac }?.keyNfc ?: ""
|
|
|
+ if ((node.keys?.any { it.keyNfc == nfc } ?: false)) {
|
|
|
+ // 刷新页面
|
|
|
+ getTaskFormInfo(this@VMDetailTask.task, false)
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 获取任务表单信息
|
|
|
*/
|
|
|
- fun getTaskFormInfo(task: Task) {
|
|
|
+ fun getTaskFormInfo(task: Task, showLoading: Boolean = true) {
|
|
|
this.task = task
|
|
|
viewModelScope.launch {
|
|
|
- loading.emit(StateLoading(show = true))
|
|
|
+ loading.emit(StateLoading(show = showLoading))
|
|
|
ApiRequest.getTaskInfoByNodeId(task.nodeId).onSuccess {
|
|
|
val taskInfo = it.data
|
|
|
if (taskInfo == null) {
|
|
|
@@ -185,7 +207,8 @@ class VMDetailTask : VMBase() {
|
|
|
_state.value = _state.value.copy(deviceInfo = "所需设备" to "请将参与作业设备靠近PDA识别区进行录入")
|
|
|
// 根据点位个数构造所需钥匙和挂锁数量
|
|
|
val locks = mutableListOf<Lock>()
|
|
|
- node.points?.forEach { locks += Lock() }
|
|
|
+ // 如果是隔离,需要进行挂锁录入
|
|
|
+ if (node.type == "isolation") node.points?.forEach { locks += Lock() }
|
|
|
_state.value = _state.value.copy(keys = mutableListOf(Key()), locks = locks)
|
|
|
}
|
|
|
}
|
|
|
@@ -308,6 +331,7 @@ class VMDetailTask : VMBase() {
|
|
|
val node = _state.value.node
|
|
|
LogUtil.d("PointInfo", "points -> ${node.points}, keys -> ${node.keys}, locks -> ${node.locks}")
|
|
|
if (node.type == "isolation") { // 隔离
|
|
|
+ if (node.points?.all { it.status == "1" } ?: false) return false
|
|
|
// 如果初始化还未配置钥匙和锁具,这里是要显示取设备的
|
|
|
if (node.keys.isNullOrEmpty() || node.locks.isNullOrEmpty() || node.points.isNullOrEmpty()) return true
|
|
|
// 未取出或已归还钥匙数
|
|
|
@@ -316,6 +340,7 @@ class VMDetailTask : VMBase() {
|
|
|
val unPointsCount = node.points.filter { it.status != "1" }.size
|
|
|
return unTakeKeyCount != 0 && unPointsCount != 0
|
|
|
} else if (node.type == "releaseIsolation") { // 解除隔离
|
|
|
+ if (node.points?.all { it.status == "2" } ?: false) return false
|
|
|
// 解除隔离按钮只有所有共锁人都解锁后可进行
|
|
|
// 是否所有共锁人都已解除共锁
|
|
|
val isCoUnlocked = node.nodeUserList?.filter { user -> user.type == "jtcolocker" }?.all { user -> user.status == "2" } ?: false
|