From f3056d3807466686b31d3641ee623976fb7b832d Mon Sep 17 00:00:00 2001 From: YANG JIANKUAN Date: Tue, 16 Dec 2025 11:00:44 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20opt=20=E6=9D=BF=E7=AE=B1=E8=BF=87?= =?UTF-8?q?=E7=A3=85=20add?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../viewModel/GjcBoxWeighingAddViewModel.kt | 73 ++++++++++++++++++- .../layout/activity_gjc_box_weighing_add.xml | 18 +++-- 2 files changed, 82 insertions(+), 9 deletions(-) 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 0b1f9be..a8bafbe 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 @@ -15,6 +15,7 @@ import com.lukouguoji.module_base.http.net.NetApply import com.lukouguoji.module_base.impl.FlowBus import com.lukouguoji.module_base.ktx.formatDate import com.lukouguoji.module_base.ktx.getActivity +import com.lukouguoji.module_base.ktx.launchCollect import com.lukouguoji.module_base.ktx.launchLoadingCollect import com.lukouguoji.module_base.ktx.noNull import com.lukouguoji.module_base.ktx.showToast @@ -40,6 +41,9 @@ class GjcBoxWeighingAddViewModel : BaseViewModel() { // val diBangModel = DiBangWeightModel() val channel = MutableLiveData("") // 通道号(用于控制地磅key) + // 地磅称重输入(独立字段,单向同步到总重) + val diBangWeight = MutableLiveData("0") + // 计算字段显示 val totalWeight = MutableLiveData("0") // 总重(红色) val netWeight = MutableLiveData("0") // 装机重(蓝色) @@ -70,6 +74,22 @@ class GjcBoxWeighingAddViewModel : BaseViewModel() { // diBangModel.key = it ?: "" // } + // 监听地磅称重输入,单向同步到总重 + diBangWeight.observe(activity as LifecycleOwner) { weight -> + val w = weight?.toDoubleOrNull() ?: 0.0 + totalWeight.value = w.toString() + dataBean.value = dataBean.value?.apply { totalWeight = w } + // 实时计算装机重和货重 + calculateWeights() + } + + // 监听总重变化,实时计算装机重和货重 + totalWeight.observe(activity as LifecycleOwner) { + val w = it?.toDoubleOrNull() ?: 0.0 + dataBean.value = dataBean.value?.apply { totalWeight = w } + calculateWeights() + } + // 加载下拉列表数据 loadPassagewayList() loadPiCloseList() @@ -82,8 +102,12 @@ class GjcBoxWeighingAddViewModel : BaseViewModel() { * 加载通道号列表 */ private fun loadPassagewayList() { - DictUtils.getChannelList { - passagewayList.value = it + launchCollect({ + NetApply.api.getDictList("GJPASSAGEWAY") + }) { + onSuccess = { + passagewayList.value = (it.data ?: emptyList()).map { b -> b.toKeyValue() } + } } } @@ -151,6 +175,7 @@ class GjcBoxWeighingAddViewModel : BaseViewModel() { dataBean.value = GjcUldUseBean().apply { fdate = Date().formatDate() } + diBangWeight.value = "0" totalWeight.value = "0" netWeight.value = "0" cargoWeight.value = "0" @@ -217,9 +242,53 @@ class GjcBoxWeighingAddViewModel : BaseViewModel() { when (requestCode) { Constant.RequestCode.ULD -> { dataBean.value = dataBean.value?.apply { uld = content } + // 查询ULD信息,获取ULD自重 + queryUldInfo(content) } Constant.RequestCode.CAR -> { dataBean.value = dataBean.value?.apply { carId = content } + // 查询架子车信息,获取架子车自重 + queryFlatcarInfo(content) + } + } + } + } + + /** + * 查询ULD信息 + */ + private fun queryUldInfo(uldNo: String) { + launchCollect({ NetApply.api.getUldDetails(uldNo) }) { + onSuccess = { result -> + val uldBean = result.data + if (uldBean != null) { + val weight = uldBean.uldWeight.toDoubleOrNull() ?: 0.0 + dataBean.value = dataBean.value?.apply { + uldWeight = weight + maxWeight = uldBean.maxWeight.toDoubleOrNull() ?: 0.0 + maxVolume = uldBean.maxVolume.toDoubleOrNull() ?: 0.0 + } + // 触发重量计算 + calculateWeights() + } + } + } + } + + /** + * 查询架子车信息 + */ + private fun queryFlatcarInfo(carId: String) { + launchCollect({ NetApply.api.getFlatcarInfo(carId) }) { + onSuccess = { result -> + val flatcarBean = result.data + if (flatcarBean != null) { + val weight = flatcarBean.carWeight.toDoubleOrNull() ?: 0.0 + dataBean.value = dataBean.value?.apply { + carWeight = weight + } + // 触发重量计算 + calculateWeights() } } } diff --git a/module_gjc/src/main/res/layout/activity_gjc_box_weighing_add.xml b/module_gjc/src/main/res/layout/activity_gjc_box_weighing_add.xml index 503b2b3..48e5b45 100644 --- a/module_gjc/src/main/res/layout/activity_gjc_box_weighing_add.xml +++ b/module_gjc/src/main/res/layout/activity_gjc_box_weighing_add.xml @@ -138,13 +138,18 @@ android:background="@drawable/bg_shouyun_dbzl" android:minHeight="60dp"> - @@ -152,9 +157,9 @@