diff --git a/module_base/src/main/java/com/lukouguoji/module_base/bean/GjcCheckInPage.kt b/module_base/src/main/java/com/lukouguoji/module_base/bean/GjcCheckInPage.kt index 22d38a8..c8bf648 100644 --- a/module_base/src/main/java/com/lukouguoji/module_base/bean/GjcCheckInPage.kt +++ b/module_base/src/main/java/com/lukouguoji/module_base/bean/GjcCheckInPage.kt @@ -7,7 +7,7 @@ package com.lukouguoji.module_base.bean data class GjcCheckInPage( var fdate: String? = null, // 航班日期 var fno: String? = null, // 航班号 - var whNo: String? = null, // 运单号 + var wbNo: String? = null, // 运单号 var hno: String? = null, // 分单号 var pageNum: Int = 1, // 页码 var pageSize: Int = 10 // 每页条数 diff --git a/module_base/src/main/java/com/lukouguoji/module_base/bean/GjcCheckInRecord.kt b/module_base/src/main/java/com/lukouguoji/module_base/bean/GjcCheckInRecord.kt index b5be258..796c730 100644 --- a/module_base/src/main/java/com/lukouguoji/module_base/bean/GjcCheckInRecord.kt +++ b/module_base/src/main/java/com/lukouguoji/module_base/bean/GjcCheckInRecord.kt @@ -21,7 +21,8 @@ data class GjcCheckInRecord( var pc: Long = 0, // 运抵件数 var weight: Double = 0.0, // 运抵重量 var volume: Double = 0.0, // 运抵体积 - var whId: Long = 0 // GJC_WAREHOUSE.ID + var whId: Long = 0, // GJC_WAREHOUSE.ID + var carWeight: String = "" // 托盘自重 ) : BaseObservable() { // 数据变化回调 diff --git a/module_base/src/main/java/com/lukouguoji/module_base/bean/GjcInspectionBean.kt b/module_base/src/main/java/com/lukouguoji/module_base/bean/GjcInspectionBean.kt index 9191791..de34e51 100644 --- a/module_base/src/main/java/com/lukouguoji/module_base/bean/GjcInspectionBean.kt +++ b/module_base/src/main/java/com/lukouguoji/module_base/bean/GjcInspectionBean.kt @@ -60,9 +60,9 @@ class GjcInspectionBean : ICheck { */ fun getReviewStatusName(): String { return when (reviewStatus) { - "1" -> "已通过" - "2" -> "退回" - "0" -> "未审核" + "1" -> "未审核" + "2" -> "已通过" + "3" -> "退回" else -> "未知" } } @@ -72,9 +72,10 @@ class GjcInspectionBean : ICheck { */ fun getReviewStatusColor(): String { return when (reviewStatus) { - "1" -> "#4CAF50" // 绿色-已通过 - "2" -> "#F44336" // 红色-退回 - else -> "#9E9E9E" // 灰色-未审核 + "1" -> "#9E9E9E" // 灰色-未审核 + "2" -> "#4CAF50" // 绿色-已通过 + "3" -> "#F44336" // 红色-退回 + else -> "#9E9E9E" // 灰色-未知 } } diff --git a/module_base/src/main/java/com/lukouguoji/module_base/bean/GjcMove.kt b/module_base/src/main/java/com/lukouguoji/module_base/bean/GjcMove.kt index 01a7981..36276c7 100644 --- a/module_base/src/main/java/com/lukouguoji/module_base/bean/GjcMove.kt +++ b/module_base/src/main/java/com/lukouguoji/module_base/bean/GjcMove.kt @@ -43,6 +43,8 @@ data class GjcMove( var remark: String = "", // 备注 var likeNo: String = "", // 部分运单号no(模糊查询) + var range: String = "", + // UI扩展字段 - 使用ObservableBoolean实现自动UI更新 val checked: ObservableBoolean = ObservableBoolean(false) ) : Serializable, ICheck { diff --git a/module_base/src/main/java/com/lukouguoji/module_base/bean/GjcUldUseBean.kt b/module_base/src/main/java/com/lukouguoji/module_base/bean/GjcUldUseBean.kt index bb349ba..963d296 100644 --- a/module_base/src/main/java/com/lukouguoji/module_base/bean/GjcUldUseBean.kt +++ b/module_base/src/main/java/com/lukouguoji/module_base/bean/GjcUldUseBean.kt @@ -26,6 +26,8 @@ class GjcUldUseBean { var fdep: String = "" // 起始站 var fdest: String = "" // 目的港 var fClose: String = "" // 航班关闭时间 + var flight: String = "" // 航班信息 + var transArea: String = "" // 库位号 // 格式化后的航班日期(只保留年月日) val fdateFormatted: String diff --git a/module_gjc/src/main/java/com/lukouguoji/gjc/activity/GjcBoxWeighingAddActivity.kt b/module_gjc/src/main/java/com/lukouguoji/gjc/activity/GjcBoxWeighingAddActivity.kt index 1cfc65d..1fe95db 100644 --- a/module_gjc/src/main/java/com/lukouguoji/gjc/activity/GjcBoxWeighingAddActivity.kt +++ b/module_gjc/src/main/java/com/lukouguoji/gjc/activity/GjcBoxWeighingAddActivity.kt @@ -24,10 +24,11 @@ class GjcBoxWeighingAddActivity : binding.viewModel = viewModel viewModel.initOnCreated(this) - // 为架子车号、ULD编码、IMP代码添加大写字母和数字的输入限制 + // 为架子车号、ULD编码、IMP代码、航班号添加大写字母和数字的输入限制 binding.carIdInput.et.setUpperCaseAlphanumericFilter() binding.uldNoInput.et.setUpperCaseAlphanumericFilter() binding.impCodeInput.et.setUpperCaseAlphanumericFilter() + binding.flightNoInput.et.setUpperCaseAlphanumericFilter() } companion object { diff --git a/module_gjc/src/main/java/com/lukouguoji/gjc/holder/IntExpTallyViewHolder.kt b/module_gjc/src/main/java/com/lukouguoji/gjc/holder/IntExpTallyViewHolder.kt index 661c87f..ca4f8ad 100644 --- a/module_gjc/src/main/java/com/lukouguoji/gjc/holder/IntExpTallyViewHolder.kt +++ b/module_gjc/src/main/java/com/lukouguoji/gjc/holder/IntExpTallyViewHolder.kt @@ -20,20 +20,13 @@ class IntExpTallyViewHolder(view: View) : binding.position = position binding.executePendingBindings() - // 图标点击切换选择状态(单向同步到子列表) + // 图标点击切换选择状态(主单和分单独立,互不干扰) binding.ivIcon.setOnClickListener { - // 切换主列表项的选择状态 - val newCheckedState = !bean.checked.get() - bean.checked.set(newCheckedState) - - // 单向同步:主列表选择状态同步到所有子列表项 - bean.haWbList?.forEach { haWb -> - haWb.checked.set(newCheckedState) - } + // 只切换主单自己的选择状态,不同步到分单 + bean.checked.set(!bean.checked.get()) // 刷新UI binding.executePendingBindings() - binding.rvSub.adapter?.notifyDataSetChanged() } // ========== 新增:展开按钮点击事件 ========== diff --git a/module_gjc/src/main/java/com/lukouguoji/gjc/viewModel/GjcBoxWeighingAddViewModel.kt b/module_gjc/src/main/java/com/lukouguoji/gjc/viewModel/GjcBoxWeighingAddViewModel.kt index c51ca39..950113a 100644 --- a/module_gjc/src/main/java/com/lukouguoji/gjc/viewModel/GjcBoxWeighingAddViewModel.kt +++ b/module_gjc/src/main/java/com/lukouguoji/gjc/viewModel/GjcBoxWeighingAddViewModel.kt @@ -314,10 +314,12 @@ class GjcBoxWeighingAddViewModel : BaseViewModel() { bean.uld = uldNo.value ?: "" bean.fno = flightNo.value ?: "" bean.fdate = flightDate.value ?: "" + bean.passageway = channel.value ?: "" // 验证必填字段 if (bean.carId.verifyNullOrEmpty("请输入架子车号")) return if (bean.uld.verifyNullOrEmpty("请输入ULD编号")) return + if (bean.passageway.verifyNullOrEmpty("请选择通道号")) return // 验证是否已组装(复磅场景必须有 useId) if (usingUldData == null || usingUldData?.useId == 0L) { diff --git a/module_gjc/src/main/java/com/lukouguoji/gjc/viewModel/GjcInspectionViewModel.kt b/module_gjc/src/main/java/com/lukouguoji/gjc/viewModel/GjcInspectionViewModel.kt index dbf906e..c00f423 100644 --- a/module_gjc/src/main/java/com/lukouguoji/gjc/viewModel/GjcInspectionViewModel.kt +++ b/module_gjc/src/main/java/com/lukouguoji/gjc/viewModel/GjcInspectionViewModel.kt @@ -48,8 +48,9 @@ class GjcInspectionViewModel : BasePageViewModel() { val auditStatusList = MutableLiveData( listOf( KeyValue("全部", ""), - KeyValue("未审核", "0"), - KeyValue("通过", "1"), + KeyValue("未审核", "1"), + KeyValue("已通过", "2"), + KeyValue("退回", "3"), ) ) diff --git a/module_gjc/src/main/java/com/lukouguoji/gjc/viewModel/GjcWeighingRecordViewModel.kt b/module_gjc/src/main/java/com/lukouguoji/gjc/viewModel/GjcWeighingRecordViewModel.kt index 52025b1..43897e9 100644 --- a/module_gjc/src/main/java/com/lukouguoji/gjc/viewModel/GjcWeighingRecordViewModel.kt +++ b/module_gjc/src/main/java/com/lukouguoji/gjc/viewModel/GjcWeighingRecordViewModel.kt @@ -99,15 +99,17 @@ class GjcWeighingRecordViewModel : BasePageViewModel() { */ fun declareClick() { // 获取列表数据 - val list = pageModel.rv?.commonAdapter()?.items as? List ?: return + val list = pageModel.rv?.commonAdapter()?.items as? List ?: emptyList() // 过滤选中项 val selectedItems = list.filter { it.isSelected } when (selectedItems.size) { 0 -> { - // 没有选择单据:Toast 提示 - showToast("请选择要申报的单据") + // 没有选择单据:直接跳转(不带参数) + com.alibaba.android.arouter.launcher.ARouter.getInstance() + .build(com.lukouguoji.module_base.router.ARouterConstants.ACTIVITY_URL_INT_EXP_ARRIVE) + .navigation() } 1 -> { // 选择一个单据:跳转到出港运抵页面,携带运单号 diff --git a/module_gjc/src/main/java/com/lukouguoji/gjc/viewModel/GjcWeighingStartViewModel.kt b/module_gjc/src/main/java/com/lukouguoji/gjc/viewModel/GjcWeighingStartViewModel.kt index 06f10e9..71fb813 100644 --- a/module_gjc/src/main/java/com/lukouguoji/gjc/viewModel/GjcWeighingStartViewModel.kt +++ b/module_gjc/src/main/java/com/lukouguoji/gjc/viewModel/GjcWeighingStartViewModel.kt @@ -44,6 +44,7 @@ class GjcWeighingStartViewModel : BaseViewModel() { // 用于防止重复查询的标记 private var lastQueriedWbNo: String = "" + private var lastQueriedCarId: String = "" // 航班日期(格式化为字符串用于DataBinding) val flightDate = MutableLiveData(DateUtils.getCurrentTime().formatDate()) @@ -286,6 +287,30 @@ class GjcWeighingStartViewModel : BaseViewModel() { ScanModel.startScan(getTopActivity(), Constant.RequestCode.CAR) } + /** + * 托盘车号输入完成时调用 + * 当用户输入完整托盘车号后,自动查询平板车信息并填充自重 + */ + fun onCarIdInputComplete() { + val carId = maWbBean.value?.carId ?: "" + + // 验证托盘车号是否为空 + if (carId.isEmpty()) { + return + } + + // 防止重复查询 + if (carId == lastQueriedCarId) { + return + } + + // 更新查询标记 + lastQueriedCarId = carId + + // 调用接口查询平板车信息 + queryCarWeight(carId) + } + /** * 托盘车号输入后查询自重 */ @@ -295,18 +320,26 @@ class GjcWeighingStartViewModel : BaseViewModel() { return } - val params = mapOf( - "carId" to carId - ).toRequestBody() - launchCollect({ - // 查询托盘车自重接口(待确认具体接口) - // 暂时使用模拟数据 - // NetApply.api.queryCarWeight(params) - carWeight.value = "0" // 模拟返回 + NetApply.api.getFlatcarInfo(carId) }) { - onSuccess = { - // carWeight.value = it.data?.weight?.toString() ?: "0" + onSuccess = { result -> + val data = result.data + if (data != null) { + // 填充托盘车自重 + carWeight.value = data.carWeight.ifEmpty { "0" } + } else { + showToast("未找到该平板车信息") + carWeight.value = "0" + // 清空查询标记,允许重新查询 + lastQueriedCarId = "" + } + } + onFailed = { code, msg -> + showToast("查询平板车失败: $msg") + carWeight.value = "0" + // 清空查询标记,允许重新查询 + lastQueriedCarId = "" } } } diff --git a/module_gjc/src/main/java/com/lukouguoji/gjc/viewModel/IntExpLoadViewModel.kt b/module_gjc/src/main/java/com/lukouguoji/gjc/viewModel/IntExpLoadViewModel.kt index bd14d40..cf73e50 100644 --- a/module_gjc/src/main/java/com/lukouguoji/gjc/viewModel/IntExpLoadViewModel.kt +++ b/module_gjc/src/main/java/com/lukouguoji/gjc/viewModel/IntExpLoadViewModel.kt @@ -189,7 +189,7 @@ class IntExpLoadViewModel : BasePageViewModel() { val pageParams = GjcCheckInPage( fdate = flightDate.value?.ifEmpty { null }, fno = flightNo.value?.ifEmpty { null }, - whNo = waybillNo.value?.ifEmpty { null }, + wbNo = waybillNo.value?.ifEmpty { null }, pageNum = pageModel.page, pageSize = pageModel.limit ) @@ -201,7 +201,7 @@ class IntExpLoadViewModel : BasePageViewModel() { val totalParams = GjcCheckInPage( fdate = flightDate.value?.ifEmpty { null }, fno = flightNo.value?.ifEmpty { null }, - whNo = waybillNo.value?.ifEmpty { null } + wbNo = waybillNo.value?.ifEmpty { null } ).toRequestBody() // 获取列表 (带Loading) diff --git a/module_gjc/src/main/java/com/lukouguoji/gjc/viewModel/IntExpTallyViewModel.kt b/module_gjc/src/main/java/com/lukouguoji/gjc/viewModel/IntExpTallyViewModel.kt index 2f34f53..f429eab 100644 --- a/module_gjc/src/main/java/com/lukouguoji/gjc/viewModel/IntExpTallyViewModel.kt +++ b/module_gjc/src/main/java/com/lukouguoji/gjc/viewModel/IntExpTallyViewModel.kt @@ -73,23 +73,14 @@ class IntExpTallyViewModel : BasePageViewModel() { } /** - * 全选按钮点击 (切换全选状态,单向同步到子列表) + * 全选按钮点击 (只切换主单的全选状态,分单选择独立) */ fun checkAllClick() { val list = pageModel.rv?.commonAdapter()?.items as? List ?: return - // 切换全选状态 + // 切换全选状态(只针对主单) val shouldCheckAll = !isAllChecked.value!! - - // 单向同步:主列表和子列表都设置为相同的选择状态 - list.forEach { maWb -> - maWb.checked.set(shouldCheckAll) - // 同步到所有子列表项 - maWb.haWbList?.forEach { haWb -> - haWb.checked.set(shouldCheckAll) - } - } - + list.forEach { it.checked.set(shouldCheckAll) } isAllChecked.value = shouldCheckAll pageModel.rv?.commonAdapter()?.notifyDataSetChanged() @@ -191,18 +182,40 @@ class IntExpTallyViewModel : BasePageViewModel() { } /** - * 理货申报 (批量操作) + * 理货申报 (批量操作,主单和分单分开) */ fun declareTally() { val list = pageModel.rv?.commonAdapter()?.items as? List ?: return - val selectedItems = list.filter { it.isSelected } - if (selectedItems.isEmpty()) { + // 收集选中的主单 + val selectedMaWbList = list.filter { it.isSelected } + + // 收集选中的分单 + val selectedHaWbList = mutableListOf() + list.forEach { maWb -> + maWb.haWbList?.forEach { haWb -> + if (haWb.isSelected) { + selectedHaWbList.add(haWb) + } + } + } + + // 检查是否有选中项 + if (selectedMaWbList.isEmpty() && selectedHaWbList.isEmpty()) { showToast("请选择要理货的记录") return } - val requestData = selectedItems.toRequestBody() + // 构建请求参数(区分主单和分单) + val params = mutableMapOf() + if (selectedMaWbList.isNotEmpty()) { + params["maWbList"] = selectedMaWbList + } + if (selectedHaWbList.isNotEmpty()) { + params["haWbList"] = selectedHaWbList + } + + val requestData = params.toRequestBody() launchLoadingCollect({ NetApply.api.declareTally(requestData) }) { onSuccess = { @@ -269,7 +282,7 @@ class IntExpTallyViewModel : BasePageViewModel() { val pageParams = GjcCheckInPage( fdate = flightDate.value?.ifEmpty { null }, fno = flightNo.value?.ifEmpty { null }, - whNo = waybillNo.value?.ifEmpty { null }, + wbNo = waybillNo.value?.ifEmpty { null }, hno = houseWaybillNo.value?.ifEmpty { null }, pageNum = pageModel.page, pageSize = pageModel.limit @@ -282,7 +295,7 @@ class IntExpTallyViewModel : BasePageViewModel() { val totalParams = GjcCheckInPage( fdate = flightDate.value?.ifEmpty { null }, fno = flightNo.value?.ifEmpty { null }, - whNo = waybillNo.value?.ifEmpty { null }, + wbNo = waybillNo.value?.ifEmpty { null }, hno = houseWaybillNo.value?.ifEmpty { null } ).toRequestBody() diff --git a/module_gjc/src/main/res/layout/activity_gjc_weighing_start.xml b/module_gjc/src/main/res/layout/activity_gjc_weighing_start.xml index 9c2a888..0bb49a5 100644 --- a/module_gjc/src/main/res/layout/activity_gjc_weighing_start.xml +++ b/module_gjc/src/main/res/layout/activity_gjc_weighing_start.xml @@ -363,6 +363,7 @@ + value="@{record.carWeight}" /> @@ -48,7 +48,7 @@ android:layout_height="wrap_content" android:layout_weight="1" android:gravity="center" - android:text="@{bean.inId ?? `--`}" + android:text="@{bean.inOpId ?? `--`}" android:textColor="@android:color/black" android:textSize="14sp" /> @@ -68,7 +68,7 @@ android:layout_height="wrap_content" android:layout_weight="1" android:gravity="center" - android:text="@{bean.outId ?? `--`}" + android:text="@{bean.outOpId ?? `--`}" android:textColor="@android:color/black" android:textSize="14sp" /> diff --git a/module_gjc/src/main/res/layout/item_int_exp_move.xml b/module_gjc/src/main/res/layout/item_int_exp_move.xml index 4b81406..8ad1dd6 100644 --- a/module_gjc/src/main/res/layout/item_int_exp_move.xml +++ b/module_gjc/src/main/res/layout/item_int_exp_move.xml @@ -190,7 +190,7 @@ diff --git a/module_gjc/src/main/res/layout/item_int_exp_out_handover.xml b/module_gjc/src/main/res/layout/item_int_exp_out_handover.xml index 4267ca7..d6680ba 100644 --- a/module_gjc/src/main/res/layout/item_int_exp_out_handover.xml +++ b/module_gjc/src/main/res/layout/item_int_exp_out_handover.xml @@ -41,18 +41,18 @@ android:layout_weight="1" android:orientation="vertical"> - + - + @@ -60,17 +60,14 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" completeSpace="@{5}" - android:text="ULD编号:" - android:textColor="@color/text_normal" + android:text="ULD编码:" android:textSize="16sp" /> + android:textSize="16sp"/> @@ -87,14 +84,12 @@ android:layout_height="wrap_content" completeSpace="@{5}" android:text="架子车号:" - android:textColor="@color/text_normal" android:textSize="16sp" /> @@ -110,131 +105,19 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + - + + + + + + + + + + + + + + + + + + + @@ -288,7 +270,7 @@ @@ -297,14 +279,12 @@ android:layout_height="wrap_content" completeSpace="@{5}" android:text="交接时间:" - android:textColor="@color/text_normal" android:textSize="16sp" />