From ea298ec3220d222e386fb5584d3bb1fe46ffc380 Mon Sep 17 00:00:00 2001 From: YANG JIANKUAN Date: Wed, 2 Sep 2026 13:11:17 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E5=BC=80=E5=A7=8B=E8=AE=A1=E9=87=8D?= =?UTF-8?q?=E6=96=B0=E5=A2=9E=E6=89=98=E7=9B=98=E4=BF=A1=E6=81=AF=E5=B9=B6?= =?UTF-8?q?=E8=87=AA=E5=8A=A8=E8=AE=A1=E7=AE=97=E8=BF=90=E6=8A=B5=E9=87=8D?= =?UTF-8?q?=E9=87=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 国际出港开始计重页面新增托盘数量、托盘自重输入框(自重默认18可编辑), 运抵重量自动按“地磅称重 -(托盘数量 × 托盘自重)”计算; 分托计重与完成计重提交均携带 trayNumber、trayTotalWeight; “托盘车号”“托盘车自重”标签改为“平板车”“平板车自重”。 Co-Authored-By: Claude Fable 5 --- .../lukouguoji/module_base/bean/GjcMaWb.kt | 2 + .../viewModel/GjcWeighingStartViewModel.kt | 47 +++++++++++++++-- .../layout/activity_gjc_weighing_start.xml | 50 ++++++++++++++++--- 3 files changed, 88 insertions(+), 11 deletions(-) diff --git a/module_base/src/main/java/com/lukouguoji/module_base/bean/GjcMaWb.kt b/module_base/src/main/java/com/lukouguoji/module_base/bean/GjcMaWb.kt index e5867df..147e2f7 100644 --- a/module_base/src/main/java/com/lukouguoji/module_base/bean/GjcMaWb.kt +++ b/module_base/src/main/java/com/lukouguoji/module_base/bean/GjcMaWb.kt @@ -57,6 +57,8 @@ data class GjcMaWb( var arriveWeight: Double? = null, // 运抵重量 var arriveVolume: Double? = null, // 运抵体积 var arriveFlag: String? = null, // 运抵状态(0:正常运抵,1:提前运抵) + var trayNumber: Int? = null, // 托盘数量 + var trayTotalWeight: Double? = null, // 托盘重量(托盘数量 × 托盘自重) // ==================== 特码与收货人 ==================== var spCode: String? = null, // 特码 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 fa338d6..c957e41 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 @@ -66,6 +66,10 @@ class GjcWeighingStartViewModel : BaseViewModel() { val pageRemark = MutableLiveData("") // 备注 + // 托盘信息(运抵重量 = 地磅称重 - 托盘数量 × 托盘自重) + val trayNumber = MutableLiveData("") // 托盘数量 + val trayWeight = MutableLiveData("18") // 托盘自重(默认18,可编辑) + // 下拉选择数据源 val channelList = MutableLiveData>() // 通道号列表 val agentList = MutableLiveData>() // 代理人列表 @@ -82,11 +86,10 @@ class GjcWeighingStartViewModel : BaseViewModel() { // 获取传入的运单ID maWbId = intent.getLongExtra(Constant.Key.MAWB_ID, 0) - // 监听地磅称重输入,单向同步到运抵重量 - diBangWeight.observe(activity as LifecycleOwner) { weight -> - // 同步到运抵重量(单向,不做反向同步) - arriveWeight.value = weight ?: "0" - } + // 监听地磅称重、托盘数量、托盘自重输入,自动计算运抵重量 + diBangWeight.observe(activity as LifecycleOwner) { recalculateArriveWeight() } + trayNumber.observe(activity as LifecycleOwner) { recalculateArriveWeight() } + trayWeight.observe(activity as LifecycleOwner) { recalculateArriveWeight() } // 监听运抵重量变化,自动计算运抵体积 arriveWeight.observe(activity as LifecycleOwner) { weightStr -> @@ -113,6 +116,32 @@ class GjcWeighingStartViewModel : BaseViewModel() { } } + /** + * 自动计算运抵重量:地磅称重 - (托盘数量 × 托盘自重) + */ + private fun recalculateArriveWeight() { + val gross = diBangWeight.value?.toDoubleOrNull() ?: 0.0 + val trayTotal = getTrayTotalWeight() + val net = gross - trayTotal + arriveWeight.value = if (net > 0) formatWeight(net) else "0" + } + + /** + * 托盘总重量 = 托盘数量 × 托盘自重 + */ + private fun getTrayTotalWeight(): Double { + val num = trayNumber.value?.toIntOrNull() ?: 0 + val weight = trayWeight.value?.toDoubleOrNull() ?: 0.0 + return num * weight + } + + /** + * 重量格式化:最多保留两位小数,去掉多余的0 + */ + private fun formatWeight(value: Double): String { + return String.format("%.2f", value).trimEnd('0').trimEnd('.') + } + /** * 加载通道号列表 (国际出港专用) */ @@ -391,6 +420,10 @@ class GjcWeighingStartViewModel : BaseViewModel() { passageWay = this@GjcWeighingStartViewModel.channelList.value?.firstOrNull{ it.value == channel.value }?.key ?: "" passageWayId = this@GjcWeighingStartViewModel.channel.value + // 托盘信息 + trayNumber = this@GjcWeighingStartViewModel.trayNumber.value?.toIntOrNull() + trayTotalWeight = getTrayTotalWeight() + remark = pageRemark.value } @@ -417,6 +450,8 @@ class GjcWeighingStartViewModel : BaseViewModel() { arrivePc.value = "" arriveWeight.value = "" arriveVolume.value = "" + trayNumber.value = "" + trayWeight.value = "18" pageRemark.value = "" @@ -499,6 +534,8 @@ class GjcWeighingStartViewModel : BaseViewModel() { "goodsCn" to bean.goodsCn, "businessType" to bean.businessType, "carId" to bean.carId, + "trayNumber" to trayNumber.value?.toIntOrNull(), + "trayTotalWeight" to getTrayTotalWeight(), "remark" to pageRemark.value, "checkIn" to "1", // 收运状态设置为已收运 "passageWayId" to channel.value, // 通道号参数 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 3e036fe..dc7f443 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 @@ -313,7 +313,45 @@ - + + + + + + + + + + + + - + - +