From 77b89c700956f04eb1dae75e2d194093f1a473f2 Mon Sep 17 00:00:00 2001 From: lvmeng <848755140@qq.com> Date: Wed, 17 Sep 2025 09:58:33 +0800 Subject: [PATCH] =?UTF-8?q?=E5=8A=9F=E8=83=BD=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../shuwei/dish/match/dialog/BottomDialog2.kt | 16 ++- .../dish/match/ui/DeviceConfigActivity.kt | 12 +- .../dish/match/ui/DishSamplingActivity.kt | 17 ++- .../dish/match/ui/PrepareCookActivity.kt | 14 +- .../dish/match/ui/SubmitFoodActivity.kt | 13 +- .../com/shuwei/dish/match/utils/WeightUtil.kt | 128 ++++++------------ .../res/layout/activity_device_config.xml | 12 +- .../main/res/layout/activity_submit_food.xml | 2 +- 8 files changed, 88 insertions(+), 126 deletions(-) diff --git a/app/src/main/java/com/shuwei/dish/match/dialog/BottomDialog2.kt b/app/src/main/java/com/shuwei/dish/match/dialog/BottomDialog2.kt index bce6dc0..11cc48f 100644 --- a/app/src/main/java/com/shuwei/dish/match/dialog/BottomDialog2.kt +++ b/app/src/main/java/com/shuwei/dish/match/dialog/BottomDialog2.kt @@ -46,7 +46,7 @@ class BottomDialog2( private var clickName: String? = null ) { companion object { - const val TAG = "BottomDialog" + const val TAG = "BottomDialog2" } private val goodsType: Int = 1 @@ -136,12 +136,14 @@ class BottomDialog2( // WeightUtil.tareTwo(num+1) // } } - WeightUtil.addWeightListener { address, state, weight -> - if (weighAddress == address) { - this.currentWeight = weight.toDouble() - binding.tvWeight.text = getTextSpan(weight) - } - } + WeightUtil.addWeightListener ( + weightKey = TAG, + getWeight = { address, state, weight -> + if (weighAddress == address) { + this.currentWeight = weight.toDouble() + binding.tvWeight.text = getTextSpan(weight) + } + }) binding.tvWeight.text = getTextSpan(0) if (clickName.isNullOrBlank().not()) { diff --git a/app/src/main/java/com/shuwei/dish/match/ui/DeviceConfigActivity.kt b/app/src/main/java/com/shuwei/dish/match/ui/DeviceConfigActivity.kt index 9b498cc..29e5464 100644 --- a/app/src/main/java/com/shuwei/dish/match/ui/DeviceConfigActivity.kt +++ b/app/src/main/java/com/shuwei/dish/match/ui/DeviceConfigActivity.kt @@ -132,17 +132,15 @@ class DeviceConfigActivity : BaseActivity() { startActivity { } finish() } + addWeighListener() addGridItemListener() loadSeasoning() - addWeighListener() } private fun addWeighListener() { - WeightUtil.addWeightListener(onConnect = { state -> - binding.viewPoint.setBackgroundResource( - if (state) R.drawable.bg_circle_green else R.drawable.bg_circle_red - ) - }, getWeight = { address, state, weight -> + WeightUtil.addWeightListener( + weightKey = TAG, + getWeight = { address, state, weight -> Log.d(TAG, "addWeighListener: address=$address,stat=$state,weight=$weight") weightArray.put(address, weight) val item = seasoningItems.firstOrNull { address == addressArray[it.sort] } @@ -150,7 +148,7 @@ class DeviceConfigActivity : BaseActivity() { it.useWeight = weight.toDouble() updateGridData(it) } - //setGridData(seasoningItems) + Log.d(TAG, "addWeighListener: update-----------------------") }) } diff --git a/app/src/main/java/com/shuwei/dish/match/ui/DishSamplingActivity.kt b/app/src/main/java/com/shuwei/dish/match/ui/DishSamplingActivity.kt index 8b76b9f..b76f311 100644 --- a/app/src/main/java/com/shuwei/dish/match/ui/DishSamplingActivity.kt +++ b/app/src/main/java/com/shuwei/dish/match/ui/DishSamplingActivity.kt @@ -61,6 +61,16 @@ class DishSamplingActivity : BaseActivity() { initViewModel() foodName = intent.getStringExtra(FOOD_NAME) binding.etInputDish.setText(foodName) + + WeightUtil.addWeightListener( + weightKey = TAG, + getWeight = { address, state, weight -> + //Log.d(TAG, "addViewClickListener: address=$address,state=$state,weight=$weight") + if (address == AddressUtil.ONE) { + tempDishEntity?.useWeight = weight.toDouble() + binding.tvDishPartWeight.text = "${weight}" + } + }) } private fun setTitleBar() { @@ -166,13 +176,6 @@ class DishSamplingActivity : BaseActivity() { binding.ivWeightClear.setOnClickListener { WeightUtil.tareTwo(AddressUtil.ONE) } - WeightUtil.addWeightListener(getWeight = { address, state, weight -> - //Log.d(TAG, "addViewClickListener: address=$address,state=$state,weight=$weight") - if (address == AddressUtil.ONE) { - tempDishEntity?.useWeight = weight.toDouble() - binding.tvDishPartWeight.text = "${weight}" - } - }) binding.ivWeightAdd.setOnClickListener { if (tempDishEntity == null) { toast("请输入食材名称") diff --git a/app/src/main/java/com/shuwei/dish/match/ui/PrepareCookActivity.kt b/app/src/main/java/com/shuwei/dish/match/ui/PrepareCookActivity.kt index fb47968..ae8cbb7 100644 --- a/app/src/main/java/com/shuwei/dish/match/ui/PrepareCookActivity.kt +++ b/app/src/main/java/com/shuwei/dish/match/ui/PrepareCookActivity.kt @@ -73,15 +73,17 @@ class PrepareCookActivity : BaseActivity() { } private fun addViewClickListener() { + WeightUtil.addWeightListener( + weightKey = TAG, + getWeight = { address, state, weight -> + //Log.d(TAG, "addViewClickListener: address=$address,state=$state,weight=$weight") + if (address == AddressUtil.ONE) { + binding.tvDishPartWeight.text = "${weight}" + } + }) binding.ivWeightClear.setOnClickListener { WeightUtil.tareTwo(AddressUtil.ONE) } - WeightUtil.addWeightListener(getWeight = { address, state, weight -> - //Log.d(TAG, "addViewClickListener: address=$address,state=$state,weight=$weight") - if (address == AddressUtil.ONE) { - binding.tvDishPartWeight.text = "${weight}" - } - }) binding.ivWeightAdd.setOnClickListener { if (clickIndex == -1) { toast("请选择菜品构成") diff --git a/app/src/main/java/com/shuwei/dish/match/ui/SubmitFoodActivity.kt b/app/src/main/java/com/shuwei/dish/match/ui/SubmitFoodActivity.kt index 3c56cdd..9e34d0f 100644 --- a/app/src/main/java/com/shuwei/dish/match/ui/SubmitFoodActivity.kt +++ b/app/src/main/java/com/shuwei/dish/match/ui/SubmitFoodActivity.kt @@ -99,8 +99,15 @@ class SubmitFoodActivity : BaseActivity() { private fun loadSeasoningFromLocal() { appViewModel.getCookFoodGoodsList(foodId = food!!.foodId!!, cookMode = food!!.cookMode) { it -> goodsList = mutableListOf() + val goodsIdList = mutableListOf() //设置主辅材数据 - goodsList?.addAll(it.filter { goods -> goods.materialType != 3 }) + val tempList = it.filter { goods -> goods.materialType != 3 } + tempList.forEach { + if (!goodsIdList.contains(it.goodsId)) { + goodsList?.add(it) + goodsIdList.add(it.goodsId) + } + } //获取调料数据并展示 val filterList: List? = it.filter { goods -> goods.materialType == 3 } @@ -166,7 +173,9 @@ class SubmitFoodActivity : BaseActivity() { } private fun addWeightListener() { - WeightUtil.addWeightListener(getWeight = { address, state, weight -> + WeightUtil.addWeightListener( + weightKey = TAG, + getWeight = { address, state, weight -> if (address == AddressUtil.TWO) { cookFoodEntity.foodWeight = weight.toDouble() binding.tvTotalWeight.text = "${weight / 1000f}" diff --git a/app/src/main/java/com/shuwei/dish/match/utils/WeightUtil.kt b/app/src/main/java/com/shuwei/dish/match/utils/WeightUtil.kt index 7136202..2b357d8 100644 --- a/app/src/main/java/com/shuwei/dish/match/utils/WeightUtil.kt +++ b/app/src/main/java/com/shuwei/dish/match/utils/WeightUtil.kt @@ -10,73 +10,25 @@ import com.wabon.wbintelligenthardwaresdk.api.SensorScale object WeightUtil { var isConnected = false + var weightFuncMap: MutableMap Unit)?>? = null fun init() { Weigher.init() -// Weigher.setListener(object : WeightListenerImpl() { -// override fun onInit(connect: Boolean) { -// Log.d("WeightUtil", "connect=$connect") -// } -// -// override fun onZero() { -// Log.d("WeightUtil", "zero ok") -// } -// -// override fun onTare() { -// Log.d("WeightUtil", "去皮置零操作成功") -// } -// -// override fun onSetIdentify() { -// Log.d("WeightUtil", "鉴别率设置操作成功") -// } -// -// override fun onGetWeight(address: Int, state: Int, weight: Int) { -// runOnUiThread { -// val stateStr = when (state) { -// SensorScale.STATE_STABLE -> "稳定" -// SensorScale.STATE_UNSTABLE -> "不稳定" -// SensorScale.STATE_OVER_WEIGHT -> "量程溢出" -// else -> "" -// } -// val result1 = String.format("$stateStr 重量:%s kg", weight / 1000f) -// Log.d("WeightUtil", "ttlReturn, address:$address,$result1") -//// weightArray.put(address, weight) -// } -// } -// -// override fun onReadIdentify(rate: Int) { -// Log.d("WeightUtil", "读取鉴别率成功:rate=$rate") -// } -// -// override fun onFail(errCode: Int) { -// val str = when (errCode) { -// Weigher.ERR_001 -> "电子称未初始化" -// Weigher.ERR_002 -> "开机零位异常" -// Weigher.ERR_003 -> "传感器故障" -// Weigher.ERR_004 -> "鉴别率超出范围" -// Weigher.ERR_PCB_NOT_SUPPORT -> "主板不支持, " + Build.MODEL -// else -> "" -// } -// Log.d("WeightUtil", str) -// } -// -// override fun onFastFilter() { -// Log.d("WeightUtil", "快速滤波设置成功") -// } -// -// override fun onReadParam() { -// Log.d("WeightUtil", "prepare ok") -// } -// -// override fun onRangCal() { -// Log.d("WeightUtil", "rang cal ok") -// } -// -// override fun onSetParam() { -// Log.d("WeightUtil", "onSetParam") -// } -// }) + Weigher.setListener(object : WeightListenerImpl() { + override fun onInit(connect: Boolean) { + super.onInit(connect) + isConnected = connect + } + + override fun onGetWeight(address: Int, state: Int, weight: Int) { + super.onGetWeight(address, state, weight) + weightFuncMap?.forEach { (key, value) -> + value?.invoke(address, state, weight) + } + + } + }) } fun getWeight() { @@ -98,51 +50,46 @@ object WeightUtil { } fun addWeightListener( - onConnect: (state: Boolean) -> Unit = {}, - zero: () -> Unit = {}, + weightKey:String, getWeight: ((address: Int, state: Int, weight: Int) -> Unit) = { _, _, _ -> } ) { - Weigher.setListener(object : WeightListenerImpl() { - override fun onInit(connect: Boolean) { - super.onInit(connect) - onConnect(connect) - } - - override fun onZero() { - zero() - } - - override fun onGetWeight(address: Int, state: Int, weight: Int) { - getWeight(address, state, weight) - } - }) + if (weightFuncMap == null) { + weightFuncMap = mutableMapOf() + } + weightFuncMap?.put(weightKey, getWeight) } - } open class WeightListenerImpl : Weigher.Listener { override fun onInit(connect: Boolean) { - + Log.d("WeightUtil", "connect=$connect") } override fun onZero() { - + Log.d("WeightUtil", "zero ok") } override fun onTare() { - + Log.d("WeightUtil", "去皮置零操作成功") } override fun onSetIdentify() { - + Log.d("WeightUtil", "鉴别率设置操作成功") } override fun onGetWeight(address: Int, state: Int, weight: Int) { - + val stateStr = when (state) { + SensorScale.STATE_STABLE -> "稳定" + SensorScale.STATE_UNSTABLE -> "不稳定" + SensorScale.STATE_OVER_WEIGHT -> "量程溢出" + else -> "" + } + val result1 = String.format("$stateStr 重量:%s kg", weight / 1000f) + Log.d("WeightUtil", "ttlReturn, address:$address,$result1") } override fun onReadIdentify(rate: Int) { - + Log.d("WeightUtil", "读取鉴别率成功:rate=$rate") } override fun onFail(errCode: Int) { @@ -158,19 +105,20 @@ open class WeightListenerImpl : Weigher.Listener { } override fun onFastFilter() { - + Log.d("WeightUtil", "快速滤波设置成功") } override fun onReadParam() { - + Log.d("WeightUtil", "prepare ok") } override fun onRangCal() { - + Log.d("WeightUtil", "rang cal ok") } override fun onSetParam() { - + Log.d("WeightUtil", "onSetParam") } + } \ No newline at end of file diff --git a/app/src/main/res/layout/activity_device_config.xml b/app/src/main/res/layout/activity_device_config.xml index 8304f3e..de4fc04 100644 --- a/app/src/main/res/layout/activity_device_config.xml +++ b/app/src/main/res/layout/activity_device_config.xml @@ -126,12 +126,12 @@ android:textColor="@color/gray_b4" android:textSize="28sp" /> - + + + + + +