feat(出库交接): 筛选对齐平板查询参数,Tab 角标改用 uldNumber(问题清单 #4/#6)
- 后端不提供交接人查询入参:手机筛选弹层「交接人」替换为平板同款「目的站」(fdest),移除 hoId 与交接人下拉 - pageQueryTotal 已修复且新增 uldNumber(板箱数),Tab 角标改取 uldNumber - ManifestTotalDto 补齐后端统一统计 DTO 的分项字段(uldNumber/storedNumber/departedNumber/ notClearNumber/clearNumber/waitCheckInNumber/checkingNumber/flightNumber) - 内网实测:无条件 已交接=2(列表 total 同为 2),fdest=PEK 时列表与角标均为 0 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
@@ -8,5 +8,15 @@ data class ManifestTotalDto(
|
||||
var wbNumber: Int = 0, // 运单票数/总票数
|
||||
var totalPc: Long = 0, // 总件数
|
||||
var totalWeight: Double = 0.0, // 总重量
|
||||
var cargoWeight: Double = 0.0 // 总货重
|
||||
var cargoWeight: Double = 0.0, // 总货重
|
||||
|
||||
// ===== 后端统一统计 DTO 的分项计数(2026-09 后端补齐,按接口各取所需) =====
|
||||
var flightNumber: Int = 0, // 航班数
|
||||
var uldNumber: Int = 0, // 板箱数(出库交接 Tab 角标)
|
||||
var storedNumber: Int = 0, // 已入库票数(出港/进港查询)
|
||||
var departedNumber: Int = 0, // 已离港(出港)/ 已出库(进港)票数
|
||||
var notClearNumber: Int = 0, // 未清仓票数(出港/进港仓库)
|
||||
var clearNumber: Int = 0, // 已清仓票数(出港/进港仓库)
|
||||
var waitCheckInNumber: Int = 0, // 待计重票数(出港计重)
|
||||
var checkingNumber: Int = 0 // 计重中票数(出港计重)
|
||||
)
|
||||
|
||||
@@ -72,12 +72,12 @@ class IntExpOutHandoverActivity :
|
||||
/**
|
||||
* 手机版筛选:重置
|
||||
*
|
||||
* 只清空弹层内的三个条件(航班日期 / 航班号 / 交接人),不影响 Tab 与顶部搜索框。
|
||||
* 只清空弹层内的三个条件(航班日期 / 航班号 / 目的站),不影响 Tab 与顶部搜索框。
|
||||
*/
|
||||
fun resetFilter() {
|
||||
viewModel.flightDate.value = ""
|
||||
viewModel.flightNo.value = ""
|
||||
viewModel.hoId.value = ""
|
||||
viewModel.fdest.value = ""
|
||||
}
|
||||
|
||||
/** 手机版筛选:确认 */
|
||||
|
||||
@@ -18,7 +18,6 @@ import com.lukouguoji.module_base.ktx.launchLoadingCollect
|
||||
import com.lukouguoji.module_base.ktx.showToast
|
||||
import com.lukouguoji.module_base.ktx.toRequestBody
|
||||
import com.lukouguoji.module_base.model.ScanModel
|
||||
import com.lukouguoji.module_base.util.DictUtils
|
||||
import dev.utils.app.info.KeyValue
|
||||
import dev.utils.common.DateUtils
|
||||
import com.lukouguoji.module_base.ktx.formatDate
|
||||
@@ -36,12 +35,8 @@ class IntExpOutHandoverViewModel : BasePageViewModel() {
|
||||
val uldNo = MutableLiveData("") // ULD编号
|
||||
|
||||
// ========== 手机版(5.5 寸手持端)专用筛选条件 ==========
|
||||
// 平板布局不含对应控件,两者保持空值 → 不会进入请求参数,平板查询行为与改造前完全一致
|
||||
// 平板布局不含对应控件,保持空值 → 不会进入请求参数,平板查询行为与改造前完全一致
|
||||
val handoverState = MutableLiveData("") // 交接状态:"" 全部 / "0" 待交接 / "1" 已交接
|
||||
val hoId = MutableLiveData("") // 交接人(仓管编码)
|
||||
|
||||
/** 交接人下拉数据(仅手机版筛选弹层使用,由 [initPhoneExtras] 触发加载) */
|
||||
val hoUserList = MutableLiveData<List<KeyValue>>(emptyList())
|
||||
|
||||
/** 手机版状态 Tab 配置 */
|
||||
val handoverStateTabs = MutableLiveData(
|
||||
@@ -52,7 +47,7 @@ class IntExpOutHandoverViewModel : BasePageViewModel() {
|
||||
val handoverStateCounts = MutableLiveData(listOf("", ""))
|
||||
|
||||
/**
|
||||
* 是否启用手机版专属数据(Tab 角标计数、交接人下拉)。
|
||||
* 是否启用手机版专属数据(Tab 角标计数)。
|
||||
*
|
||||
* 由 Activity 在手机形态下置 true。平板端保持 false,
|
||||
* 因此不会产生任何额外接口请求,平板行为零变化。
|
||||
@@ -70,15 +65,12 @@ class IntExpOutHandoverViewModel : BasePageViewModel() {
|
||||
val selectedCount = MutableLiveData("0")
|
||||
|
||||
/**
|
||||
* 开启手机版专属数据:默认停留「待交接」Tab、加载交接人下拉、启用 Tab 角标计数。
|
||||
* 开启手机版专属数据:默认停留「待交接」Tab、启用 Tab 角标计数。
|
||||
* 仅由手机形态的 Activity 调用。
|
||||
*/
|
||||
fun initPhoneExtras() {
|
||||
phoneExtrasEnabled = true
|
||||
handoverState.value = "0"
|
||||
DictUtils.getWHSUserList(addAll = false) { list ->
|
||||
hoUserList.postValue(list)
|
||||
}
|
||||
}
|
||||
|
||||
fun onItemCheckChanged() {
|
||||
@@ -218,11 +210,10 @@ class IntExpOutHandoverViewModel : BasePageViewModel() {
|
||||
"fno" to flightNo.value?.ifEmpty { null },
|
||||
"fdest" to fdest.value?.ifEmpty { null },
|
||||
"uld" to uldNo.value?.ifEmpty { null },
|
||||
// 以下两项为手机版新增筛选维度,平板端保持空值故不参与查询
|
||||
// 手机版 Tab 维度,平板端保持空值故不参与查询
|
||||
// 参数名以 api-doc 为准:交接状态为 handoverState(integer,0 未交接 / 1 已交接)。
|
||||
// hoId(交接人)后端查询入参暂不支持,已记录到 documents/后端接口对接问题清单.xlsx
|
||||
"handoverState" to handoverState.value?.ifEmpty { null },
|
||||
"hoId" to hoId.value?.ifEmpty { null }
|
||||
// 其余筛选与平板端口径一致(fdate/fno/fdest/uld),后端不提供交接人查询入参
|
||||
"handoverState" to handoverState.value?.ifEmpty { null }
|
||||
)
|
||||
|
||||
// 列表参数 (含分页)
|
||||
@@ -257,15 +248,15 @@ class IntExpOutHandoverViewModel : BasePageViewModel() {
|
||||
/**
|
||||
* 加载「待交接 / 已交接」Tab 角标数量。
|
||||
*
|
||||
* 复用统计接口,分别以 handoverState=0 / 1 各查一次,且沿用当前其余筛选条件,
|
||||
* 保证角标与列表口径一致。仅手机版调用。
|
||||
* 复用统计接口,分别以 handoverState=0 / 1 各查一次,且沿用当前其余筛选条件;
|
||||
* 角标取 uldNumber(板箱数,与列表 pageQuery 的 total 同口径)。仅手机版调用。
|
||||
*/
|
||||
private fun loadTabCounts(filterParams: Map<String, Any?>) {
|
||||
listOf("0", "1").forEachIndexed { index, state ->
|
||||
val params = (filterParams + mapOf("handoverState" to state)).toRequestBody()
|
||||
launchCollect({ NetApply.api.getIntExpOutHandoverTotal(params) }) {
|
||||
onSuccess = { result ->
|
||||
val count = (result.data?.wbNumber ?: 0).toString()
|
||||
val count = (result.data?.uldNumber ?: 0).toString()
|
||||
val current = handoverStateCounts.value?.toMutableList()
|
||||
?: mutableListOf("", "")
|
||||
if (index < current.size) {
|
||||
|
||||
@@ -145,15 +145,14 @@
|
||||
type="@{PhoneDataLayoutType.INPUT}"
|
||||
value="@={viewModel.flightNo}" />
|
||||
|
||||
<!-- 交接人 -->
|
||||
<!-- 目的站(与平板端查询参数 fdest 一致;后端不提供交接人查询入参) -->
|
||||
<com.lukouguoji.module_base.ui.weight.phone.PhoneDataLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
hint='@{"请选择交接人"}'
|
||||
list="@{viewModel.hoUserList}"
|
||||
title='@{"交接人"}'
|
||||
type="@{PhoneDataLayoutType.SPINNER}"
|
||||
value="@={viewModel.hoId}" />
|
||||
hint='@{"请输入目的站"}'
|
||||
title='@{"目的站"}'
|
||||
type="@{PhoneDataLayoutType.INPUT}"
|
||||
value="@={viewModel.fdest}" />
|
||||
|
||||
</com.lukouguoji.module_base.ui.weight.phone.PhoneFilterPanel>
|
||||
|
||||
|
||||
Reference in New Issue
Block a user