From b37f330414c96aa34fe7fcf3b237637fce3ac748 Mon Sep 17 00:00:00 2001 From: YANGJIANKUAN Date: Sat, 17 Jan 2026 17:33:04 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E5=9B=BD=E9=99=85=E5=87=BA=E6=B8=AF=20?= =?UTF-8?q?=E8=A3=85=E8=B4=A7=E4=BA=A4=E6=8E=A5=20=E5=BE=85=E9=85=8D?= =?UTF-8?q?=E8=BF=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../lukouguoji/module_base/http/net/Api.kt | 8 ++ .../IntExpOutWaitingTransDialogModel.kt | 74 ++++++++++++++++ .../gjc/viewModel/IntExpArriveViewModel.kt | 2 +- .../viewModel/IntExpOutHandoverViewModel.kt | 56 +++++++++++- .../layout/activity_int_exp_out_handover.xml | 6 ++ .../dialog_int_exp_out_waiting_trans.xml | 87 +++++++++++++++++++ 6 files changed, 231 insertions(+), 2 deletions(-) create mode 100644 module_gjc/src/main/java/com/lukouguoji/gjc/dialog/IntExpOutWaitingTransDialogModel.kt create mode 100644 module_gjc/src/main/res/layout/dialog_int_exp_out_waiting_trans.xml diff --git a/module_base/src/main/java/com/lukouguoji/module_base/http/net/Api.kt b/module_base/src/main/java/com/lukouguoji/module_base/http/net/Api.kt index e0a3c3c..8dc41c6 100644 --- a/module_base/src/main/java/com/lukouguoji/module_base/http/net/Api.kt +++ b/module_base/src/main/java/com/lukouguoji/module_base/http/net/Api.kt @@ -676,6 +676,14 @@ interface Api { @POST("IntExpOutHandover/handover") suspend fun completeHandover(@Body data: RequestBody): BaseResultBean + /** + * 国际出港出库交接-待配运 + * 接口路径: /IntExpOutHandover/waitingTrans + * @param data 请求参数:GjcStorageParam (包含库位信息和ULD列表) + */ + @POST("IntExpOutHandover/waitingTrans") + suspend fun waitingTrans(@Body data: RequestBody): BaseResultBean + /** * 国际出港-出港装载 分页查询 * 接口路径: /IntExpLoad/pageQuery diff --git a/module_gjc/src/main/java/com/lukouguoji/gjc/dialog/IntExpOutWaitingTransDialogModel.kt b/module_gjc/src/main/java/com/lukouguoji/gjc/dialog/IntExpOutWaitingTransDialogModel.kt new file mode 100644 index 0000000..5c6ba2f --- /dev/null +++ b/module_gjc/src/main/java/com/lukouguoji/gjc/dialog/IntExpOutWaitingTransDialogModel.kt @@ -0,0 +1,74 @@ +package com.lukouguoji.gjc.dialog + +import android.content.Context +import androidx.lifecycle.MutableLiveData +import com.lukouguoji.gjc.R +import com.lukouguoji.gjc.databinding.DialogIntExpOutWaitingTransBinding +import com.lukouguoji.module_base.base.BaseDialogModel +import com.lukouguoji.module_base.http.net.NetApply +import com.lukouguoji.module_base.ktx.launchCollect +import com.lukouguoji.module_base.ktx.showToast +import com.lukouguoji.module_base.ktx.verifyNullOrEmpty +import dev.utils.app.info.KeyValue + +/** + * 国际出港出库交接 - 待配运操作对话框 + */ +class IntExpOutWaitingTransDialogModel( + private val callback: (IntExpOutWaitingTransDialogModel) -> Unit +) : BaseDialogModel(DIALOG_TYPE_CENTER) { + + // 库位列表 + val locationList = MutableLiveData>() + + // 选中的库位(存储的是code) + val selectedLocationCode = MutableLiveData("") + + // 库位ID (后端需要的code) + var locationId: String = "" + + // 库位名称 (后端需要的name) + var locationName: String = "" + + override fun layoutId(): Int { + return R.layout.dialog_int_exp_out_waiting_trans + } + + override fun onDialogCreated(context: Context) { + binding.model = this + loadLocationList() + + // 监听选择变化,更新locationId和locationName + selectedLocationCode.observeForever { code -> + val selectedItem = locationList.value?.find { it.value == code } + locationId = selectedItem?.value ?: "" + locationName = selectedItem?.key ?: "" + } + } + + /** + * 加载库位列表 + */ + private fun loadLocationList() { + launchCollect({ NetApply.api.getLocationList(flag = 2) }) { + onSuccess = { result -> + val list = result.data?.map { it.toKeyValue() } ?: emptyList() + locationList.value = list + } + onFailed = { _, msg -> + showToast(msg ?: "加载库位列表失败") + } + } + } + + /** + * 保存按钮点击 + */ + fun onSaveClick() { + if (selectedLocationCode.value.verifyNullOrEmpty("请选择库位")) { + return + } + dismiss() + callback(this) + } +} diff --git a/module_gjc/src/main/java/com/lukouguoji/gjc/viewModel/IntExpArriveViewModel.kt b/module_gjc/src/main/java/com/lukouguoji/gjc/viewModel/IntExpArriveViewModel.kt index 45eadc1..a960916 100644 --- a/module_gjc/src/main/java/com/lukouguoji/gjc/viewModel/IntExpArriveViewModel.kt +++ b/module_gjc/src/main/java/com/lukouguoji/gjc/viewModel/IntExpArriveViewModel.kt @@ -223,7 +223,7 @@ class IntExpArriveViewModel : BasePageViewModel() { val filterParams = mapOf( "fdate" to flightDate.value?.ifEmpty { null }, "fno" to flightNo.value?.ifEmpty { null }, - "likeNo" to waybillNo.value?.ifEmpty { null }, + "wbNo" to waybillNo.value?.ifEmpty { null }, "hno" to hno.value?.ifEmpty { null } ) diff --git a/module_gjc/src/main/java/com/lukouguoji/gjc/viewModel/IntExpOutHandoverViewModel.kt b/module_gjc/src/main/java/com/lukouguoji/gjc/viewModel/IntExpOutHandoverViewModel.kt index 23181d6..974e44f 100644 --- a/module_gjc/src/main/java/com/lukouguoji/gjc/viewModel/IntExpOutHandoverViewModel.kt +++ b/module_gjc/src/main/java/com/lukouguoji/gjc/viewModel/IntExpOutHandoverViewModel.kt @@ -4,6 +4,7 @@ import android.app.Activity import androidx.lifecycle.MutableLiveData import androidx.lifecycle.viewModelScope import com.lukouguoji.gjc.R +import com.lukouguoji.gjc.dialog.IntExpOutWaitingTransDialogModel import com.lukouguoji.gjc.holder.IntExpOutHandoverViewHolder import com.lukouguoji.module_base.base.BasePageViewModel import com.lukouguoji.module_base.bean.GjcUldUseBean @@ -18,7 +19,7 @@ import com.lukouguoji.module_base.ktx.showToast import com.lukouguoji.module_base.ktx.toRequestBody import com.lukouguoji.module_base.model.ScanModel import dev.utils.common.DateUtils -import com.lukouguoji.module_base.ktx.formatDate +import com.lukouguoji.module_base.ktx.formatDate import kotlinx.coroutines.launch /** @@ -105,6 +106,59 @@ class IntExpOutHandoverViewModel : BasePageViewModel() { } } + /** + * 待配运按钮点击 + */ + fun waitingTransClick() { + val list = pageModel.rv?.commonAdapter()?.items as? List ?: return + val selectedItems = list.filter { it.isSelected } + + if (selectedItems.isEmpty()) { + showToast("请选择要待配运的ULD") + return + } + + // 显示待配运弹框 + showWaitingTransDialog(selectedItems) + } + + /** + * 显示待配运弹框 + */ + private fun showWaitingTransDialog(selectedItems: List) { + val dialog = IntExpOutWaitingTransDialogModel { model -> + // 弹框确定回调 + performWaitingTrans(selectedItems, model.locationId, model.locationName) + } + dialog.show() + } + + /** + * 执行待配运操作 + */ + private fun performWaitingTrans( + selectedItems: List, + locationId: String, + locationName: String + ) { + // 构建请求参数 + val params = mapOf( + "location" to locationName, + "locationId" to locationId.toLongOrNull(), + "uldUseList" to selectedItems + ).toRequestBody() + + launchLoadingCollect({ NetApply.api.waitingTrans(params) }) { + onSuccess = { + showToast("待配运操作成功") + viewModelScope.launch { + FlowBus.with(ConstantEvent.EVENT_REFRESH).emit("refresh") + } + refresh() + } + } + } + /** * 获取数据 (重写BasePageViewModel) */ diff --git a/module_gjc/src/main/res/layout/activity_int_exp_out_handover.xml b/module_gjc/src/main/res/layout/activity_int_exp_out_handover.xml index c0fbb8c..dc361cd 100644 --- a/module_gjc/src/main/res/layout/activity_int_exp_out_handover.xml +++ b/module_gjc/src/main/res/layout/activity_int_exp_out_handover.xml @@ -172,6 +172,12 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +