营养接口调试、支付接口联调
This commit is contained in:
@@ -34,6 +34,7 @@ import com.sw.dualscreen.ext.visible
|
||||
import com.sw.dualscreen.model.request.UserNutritionParam
|
||||
import com.sw.dualscreen.model.response.DinnerType
|
||||
import com.sw.dualscreen.model.response.FoodInfo
|
||||
import com.sw.dualscreen.model.response.UserEnergy
|
||||
import com.sw.dualscreen.model.response.UserNutrition
|
||||
import com.sw.dualscreen.model.response.UserNutritionData
|
||||
import com.sw.dualscreen.utils.Debouncer
|
||||
@@ -91,14 +92,14 @@ class MainScreenPresentation(
|
||||
private var irFaceRectTransformer: FaceRectTransformer? = null
|
||||
|
||||
private var detectWeight = 0.0 //识别菜品时的重量
|
||||
private var lastWeight = 0.0 // 上一次的计算热量结果
|
||||
var lastWeight = 0.0 // 上一次的计算热量结果
|
||||
|
||||
// private var userNutritionData: UserNutritionData? = null
|
||||
private var userNutrition: UserNutrition? = null
|
||||
private var dinnerTypeInfo: DinnerType? = null
|
||||
private val debouncer = Debouncer(500)
|
||||
private var recognitionTime: Long = 0L // 人脸识别时的时间
|
||||
private var recognitionWeight: Double = 0.0 // 人脸识别时的重量
|
||||
var recognitionWeight: Double = 0.0 // 人脸识别时的重量
|
||||
|
||||
private var lastFaceTrackId: Int = -1 // 上一次的人脸信息
|
||||
var mealPickupMode: Int = 0 // 取餐模式 0 即放即取 1 余量取餐
|
||||
@@ -342,7 +343,7 @@ class MainScreenPresentation(
|
||||
/**
|
||||
* 餐品识别成功,不计费模式
|
||||
*/
|
||||
fun loadUnbilledMode(nutrition: UserNutrition) {
|
||||
fun loadUnbilledMode() {
|
||||
binding.calorieInclude.root.gone()
|
||||
binding.nutritionInclude.root.visible()
|
||||
|
||||
@@ -354,9 +355,9 @@ class MainScreenPresentation(
|
||||
//binding.ivRecImage.gone()
|
||||
|
||||
//updateFoodInfo(foodInfo)
|
||||
binding.nutritionInclude.tvUserName.text = nutrition.name.maskName()
|
||||
binding.nutritionInclude.tvUserName.text = userNutrition?.name.maskName()
|
||||
binding.nutritionInclude.tvRecommendHeat.text =
|
||||
"推荐热量:${nutrition.recommendEnergy ?: 0}kcal"
|
||||
"推荐热量:${userNutrition?.recommendCalorie.format2String(2)}kcal"
|
||||
//updateWeight(lastWeight / 1000)
|
||||
// -------------------------------------------------
|
||||
// 删除userNutritionData,改为userNutrition
|
||||
@@ -524,100 +525,107 @@ class MainScreenPresentation(
|
||||
val dinnerType = dinnerTypeInfo!!.dinnerType!!
|
||||
// Timber.tag(TAG)
|
||||
// .d("calculateNutrition foodName = ${currentFood!!.foodName}, dinnerType = $dinnerType, userId = ${userNutritionData!!.userId}")
|
||||
val calcResultInfo = UserNutritionUtils.calculateNutrition2(
|
||||
val energy: UserEnergy = UserNutritionUtils.calculateNutrition2(
|
||||
currentFood!!,
|
||||
// userNutritionData!!,
|
||||
userNutrition!!,
|
||||
weight,
|
||||
dinnerType = dinnerType
|
||||
)
|
||||
Timber.tag(TAG).d("calculateNutrition calcResultInfo = $calcResultInfo")
|
||||
val columnMax = UserNutritionUtils.getMaxInt(calcResultInfo)
|
||||
// Timber.tag(TAG).d("calculateNutrition calcResultInfo = $calcResultInfo")
|
||||
// val columnMax = UserNutritionUtils.getMaxInt(calcResultInfo)
|
||||
var columnMax = max(energy.grain, energy.fruitsVegetables)
|
||||
columnMax = max(columnMax, energy.meatEggs)
|
||||
|
||||
activity.runOnUiThread {
|
||||
val totalKcal = calcResultInfo.totalKcal
|
||||
val grain = calcResultInfo.grain
|
||||
val fruits = calcResultInfo.fruits
|
||||
val meat = calcResultInfo.meat
|
||||
// 设置热量
|
||||
binding.nutritionInclude.customKcalColumn.setImageDrawable(
|
||||
true,
|
||||
totalKcal.max < totalKcal.current
|
||||
)
|
||||
var maxKcal = totalKcal.max
|
||||
val totalKcal = energy.calorie
|
||||
val grain = energy.grain
|
||||
val fruitsVegetables = energy.fruitsVegetables
|
||||
val meatEggs = energy.meatEggs
|
||||
|
||||
val include = binding.nutritionInclude
|
||||
|
||||
// 设置热量---------------------------------------------------------------------
|
||||
val calorieArray = doubleArrayOf(
|
||||
0.0,
|
||||
userNutrition?.minCalorie?:0.0,
|
||||
userNutrition?.recommendCalorie?:0.0,
|
||||
((userNutrition?.recommendCalorie?:0.0) + (userNutrition?.maxCalorie?:0.0))/2,
|
||||
userNutrition?.maxCalorie?:0.0,
|
||||
)
|
||||
val calorieIndex = UserNutritionUtils.findCalorieIndex(energy.grain, calorieArray)
|
||||
include.customKcalColumn.setImageDrawable(true, calorieIndex)
|
||||
var maxKcal = userNutrition?.maxCalorie?:1.0
|
||||
Timber.tag(TAG).d("maxKcal = $maxKcal")
|
||||
// 避免0作为被除数
|
||||
if (maxKcal <= 0.0) {
|
||||
maxKcal = 1.0
|
||||
}
|
||||
Timber.tag(TAG).d("maxKcal 1 = $maxKcal")
|
||||
binding.nutritionInclude.totalKcalTv.text = totalKcal.current.format2String()
|
||||
var totalKcalHeight = (totalKcal.current / maxKcal).toFloat()
|
||||
include.totalKcalTv.text = totalKcal.format2String(2)
|
||||
var totalKcalHeight = (totalKcal / maxKcal).toFloat()
|
||||
if (totalKcalHeight == 0F) {
|
||||
binding.nutritionInclude.divKcalView.visibility = View.VISIBLE
|
||||
include.divKcalView.visibility = View.VISIBLE
|
||||
} else {
|
||||
binding.nutritionInclude.divKcalView.visibility = View.GONE
|
||||
include.divKcalView.visibility = View.GONE
|
||||
totalKcalHeight += 0.1F
|
||||
}
|
||||
binding.nutritionInclude.customKcalColumn.setCustomHeightPercent(
|
||||
totalKcalHeight,
|
||||
true
|
||||
)
|
||||
include.customKcalColumn.setCustomHeightPercent(totalKcalHeight, true)
|
||||
|
||||
// 设置主食
|
||||
binding.nutritionInclude.customFoodColumn.setImageDrawable(
|
||||
false,
|
||||
grain.max < grain.current
|
||||
// 设置主食-----------------------------------------------------------
|
||||
val grainArray = UserNutritionUtils.getCalorieArray(
|
||||
left = userNutrition?.stapleFoodRecommend,
|
||||
mid = userNutrition?.stapleFoodNearExcess,
|
||||
right = userNutrition?.stapleFoodExcess
|
||||
)
|
||||
binding.nutritionInclude.totalFoodTv.text = grain.current.format2String()
|
||||
var grainHeight = (grain.current / columnMax).toFloat()
|
||||
val grainIndex = UserNutritionUtils.findCalorieIndex(energy.grain, grainArray)
|
||||
include.customFoodColumn.setImageDrawable(false, grainIndex)
|
||||
include.totalFoodTv.text = grain.format2String(2)
|
||||
var grainHeight = (grain / columnMax).toFloat()
|
||||
if (grainHeight == 0F) {
|
||||
binding.nutritionInclude.divTotalFoodView.visibility = View.VISIBLE
|
||||
include.divTotalFoodView.visibility = View.VISIBLE
|
||||
} else {
|
||||
binding.nutritionInclude.divTotalFoodView.visibility = View.GONE
|
||||
include.divTotalFoodView.visibility = View.GONE
|
||||
grainHeight += 0.1F
|
||||
}
|
||||
binding.nutritionInclude.customFoodColumn.setCustomHeightPercent(
|
||||
grainHeight,
|
||||
true
|
||||
)
|
||||
include.customFoodColumn.setCustomHeightPercent(grainHeight, true)
|
||||
|
||||
// 设置果蔬
|
||||
binding.nutritionInclude.customVegetableColumn.setImageDrawable(
|
||||
false,
|
||||
fruits.max < fruits.current
|
||||
// 设置果蔬-------------------------------------------------------------
|
||||
val fruitsArray = UserNutritionUtils.getCalorieArray(
|
||||
left = userNutrition?.fruitsVegetablesRecommend,
|
||||
mid = userNutrition?.fruitsVegetablesNearExcess,
|
||||
right = userNutrition?.fruitsVegetablesExcess
|
||||
)
|
||||
binding.nutritionInclude.totalVegetableTv.text = fruits.current.format2String()
|
||||
var fruitsHeight = (fruits.current / columnMax).toFloat()
|
||||
val fruitsIndex = UserNutritionUtils.findCalorieIndex(energy.fruitsVegetables, fruitsArray)
|
||||
include.customVegetableColumn.setImageDrawable(false, fruitsIndex)
|
||||
include.totalVegetableTv.text = fruitsVegetables.format2String(2)
|
||||
var fruitsHeight = (fruitsVegetables / columnMax).toFloat()
|
||||
|
||||
if (fruitsHeight == 0F) {
|
||||
binding.nutritionInclude.divVegetableView.visibility = View.VISIBLE
|
||||
include.divVegetableView.visibility = View.VISIBLE
|
||||
} else {
|
||||
binding.nutritionInclude.divVegetableView.visibility = View.GONE
|
||||
include.divVegetableView.visibility = View.GONE
|
||||
fruitsHeight += 0.1F
|
||||
}
|
||||
binding.nutritionInclude.customVegetableColumn.setCustomHeightPercent(
|
||||
fruitsHeight,
|
||||
true
|
||||
)
|
||||
include.customVegetableColumn.setCustomHeightPercent(fruitsHeight, true)
|
||||
|
||||
// 设置肉蛋
|
||||
binding.nutritionInclude.customMeatColumn.setImageDrawable(
|
||||
false,
|
||||
meat.max < meat.current
|
||||
// 设置肉蛋-----------------------------------------------------------
|
||||
val meatEggsArray = UserNutritionUtils.getCalorieArray(
|
||||
left = userNutrition?.meatEggsRecommend,
|
||||
mid = userNutrition?.meatEggsNearExcess,
|
||||
right = userNutrition?.meatEggsExcess
|
||||
)
|
||||
binding.nutritionInclude.totalMeatTv.text = meat.current.format2String()
|
||||
var meatHeight = (meat.current / columnMax).toFloat()
|
||||
val meatEggsIndex = UserNutritionUtils.findCalorieIndex(energy.meatEggs, meatEggsArray)
|
||||
include.customMeatColumn.setImageDrawable(false, meatEggsIndex)
|
||||
include.totalMeatTv.text = meatEggs.format2String(2)
|
||||
var meatHeight = (meatEggs / columnMax).toFloat()
|
||||
if (meatHeight == 0F) {
|
||||
binding.nutritionInclude.divMeatView.visibility = View.VISIBLE
|
||||
include.divMeatView.visibility = View.VISIBLE
|
||||
} else {
|
||||
binding.nutritionInclude.divMeatView.visibility = View.GONE
|
||||
include.divMeatView.visibility = View.GONE
|
||||
meatHeight += 0.1F
|
||||
}
|
||||
binding.nutritionInclude.customMeatColumn.setCustomHeightPercent(
|
||||
meatHeight,
|
||||
true
|
||||
)
|
||||
include.customMeatColumn.setCustomHeightPercent(meatHeight, true)
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -718,7 +726,7 @@ class MainScreenPresentation(
|
||||
val faceEntity = compareResult.faceEntity
|
||||
val userId = faceEntity.userName
|
||||
if (userId == null) return@Observer
|
||||
ToastUtils.showToast("人脸识别成功,userId = $userId")
|
||||
//ToastUtils.showToast("人脸识别成功,userId = $userId")
|
||||
if (currentFood == null) {
|
||||
currentFood = activity.checkedItem
|
||||
}
|
||||
@@ -737,7 +745,7 @@ class MainScreenPresentation(
|
||||
return@runOnUiThread
|
||||
}
|
||||
this@MainScreenPresentation.userNutrition = nutrition
|
||||
loadUnbilledMode(nutrition)
|
||||
loadUnbilledMode()
|
||||
// -------------------------------
|
||||
}
|
||||
}
|
||||
@@ -1058,10 +1066,14 @@ class MainScreenPresentation(
|
||||
.d("postUserData userNutritionData = ${userNutrition == null}, currentFood = ${currentFood == null}")
|
||||
return
|
||||
}
|
||||
var eatWeight = 0.0
|
||||
eatWeight = if (mealPickupMode == 0) {
|
||||
createOrder()
|
||||
}
|
||||
|
||||
fun createOrder() {
|
||||
mealPickupMode = SPUtil.getInstance().get(GlobalKey.KEY_PICKUP_MODE, 0) ?: 0
|
||||
val eatWeight = if (mealPickupMode == 0) {
|
||||
//即放即取
|
||||
recognitionWeight - 0
|
||||
recognitionWeight
|
||||
} else {
|
||||
recognitionWeight - lastWeight
|
||||
}
|
||||
@@ -1084,4 +1096,5 @@ class MainScreenPresentation(
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user