feat: 国际出港查询详情 opt

This commit is contained in:
2025-12-04 10:46:49 +08:00
parent 247b72b7e8
commit 08f814531c
6 changed files with 110 additions and 35 deletions

View File

@@ -10,7 +10,6 @@ import com.lukouguoji.module_base.common.Constant
import com.lukouguoji.module_base.http.net.NetApply
import com.lukouguoji.module_base.ktx.launchLoadingCollect
import com.lukouguoji.module_base.ktx.showToast
import com.lukouguoji.module_base.ktx.toRequestBody
/**
* 国际出港查询详情-ViewModel
@@ -26,6 +25,15 @@ class GjcQueryDetailsViewModel : BaseViewModel() {
// ==================== 详情数据 ====================
val detailData = MutableLiveData<Map<String, Any>>(emptyMap())
// 运单信息 (maWb)
val maWbData = MutableLiveData<Map<String, Any>>(emptyMap())
// 仓库列表 (warehouseList)
val warehouseList = MutableLiveData<List<Map<String, Any>>>(emptyList())
// 库位列表 (storageUseList)
val storageUseList = MutableLiveData<List<Map<String, Any>>>(emptyList())
// ==================== Fragment列表 ====================
val fragmentList by lazy {
listOf(
@@ -60,11 +68,53 @@ class GjcQueryDetailsViewModel : BaseViewModel() {
return
}
val params = mapOf("maWbId" to maWbId.toLongOrNull()).toRequestBody()
val maWbIdValue = maWbId.toLongOrNull()
if (maWbIdValue == null) {
showToast("运单ID格式错误")
return
}
launchLoadingCollect({ NetApply.api.getGjcQueryDetails(params) }) {
launchLoadingCollect({ NetApply.api.getGjcQueryDetails(maWbIdValue) }) {
onSuccess = { result ->
detailData.value = result.data ?: emptyMap()
val data = result.data ?: emptyMap()
detailData.value = data
// 解析 maWb 对象
@Suppress("UNCHECKED_CAST")
val maWb = data["maWb"] as? Map<String, Any> ?: emptyMap()
// 解析 maWbM 对象 (包含海关报文等信息)
@Suppress("UNCHECKED_CAST")
val maWbM = data["maWbM"] as? Map<String, Any> ?: emptyMap()
// 合并 maWb 和 maWbM 的数据,并添加组合字段
val mergedData = mutableMapOf<String, Any>()
mergedData.putAll(maWb)
mergedData.putAll(maWbM)
// 添加组合字段: wbNo = prefix + no
val prefix = maWb["prefix"] as? String ?: ""
val no = maWb["no"] as? String ?: ""
if (prefix.isNotEmpty() || no.isNotEmpty()) {
mergedData["wbNo"] = "$prefix-$no"
}
// 字段映射: cmdStatus -> customsCommand
maWbM["cmdStatus"]?.let {
mergedData["customsCommand"] = it
}
maWbData.value = mergedData
// 解析 warehouseList 列表
@Suppress("UNCHECKED_CAST")
val whList = data["warehouseList"] as? List<Map<String, Any>> ?: emptyList()
warehouseList.value = whList
// 解析 storageUseList 列表
@Suppress("UNCHECKED_CAST")
val suList = data["storageUseList"] as? List<Map<String, Any>> ?: emptyList()
storageUseList.value = suList
}
}
}