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 wbNumber: Int = 0, // 运单票数/总票数
|
||||||
var totalPc: Long = 0, // 总件数
|
var totalPc: Long = 0, // 总件数
|
||||||
var totalWeight: Double = 0.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() {
|
fun resetFilter() {
|
||||||
viewModel.flightDate.value = ""
|
viewModel.flightDate.value = ""
|
||||||
viewModel.flightNo.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.showToast
|
||||||
import com.lukouguoji.module_base.ktx.toRequestBody
|
import com.lukouguoji.module_base.ktx.toRequestBody
|
||||||
import com.lukouguoji.module_base.model.ScanModel
|
import com.lukouguoji.module_base.model.ScanModel
|
||||||
import com.lukouguoji.module_base.util.DictUtils
|
|
||||||
import dev.utils.app.info.KeyValue
|
import dev.utils.app.info.KeyValue
|
||||||
import dev.utils.common.DateUtils
|
import dev.utils.common.DateUtils
|
||||||
import com.lukouguoji.module_base.ktx.formatDate
|
import com.lukouguoji.module_base.ktx.formatDate
|
||||||
@@ -36,12 +35,8 @@ class IntExpOutHandoverViewModel : BasePageViewModel() {
|
|||||||
val uldNo = MutableLiveData("") // ULD编号
|
val uldNo = MutableLiveData("") // ULD编号
|
||||||
|
|
||||||
// ========== 手机版(5.5 寸手持端)专用筛选条件 ==========
|
// ========== 手机版(5.5 寸手持端)专用筛选条件 ==========
|
||||||
// 平板布局不含对应控件,两者保持空值 → 不会进入请求参数,平板查询行为与改造前完全一致
|
// 平板布局不含对应控件,保持空值 → 不会进入请求参数,平板查询行为与改造前完全一致
|
||||||
val handoverState = MutableLiveData("") // 交接状态:"" 全部 / "0" 待交接 / "1" 已交接
|
val handoverState = MutableLiveData("") // 交接状态:"" 全部 / "0" 待交接 / "1" 已交接
|
||||||
val hoId = MutableLiveData("") // 交接人(仓管编码)
|
|
||||||
|
|
||||||
/** 交接人下拉数据(仅手机版筛选弹层使用,由 [initPhoneExtras] 触发加载) */
|
|
||||||
val hoUserList = MutableLiveData<List<KeyValue>>(emptyList())
|
|
||||||
|
|
||||||
/** 手机版状态 Tab 配置 */
|
/** 手机版状态 Tab 配置 */
|
||||||
val handoverStateTabs = MutableLiveData(
|
val handoverStateTabs = MutableLiveData(
|
||||||
@@ -52,7 +47,7 @@ class IntExpOutHandoverViewModel : BasePageViewModel() {
|
|||||||
val handoverStateCounts = MutableLiveData(listOf("", ""))
|
val handoverStateCounts = MutableLiveData(listOf("", ""))
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 是否启用手机版专属数据(Tab 角标计数、交接人下拉)。
|
* 是否启用手机版专属数据(Tab 角标计数)。
|
||||||
*
|
*
|
||||||
* 由 Activity 在手机形态下置 true。平板端保持 false,
|
* 由 Activity 在手机形态下置 true。平板端保持 false,
|
||||||
* 因此不会产生任何额外接口请求,平板行为零变化。
|
* 因此不会产生任何额外接口请求,平板行为零变化。
|
||||||
@@ -70,15 +65,12 @@ class IntExpOutHandoverViewModel : BasePageViewModel() {
|
|||||||
val selectedCount = MutableLiveData("0")
|
val selectedCount = MutableLiveData("0")
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 开启手机版专属数据:默认停留「待交接」Tab、加载交接人下拉、启用 Tab 角标计数。
|
* 开启手机版专属数据:默认停留「待交接」Tab、启用 Tab 角标计数。
|
||||||
* 仅由手机形态的 Activity 调用。
|
* 仅由手机形态的 Activity 调用。
|
||||||
*/
|
*/
|
||||||
fun initPhoneExtras() {
|
fun initPhoneExtras() {
|
||||||
phoneExtrasEnabled = true
|
phoneExtrasEnabled = true
|
||||||
handoverState.value = "0"
|
handoverState.value = "0"
|
||||||
DictUtils.getWHSUserList(addAll = false) { list ->
|
|
||||||
hoUserList.postValue(list)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
fun onItemCheckChanged() {
|
fun onItemCheckChanged() {
|
||||||
@@ -218,11 +210,10 @@ class IntExpOutHandoverViewModel : BasePageViewModel() {
|
|||||||
"fno" to flightNo.value?.ifEmpty { null },
|
"fno" to flightNo.value?.ifEmpty { null },
|
||||||
"fdest" to fdest.value?.ifEmpty { null },
|
"fdest" to fdest.value?.ifEmpty { null },
|
||||||
"uld" to uldNo.value?.ifEmpty { null },
|
"uld" to uldNo.value?.ifEmpty { null },
|
||||||
// 以下两项为手机版新增筛选维度,平板端保持空值故不参与查询
|
// 手机版 Tab 维度,平板端保持空值故不参与查询
|
||||||
// 参数名以 api-doc 为准:交接状态为 handoverState(integer,0 未交接 / 1 已交接)。
|
// 参数名以 api-doc 为准:交接状态为 handoverState(integer,0 未交接 / 1 已交接)。
|
||||||
// hoId(交接人)后端查询入参暂不支持,已记录到 documents/后端接口对接问题清单.xlsx
|
// 其余筛选与平板端口径一致(fdate/fno/fdest/uld),后端不提供交接人查询入参
|
||||||
"handoverState" to handoverState.value?.ifEmpty { null },
|
"handoverState" to handoverState.value?.ifEmpty { null }
|
||||||
"hoId" to hoId.value?.ifEmpty { null }
|
|
||||||
)
|
)
|
||||||
|
|
||||||
// 列表参数 (含分页)
|
// 列表参数 (含分页)
|
||||||
@@ -257,15 +248,15 @@ class IntExpOutHandoverViewModel : BasePageViewModel() {
|
|||||||
/**
|
/**
|
||||||
* 加载「待交接 / 已交接」Tab 角标数量。
|
* 加载「待交接 / 已交接」Tab 角标数量。
|
||||||
*
|
*
|
||||||
* 复用统计接口,分别以 handoverState=0 / 1 各查一次,且沿用当前其余筛选条件,
|
* 复用统计接口,分别以 handoverState=0 / 1 各查一次,且沿用当前其余筛选条件;
|
||||||
* 保证角标与列表口径一致。仅手机版调用。
|
* 角标取 uldNumber(板箱数,与列表 pageQuery 的 total 同口径)。仅手机版调用。
|
||||||
*/
|
*/
|
||||||
private fun loadTabCounts(filterParams: Map<String, Any?>) {
|
private fun loadTabCounts(filterParams: Map<String, Any?>) {
|
||||||
listOf("0", "1").forEachIndexed { index, state ->
|
listOf("0", "1").forEachIndexed { index, state ->
|
||||||
val params = (filterParams + mapOf("handoverState" to state)).toRequestBody()
|
val params = (filterParams + mapOf("handoverState" to state)).toRequestBody()
|
||||||
launchCollect({ NetApply.api.getIntExpOutHandoverTotal(params) }) {
|
launchCollect({ NetApply.api.getIntExpOutHandoverTotal(params) }) {
|
||||||
onSuccess = { result ->
|
onSuccess = { result ->
|
||||||
val count = (result.data?.wbNumber ?: 0).toString()
|
val count = (result.data?.uldNumber ?: 0).toString()
|
||||||
val current = handoverStateCounts.value?.toMutableList()
|
val current = handoverStateCounts.value?.toMutableList()
|
||||||
?: mutableListOf("", "")
|
?: mutableListOf("", "")
|
||||||
if (index < current.size) {
|
if (index < current.size) {
|
||||||
|
|||||||
@@ -145,15 +145,14 @@
|
|||||||
type="@{PhoneDataLayoutType.INPUT}"
|
type="@{PhoneDataLayoutType.INPUT}"
|
||||||
value="@={viewModel.flightNo}" />
|
value="@={viewModel.flightNo}" />
|
||||||
|
|
||||||
<!-- 交接人 -->
|
<!-- 目的站(与平板端查询参数 fdest 一致;后端不提供交接人查询入参) -->
|
||||||
<com.lukouguoji.module_base.ui.weight.phone.PhoneDataLayout
|
<com.lukouguoji.module_base.ui.weight.phone.PhoneDataLayout
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
hint='@{"请选择交接人"}'
|
hint='@{"请输入目的站"}'
|
||||||
list="@{viewModel.hoUserList}"
|
title='@{"目的站"}'
|
||||||
title='@{"交接人"}'
|
type="@{PhoneDataLayoutType.INPUT}"
|
||||||
type="@{PhoneDataLayoutType.SPINNER}"
|
value="@={viewModel.fdest}" />
|
||||||
value="@={viewModel.hoId}" />
|
|
||||||
|
|
||||||
</com.lukouguoji.module_base.ui.weight.phone.PhoneFilterPanel>
|
</com.lukouguoji.module_base.ui.weight.phone.PhoneFilterPanel>
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user