Sfoglia il codice sorgente

011D 涂鸦云 自动程序跳转,历史记录本地数据

zhangshenjie 2 mesi fa
parent
commit
111bc43678
19 ha cambiato i file con 492 aggiunte e 158 eliminazioni
  1. 5 1
      BusinessAirFryer/src/main/assets/tuya_config.json
  2. 2 0
      BusinessCommon/src/main/java/com/develop/common/tag/CommonTag.kt
  3. 3 3
      BusinessCommon/src/main/java/com/develop/common/utils/AppVersionUtil.kt
  4. 47 8
      BusinessCommon/src/main/java/com/develop/common/utils/CommonUtils.kt
  5. 4 0
      BusinessCommon/src/main/java/com/develop/common/utils/GsonUtils.java
  6. 1 1
      BusinessCommon/src/main/java/com/develop/common/utils/TuyaUtilsSo.java
  7. 64 52
      BusinessCommon/src/main/java/com/develop/common/widget/FoodContentView.kt
  8. 1 4
      BusinessMain/src/main/java/com/develop/main/ui/HomeActivity.kt
  9. 0 5
      BusinessMain/src/main/java/com/develop/main/ui/ModeEntranceActivity.kt
  10. 3 3
      BusinessMain/src/main/java/com/develop/main/viewmodel/HomeViewModel.kt
  11. 3 3
      BusinessSetting/src/main/java/com/develop/setting/ui/AboutActivity.kt
  12. 10 0
      BusinessStep/src/main/java/com/develop/step/TuyaCookStepType.java
  13. 112 6
      BusinessStep/src/main/java/com/develop/step/ui/FoodListActivity.kt
  14. 5 2
      BusinessStep/src/main/java/com/develop/step/ui/ModesDetailActivity.kt
  15. 94 64
      BusinessStep/src/main/java/com/develop/step/ui/cook_step/CookStepActivity.kt
  16. 42 0
      BusinessStep/src/main/java/com/develop/step/ui/cook_step/CookStepBaseActivity.kt
  17. 27 4
      BusinessStep/src/main/java/com/develop/step/viewmodel/CookDetailViewModel.kt
  18. 69 2
      BusinessStep/src/main/java/com/develop/step/viewmodel/FoodListViewModel.kt
  19. BIN
      libThirdPart/libs/cofar-cooking-device-sdk-0.0.1-SNAPSHOT.jar

+ 5 - 1
BusinessAirFryer/src/main/assets/tuya_config.json

@@ -20,7 +20,11 @@
       "uid": "uuidfd3160911dacd1f4",
       "ak": "MwlibMlczBaYhtz67ihr3OkSpAU3aPzf"
     },
-
+    "011D10390020123010190023": {
+      "pid": "xkt4eqycakmkofec",
+      "uid": "uuid8184304f15c5e11d",
+      "ak": "XsoGcwW2dRSZCQIxbA1w97yfTR9ZReXT"
+    },
     "011A10390020123010190111": {
       "pid": "xkt4eqycakmkofec",
       "uid": "uuid1bb4c5b06b8f612d",

+ 2 - 0
BusinessCommon/src/main/java/com/develop/common/tag/CommonTag.kt

@@ -36,6 +36,8 @@ const val LOGIN_TAG = "LOGIN_TAG"
 const val CURRENT_USER_ID_TAG = "CURRENT_USER_ID"
 const val MODEL = "MODEL"
 const val ISTUYA = "isTuya"
+const val HISTORYRECIPES = "history_recipes"
+
 
 const val EN = "EN"
 const val ZH = "ZH"

+ 3 - 3
BusinessCommon/src/main/java/com/develop/common/utils/AppVersionUtil.kt

@@ -327,9 +327,9 @@ object AppVersionUtil {
                     Log.d("TAG update", "isUpdateFile1111111--------  文件存在 ")
 
                     //删除room数据库
-//                    deleteRoomDb(context)
-//                    //删除sd卡的东西
-//                    FoodDataProvider.deleteAll()
+                    deleteRoomDb(context)
+                    //删除sd卡的东西
+                    FoodDataProvider.deleteAll()
 
                     FoodDataProvider.prepareData(globalApp())
                 } else {

+ 47 - 8
BusinessCommon/src/main/java/com/develop/common/utils/CommonUtils.kt

@@ -7,16 +7,21 @@ import com.develop.base.ext.appGlobalScope
 import com.develop.base.ext.globalApp
 import com.develop.base.ext.navigateTo
 import com.develop.base.util.AppActivityManager
+import com.develop.base.util.MMkvUtils
 import com.develop.base.util.TopResumedAtyHolder
 import com.develop.base.util.TuyaEventEntity
 import com.develop.common.R
 import com.develop.common.data_repo.FoodDataProvider
+import com.develop.common.data_repo.db.CommonSearchItem
+import com.develop.common.data_repo.db.FoodContentModel
 import com.develop.common.food_sdk.FloatWindowManager
 import com.develop.common.router.Screens
+import com.develop.common.tag.HISTORYRECIPES
 import com.develop.common.tag.MODE_TYPE
 import com.develop.common.tag.NUMBER_TAG
 import com.develop.common.tag.SOURCE_TAG
 import com.google.gson.Gson
+import com.google.gson.reflect.TypeToken
 import com.kuyuntech.cofarcooking.device.sdk.constant.core.DevModes
 import com.kuyuntech.cofarcooking.device.sdk.constant.core.DevStatus
 import com.kuyuntech.cofarcooking.device.sdk.constant.core.WorkModes
@@ -25,6 +30,7 @@ import kotlinx.coroutines.Dispatchers
 import kotlinx.coroutines.launch
 import kotlinx.coroutines.withContext
 import org.greenrobot.eventbus.EventBus
+import java.lang.reflect.Type
 
 object CommonUtils {
     var gson = Gson()
@@ -143,12 +149,31 @@ object CommonUtils {
         return false
     }
 
+    fun saveHistoryRecipes(list:List<FoodContentModel>) {
+        var json = gson.toJson(list)
+        MMkvUtils.save(HISTORYRECIPES, json)
+    }
+
+    fun getHistoryRecipes(): MutableList<FoodContentModel> {
+        val historyJson = MMkvUtils.getString(HISTORYRECIPES) ?: ""
+        var foodList = mutableListOf<FoodContentModel>()
+        var list =  GsonUtils.jsonToList(historyJson,FoodContentModel::class.java)
+        if (list.isNotEmpty()){
+            foodList.addAll(list)
+        }
+        return   list
+
+    }
+
+
+
     fun <T> getTuyaBean(
         url: String,
         apiVersion: String,
         json: String,
         t: Class<T>,
-        tuyaHttp: TuyaHttp<T>
+        tuyaHttp: TuyaHttp<T>,
+        num: Int
     ) {
         appGlobalScope.launch(Dispatchers.IO) {
 //            if (!TuyaUtilsSo.getInstance().tuyaInitSuccess || !TuyaUtilsSo.getInstance().tuyaNetwork){
@@ -168,9 +193,16 @@ object CommonUtils {
 
             var str = TuyaUtilsSo.getInstance().getPointer(url, apiVersion, json)
             if ("" == str || str == null) {
-                ToastUtils.showShort(globalApp().getString(R.string.connect_tuya))
-                tuyaHttp.fail()
-                return@launch
+                //重连3次,如果3次过后 还没有数据就显示失败
+                if (num > 3) {
+                    ToastUtils.showShort(globalApp().getString(R.string.connect_tuya))
+                    tuyaHttp.fail()
+                    return@launch
+                } else {
+                    var nums = num + 1
+                    getTuyaBean(url, apiVersion, json, t, tuyaHttp, nums)
+                }
+
             }
             withContext(Dispatchers.Main) {
                 tuyaHttp.bean(GsonUtils.GsonToBean(str, t))
@@ -221,7 +253,7 @@ object CommonUtils {
         apiVersion: String,
         json: String,
         t: Class<T>,
-        tuyaHttpList: TuyaHttpList<T>
+        tuyaHttpList: TuyaHttpList<T>, num: Int
     ) {
         appGlobalScope.launch(Dispatchers.IO) {
 //            if (!TuyaUtilsSo.getInstance().tuyaInitSuccess || !TuyaUtilsSo.getInstance().tuyaNetwork ){
@@ -234,9 +266,16 @@ object CommonUtils {
             Log.e("tuya", "url :" + url + "   json:" + json)
             var str = TuyaUtilsSo.getInstance().getPointer(url, apiVersion, json)
             if ("" == str || str == null) {
-                ToastUtils.showShort(globalApp().getString(R.string.connect_tuya))
-                tuyaHttpList.fail()
-                return@launch
+                //重连3次,如果3次过后 还没有数据就显示失败
+                if (num > 3) {
+                    ToastUtils.showShort(globalApp().getString(R.string.connect_tuya))
+                    tuyaHttpList.fail()
+                    return@launch
+                } else {
+                    var nums = num + 1
+                    getTuyaList(url, apiVersion, json, t, tuyaHttpList, nums)
+                }
+
             }
             withContext(Dispatchers.Main) {
                 tuyaHttpList.bean(GsonUtils.jsonToList(str, t))

+ 4 - 0
BusinessCommon/src/main/java/com/develop/common/utils/GsonUtils.java

@@ -82,6 +82,10 @@ public class GsonUtils {
      */
     public static <T> List<T> jsonToList(String json, Class<T> cls) {
         ArrayList<T> mList = new ArrayList<T>();
+        if (json.equals("")){
+            return mList;
+        }
+
         JsonArray array = new JsonParser().parse(json).getAsJsonArray();
         for (final JsonElement elem : array) {
             mList.add(gson.fromJson(elem, cls));

+ 1 - 1
BusinessCommon/src/main/java/com/develop/common/utils/TuyaUtilsSo.java

@@ -213,7 +213,7 @@ public class TuyaUtilsSo {
                     break;
                 case TuyaSoDp.WEIGHT_CLEAR:
                     //称重清零
-
+                    tuyaEvent("weight_clear");
                     break;
                 case TuyaSoDp.DEV_READY:
                     //机器是否准备就绪 按照之前做法,这个回调是跳DIY

+ 64 - 52
BusinessCommon/src/main/java/com/develop/common/widget/FoodContentView.kt

@@ -65,8 +65,9 @@ class FoodContentView : ConstraintLayout {
     private var mIsFoodList = false
     var mIsHistoryList = false
     private var is033 = false
-    private var numberList  = ""
+    private var numberList = ""
     private var foodSn = getSN()
+
     init {
         val root = View.inflate(context, R.layout.food_content_view, this)
         is033 = foodSn.startsWith("033")
@@ -90,20 +91,20 @@ class FoodContentView : ConstraintLayout {
                     }
                 }
 
-                if (numberList.contains(mFoodContent?.foodId ?:"00000000")){
+                if (numberList.contains(mFoodContent?.foodId ?: "00000000")) {
 
                     //由于存在的numberList
                     //处理更新菜谱的标识 ,点击以后消除更新食谱编号
                     var listNew = isRecipesList()
                     var list = GsonUtils.GsonToList<String>(listNew)
                     var strs = ""
-                    if (list.isNotEmpty()){
-                        for (str in list){
-                            if (str.equals(foodId)){
+                    if (list.isNotEmpty()) {
+                        for (str in list) {
+                            if (str.equals(foodId)) {
                                 strs = str
                             }
                         }
-                        if (strs.isNotEmpty()){
+                        if (strs.isNotEmpty()) {
                             list.remove(strs)
 
                         }
@@ -128,62 +129,71 @@ class FoodContentView : ConstraintLayout {
             //收藏/取消收藏
             mFoodContent?.apply {
                 if (isNetRecipes && mIsFoodList) {
-                    val titleStr = context.getString(R.string.are_you_sure_to_delete)
-                    val confirmStr = context.getString(R.string.yes)
-                    val cancelStr = context.getString(R.string.no)
-                    TopResumedAtyHolder.getCurrentActivity()?.apply {
-                        cancelConfirmDialog.apply {
-                            this.title = titleStr
-                            this.confirmStr = confirmStr
-                            this.cancelStr = cancelStr
-                            onDialogClickListener =
-                                object : CancelConfirmDialog.OnDialogClickListener {
-                                    override fun onConfirm() {
-                                        FoodDataProvider.getUserDatabase().runInTransaction {
-                                            FoodDataProvider.getUserDatabase().userInfoDao()
-                                                .removeOnlineRecipe(
-                                                    CURRENT_USER_ID, foodId
-                                                )
-                                        }
-
-                                        /***
-                                         * 2024.03.04 删除下载记录,只删除记录,不删除食谱
-                                         */
-
-
-                                        FoodDataProvider.getDatabase().runInTransaction {
+                    if (foodSn.startsWith("011")) {
+                        if (isLike) {
+                            EventBus.getDefault().post(OnLikeDataEvent(false, foodId))
+                        } else {
+                            EventBus.getDefault().post(OnLikeDataEvent(true, foodId))
+                        }
+                    } else {
+                        val titleStr = context.getString(R.string.are_you_sure_to_delete)
+                        val confirmStr = context.getString(R.string.yes)
+                        val cancelStr = context.getString(R.string.no)
+                        TopResumedAtyHolder.getCurrentActivity()?.apply {
+                            cancelConfirmDialog.apply {
+                                this.title = titleStr
+                                this.confirmStr = confirmStr
+                                this.cancelStr = cancelStr
+                                onDialogClickListener =
+                                    object : CancelConfirmDialog.OnDialogClickListener {
+                                        override fun onConfirm() {
+                                            FoodDataProvider.getUserDatabase().runInTransaction {
+                                                FoodDataProvider.getUserDatabase().userInfoDao()
+                                                    .removeOnlineRecipe(
+                                                        CURRENT_USER_ID, foodId
+                                                    )
+                                            }
+
+                                            /***
+                                             * 2024.03.04 删除下载记录,只删除记录,不删除食谱
+                                             */
+
+
+                                            FoodDataProvider.getDatabase().runInTransaction {
 //                                            val recipeDao =
 //                                                FoodDataProvider.getDatabase().recipeDao()
 //                                            val recipes = recipeDao.queryRecipe(foodId)
 //                                            recipes?.apply {
 //                                                recipeDao.deleteRecipe(this)
 //                                            }
-                                            FoodDataProvider.deleteRecipeResource(foodId)
+                                                FoodDataProvider.deleteRecipeResource(foodId)
+                                            }
+                                            EventBus.getDefault().post(RefreshDataEvent())
                                         }
-                                        EventBus.getDefault().post(RefreshDataEvent())
-                                    }
 
-                                    override fun onCancel() {
+                                        override fun onCancel() {
 
-                                    }
+                                        }
 
-                                    override fun onKey() {
+                                        override fun onKey() {
+                                        }
                                     }
-                                }
-                            showDialog(supportFragmentManager, "cancelConfirmDialog")
+                                showDialog(supportFragmentManager, "cancelConfirmDialog")
+                            }
                         }
                     }
                 } else {
                     if (isLike) {
-                        if (foodSn.startsWith("011")){
+                        if (foodSn.startsWith("011")) {
                             EventBus.getDefault().post(OnLikeDataEvent(false, foodId))
-                        }else{
+                        } else {
                             isLike = false
                             binding.ivLike.skinSrc(R.drawable.ic_unlike)
                             FoodDataProvider.getUserDatabase().runInTransaction {
-                                FoodDataProvider.getUserDatabase().userInfoDao().removeFavoriteRecipe(
-                                    CURRENT_USER_ID, foodId
-                                )
+                                FoodDataProvider.getUserDatabase().userInfoDao()
+                                    .removeFavoriteRecipe(
+                                        CURRENT_USER_ID, foodId
+                                    )
                             }
                             /**
                              * 不知道之前为什么写这个代码,现在011客户反馈
@@ -195,15 +205,16 @@ class FoodContentView : ConstraintLayout {
                             EventBus.getDefault().post(RefreshLikeDataEvent(false, foodId))
                         }
                     } else {
-                        if (foodSn.startsWith("011")){
+                        if (foodSn.startsWith("011")) {
                             EventBus.getDefault().post(OnLikeDataEvent(true, foodId))
-                        }else{
+                        } else {
                             isLike = true
                             binding.ivLike.skinSrc(R.drawable.ic_like)
                             FoodDataProvider.getUserDatabase().runInTransaction {
-                                FoodDataProvider.getUserDatabase().userInfoDao().insertFavoriteRecipe(
-                                    UserFavoriteRecipes(CURRENT_USER_ID, foodId)
-                                )
+                                FoodDataProvider.getUserDatabase().userInfoDao()
+                                    .insertFavoriteRecipe(
+                                        UserFavoriteRecipes(CURRENT_USER_ID, foodId)
+                                    )
                             }
 
 
@@ -221,6 +232,7 @@ class FoodContentView : ConstraintLayout {
         }
     }
 
+
     /**
      * 显示菜谱数据
      * @param isFoodList 是否为FoodListActivity
@@ -255,7 +267,7 @@ class FoodContentView : ConstraintLayout {
 
 
             starView.apply {
-                if (is033||foodSn.startsWith("011")) {
+                if (is033 || foodSn.startsWith("011")) {
                     starView.visibility = View.GONE
                 } else {
                     starView.visibility = View.VISIBLE
@@ -264,7 +276,7 @@ class FoodContentView : ConstraintLayout {
                 }
 
             }
-            if (foodSn.startsWith("011")){
+            if (foodSn.startsWith("011")) {
                 binding.easyLayout.visibility = View.VISIBLE
                 content.level.let {
 
@@ -291,9 +303,9 @@ class FoodContentView : ConstraintLayout {
             }
 
 
-            if (numberList.contains(mFoodContent?.foodId ?:"00000000")){
+            if (numberList.contains(mFoodContent?.foodId ?: "00000000")) {
                 ivContentNew.visibility = View.VISIBLE
-            }else{
+            } else {
                 ivContentNew.visibility = View.GONE
             }
 

+ 1 - 4
BusinessMain/src/main/java/com/develop/main/ui/HomeActivity.kt

@@ -156,10 +156,7 @@ class HomeActivity : CommonBVMActivity<ActivityHomeBinding, HomeViewModel>() {
     private fun initCallbackAndListener() {
         if (baseSn.startsWith("011")) {
             binding.homeImage.load(com.develop.common.R.drawable.home_bg_011)
-            if (baseSn.startsWith("011D")) {
-                //由于涂鸦云食谱没有历史功能,估隐藏
-                binding.historyLayout.setGone()
-            }
+
 
         } else {
             binding.homeImage.setGone()

+ 0 - 5
BusinessMain/src/main/java/com/develop/main/ui/ModeEntranceActivity.kt

@@ -124,11 +124,6 @@ class ModeEntranceActivity : CommonBindingActivity<ActivityModeEntranceBinding>(
         if (sn.startsWith("011")) {
             binding.ivTab.setImageResource(com.develop.common.R.drawable.ic_tab_011)
 
-            if (sn.startsWith("011D")){
-                //由于涂鸦云食谱没有历史功能,估隐藏
-                binding.historyLayout.setGone()
-            }
-
 
         }
 

+ 3 - 3
BusinessMain/src/main/java/com/develop/main/viewmodel/HomeViewModel.kt

@@ -171,7 +171,7 @@ class HomeViewModel : BaseViewModel() {
                     }
 
 
-                })
+                },0)
 
         } else {
             var allSize = 0
@@ -324,7 +324,7 @@ class HomeViewModel : BaseViewModel() {
                         recipesOnFail.postValue(1)
                     }
 
-                })
+                },0)
         } else {
             scope(Dispatchers.IO) {
                 startSize = 0
@@ -581,7 +581,7 @@ class HomeViewModel : BaseViewModel() {
                         recipesOnFail.postValue(1)
                     }
 
-                })
+                },0)
 
 
 

+ 3 - 3
BusinessSetting/src/main/java/com/develop/setting/ui/AboutActivity.kt

@@ -600,7 +600,7 @@ class AboutActivity : CommonBVMActivity<ActivityAboutBinding, AboutViewModel>()
                 override fun fail() {
                 }
 
-            })
+            },0)
 
 
     }
@@ -664,7 +664,7 @@ class AboutActivity : CommonBVMActivity<ActivityAboutBinding, AboutViewModel>()
                 override fun fail() {
                 }
 
-            })
+            },0)
 
     }
 
@@ -775,7 +775,7 @@ class AboutActivity : CommonBVMActivity<ActivityAboutBinding, AboutViewModel>()
                 override fun fail() {
                 }
 
-            })
+            },0)
     }
 
 

+ 10 - 0
BusinessStep/src/main/java/com/develop/step/TuyaCookStepType.java

@@ -11,6 +11,16 @@ public class TuyaCookStepType {
     public static final String MODE = "mode";
     public static final String STEAM_MODE = "steam_mode";
 
+    /**
+     * 存在有可能其他DP的值
+     *
+     * */
+    public static final String DIRECTION_OTHER = "motor_direction";
+    public static final String GEAR_OTHER = "motor_gear";
+    public static final String TEMPERATURE_OTHER = "target_temp";
+    public static final String TIME_OTHER = "target_time";
+
+
     /**
      * 涂鸦dp 返回的自动程序模式
      *

+ 112 - 6
BusinessStep/src/main/java/com/develop/step/ui/FoodListActivity.kt

@@ -9,6 +9,7 @@ import com.develop.base.ext.setGone
 import com.develop.base.ext.setVisible
 import com.develop.base.ext.updateText
 import com.develop.base.scop.safeGlobalScope
+import com.develop.base.util.MMkvUtils
 import com.develop.common.data_repo.db.FoodContentModel
 import com.develop.common.event.RefreshDataEvent
 import com.develop.common.router.Screens
@@ -16,11 +17,15 @@ import com.develop.common.ui.CommonBVMActivity
 import com.develop.common.widget.FoodContentView
 import com.develop.common.R
 import com.develop.common.data_repo.FoodDataProvider
+import com.develop.common.dialog.CancelConfirmDialog
 import com.develop.common.dialog.LoadingDialog
+import com.develop.common.event.OnLikeDataEvent
 import com.develop.common.event.RefreshLikeDataEvent
 import com.develop.common.tag.*
+import com.develop.common.utils.CommonUtils
 import com.develop.step.databinding.ActivityFoodListBinding
 import com.develop.step.viewmodel.FoodListViewModel
+import com.drake.brv.utils.bindingAdapter
 import com.drake.brv.utils.grid
 import com.drake.brv.utils.models
 import com.drake.brv.utils.setup
@@ -33,7 +38,8 @@ import org.greenrobot.eventbus.Subscribe
 @Route(path = Screens.Cook.FOOD_LIST)
 class FoodListActivity : CommonBVMActivity<ActivityFoodListBinding, FoodListViewModel>() {
     private var title: String = ""
-
+    private var foodList = mutableListOf<FoodContentModel>()
+    private var historyLike = true
     override fun createViewModel(): FoodListViewModel {
         return getViewModel(FoodListViewModel::class.java)
     }
@@ -75,11 +81,13 @@ class FoodListActivity : CommonBVMActivity<ActivityFoodListBinding, FoodListView
                     foodContentView.setFoodContent(getModel(), true)
                 }
             }
-        }.models = viewModel.foodListLiveData.value
+        }.models = foodList
 
         viewModel.foodListLiveData.observe(this) {
             loadingDialog.removeSelf()
-            binding.foodListRecycler.models = it
+            foodList = it
+            binding.foodListRecycler.bindingAdapter._data = foodList
+            binding.foodListRecycler.bindingAdapter.notifyDataSetChanged()
             if (viewModel.foodListType == Downloaded) {
                 binding.tvTitle.updateText("$title(${it.size})")
             }
@@ -87,13 +95,93 @@ class FoodListActivity : CommonBVMActivity<ActivityFoodListBinding, FoodListView
 
         binding.ivDelete.setOnClickListener {
             safeGlobalScope.launch(Dispatchers.IO) {
-                FoodDataProvider.getUserDatabase().userInfoDao()
-                    .deleteAllHistoryRecipes(CURRENT_USER_ID)
-                viewModel.refreshData()
+                if (baseSn.startsWith("011D")) {
+                    MMkvUtils.save(HISTORYRECIPES, "")
+                    viewModel.refreshData()
+                } else {
+                    FoodDataProvider.getUserDatabase().userInfoDao()
+                        .deleteAllHistoryRecipes(CURRENT_USER_ID)
+                    viewModel.refreshData()
+                }
+            }
+        }
+        viewModel.addLikeLiveData.observe(this) {
+            if (it.equals("")) {
+                LikeDialog(1)
+            } else {
+                if (viewModel.foodListType== History){
+                    likeListType(true, it ?: "")
+                }else{
+                    EventBus.getDefault().post(RefreshLikeDataEvent(true, it ?: ""))
+
+                }
+
+            }
+
+
+        }
+        viewModel.deleteLikeLiveData.observe(this) {
+            if (it.equals("")) {
+                LikeDialog(2)
+            } else {
+
+                if (viewModel.foodListType== History){
+                    likeListType(false, it ?: "")
+                }else{
+                    EventBus.getDefault().post(RefreshLikeDataEvent(false, it ?: ""))
+
+                }
+            }
+        }
+
+
+    }
+
+    private fun likeListType(isLike: Boolean, recipeNumber: String) {
+//        var list = mutableListOf<FoodContentModel>()
+//        list.addAll(foodList)
+//        foodList.clear()
+        for (i in foodList.indices) {
+            if (foodList[i].foodId == recipeNumber) {
+                foodList[i].isLike = isLike
             }
         }
+
+        binding.foodListRecycler.bindingAdapter._data = foodList
+        binding.foodListRecycler.bindingAdapter.notifyDataSetChanged()
+
+    }
+
+
+    private fun LikeDialog(i: Int) {
+        var runningDilaog = CancelConfirmDialog()
+        runningDilaog.showCancel = false
+        runningDilaog.showConfirm = true
+        runningDilaog.title =
+            if (i == 1) resources.getString(com.develop.common.R.string.add_like_fail) else resources.getString(
+                com.develop.common.R.string.delete_like_fail
+            )
+        runningDilaog.confirmStr = resources.getString(com.develop.common.R.string.confirm)
+        runningDilaog.onDialogClickListener =
+            object : CancelConfirmDialog.OnDialogClickListener {
+                override fun onConfirm() {
+                    runningDilaog.removeSelf();
+                }
+
+                override fun onCancel() {
+                }
+
+                override fun onKey() {
+                }
+
+            }
+
+        runningDilaog.showDialog(supportFragmentManager, "LikeDialog")
+
+
     }
 
+
     @Subscribe
     fun onRefreshDataEvent(event: RefreshDataEvent) {
         viewModel.refreshData()
@@ -105,15 +193,33 @@ class FoodListActivity : CommonBVMActivity<ActivityFoodListBinding, FoodListView
         viewModel.refreshData()
     }
 
+    @Subscribe
+    fun onLikeDataEvent(event: OnLikeDataEvent) {
+        if (event.isLike) {
+            viewModel.addLikeRecipes(event.recipeNumber)
+        } else {
+            viewModel.deleteLikeRecipes(event.recipeNumber)
+        }
+    }
+
 
     override fun onResume() {
         super.onResume()
         viewModel.refreshData()
+
     }
 
+
+
     override fun onDestroy() {
         super.onDestroy()
         loadingDialog.removeSelf()
+
+        if (viewModel.foodListType== History){
+            CommonUtils.saveHistoryRecipes(foodList)
+        }
+
+
     }
 
     companion object {

+ 5 - 2
BusinessStep/src/main/java/com/develop/step/ui/ModesDetailActivity.kt

@@ -772,7 +772,6 @@ class ModesDetailActivity : CommonBVMActivity<ActivityModeDetailBinding, ModesVi
 
         }
         if ("change_direction"== event.type){
-
             ThreadUtils.runOnMainThread({
                 binding.clCookDirection.updateChangeValue(
                     viewModel.getDirectionStr(
@@ -789,7 +788,11 @@ class ModesDetailActivity : CommonBVMActivity<ActivityModeDetailBinding, ModesVi
 
 
         }
-
+        if ("weight_clear"==event.type){
+            if (CofarSDK.devInfo().isWeightStatus) {
+                weightClearClick()
+            }
+        }
 
 
 

+ 94 - 64
BusinessStep/src/main/java/com/develop/step/ui/cook_step/CookStepActivity.kt

@@ -40,9 +40,11 @@ import com.develop.common.R
 import com.develop.common.bean.CfConfig
 import com.develop.common.bean.WorkMode
 import com.develop.common.data_repo.FoodDataProvider
+import com.develop.common.data_repo.db.FoodContentModel
 import com.develop.common.data_repo.db.ModesType
 import com.develop.common.data_repo.db.entity.UserFavoriteRecipes
 import com.develop.common.data_repo.db.entity.UserHistoryRecipes
+import com.develop.common.data_repo.db.getTime
 import com.develop.common.data_repo.net.TokenInvalidateEvent
 import com.develop.common.dialog.CancelConfirmDialog
 import com.develop.common.dialog.PotCoverUnlockedDialog
@@ -59,6 +61,7 @@ import com.develop.common.tag.SOURCE_TAG
 import com.develop.common.tag.TURN_DOWN_KEY_CODE
 import com.develop.common.tag.TURN_UP_KEY_CODE
 import com.develop.common.utils.CofarUtils
+import com.develop.common.utils.CommonUtils
 import com.develop.common.utils.ConfigUtils
 import com.develop.common.utils.TimeUtil
 import com.develop.step.ui.cook_step.model.CookStepStatus
@@ -92,8 +95,11 @@ class CookStepActivity : CookStepBaseActivity() {
     private var isSelectMode: String? = ""
     private var mResetPressedTime: Long = 0  //防止客户重复点击复位
     private var isNight = false
-    @JvmField
-    @Autowired(name = "cook_step_detail")
+
+
+
+            @JvmField
+            @Autowired(name = "cook_step_detail")
     var cookStepDetail: String? = null
 
 
@@ -130,12 +136,10 @@ class CookStepActivity : CookStepBaseActivity() {
     }
 
 
-
-
     private fun turnDevModeUI(devMode: String?) {
         isSelectMode = devMode
-        binding.controller.clCookTemp.visibility =  View.VISIBLE
-        binding.controller.clCookTime.visibility =  View.VISIBLE
+        binding.controller.clCookTemp.visibility = View.VISIBLE
+        binding.controller.clCookTime.visibility = View.VISIBLE
         if (isSelectMode == DevModes.AIR_FRYER) {
             //隐藏点击
             binding.controller.clCookDirection.visibility = View.GONE;
@@ -155,7 +159,7 @@ class CookStepActivity : CookStepBaseActivity() {
 
         }
         if (isSelectMode == DevModes.STAND_MIXER) {
-            binding.controller.clCookTemp.visibility =  View.GONE
+            binding.controller.clCookTemp.visibility = View.GONE
             //隐藏点击
             binding.controller.clCookDirection.visibility = View.GONE;
             binding.controller.clCookSpeed.visibility = View.VISIBLE;
@@ -174,8 +178,8 @@ class CookStepActivity : CookStepBaseActivity() {
         configJson = ConfigUtils.loadCookConfig()
         isModelNum = getModelNum()
         isNight = isNightTheme()
-        viewModel.tuyaStepJson = tuyaStep ?:""
-        viewModel.tuyaRecipeJson = tuyaRecipe ?:""
+        viewModel.tuyaStepJson = tuyaStep ?: ""
+        viewModel.tuyaRecipeJson = tuyaRecipe ?: ""
 
         keep = intent.extras?.getBoolean("keep", false) ?: false
 
@@ -241,8 +245,11 @@ class CookStepActivity : CookStepBaseActivity() {
                         viewModel.stepUiData.doingModify = true
                         var totalTime = second + (minute + hours * 60) * 60
                         var times = time
-                        Log.e("TACC rollTimeEvent","currentMotorGer:$currentMotorGer     hours:$hours  minute:$minute    second:$second    time:$time    setByUser:$setByUser")
-                        if (currentMotorGer>=7 && totalTime > 600) {
+                        Log.e(
+                            "TACC rollTimeEvent",
+                            "currentMotorGer:$currentMotorGer     hours:$hours  minute:$minute    second:$second    time:$time    setByUser:$setByUser"
+                        )
+                        if (currentMotorGer >= 7 && totalTime > 600) {
                             totalTime = 600
                             times = "10:00"
                         }
@@ -347,7 +354,8 @@ class CookStepActivity : CookStepBaseActivity() {
             }
 
             if (currModes != "WIGHT" && currModes != "WEIGH" && currModes != "WEIGHT"
-                &&  currModes !="AF_WEIGHT"  && currModes != "SM_WEIGHT"  && currModes != "SM_WIGHT") {
+                && currModes != "AF_WEIGHT" && currModes != "SM_WEIGHT" && currModes != "SM_WIGHT"
+            ) {
                 binding.viewWeightClose.setVisible()
                 binding.viewChangeCrush.visibility = View.INVISIBLE
             }
@@ -454,12 +462,12 @@ class CookStepActivity : CookStepBaseActivity() {
                 } else if (it.isDescription()) {
                     CofarSDK.stoptWeight()
                     changeDescription()
-                }  else if (it.isWarning()) {
+                } else if (it.isWarning()) {
                     CofarSDK.stoptWeight()
                     changeWarning()
                 } else {
                     //由于暂停程序,在点击右上角称重后,在点击上一步或者下一步,返回当前步骤,会导致右上角是个X,估在这再加多此代码判断
-                    if (binding.viewWeightClose.isVisible){
+                    if (binding.viewWeightClose.isVisible) {
                         binding.viewWeightClose.setGone()
                         binding.viewChangeCrush.setVisible()
                     }
@@ -545,7 +553,7 @@ class CookStepActivity : CookStepBaseActivity() {
                     binding.ivCookBg.setGone()
                 }
                 //处理煮水不能修改时间
-                if (it.isWater()){
+                if (it.isWater()) {
                     it.uiData.isTimeChange = false
                 }
                 updateUiSetting(it)
@@ -573,8 +581,8 @@ class CookStepActivity : CookStepBaseActivity() {
                             modeName = this@CookStepActivity.binding.tvTitleStep.text.toString(),
                             detailJson = cookStepDetail ?: "",
                             sizelJson = portionSizelJson ?: "",
-                            tuyaStepJson =  viewModel.tuyaStepJson,
-                            tuyaRecipeJson =  viewModel.tuyaRecipeJson
+                            tuyaStepJson = viewModel.tuyaStepJson,
+                            tuyaRecipeJson = viewModel.tuyaRecipeJson
 
                         )
                         FloatWindowManager.showStepFlowWindow(cookStepEvent)
@@ -610,8 +618,8 @@ class CookStepActivity : CookStepBaseActivity() {
                         modeName = this@CookStepActivity.binding.tvTitleStep.text.toString(),
                         detailJson = cookStepDetail ?: "",
                         sizelJson = portionSizelJson ?: "",
-                        tuyaStepJson =  viewModel.tuyaStepJson,
-                        tuyaRecipeJson =  viewModel.tuyaRecipeJson
+                        tuyaStepJson = viewModel.tuyaStepJson,
+                        tuyaRecipeJson = viewModel.tuyaRecipeJson
 
                     )
                     FloatWindowManager.showStepFlowWindow(cookStepEvent)
@@ -631,17 +639,28 @@ class CookStepActivity : CookStepBaseActivity() {
 
             val result = FoodDataProvider.getUserDatabase().userInfoDao()
                 .queryFavoriteRecipes(CURRENT_USER_ID, it.number ?: "")
-            if (result.isNotEmpty()) {
-                binding.ivAddToFav.src = R.drawable.ic_like
-            } else {
-                binding.ivAddToFav.src = R.drawable.ic_cook_fav
+
+            if (baseSn.startsWith("011D")){
+                if (isLike) {
+                    binding.ivAddToFav.src = R.drawable.ic_like
+                } else {
+                    binding.ivAddToFav.src = R.drawable.ic_cook_fav
+                }
+            }else{
+                if (result.isNotEmpty()) {
+                    binding.ivAddToFav.src = R.drawable.ic_like
+                } else {
+                    binding.ivAddToFav.src = R.drawable.ic_cook_fav
+                }
             }
+
+
             titleName = it?.name.toString()
             binding.tvTitleStep.text = it?.name
         }
 
         viewModel.addLikeLiveData.observe(this) {
-            if (baseSn.startsWith("011")){
+            if (baseSn.startsWith("011")) {
                 recipesloadingDialog.removeSelf()
             }
 
@@ -657,7 +676,7 @@ class CookStepActivity : CookStepBaseActivity() {
 
 
         viewModel.deleteLikeLiveData.observe(this) {
-            if (baseSn.startsWith("011")){
+            if (baseSn.startsWith("011")) {
                 recipesloadingDialog.removeSelf()
             }
 
@@ -787,7 +806,7 @@ class CookStepActivity : CookStepBaseActivity() {
             modeType = workModes?.type ?: "ADAPTED_COOKING"
             turnDevModeUI(workDevMode)
 
-        }else{
+        } else {
 //            if (viewModel.allSteps.get(viewModel.stepIndex).isWeightMode()){
 //                changeWeightPanel()
 //                CofarSDK.stoptWeight()
@@ -801,9 +820,8 @@ class CookStepActivity : CookStepBaseActivity() {
     override fun clickNextStep() {
 
 
-
         //如果当前步骤运行中,设置了参数,然后切换了界面以后,在返回没有保持在调参数的界面
-        if (binding.controller.btnStart.tag == BUTTON_TAG_CONFIRM){
+        if (binding.controller.btnStart.tag == BUTTON_TAG_CONFIRM) {
             handleButtonState(BUTTON_TAG_CANCEL)
         }
 
@@ -831,9 +849,8 @@ class CookStepActivity : CookStepBaseActivity() {
     override fun clickPrevStep() {
 
 
-
         //如果当前步骤运行中,设置了参数,然后切换了界面以后,在返回没有保持在调参数的界面
-        if (binding.controller.btnStart.tag == BUTTON_TAG_CONFIRM){
+        if (binding.controller.btnStart.tag == BUTTON_TAG_CONFIRM) {
             handleButtonState(BUTTON_TAG_CANCEL)
         }
 
@@ -957,7 +974,7 @@ class CookStepActivity : CookStepBaseActivity() {
         } else if (tag == BUTTON_TAG_RESUME) {
             CofarSDK.resume()
             //处理resume 揉面/间接性搅拌设置0温度 会自动STOP问题 试过1度也会自动暂停,估设置2度
-            if ((modeType == "KNEAD" || modeType == "KNEAD_TOUGH"|| modeType == "BROWN" || modeType == "ROAST")&&currentTemp==0){
+            if ((modeType == "KNEAD" || modeType == "KNEAD_TOUGH" || modeType == "BROWN" || modeType == "ROAST") && currentTemp == 0) {
                 /**
                  * 之前试过设置1度的时候,mcu没接收,估设置5度
                  * 设置2度 但是目标温度是0度,但是没有自动暂停
@@ -967,7 +984,7 @@ class CookStepActivity : CookStepBaseActivity() {
 
         } else if (tag == BUTTON_TAG_CONFIRM) {
             //处理010 033 后台后回来的显示转速问题
-           CofarSDK.confirm()
+            CofarSDK.confirm()
             confirmType = true
             binding.controller.btnStart.setGone()
             binding.controller.btnReset.setGone()
@@ -1068,7 +1085,7 @@ class CookStepActivity : CookStepBaseActivity() {
         checkShowConfirm()
     }
 
-    override fun  onDevStateChange(devInfo: DevInfo) {
+    override fun onDevStateChange(devInfo: DevInfo) {
         if (configing) {
             return
         }
@@ -1164,9 +1181,9 @@ class CookStepActivity : CookStepBaseActivity() {
                     binding.ivCookBg.setVisible()
                     notifyAllCookStepComplete()
                 } else {
-                    if (isNight){
+                    if (isNight) {
                         binding.ivCookBg.setGone()
-                    }else{
+                    } else {
                         binding.ivCookBg.setVisible()
 
                     }
@@ -1258,9 +1275,9 @@ class CookStepActivity : CookStepBaseActivity() {
         )
         CofarSDK.cfgMotorGear(uiData.currentSpeed.toByte())
         //处理揉面/间接性搅拌 0温度 会自动STOP问题 试过1度也会自动暂停,估设置2度
-        if ((modeType == "KNEAD" || modeType == "KNEAD_TOUGH"|| modeType == "BROWN" || modeType == "ROAST")&&uiData.targetTemp==0){
+        if ((modeType == "KNEAD" || modeType == "KNEAD_TOUGH" || modeType == "BROWN" || modeType == "ROAST") && uiData.targetTemp == 0) {
             CofarSDK.cfgHeatNativeNoParse(2, HeatModes.PU_TONG)
-        }else{
+        } else {
             CofarSDK.cfgHeat(uiData.targetTemp.toShort(), HeatModes.PU_TONG)
         }
         CofarSDK.cancel()
@@ -1408,7 +1425,7 @@ class CookStepActivity : CookStepBaseActivity() {
             }
         } else if (tabType == CookSettingType.TIME_SETTING) {
             cookStep?.uiData?.let {
-                if (!it.isTimeChange&& (it.mode == WorkModes.KETTLE||it.mode == WorkModes.BOIL_WATER)) {
+                if (!it.isTimeChange && (it.mode == WorkModes.KETTLE || it.mode == WorkModes.BOIL_WATER)) {
                     return
                 }
                 dealWithTimeByOperation(it, increase)
@@ -1482,11 +1499,11 @@ class CookStepActivity : CookStepBaseActivity() {
 //        uiData.isTimeChange = true
         Log.d("TAG eeeeeee", "${uiData.targetTime} == ${currTime} === $step")
         //处理时间 转速高于7的实话最高10分钟
-        if (currentMotorGer>=7&&currTime>600){
+        if (currentMotorGer >= 7 && currTime > 600) {
             currTime = 600
         }
         //处理时间,煮水bug,时间会一直超过98小时,故在这做98小时限制,其他模式会有时间限制
-        if (currTime>=352800){
+        if (currTime >= 352800) {
             currTime = 352800;
         }
         uiData.targetTime = currTime
@@ -1494,9 +1511,9 @@ class CookStepActivity : CookStepBaseActivity() {
         Log.d("TAG eeeeeee", "调节时间:${currTime}")
 
 //        LogUtils.d("调节时间:${currTime}")
-        if (uiData.mode ==WorkModes.KETTLE || uiData.mode ==WorkModes.BOIL_WATER){
+        if (uiData.mode == WorkModes.KETTLE || uiData.mode == WorkModes.BOIL_WATER) {
             binding.controller.clSetTime.isTimeCanChange(false)
-        }else{
+        } else {
             binding.controller.clSetTime.isTimeCanChange(true)
         }
         // 回调到上面那个地方来设置时间
@@ -1632,7 +1649,7 @@ class CookStepActivity : CookStepBaseActivity() {
                 if (baseSn.startsWith("011")) {
                     viewModel.deleteLikeRecipes(recipeNumber ?: "")
                     recipesloadingDialog.showDialog(supportFragmentManager, "loadingDialog")
-                }else{
+                } else {
                     isLike = false
                     FoodDataProvider.getUserDatabase().runInTransaction {
                         FoodDataProvider.getUserDatabase().userInfoDao().removeFavoriteRecipe(
@@ -1644,10 +1661,10 @@ class CookStepActivity : CookStepBaseActivity() {
                 }
 
             } else {
-                if (baseSn.startsWith("011")){
+                if (baseSn.startsWith("011")) {
                     viewModel.addLikeRecipes(recipeNumber ?: "")
                     recipesloadingDialog.showDialog(supportFragmentManager, "loadingDialog")
-                }else{
+                } else {
                     isLike = true
                     binding.ivAddToFav.src = R.drawable.ic_like
                     FoodDataProvider.getUserDatabase().runInTransaction {
@@ -1692,7 +1709,7 @@ class CookStepActivity : CookStepBaseActivity() {
                 binding.controller.btnStart.updateText(getString(R.string.pause))
                 binding.controller.btnStart.tag = BUTTON_TAG_PAUSE
             } else {
-                if (confirmType){
+                if (confirmType) {
                     return
                 }
                 binding.controller.btnStart.setVisible()
@@ -1735,16 +1752,17 @@ class CookStepActivity : CookStepBaseActivity() {
         //电机转动动画特殊处理 慢炖 和 揉面
         if (uiData.mode == WorkModes.KNEAD
             || uiData.mode == WorkModes.KNEAD_TOUGH
-            ||uiData.mode == WorkModes.SLOW_COOKING
+            || uiData.mode == WorkModes.SLOW_COOKING
             || uiData.mode == WorkModes.SLOW_COOK
-            ||modeType == WorkModes.ROAST
-            || modeType == WorkModes.BROWN){
+            || modeType == WorkModes.ROAST
+            || modeType == WorkModes.BROWN
+        ) {
             if (viewModel.isCurrentOnCookingStep() && uiData.runningStatus == DevStatus.RUNNING.toInt() && CofarSDK.devInfo().isSpeedType) {
                 playRotateAnimator(CofarSDK.devInfo().motorDirection.toInt())
             } else {
                 pauseRotateAnimator()
             }
-        }else{
+        } else {
             // 播放电机转动动画
             if (viewModel.isCurrentOnCookingStep() && uiData.runningStatus == DevStatus.RUNNING.toInt() && uiData.currentSpeed > 0) {
                 playRotateAnimator(CofarSDK.devInfo().motorDirection.toInt()) //2023年06月28日20:58:13 旋转方向和实时固定
@@ -1754,8 +1772,6 @@ class CookStepActivity : CookStepBaseActivity() {
         }
 
 
-
-
         // 时间设置
         val time = if (uiData.targetTimeBuffer != -1) {
             uiData.targetTimeBuffer
@@ -1808,7 +1824,6 @@ class CookStepActivity : CookStepBaseActivity() {
         binding.controller.tvSetSpeed.updateText(speed.toString())                           // 下面的TAB-当前运行速度
 
 
-
         // 喷水设置
         if (!viewModel.stepUiData.doingModify || focusUpdate) {
             binding.controller.waterRingView.updateProgress(
@@ -1876,7 +1891,10 @@ class CookStepActivity : CookStepBaseActivity() {
 
         ////devInfo.potStatus 0是有锅  1是没锅
         //处理换锅问题   viewModel.allSteps.get(viewModel.stepIndex)?.isWeightMode() 判断是否是称重
-        if (isModelNum == "5037" && event.devInfo.potStatus.toInt() == 0 && viewModel.allSteps.get(viewModel.stepIndex)?.isWeightMode() == false) {
+        if (isModelNum == "5037" && event.devInfo.potStatus.toInt() == 0 && viewModel.allSteps.get(
+                viewModel.stepIndex
+            )?.isWeightMode() == false
+        ) {
             /**
              * 由于客户无锅状态下是默认汤锅列表,但是在一进来是空炸锅,拿出来(无锅的时候已经换了汤锅模式),
              * 但重新放空炸锅,onDevModeChange 是不会回调的,固需要用potCoverType 锅盖协议来判断是否需要重新换模式
@@ -1895,7 +1913,10 @@ class CookStepActivity : CookStepBaseActivity() {
 
         }
 
-        if (isModelNum == "5067" && event.devInfo.potStatus.toInt() == 0 && viewModel.allSteps.get(viewModel.stepIndex)?.isWeightMode() == false) {
+        if (isModelNum == "5067" && event.devInfo.potStatus.toInt() == 0 && viewModel.allSteps.get(
+                viewModel.stepIndex
+            )?.isWeightMode() == false
+        ) {
             /**
              * 由于客户无锅状态下是默认汤锅列表,但是在一进来是空炸锅,拿出来(无锅的时候已经换了汤锅模式),
              * 但重新放空炸锅,onDevModeChange 是不会回调的,固需要用potCoverType 锅盖协议来判断是否需要重新换模式
@@ -1934,19 +1955,28 @@ class CookStepActivity : CookStepBaseActivity() {
     private fun recordRecipes() {
         if (!isHistory) {
             isHistory = true
-            FoodDataProvider.getUserDatabase().runInTransaction {
-                recipeNumber?.let {
-                    FoodDataProvider.getUserDatabase().userInfoDao().removeHistoryRecipe(
-                        CURRENT_USER_ID, it
+            if (baseSn.startsWith("011")) {
+                recordRecipes = true
+
+            } else {
+                FoodDataProvider.getUserDatabase().runInTransaction {
+                    recipeNumber?.let {
+                        FoodDataProvider.getUserDatabase().userInfoDao().removeHistoryRecipe(
+                            CURRENT_USER_ID, it
+                        )
+                    }
+                    FoodDataProvider.getUserDatabase().userInfoDao().insertHistoryRecipe(
+                        UserHistoryRecipes(CURRENT_USER_ID, recipeNumber ?: "")
                     )
                 }
-                FoodDataProvider.getUserDatabase().userInfoDao().insertHistoryRecipe(
-                    UserHistoryRecipes(CURRENT_USER_ID, recipeNumber ?: "")
-                )
+
             }
         }
     }
 
+
+
+
     //当换锅的时候,需要做的逻辑
     @Subscribe
     fun onDevModeChange(event: DevCommonEvent) {
@@ -2018,8 +2048,8 @@ class CookStepActivity : CookStepBaseActivity() {
                             modeName = this@CookStepActivity.binding.tvTitleStep.text.toString(),
                             detailJson = cookStepDetail ?: "",
                             sizelJson = portionSizelJson ?: "",
-                            tuyaStepJson =  viewModel.tuyaStepJson,
-                            tuyaRecipeJson =  viewModel.tuyaRecipeJson
+                            tuyaStepJson = viewModel.tuyaStepJson,
+                            tuyaRecipeJson = viewModel.tuyaRecipeJson
                         )
                         FloatWindowManager.showStepFlowWindow(cookStepEvent)
                         getRecipe(number)

+ 42 - 0
BusinessStep/src/main/java/com/develop/step/ui/cook_step/CookStepBaseActivity.kt

@@ -41,11 +41,14 @@ import com.develop.common.widget.RingControlView
 import com.develop.step.CookSettingType
 import com.develop.common.R
 import com.develop.common.data_repo.FoodDataProvider
+import com.develop.common.data_repo.db.FoodContentModel
 import com.develop.common.data_repo.db.ModesType
 import com.develop.common.data_repo.db.entity.UserRecipeStepRemark
+import com.develop.common.data_repo.db.getTime
 import com.develop.common.dialog.LoadingDialog
 import com.develop.common.dialog.NoteEditDialog
 import com.develop.common.tag.CURRENT_USER_ID
+import com.develop.common.utils.CommonUtils
 import com.develop.common.utils.ConfigUtils
 import com.develop.common.utils.NoteEditLayout
 import com.develop.common.widget.BCustomerLinearLayout
@@ -104,6 +107,9 @@ abstract class CookStepBaseActivity :
     private var rotateAnimDir = -1
     public var is062 = false
     public var is011 = false
+    public var recordRecipes = false
+
+
     abstract fun clickNextStep()
 
     abstract fun clickPrevStep()
@@ -770,6 +776,9 @@ abstract class CookStepBaseActivity :
 
     override fun onDestroy() {
         super.onDestroy()
+        if (recordRecipes&&baseSn.startsWith("011D")){
+            saveCookRecipes()
+        }
         isWidget = false
         turboTimer?.cancel()
         CofarSDK.stoptWeight()
@@ -902,4 +911,37 @@ abstract class CookStepBaseActivity :
 
     }
 
+    fun saveCookRecipes() {
+        var instion = -1
+        var historyJson = CommonUtils.getHistoryRecipes()
+        historyJson.let {
+            for (i in 0 until historyJson.size) {
+                if (historyJson[i].foodId == recipeNumber) {
+                    instion = i
+
+                }
+            }
+        }
+        viewModel.recipe?.let {
+            var score = it.score ?: 0.0
+            var useNum = it.useNum ?: 0
+
+            if (instion!=-1){
+                historyJson.removeAt(instion)
+            }
+
+            historyJson.add(
+                 FoodContentModel(
+                    it.photoPath ?: "", it.name ?: "", score.toInt(),
+                    getTime(it.makeHours ?: 0, it.makeMinutes ?: 0), it.difficultyLevel ?: "",
+                    true, false, isLike, recipeNumber ?: "", it.edition, useNum.toInt()
+                )
+            )
+
+            CommonUtils.saveHistoryRecipes(historyJson)
+        }
+
+    }
+
+
 }

+ 27 - 4
BusinessStep/src/main/java/com/develop/step/viewmodel/CookDetailViewModel.kt

@@ -111,7 +111,7 @@ class CookDetailViewModel : BaseViewModel() {
                     }
 
 
-                })
+                },0)
 
         } else {
             isRemote = remote
@@ -208,6 +208,14 @@ class CookDetailViewModel : BaseViewModel() {
             } else {
                 it.cookArgs.forEach { cookArgs ->
                     when (cookArgs.dpCode) {
+                        TuyaCookStepType.DIRECTION_OTHER->{
+                            if (cookArgs.dpValue == "true") {
+                                direction = "0"
+                            } else {
+                                direction = "1"
+                            }
+                        }
+
                         TuyaCookStepType.DIRECTION -> {
                             if (cookArgs.dpValue == "true") {
                                 direction = "0"
@@ -216,14 +224,28 @@ class CookDetailViewModel : BaseViewModel() {
                             }
                         }
 
+                        TuyaCookStepType.GEAR_OTHER -> {
+                            rotateSpeed = cookArgs.dpValue.toInt()
+                        }
                         TuyaCookStepType.GEAR -> {
                             rotateSpeed = cookArgs.dpValue.toInt()
                         }
-
+                        TuyaCookStepType.TEMPERATURE_OTHER -> {
+                            temperature = cookArgs.dpValue.toInt()
+                        }
                         TuyaCookStepType.TEMPERATURE -> {
                             temperature = cookArgs.dpValue.toInt()
                         }
+                        TuyaCookStepType.TIME_OTHER -> {
+                            var time = cookArgs.dpValue.toInt()
+
+                            val minutes: Int = time / 60 // 计算分钟
 
+                            val seconds: Int = time % 60
+                            minute = minutes
+                            second = seconds
+
+                        }
                         TuyaCookStepType.TIME -> {
                             var time = cookArgs.dpValue.toInt()
 
@@ -234,7 +256,6 @@ class CookDetailViewModel : BaseViewModel() {
                             second = seconds
 
                         }
-
                         TuyaCookStepType.MODE -> {
                             when (cookArgs.dpValue) {
                                 TuyaCookStepType.DP_DIY -> {
@@ -257,7 +278,9 @@ class CookDetailViewModel : BaseViewModel() {
                                 TuyaCookStepType.DP_SOUS_VIDE -> {
                                     wordMode = TuyaCookStepType.SOVS_VIDE
                                 }
-
+                                TuyaCookStepType.DP_FOOD_PROCESSOR -> {
+                                    wordMode = TuyaCookStepType.FOOD_PROCESSOR
+                                }
                                 TuyaCookStepType.DP_RICE -> {
                                     wordMode = TuyaCookStepType.COOK_RICE
                                 }

+ 69 - 2
BusinessStep/src/main/java/com/develop/step/viewmodel/FoodListViewModel.kt

@@ -23,12 +23,16 @@ import com.develop.common.tuya_bean.RecipesLikeListBean
 import com.develop.common.tuya_bean.RecipesListBean
 import com.develop.common.utils.CommonUtils
 import com.develop.common.utils.GsonUtils
+import com.google.gson.Gson
 import kotlinx.coroutines.Dispatchers
 import kotlinx.coroutines.withContext
 
 class FoodListViewModel : BaseViewModel() {
     var foodListLiveData = MutableLiveData<MutableList<FoodContentModel>>()
     var foodListType = Favourite
+    var hoistList = mutableListOf<FoodContentModel>()
+    var addLikeLiveData = MutableLiveData<String>()
+    var deleteLikeLiveData = MutableLiveData<String>()
 
 
     fun refreshData() {
@@ -41,7 +45,11 @@ class FoodListViewModel : BaseViewModel() {
 
     private fun getFavoriteOrHistoryFoodList(foodListType: Int) = scopeLife(Dispatchers.IO) {
         if (getSN().startsWith("011")) {
-            getLikeList()
+            if (foodListType == History) {
+                getHistoryList()
+            } else {
+                getLikeList()
+            }
         } else {
             val userDao = FoodDataProvider.getUserDatabase().userInfoDao()
             val recipesDao = FoodDataProvider.getDatabase().recipeDao()
@@ -86,6 +94,16 @@ class FoodListViewModel : BaseViewModel() {
 
     }
 
+    private fun getHistoryList() {
+        hoistList.clear()
+        var foodContentList = CommonUtils.getHistoryRecipes()
+
+        if (foodContentList.isNotEmpty()){
+            hoistList.addAll(foodContentList)
+        }
+        foodListLiveData.postValue(hoistList)
+    }
+
 
     private fun getLikeList() {
         var lang = MMkvUtils.getString(CURRENT_LANGUAGE) ?: "en"
@@ -133,7 +151,8 @@ class FoodListViewModel : BaseViewModel() {
 //                        recipesOnFail.postValue(1)
                 }
 
-            })
+            }, 0
+        )
     }
 
     private fun getOnLineDownloadedFoodList() = scopeLife(Dispatchers.IO) {
@@ -170,4 +189,52 @@ class FoodListViewModel : BaseViewModel() {
         }
         foodListLiveData.postValue(dataList)
     }
+
+
+    fun addLikeRecipes(number: String) {
+        var map = HashMap<String, Any>()
+        map["menuId"] = number
+        var gson = Gson()
+        var json = gson.toJson(map)
+        CommonUtils.getTuyaLike("tuya.device.menu.star.add", "1.0",
+            json, object : CommonUtils.TuyaBooleanHttp {
+                override fun bean(t: Boolean) {
+                    var id = ""
+                    if (t){
+                        id = number
+                    }
+                    addLikeLiveData.postValue(id)
+
+                }
+
+                override fun fail() {
+                }
+
+            })
+
+    }
+
+    fun deleteLikeRecipes(number: String) {
+        var map = HashMap<String, Any>()
+        map["menuId"] = number
+        var gson = Gson()
+        var json = gson.toJson(map)
+        CommonUtils.getTuyaLike("tuya.device.menu.star.delete", "1.0",
+            json, object : CommonUtils.TuyaBooleanHttp {
+                override fun bean(t: Boolean) {
+                    var id = ""
+                    if (t){
+                        id = number
+                    }
+                    deleteLikeLiveData.postValue(id)
+                }
+
+                override fun fail() {
+                }
+
+            })
+    }
+
+
+
 }

BIN
libThirdPart/libs/cofar-cooking-device-sdk-0.0.1-SNAPSHOT.jar