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 package com.nova.brain.glass.model.data
import java.io.Serializable
data class CompositeLayupDetailItem( data class CompositeLayupDetailItem(
val id: Long = 0, val id: Long = 0,
val taskId: Long = 0, val taskId: Long = 0,
@ -14,7 +16,7 @@ data class CompositeLayupDetailItem(
val createdBy: String = "", val createdBy: String = "",
val updatedBy: String = "", val updatedBy: String = "",
val isDeleted: Long = 0 val isDeleted: Long = 0
) ) : Serializable
data class CompositeLayupTaskDetail( data class CompositeLayupTaskDetail(
val id: Long = 0, val id: Long = 0,
@ -36,7 +38,7 @@ data class CompositeLayupTaskDetail(
val updatedBy: String = "", val updatedBy: String = "",
val isDeleted: Long = 0, val isDeleted: Long = 0,
val detailList: List<CompositeLayupDetailItem>? = null val detailList: List<CompositeLayupDetailItem>? = null
) ) : Serializable
data class CompositeLayupTaskDetailResponse( data class CompositeLayupTaskDetailResponse(
val code: Int = 0, 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.OfflineCmdListener
import com.nova.brain.glass.helper.OfflineCmdServiceHelper import com.nova.brain.glass.helper.OfflineCmdServiceHelper
import com.nova.brain.glass.model.ItemItem 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.CompositeLayupResultState
import com.nova.brain.glass.viewmodel.CompositeLayupResultVM import com.nova.brain.glass.viewmodel.CompositeLayupResultVM
import com.rokid.security.glass3.sdk.base.data.media.PhotoResolution 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 totalSteps: Int by lazy { intent.getIntExtra(EXTRA_TOTAL_STEPS, 1) }
private val direction: String by lazy { intent.getStringExtra(EXTRA_DIRECTION).orEmpty() } private val direction: String by lazy { intent.getStringExtra(EXTRA_DIRECTION).orEmpty() }
private val vacuum: String by lazy { intent.getStringExtra(EXTRA_VACUUM).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 val uiHandler = Handler(Looper.getMainLooper())
private var isPhoto = false private var isPhoto = false
@ -260,6 +265,7 @@ class CompositeLayupResultActivity : BaseActivity<ActivityCompositeLayupResultBi
startActivity(Intent(this, CompositeLayupTaskActivity::class.java).apply { startActivity(Intent(this, CompositeLayupTaskActivity::class.java).apply {
putExtra(CompositeLayupTaskActivity.EXTRA_TASK_NO, taskNo) putExtra(CompositeLayupTaskActivity.EXTRA_TASK_NO, taskNo)
putExtra(CompositeLayupTaskActivity.EXTRA_STEP_SEQ, stepSeq + 1) putExtra(CompositeLayupTaskActivity.EXTRA_STEP_SEQ, stepSeq + 1)
putExtra(CompositeLayupTaskActivity.EXTRA_TASK_DETAIL, taskDetail)
}) })
finish() finish()
} }
@ -329,5 +335,6 @@ class CompositeLayupResultActivity : BaseActivity<ActivityCompositeLayupResultBi
const val EXTRA_TOTAL_STEPS = "extra_total_steps" const val EXTRA_TOTAL_STEPS = "extra_total_steps"
const val EXTRA_DIRECTION = "extra_direction" const val EXTRA_DIRECTION = "extra_direction"
const val EXTRA_VACUUM = "extra_vacuum" 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.OfflineCmdListener
import com.nova.brain.glass.helper.OfflineCmdServiceHelper import com.nova.brain.glass.helper.OfflineCmdServiceHelper
import com.nova.brain.glass.model.ItemItem import com.nova.brain.glass.model.ItemItem
import com.nova.brain.glass.model.data.CompositeLayupTaskDetail
import com.nova.brain.glass.viewmodel.CompositeLayupTaskVM import com.nova.brain.glass.viewmodel.CompositeLayupTaskVM
import com.rokid.security.glass3.sdk.base.data.media.PhotoResolution import com.rokid.security.glass3.sdk.base.data.media.PhotoResolution
import com.rokid.security.system.server.media.callback.PhotoFileCallback import com.rokid.security.system.server.media.callback.PhotoFileCallback
@ -34,6 +35,10 @@ class CompositeLayupTaskActivity :
private val stepSeqFromIntent: Int by lazy { private val stepSeqFromIntent: Int by lazy {
intent.getIntExtra(EXTRA_STEP_SEQ, 0) 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 isPhoto = false
private var isCaptureInFlight = false private var isCaptureInFlight = false
@ -94,6 +99,7 @@ class CompositeLayupTaskActivity :
putExtra(CompositeLayupResultActivity.EXTRA_TOTAL_STEPS, viewModel.totalSteps) putExtra(CompositeLayupResultActivity.EXTRA_TOTAL_STEPS, viewModel.totalSteps)
putExtra(CompositeLayupResultActivity.EXTRA_DIRECTION, currentDetail?.direction.orEmpty()) putExtra(CompositeLayupResultActivity.EXTRA_DIRECTION, currentDetail?.direction.orEmpty())
putExtra(CompositeLayupResultActivity.EXTRA_VACUUM, currentDetail?.vacuum.orEmpty()) putExtra(CompositeLayupResultActivity.EXTRA_VACUUM, currentDetail?.vacuum.orEmpty())
putExtra(CompositeLayupResultActivity.EXTRA_TASK_DETAIL, taskDetail)
}) })
finish() finish()
} }
@ -119,6 +125,8 @@ class CompositeLayupTaskActivity :
} }
if (taskNoFromIntent.isBlank()) { if (taskNoFromIntent.isBlank()) {
binding.hint.text = "任务编号缺失" binding.hint.text = "任务编号缺失"
} else if (taskDetailFromIntent != null) {
viewModel.bindCachedTaskDetail(taskDetailFromIntent!!, stepSeqFromIntent.takeIf { it > 0 })
} else { } else {
viewModel.loadTaskDetail(taskNoFromIntent, stepSeqFromIntent.takeIf { it > 0 }) viewModel.loadTaskDetail(taskNoFromIntent, stepSeqFromIntent.takeIf { it > 0 })
} }
@ -189,5 +197,6 @@ class CompositeLayupTaskActivity :
companion object { companion object {
const val EXTRA_TASK_NO = "extra_task_no" const val EXTRA_TASK_NO = "extra_task_no"
const val EXTRA_STEP_SEQ = "extra_step_seq" const val EXTRA_STEP_SEQ = "extra_step_seq"
const val EXTRA_TASK_DETAIL = "extra_task_detail"
} }
} }

查看文件

@ -60,6 +60,11 @@ class CompositeLayupTaskVM : BaseListViewModel<ItemItem>() {
disposables.add(disposable) disposables.add(disposable)
} }
fun bindCachedTaskDetail(detail: CompositeLayupTaskDetail, stepOverride: Int? = null) {
bindTaskDetail(detail, stepOverride)
taskDetailError.value = ""
}
fun recognize(photoPath: String) { fun recognize(photoPath: String) {
val file = File(photoPath) val file = File(photoPath)
if (!file.exists()) { if (!file.exists()) {