diff --git a/.claude/settings.local.json b/.claude/settings.local.json index 04fd418..b025130 100644 --- a/.claude/settings.local.json +++ b/.claude/settings.local.json @@ -88,7 +88,11 @@ "mcp__apifox__read_project_oas_ref_resources_9otrai", "Bash(cd:*)", "mcp__apifox__read_project_oas_tua249", - "mcp__apifox__read_project_oas_ref_resources_tua249" + "mcp__apifox__read_project_oas_ref_resources_tua249", + "mcp__apifox__read_project_oas_heib77", + "mcp__apifox__read_project_oas_ref_resources_heib77", + "Bash(export JAVA_HOME=\"/Applications/Android Studio.app/Contents/jbr/Contents/Home\")", + "Bash(export PATH=\"$JAVA_HOME/bin:$PATH\")" ], "deny": [], "ask": [] diff --git a/module_base/src/main/java/com/lukouguoji/module_base/bean/IntImpPickUpRecordBean.kt b/module_base/src/main/java/com/lukouguoji/module_base/bean/IntImpPickUpRecordBean.kt index 35b8544..3537f06 100644 --- a/module_base/src/main/java/com/lukouguoji/module_base/bean/IntImpPickUpRecordBean.kt +++ b/module_base/src/main/java/com/lukouguoji/module_base/bean/IntImpPickUpRecordBean.kt @@ -29,6 +29,8 @@ class IntImpPickUpRecordBean : Serializable { var efrCharge: Double = 0.0 // 冷藏费 var svlCharge: Double = 0.0 // 铲车费 var tallyCharge: Double = 0.0 // 理货费 + var precisionCharge: Double = 0.0 // 精密仪器处理费 + var animalCharge: Double = 0.0 // 活体动物处理费 var chargeName: String = "" // 办理人名称 var chargeId: String = "" // 收费员ID var dlvTime: String = "" // 出库时间 diff --git a/module_gjj/src/main/java/com/lukouguoji/gjj/viewModel/IntImpPickUpChargeEditViewModel.kt b/module_gjj/src/main/java/com/lukouguoji/gjj/viewModel/IntImpPickUpChargeEditViewModel.kt index df40a7d..8ad6dee 100644 --- a/module_gjj/src/main/java/com/lukouguoji/gjj/viewModel/IntImpPickUpChargeEditViewModel.kt +++ b/module_gjj/src/main/java/com/lukouguoji/gjj/viewModel/IntImpPickUpChargeEditViewModel.kt @@ -2,6 +2,7 @@ package com.lukouguoji.gjj.viewModel import android.content.Intent import androidx.lifecycle.MutableLiveData +import androidx.lifecycle.Observer import androidx.lifecycle.viewModelScope import com.google.gson.Gson import com.lukouguoji.module_base.base.BaseViewModel @@ -25,10 +26,27 @@ class IntImpPickUpChargeEditViewModel : BaseViewModel() { // 可编辑费用字段(String 用于双向绑定) val tranChargeStr = MutableLiveData("") // 信息费 val whsChargeStr = MutableLiveData("") // 仓储费 - val drawBillChargeStr = MutableLiveData("") // 抽单费 - val efrChargeStr = MutableLiveData("") // 冷藏费 - val svlChargeStr = MutableLiveData("") // 铲车费 + val drawBillChargeStr = MutableLiveData("") // 文件处理费 + val svlChargeStr = MutableLiveData("") // 叉车费 val tallyChargeStr = MutableLiveData("") // 理货费 + val precisionChargeStr = MutableLiveData("") // 精密仪器处理费 + val animalChargeStr = MutableLiveData("") // 活体动物处理费 + val totalAmountStr = MutableLiveData("") // 总费用(实时计算) + + // 总费用计算观察者 + private val totalCalculator = Observer { calculateTotal() } + + private fun calculateTotal() { + val total = (tranChargeStr.value?.toDoubleOrNull() ?: 0.0) + + (whsChargeStr.value?.toDoubleOrNull() ?: 0.0) + + (drawBillChargeStr.value?.toDoubleOrNull() ?: 0.0) + + (svlChargeStr.value?.toDoubleOrNull() ?: 0.0) + + (tallyChargeStr.value?.toDoubleOrNull() ?: 0.0) + + (dataBean.value?.optCharge ?: 0.0) + + (precisionChargeStr.value?.toDoubleOrNull() ?: 0.0) + + (animalChargeStr.value?.toDoubleOrNull() ?: 0.0) + totalAmountStr.value = if (total != 0.0) total.toString() else "" + } fun initOnCreated(intent: Intent) { val jsonData = intent.getStringExtra(Constant.Key.DATA) ?: "" @@ -40,9 +58,22 @@ class IntImpPickUpChargeEditViewModel : BaseViewModel() { tranChargeStr.value = if (bean.tranCharge != 0.0) bean.tranCharge.toString() else "" whsChargeStr.value = if (bean.whsCharge != 0.0) bean.whsCharge.toString() else "" drawBillChargeStr.value = if (bean.drawBillCharge != 0.0) bean.drawBillCharge.toString() else "" - efrChargeStr.value = if (bean.efrCharge != 0.0) bean.efrCharge.toString() else "" svlChargeStr.value = if (bean.svlCharge != 0.0) bean.svlCharge.toString() else "" tallyChargeStr.value = if (bean.tallyCharge != 0.0) bean.tallyCharge.toString() else "" + precisionChargeStr.value = if (bean.precisionCharge != 0.0) bean.precisionCharge.toString() else "" + animalChargeStr.value = if (bean.animalCharge != 0.0) bean.animalCharge.toString() else "" + + // 注册总费用实时计算 + tranChargeStr.observeForever(totalCalculator) + whsChargeStr.observeForever(totalCalculator) + drawBillChargeStr.observeForever(totalCalculator) + svlChargeStr.observeForever(totalCalculator) + tallyChargeStr.observeForever(totalCalculator) + precisionChargeStr.observeForever(totalCalculator) + animalChargeStr.observeForever(totalCalculator) + + // 初始计算一次 + calculateTotal() } catch (e: Exception) { showToast("数据解析失败") getTopActivity().finish() @@ -63,9 +94,11 @@ class IntImpPickUpChargeEditViewModel : BaseViewModel() { bean.tranCharge = tranChargeStr.value?.toDoubleOrNull() ?: 0.0 bean.whsCharge = whsChargeStr.value?.toDoubleOrNull() ?: 0.0 bean.drawBillCharge = drawBillChargeStr.value?.toDoubleOrNull() ?: 0.0 - bean.efrCharge = efrChargeStr.value?.toDoubleOrNull() ?: 0.0 bean.svlCharge = svlChargeStr.value?.toDoubleOrNull() ?: 0.0 bean.tallyCharge = tallyChargeStr.value?.toDoubleOrNull() ?: 0.0 + bean.precisionCharge = precisionChargeStr.value?.toDoubleOrNull() ?: 0.0 + bean.animalCharge = animalChargeStr.value?.toDoubleOrNull() ?: 0.0 + bean.amount = totalAmountStr.value?.toDoubleOrNull() ?: 0.0 launchLoadingCollect({ NetApply.api.modifyIntImpPickUpCharge(bean.toRequestBody()) @@ -86,4 +119,15 @@ class IntImpPickUpChargeEditViewModel : BaseViewModel() { fun cancel() { getTopActivity().finish() } + + override fun onCleared() { + super.onCleared() + tranChargeStr.removeObserver(totalCalculator) + whsChargeStr.removeObserver(totalCalculator) + drawBillChargeStr.removeObserver(totalCalculator) + svlChargeStr.removeObserver(totalCalculator) + tallyChargeStr.removeObserver(totalCalculator) + precisionChargeStr.removeObserver(totalCalculator) + animalChargeStr.removeObserver(totalCalculator) + } } diff --git a/module_gjj/src/main/res/layout/activity_int_imp_pick_up_charge_edit.xml b/module_gjj/src/main/res/layout/activity_int_imp_pick_up_charge_edit.xml index 529e82a..c79f5e8 100644 --- a/module_gjj/src/main/res/layout/activity_int_imp_pick_up_charge_edit.xml +++ b/module_gjj/src/main/res/layout/activity_int_imp_pick_up_charge_edit.xml @@ -50,7 +50,7 @@ android:layout_weight="1" enable="@{false}" title='@{"运 单 号"}' - titleLength="@{5}" + titleLength="@{7}" type="@{DataLayoutType.INPUT}" value='@{viewModel.dataBean.wbNo}' /> @@ -60,7 +60,7 @@ android:layout_weight="1" enable="@{false}" title='@{"代 理 人"}' - titleLength="@{5}" + titleLength="@{7}" type="@{DataLayoutType.INPUT}" value='@{viewModel.dataBean.agentCode}' /> @@ -70,7 +70,7 @@ android:layout_weight="1" enable="@{false}" title='@{"特 码"}' - titleLength="@{5}" + titleLength="@{7}" type="@{DataLayoutType.INPUT}" value='@{viewModel.dataBean.spCode}' /> @@ -89,7 +89,7 @@ android:layout_weight="1" enable="@{false}" title='@{"提货编号"}' - titleLength="@{5}" + titleLength="@{7}" type="@{DataLayoutType.INPUT}" value='@{viewModel.dataBean.pkId}' /> @@ -99,7 +99,7 @@ android:layout_weight="1" enable="@{false}" title='@{"件数"}' - titleLength="@{5}" + titleLength="@{7}" type="@{DataLayoutType.INPUT}" value='@{String.valueOf(viewModel.dataBean.pc)}' /> @@ -109,7 +109,7 @@ android:layout_weight="1" enable="@{false}" title='@{"重量"}' - titleLength="@{5}" + titleLength="@{7}" type="@{DataLayoutType.INPUT}" value='@{String.valueOf(viewModel.dataBean.weight)}' /> @@ -128,7 +128,7 @@ android:layout_weight="1" enable="@{false}" title='@{"计费重量"}' - titleLength="@{5}" + titleLength="@{7}" type="@{DataLayoutType.INPUT}" value='@{String.valueOf(viewModel.dataBean.cashWeight)}' /> @@ -139,7 +139,7 @@ enable="@{true}" hint='@{"请输入信息费"}' title='@{"信息费"}' - titleLength="@{5}" + titleLength="@{7}" type="@{DataLayoutType.INPUT}" value='@={viewModel.tranChargeStr}' /> @@ -149,13 +149,13 @@ android:layout_weight="1" enable="@{false}" title='@{"服务费"}' - titleLength="@{5}" + titleLength="@{7}" type="@{DataLayoutType.INPUT}" value='@{String.valueOf(viewModel.dataBean.optCharge)}' /> - + @@ -178,9 +178,9 @@ android:layout_height="wrap_content" android:layout_weight="1" enable="@{true}" - hint='@{"请输入抽单费"}' - title='@{"抽单费"}' - titleLength="@{5}" + hint='@{"请输入文件处理费"}' + title='@{"文件处理费"}' + titleLength="@{7}" type="@{DataLayoutType.INPUT}" value='@={viewModel.drawBillChargeStr}' /> @@ -189,32 +189,21 @@ android:layout_height="wrap_content" android:layout_weight="1" enable="@{true}" - hint='@{"请输入冷藏费"}' - title='@{"冷藏费"}' - titleLength="@{5}" + hint='@{"请输入叉车费"}' + title='@{"叉车费"}' + titleLength="@{7}" type="@{DataLayoutType.INPUT}" - value='@={viewModel.efrChargeStr}' /> + value='@={viewModel.svlChargeStr}' /> - + - - @@ -230,11 +219,64 @@ android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" - enable="@{false}" - title='@{"总金额"}' - titleLength="@{5}" + enable="@{true}" + hint='@{"请输入精密仪器处理费"}' + title='@{"精密仪器处理费"}' + titleLength="@{7}" type="@{DataLayoutType.INPUT}" - value='@{String.valueOf(viewModel.dataBean.amount)}' /> + value='@={viewModel.precisionChargeStr}' /> + + + + + + + + + + + + + diff --git a/module_gjj/src/main/res/layout/activity_int_imp_pick_up_record_details.xml b/module_gjj/src/main/res/layout/activity_int_imp_pick_up_record_details.xml index e25e617..b64059d 100644 --- a/module_gjj/src/main/res/layout/activity_int_imp_pick_up_record_details.xml +++ b/module_gjj/src/main/res/layout/activity_int_imp_pick_up_record_details.xml @@ -41,34 +41,34 @@ android:orientation="horizontal"> + value='@{viewModel.dataBean.wbNo}' /> + value='@{viewModel.dataBean.agentCode}' /> + android:layout_weight="1" + enable="@{false}" + title='@{"特码"}' + titleLength="@{7}" + type="@{DataLayoutType.INPUT}" + value='@{viewModel.dataBean.spCode}' /> @@ -80,34 +80,34 @@ android:orientation="horizontal"> + value='@{viewModel.dataBean.pkId}' /> + value='@{String.valueOf(viewModel.dataBean.pc)}' /> + android:layout_weight="1" + enable="@{false}" + title='@{"重量"}' + titleLength="@{7}" + type="@{DataLayoutType.INPUT}" + value='@{String.valueOf(viewModel.dataBean.weight)}' /> @@ -119,38 +119,38 @@ android:orientation="horizontal"> + value='@{String.valueOf(viewModel.dataBean.cashWeight)}' /> + value='@{String.valueOf(viewModel.dataBean.tranCharge)}' /> + value='@{String.valueOf(viewModel.dataBean.optCharge)}' /> - + + value='@{String.valueOf(viewModel.dataBean.whsCharge)}' /> + android:layout_weight="1" + enable="@{false}" + title='@{"文件处理费"}' + titleLength="@{7}" + type="@{DataLayoutType.INPUT}" + value='@{String.valueOf(viewModel.dataBean.drawBillCharge)}' /> + android:layout_weight="1" + enable="@{false}" + title='@{"叉车费"}' + titleLength="@{7}" + type="@{DataLayoutType.INPUT}" + value='@{String.valueOf(viewModel.dataBean.svlCharge)}' /> - + - - + value='@{String.valueOf(viewModel.dataBean.tallyCharge)}' /> + android:layout_weight="1" + enable="@{false}" + title='@{"精密仪器处理费"}' + titleLength="@{7}" + type="@{DataLayoutType.INPUT}" + value='@{String.valueOf(viewModel.dataBean.precisionCharge)}' /> + + - + + + + value='@{viewModel.dataBean.chargeTime}' /> + value='@{viewModel.dataBean.chargeName}' /> + + + + + + android:layout_weight="1" + enable="@{false}" + title='@{"出库时间"}' + titleLength="@{7}" + type="@{DataLayoutType.INPUT}" + value='@{viewModel.dataBean.dlvTime}' /> + + + +