diff --git a/app/src/main/java/com/shuwei/intelligent/shelves/activity/HomeV2Activity.kt b/app/src/main/java/com/shuwei/intelligent/shelves/activity/HomeV2Activity.kt index 74f2ed9..67bbe47 100644 --- a/app/src/main/java/com/shuwei/intelligent/shelves/activity/HomeV2Activity.kt +++ b/app/src/main/java/com/shuwei/intelligent/shelves/activity/HomeV2Activity.kt @@ -38,6 +38,7 @@ import com.shuwei.intelligent.shelves.serial.ScaleManager import com.shuwei.intelligent.shelves.utils.GridLayoutTool import com.shuwei.intelligent.shelves.utils.IntervalExecutor import com.shuwei.intelligent.shelves.utils.ext.gone +import com.shuwei.intelligent.shelves.utils.ext.toJsonString import com.shuwei.intelligent.shelves.utils.ext.toast import com.shuwei.intelligent.shelves.utils.ext.visible import kotlinx.coroutines.Job @@ -83,17 +84,21 @@ class HomeV2Activity : BaseActivity() { .onHeartbeat { _, data -> data.weights.forEach { weight -> val shelfNo = weight.index - if (shelfNo in 1..list.size) { - // 用 slotNo 末尾数字与串口编号匹配 - list.firstOrNull { - it.slotNo?.filter { c -> c.isDigit() }?.toIntOrNull() == shelfNo - }?.let { model -> - val pos = list.indexOf(model) - shelfAdapter.notifyItemChanged(pos) - log("getWeightInfo: slotNo=${model.slotNo},realWeight=${weight.grams}") - EventBus.getDefault().post(SendWeightEvent(shelfNo, weight.grams)) - } +// if (shelfNo in 1..list.size) { + // 用 slotNo 末尾数字与串口编号匹配 + val pos = list.indexOfFirst { + it.slotNo?.filter { c -> c.isDigit() }?.toIntOrNull() == shelfNo } + val model = list.getOrNull(pos)?:return@forEach + if (model.itemType == 1) { + model.actualQty = (weight.grams / 1000.0).toBigDecimal() + } else { + model.totalWeightG = weight.grams.toBigDecimal() + } + shelfAdapter.notifyItemChanged(pos) + log("getWeightInfo: slotNo=${model.slotNo},realWeight=${weight.grams}, item:${model.toJsonString()}") + EventBus.getDefault().post(SendWeightEvent(shelfNo, weight.grams)) +// } } } .onTempReport { _ -> @@ -166,7 +171,9 @@ class HomeV2Activity : BaseActivity() { private fun showProgress() { Loading.show(this) } - private var cabinetInitResult:CabinetInitResult?=null + + private var cabinetInitResult: CabinetInitResult? = null + @SuppressLint("NotifyDataSetChanged") private fun updateUI(data: RespData<*>) { binding.include?.root?.gone() diff --git a/app/src/main/java/com/shuwei/intelligent/shelves/adapter/ShelfV2Adapter.kt b/app/src/main/java/com/shuwei/intelligent/shelves/adapter/ShelfV2Adapter.kt index 531e439..271d34c 100644 --- a/app/src/main/java/com/shuwei/intelligent/shelves/adapter/ShelfV2Adapter.kt +++ b/app/src/main/java/com/shuwei/intelligent/shelves/adapter/ShelfV2Adapter.kt @@ -29,22 +29,19 @@ class ShelfV2Adapter(list: MutableList) : val binding = holder.binding // 格口编号 - binding.tvShelfName.text = item.slotNo?.padStart(2,'0') + binding.tvShelfName.text = item.slotNo?.padStart(2, '0') // 临期预警(slotStatus=2)显示过期图标 if (item.slotStatus.toInt() == 2) binding.ivStaleFood.visible() else binding.ivStaleFood.gone() // 重量:itemType=2 用 totalWeightG(g),itemType=1 用 actualQty×1000(g) - val weightG: Double = when (item.itemType.toInt()) { - 2 -> item.totalWeightG?.toDouble() ?: 0.0 - 1 -> (item.actualQty?.toDouble() ?: 0.0) * 1000.0 - else -> 0.0 - } + val weightG = if (item.itemType == 1) (item.actualQty?.toDouble() ?: 0.0) * 1000.0 + else item.totalWeightG?.toDouble() ?: 0.0 binding.tvFoodWeight.run { setTextColor(getColor(R.color.food_weight_orange)) text = if (abs(weightG) < 1000) "${weightG.toInt()}克" - else "%.3f千克".format(weightG / 1000.0) + else "%.3f千克".format(weightG / 1000.0) } val isBlank = item.itemName.isNullOrBlank() diff --git a/app/src/main/java/com/shuwei/intelligent/shelves/base/BaseActivity.kt b/app/src/main/java/com/shuwei/intelligent/shelves/base/BaseActivity.kt index 930004b..9dabf3a 100644 --- a/app/src/main/java/com/shuwei/intelligent/shelves/base/BaseActivity.kt +++ b/app/src/main/java/com/shuwei/intelligent/shelves/base/BaseActivity.kt @@ -112,7 +112,7 @@ open class BaseActivity : AppCompatActivity() { } // 5分钟 - private val TIME_OUT: Long = (5 * 60 * 1000).toLong() + private val TIME_OUT: Long = (1 * 60 * 1000).toLong() private val mHandler by lazy { Handler(Looper.getMainLooper()) } private val mTimeoutRunnable = Runnable { // 用户长时间无操作时回调,子类可覆写实现具体逻辑(如关灯) diff --git a/app/src/main/java/com/shuwei/intelligent/shelves/model/ShelfModelV2.kt b/app/src/main/java/com/shuwei/intelligent/shelves/model/ShelfModelV2.kt index e359def..1beb751 100644 --- a/app/src/main/java/com/shuwei/intelligent/shelves/model/ShelfModelV2.kt +++ b/app/src/main/java/com/shuwei/intelligent/shelves/model/ShelfModelV2.kt @@ -9,7 +9,7 @@ import java.math.BigDecimal data class ShelfModelV2( var id: Long = 0, /** 类型:1-食材净菜 / 2-餐品净菜包 */ - var itemType: Short = 0, + var itemType: Int = 0, /** 格口编号 */ var slotNo: String? = "", /** 格口所在柜子编号 */