fix(prepareCook): 修复食材选择和数据处理逻辑

- 修复了食材选择回调中的变量命名问题,统一使用 entity 替代 item
- 改进了食材名称解析逻辑,正确提取 WP 标识符和食材名称
- 为食材 ID 提取添加了边界情况处理,避免数组越界异常
- 添加了调试日志以便追踪食材查询结果
- 优化了食材列表数据结构的构建过程
This commit is contained in:
2026-04-21 09:46:15 +08:00
parent e175893790
commit 6b312ec689
@@ -209,14 +209,14 @@ class PrepareCookActivity : BaseActivity() {
* - list 中不含该 goodsId:直接新增,isNewDishType = true
* - list 中已含该 goodsId:累加 useWeight
*/
private val foodSelectCallback: (CookFoodGoodsEntity) -> Unit = { item ->
val existing = list.firstOrNull { it.goodsId == item.goodsId }
private val foodSelectCallback: (CookFoodGoodsEntity) -> Unit = { entity ->
val existing = list.firstOrNull { it.goodsId == entity.goodsId }
if (existing != null) {
existing.useWeight = (existing.useWeight ?: 0.0) + (item.useWeight ?: 0.0)
existing.useWeight = (existing.useWeight ?: 0.0) + (entity.useWeight ?: 0.0)
existing.isSetFinished = true
dishPartAdapter.notifyItemChanged(list.indexOf(existing))
} else {
list.add(item.also {
list.add(entity.also {
it.isNewDishType = true
it.isSetFinished = true
})
@@ -477,10 +477,19 @@ class PrepareCookActivity : BaseActivity() {
//调用接口成功,返回食材列表设置isTakingPhoto.set(false),暂时写死数据
val foodList = mutableListOf<CookFoodGoodsEntity>()
list.forEachIndexed { index, food ->
val foodName = food.name.split("WP").first()
var foodName = ""
var foodId = ""
food.name.split("WP").let {
foodName = it[0]
foodId = if (it.size > 1) {
"WP${it[1]}"
} else {
food.name
}
}
foodList.add(
CookFoodGoodsEntity(
goodsId = "${food.id}",
goodsId = foodId,
goodsName = foodName,
foodId = index.toString()
).also {
@@ -493,12 +502,13 @@ class PrepareCookActivity : BaseActivity() {
activity = this,
imageUri = lastPhotoUri?.toString(),
goodsList = ArrayList(foodList),
finishCallback = { isManualCancel, item ->
finishCallback = { isManualCancel, entity ->
Log.d(TAG, "queryFood: isManualCancel=$isManualCancel, entity=${entity.toJsonString()}")
manualCancelFlag = isManualCancel
if (isManualCancel) {
return@start
}
item?.let {
entity?.let {
foodSelectCallback(it)
}
}