feat(composite-layup): 添加任务详情序列化传递功能

- 在 CompositeLayupApiData 中为数据类实现 Serializable 接口
- 在 CompositeLayupResultActivity 中添加任务详情传递逻辑
- 在 CompositeLayupTaskActivity 中接收并缓存任务详情数据
- 添加 EXTRA_TASK_DETAIL 常量用于 Intent 数据传递
- 实现 bindCachedTaskDetail 方法支持本地任务详情绑定
这个提交包含在:
徐勤民 2026-04-23 10:14:55 +08:00
父节点 ade4513cdf
当前提交 d03d123140
共有 4 个文件被更改,包括 26 次插入3 次删除

查看文件

@ -1,5 +1,7 @@
package com.nova.brain.glass.model.data
import java.io.Serializable
data class CompositeLayupDetailItem(
val id: Long = 0,
val taskId: Long = 0,
@ -14,7 +16,7 @@ data class CompositeLayupDetailItem(
val createdBy: String = "",
val updatedBy: String = "",
val isDeleted: Long = 0
)
) : Serializable
data class CompositeLayupTaskDetail(
val id: Long = 0,
@ -36,7 +38,7 @@ data class CompositeLayupTaskDetail(
val updatedBy: String = "",
val isDeleted: Long = 0,
val detailList: List<CompositeLayupDetailItem>? = null
)
) : Serializable
data class CompositeLayupTaskDetailResponse(
val code: Int = 0,

查看文件

@ -13,6 +13,7 @@ import com.nova.brain.glass.helper.GlassMediaServiceHelper
import com.nova.brain.glass.helper.OfflineCmdListener
import com.nova.brain.glass.helper.OfflineCmdServiceHelper
import com.nova.brain.glass.model.ItemItem
import com.nova.brain.glass.model.data.CompositeLayupTaskDetail
import com.nova.brain.glass.viewmodel.CompositeLayupResultState
import com.nova.brain.glass.viewmodel.CompositeLayupResultVM
import com.rokid.security.glass3.sdk.base.data.media.PhotoResolution
@ -50,6 +51,10 @@ class CompositeLayupResultActivity : BaseActivity<ActivityCompositeLayupResultBi
private val totalSteps: Int by lazy { intent.getIntExtra(EXTRA_TOTAL_STEPS, 1) }
private val direction: String by lazy { intent.getStringExtra(EXTRA_DIRECTION).orEmpty() }
private val vacuum: String by lazy { intent.getStringExtra(EXTRA_VACUUM).orEmpty() }
private val taskDetail: CompositeLayupTaskDetail? by lazy {
@Suppress("DEPRECATION")
intent.getSerializableExtra(EXTRA_TASK_DETAIL) as? CompositeLayupTaskDetail
}
private val uiHandler = Handler(Looper.getMainLooper())
private var isPhoto = false
@ -260,6 +265,7 @@ class CompositeLayupResultActivity : BaseActivity<ActivityCompositeLayupResultBi
startActivity(Intent(this, CompositeLayupTaskActivity::class.java).apply {
putExtra(CompositeLayupTaskActivity.EXTRA_TASK_NO, taskNo)
putExtra(CompositeLayupTaskActivity.EXTRA_STEP_SEQ, stepSeq + 1)
putExtra(CompositeLayupTaskActivity.EXTRA_TASK_DETAIL, taskDetail)
})
finish()
}
@ -329,5 +335,6 @@ class CompositeLayupResultActivity : BaseActivity<ActivityCompositeLayupResultBi
const val EXTRA_TOTAL_STEPS = "extra_total_steps"
const val EXTRA_DIRECTION = "extra_direction"
const val EXTRA_VACUUM = "extra_vacuum"
const val EXTRA_TASK_DETAIL = "extra_task_detail"
}
}

查看文件

@ -9,6 +9,7 @@ import com.nova.brain.glass.helper.GlassMediaServiceHelper
import com.nova.brain.glass.helper.OfflineCmdListener
import com.nova.brain.glass.helper.OfflineCmdServiceHelper
import com.nova.brain.glass.model.ItemItem
import com.nova.brain.glass.model.data.CompositeLayupTaskDetail
import com.nova.brain.glass.viewmodel.CompositeLayupTaskVM
import com.rokid.security.glass3.sdk.base.data.media.PhotoResolution
import com.rokid.security.system.server.media.callback.PhotoFileCallback
@ -34,6 +35,10 @@ class CompositeLayupTaskActivity :
private val stepSeqFromIntent: Int by lazy {
intent.getIntExtra(EXTRA_STEP_SEQ, 0)
}
private val taskDetailFromIntent: CompositeLayupTaskDetail? by lazy {
@Suppress("DEPRECATION")
intent.getSerializableExtra(EXTRA_TASK_DETAIL) as? CompositeLayupTaskDetail
}
private var isPhoto = false
private var isCaptureInFlight = false
@ -94,6 +99,7 @@ class CompositeLayupTaskActivity :
putExtra(CompositeLayupResultActivity.EXTRA_TOTAL_STEPS, viewModel.totalSteps)
putExtra(CompositeLayupResultActivity.EXTRA_DIRECTION, currentDetail?.direction.orEmpty())
putExtra(CompositeLayupResultActivity.EXTRA_VACUUM, currentDetail?.vacuum.orEmpty())
putExtra(CompositeLayupResultActivity.EXTRA_TASK_DETAIL, taskDetail)
})
finish()
}
@ -119,6 +125,8 @@ class CompositeLayupTaskActivity :
}
if (taskNoFromIntent.isBlank()) {
binding.hint.text = "任务编号缺失"
} else if (taskDetailFromIntent != null) {
viewModel.bindCachedTaskDetail(taskDetailFromIntent!!, stepSeqFromIntent.takeIf { it > 0 })
} else {
viewModel.loadTaskDetail(taskNoFromIntent, stepSeqFromIntent.takeIf { it > 0 })
}
@ -189,5 +197,6 @@ class CompositeLayupTaskActivity :
companion object {
const val EXTRA_TASK_NO = "extra_task_no"
const val EXTRA_STEP_SEQ = "extra_step_seq"
const val EXTRA_TASK_DETAIL = "extra_task_detail"
}
}

查看文件

@ -56,10 +56,15 @@ class CompositeLayupTaskVM : BaseListViewModel<ItemItem>() {
}
}, { e ->
taskDetailError.value = e.message ?: "获取任务详情失败"
})
})
disposables.add(disposable)
}
fun bindCachedTaskDetail(detail: CompositeLayupTaskDetail, stepOverride: Int? = null) {
bindTaskDetail(detail, stepOverride)
taskDetailError.value = ""
}
fun recognize(photoPath: String) {
val file = File(photoPath)
if (!file.exists()) {