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 662923b..156ea6d 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 @@ -1838,7 +1838,7 @@ interface Api { * 国际进港舱单-分拣理货(装机单)-分页查询 */ @POST("IntImpManifest/pageQueryAir") - suspend fun getIntImpLoadingList(@Body data: RequestBody): BaseResultBean> + suspend fun getIntImpLoadingList(@Body data: RequestBody): PageInfo /** * 国际进港舱单-分拣理货(装机单)-分页合计 @@ -1858,6 +1858,12 @@ interface Api { @POST("IntImpTally/pageQueryTotal") suspend fun getIntImpTallyTotal(@Body data: RequestBody): BaseResultBean + /** + * 国际进港舱单-货物发放 + */ + @POST("IntImpManifest/putUpCargo") + suspend fun intImpManifestPutUpCargo(@Body data: RequestBody): BaseResultBean + /////////////////////////////////////////////////////////////////////////// // 国际进港-事故签证 /////////////////////////////////////////////////////////////////////////// diff --git a/module_gjj/src/main/java/com/lukouguoji/gjj/activity/IntImpLoadingListActivity.kt b/module_gjj/src/main/java/com/lukouguoji/gjj/activity/IntImpLoadingListActivity.kt index 0ead102..5c1d69f 100644 --- a/module_gjj/src/main/java/com/lukouguoji/gjj/activity/IntImpLoadingListActivity.kt +++ b/module_gjj/src/main/java/com/lukouguoji/gjj/activity/IntImpLoadingListActivity.kt @@ -51,10 +51,19 @@ class IntImpLoadingListActivity : viewModel.refresh() } - // 接收从进港舱单传递的参数 + // 设置运单号自动查询的额外参数(FID、FDGP) + binding.pslWaybillNo.autoQueryConfig.extraParamsProvider = { + mapOf( + "fid" to viewModel.fid, + "fdep" to viewModel.fdep + ) + } + + // 接收从进港舱单传递的参数(FID和FDGP用于查询,fdate/fno/fdest用于界面显示) + intent.getStringExtra("fid")?.let { if (it.isNotEmpty()) viewModel.fid = it } + intent.getStringExtra("fdep")?.let { if (it.isNotEmpty()) viewModel.fdep = it } intent.getStringExtra("fdate")?.let { if (it.isNotEmpty()) viewModel.flightDate.value = it } intent.getStringExtra("fno")?.let { if (it.isNotEmpty()) viewModel.flightNo.value = it } - intent.getStringExtra("sendAddress")?.let { if (it.isNotEmpty()) viewModel.sendAddress.value = it } intent.getStringExtra("fdest")?.let { if (it.isNotEmpty()) viewModel.fdest.value = it } // 如果收到了航班号和日期参数,触发航班查询来构建始发站下拉列表 diff --git a/module_gjj/src/main/java/com/lukouguoji/gjj/activity/IntImpManifestActivity.kt b/module_gjj/src/main/java/com/lukouguoji/gjj/activity/IntImpManifestActivity.kt index 78de243..2aca114 100644 --- a/module_gjj/src/main/java/com/lukouguoji/gjj/activity/IntImpManifestActivity.kt +++ b/module_gjj/src/main/java/com/lukouguoji/gjj/activity/IntImpManifestActivity.kt @@ -44,6 +44,14 @@ class IntImpManifestActivity : FlowBus.with(ConstantEvent.EVENT_REFRESH).observe(this) { viewModel.refresh() } + + // 设置运单号自动查询的额外参数(FID、FDGP) + binding.pslWaybillNo.autoQueryConfig.extraParamsProvider = { + mapOf( + "fid" to viewModel.fid, + "fdep" to viewModel.fdep + ) + } } override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) { diff --git a/module_gjj/src/main/java/com/lukouguoji/gjj/viewModel/IntImpLoadingListViewModel.kt b/module_gjj/src/main/java/com/lukouguoji/gjj/viewModel/IntImpLoadingListViewModel.kt index 8a4b743..87b85ac 100644 --- a/module_gjj/src/main/java/com/lukouguoji/gjj/viewModel/IntImpLoadingListViewModel.kt +++ b/module_gjj/src/main/java/com/lukouguoji/gjj/viewModel/IntImpLoadingListViewModel.kt @@ -35,7 +35,8 @@ class IntImpLoadingListViewModel : BasePageViewModel() { // ========== 航班级联查询 ========== private var lastQueriedFlight = "" - private var fid = "" + var fid = "" + var fdep = "" fun onFlightDateInputComplete() { lastQueriedFlight = "" @@ -68,6 +69,7 @@ class IntImpLoadingListViewModel : BasePageViewModel() { if (it.verifySuccess() && it.data != null) { val flight = it.data!! fid = flight.fid.noNull() + fdep = flight.fdep.noNull() fdest.value = flight.fdest.noNull() // 构建始发站下拉列表:fdep + jtz(经停港) @@ -81,6 +83,7 @@ class IntImpLoadingListViewModel : BasePageViewModel() { sendAddress.value = flight.fdep.noNull() } else { fid = "" + fdep = "" fdest.value = "" sendAddressList.value = emptyList() sendAddress.value = "" @@ -90,6 +93,7 @@ class IntImpLoadingListViewModel : BasePageViewModel() { onFailed = { _, _ -> fid = "" + fdep = "" fdest.value = "" sendAddressList.value = emptyList() sendAddress.value = "" @@ -120,9 +124,66 @@ class IntImpLoadingListViewModel : BasePageViewModel() { /** * 搜索按钮点击 + * 先查询航班信息获取FID,再刷新列表(与父页面逻辑保持一致) */ fun searchClick() { - refresh() + val fdate = flightDate.value + val fno = flightNo.value + if (!fdate.isNullOrEmpty() && !fno.isNullOrEmpty()) { + val key = "$fdate-$fno" + if (key != lastQueriedFlight || fid.isEmpty()) { + // 先查询航班信息获取FID + lastQueriedFlight = key + launchLoadingCollect({ + NetApply.api.getGjFlightBean( + mapOf( + "fdate" to fdate, + "fno" to fno, + "ieFlag" to "I", + ).toRequestBody() + ) + }) { + onSuccess = { + if (it.verifySuccess() && it.data != null) { + val flight = it.data!! + fid = flight.fid.noNull() + fdep = flight.fdep.noNull() + fdest.value = flight.fdest.noNull() + val list = mutableListOf( + KeyValue(flight.fdep.noNull(), flight.fdep.noNull()), + ) + if (!flight.jtz.isNullOrEmpty()) { + list.add(KeyValue(flight.jtz.noNull(), flight.jtz.noNull())) + } + sendAddressList.value = list + sendAddress.value = flight.fdep.noNull() + } else { + fid = "" + fdep = "" + fdest.value = "" + sendAddressList.value = emptyList() + sendAddress.value = "" + showToast(it.msg.noNull("获取航班信息失败")) + } + refresh() + } + onFailed = { _, _ -> + fid = "" + fdep = "" + fdest.value = "" + sendAddressList.value = emptyList() + sendAddress.value = "" + refresh() + } + } + } else { + refresh() + } + } else { + fid = "" + fdep = "" + refresh() + } } /** @@ -219,14 +280,13 @@ class IntImpLoadingListViewModel : BasePageViewModel() { /** * 获取数据(重写BasePageViewModel) + * 查询参数与父页面(国际进港舱单)保持一致:使用FID和FDGP */ override fun getData() { - // 构建搜索条件 + // 构建搜索条件(与父页面一致:fid + fdep + wbNo) val filterParams = mapOf( - "fdate" to flightDate.value?.ifEmpty { null }, - "fno" to flightNo.value?.ifEmpty { null }, - "sendAddress" to sendAddress.value?.ifEmpty { null }, - "fdest" to fdest.value?.ifEmpty { null }, + "fid" to fid.ifEmpty { null }, + "fdep" to fdep.ifEmpty { null }, "wbNo" to waybillNo.value?.ifEmpty { null } ) @@ -242,19 +302,7 @@ class IntImpLoadingListViewModel : BasePageViewModel() { // 获取列表(带Loading) launchLoadingCollect({ NetApply.api.getIntImpLoadingList(listParams) }) { onSuccess = { result -> - // 处理PageInfo结构 - val pageInfo = result.data - if (pageInfo != null) { - val list = pageInfo.list ?: emptyList() - val pages = pageInfo.pages ?: 1 - - // 处理分页数据 - pageModel.handleDataList(list) - pageModel.haveMore.postValue(pages > pageModel.page) - } else { - pageModel.handleDataList(emptyList()) - pageModel.haveMore.postValue(false) - } + pageModel.handleListBean(result.toBaseListBean()) } } diff --git a/module_gjj/src/main/java/com/lukouguoji/gjj/viewModel/IntImpManifestViewModel.kt b/module_gjj/src/main/java/com/lukouguoji/gjj/viewModel/IntImpManifestViewModel.kt index 65fe78a..d2ca368 100644 --- a/module_gjj/src/main/java/com/lukouguoji/gjj/viewModel/IntImpManifestViewModel.kt +++ b/module_gjj/src/main/java/com/lukouguoji/gjj/viewModel/IntImpManifestViewModel.kt @@ -39,8 +39,8 @@ class IntImpManifestViewModel : BasePageViewModel() { // ========== 航班级联查询 ========== private var lastQueriedFlight = "" - private var fid = "" - private var fdep = "" // 航班始发港(用于列表查询参数) + var fid = "" + var fdep = "" // 航班始发港(用于列表查询参数) fun onFlightDateInputComplete() { lastQueriedFlight = "" @@ -332,18 +332,45 @@ class IntImpManifestViewModel : BasePageViewModel() { fun sortingTallyClick() { com.alibaba.android.arouter.launcher.ARouter.getInstance() .build(com.lukouguoji.module_base.router.ARouterConstants.ACTIVITY_URL_INT_IMP_LOADING_LIST) + .withString("fid", fid) + .withString("fdep", fdep) .withString("fdate", flightDate.value ?: "") .withString("fno", flightNo.value ?: "") - .withString("sendAddress", sendAddress.value ?: "") .withString("fdest", fdest.value ?: "") .navigation() } /** - * 货物发放(暂不实现) + * 货物发放 */ fun cargoReleaseClick() { - showToast("货物发放功能开发中") + val list = pageModel.rv?.commonAdapter()?.items as? List ?: return + val selectedItems = list.filter { it.isSelected } + + if (selectedItems.isEmpty()) { + showToast("请选择要发放的运单") + return + } + + ConfirmDialogModel( + message = "确定要发放选中的 ${selectedItems.size} 票运单吗?", + title = "货物发放确认" + ) { + val params = mapOf( + "manifestList" to selectedItems + ).toRequestBody() + + launchLoadingCollect({ NetApply.api.intImpManifestPutUpCargo(params) }) { + onSuccess = { + if (it.verifySuccess()) { + showToast(it.msg.noNull("货物发放成功")) + refresh() + } else { + showToast(it.msg.noNull("货物发放失败")) + } + } + } + }.show() } /** diff --git a/module_gjj/src/main/res/layout/activity_int_imp_loading_list.xml b/module_gjj/src/main/res/layout/activity_int_imp_loading_list.xml index b9d374c..158cbd7 100644 --- a/module_gjj/src/main/res/layout/activity_int_imp_loading_list.xml +++ b/module_gjj/src/main/res/layout/activity_int_imp_loading_list.xml @@ -77,11 +77,18 @@ diff --git a/module_gjj/src/main/res/layout/activity_int_imp_manifest.xml b/module_gjj/src/main/res/layout/activity_int_imp_manifest.xml index 34cab76..81efece 100644 --- a/module_gjj/src/main/res/layout/activity_int_imp_manifest.xml +++ b/module_gjj/src/main/res/layout/activity_int_imp_manifest.xml @@ -73,11 +73,18 @@