refactor(viewmodel): 统一 DbViewModel 初始化并拆分 DAO 结构

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-04-23 11:58:14 +08:00
co-authored by Claude Sonnet 4.6
parent deab289747
commit df0580d68f
24 changed files with 147 additions and 523 deletions
@@ -22,6 +22,7 @@ import com.shuwei.dish.match.R
import com.shuwei.dish.match.databinding.ActivityBaseBinding import com.shuwei.dish.match.databinding.ActivityBaseBinding
import com.shuwei.dish.match.dialog.Loading import com.shuwei.dish.match.dialog.Loading
import com.shuwei.dish.match.net.NetViewModel import com.shuwei.dish.match.net.NetViewModel
import com.shuwei.dish.match.db.DbViewModel
import com.shuwei.dish.match.ui.InitActivity import com.shuwei.dish.match.ui.InitActivity
import com.shuwei.dish.match.utils.ActivityManager import com.shuwei.dish.match.utils.ActivityManager
import com.shuwei.dish.match.utils.ext.dp import com.shuwei.dish.match.utils.ext.dp
@@ -181,6 +182,7 @@ open class BaseActivity : AppCompatActivity() {
val netViewModel: NetViewModel by viewModels() val netViewModel: NetViewModel by viewModels()
val appViewModel: DbViewModel by viewModels()
private var permissionCallback: ((isGranted: Boolean) -> Unit)? = null private var permissionCallback: ((isGranted: Boolean) -> Unit)? = null
private var activityCallback: ((intent: Intent?) -> Unit)? = null private var activityCallback: ((intent: Intent?) -> Unit)? = null
@@ -6,7 +6,9 @@ import androidx.room.Room
import androidx.room.RoomDatabase import androidx.room.RoomDatabase
import androidx.room.migration.Migration import androidx.room.migration.Migration
import androidx.sqlite.db.SupportSQLiteDatabase import androidx.sqlite.db.SupportSQLiteDatabase
import com.shuwei.dish.match.db.dao.AppDao import com.shuwei.dish.match.db.dao.CookFoodDao
import com.shuwei.dish.match.db.dao.CookFoodGoodsDao
import com.shuwei.dish.match.db.dao.SeasoningDao
import com.shuwei.dish.match.db.dao.SeasoningSlotDao import com.shuwei.dish.match.db.dao.SeasoningSlotDao
import com.shuwei.dish.match.entity.CookFoodEntity import com.shuwei.dish.match.entity.CookFoodEntity
import com.shuwei.dish.match.entity.CookFoodGoodsEntity import com.shuwei.dish.match.entity.CookFoodGoodsEntity
@@ -27,11 +29,12 @@ import com.shuwei.dish.match.entity.SeasoningSlotEntity
exportSchema = true exportSchema = true
) )
abstract class AppDatabase : RoomDatabase() { abstract class AppDatabase : RoomDatabase() {
// abstract fun seasoningDao(): SeasoningDao
// abstract fun cookFoodDao(): CookFoodDao
// abstract fun cookFoodGoodsDao(): CookFoodGoodsDao
abstract fun appDao(): AppDao abstract fun cookFoodDao(): CookFoodDao
abstract fun cookFoodGoodsDao(): CookFoodGoodsDao
abstract fun seasoningDao(): SeasoningDao
abstract fun seasoningSlotDao(): SeasoningSlotDao abstract fun seasoningSlotDao(): SeasoningSlotDao
@@ -1,8 +1,6 @@
package com.shuwei.dish.match.db package com.shuwei.dish.match.db
import com.shuwei.dish.match.base.BaseApp import com.shuwei.dish.match.base.BaseApp
import com.shuwei.dish.match.db.dao.AppDao
import com.shuwei.dish.match.db.dao.SeasoningSlotDao
import com.shuwei.dish.match.entity.CookFoodEntity import com.shuwei.dish.match.entity.CookFoodEntity
import com.shuwei.dish.match.entity.CookFoodGoodsEntity import com.shuwei.dish.match.entity.CookFoodGoodsEntity
import com.shuwei.dish.match.entity.SeasoningEntity import com.shuwei.dish.match.entity.SeasoningEntity
@@ -11,101 +9,95 @@ import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.withContext import kotlinx.coroutines.withContext
class DbRepository(val appDao: AppDao, val seasoningSlotDao: SeasoningSlotDao) { class DbRepository {
private val db = BaseApp.instance!!.database
suspend fun insertCookFood(item: CookFoodEntity) = withContext(Dispatchers.IO) { suspend fun insertCookFood(item: CookFoodEntity) = withContext(Dispatchers.IO) {
appDao.insertCookFood(item) db.cookFoodDao().insertCookFood(item)
} }
suspend fun updateCookFood(item: CookFoodEntity) = withContext(Dispatchers.IO) { suspend fun updateCookFood(item: CookFoodEntity) = withContext(Dispatchers.IO) {
appDao.updateCookFood(item) db.cookFoodDao().updateCookFood(item)
} }
suspend fun getCookFoodById(foodId: String, cookMode: Int) = withContext(Dispatchers.IO) { suspend fun getCookFoodById(foodId: String, cookMode: Int) = withContext(Dispatchers.IO) {
appDao.getCookFoodById(BaseApp.canteenId, foodId, cookMode) db.cookFoodDao().getCookFoodById(BaseApp.canteenId, foodId, cookMode)
} }
suspend fun getCookFoodList(cookMode: Int, dinnerType: String) = withContext(Dispatchers.IO) { suspend fun getCookFoodList(cookMode: Int, dinnerType: String) = withContext(Dispatchers.IO) {
appDao.getCookFoodList(BaseApp.canteenId, cookMode, dinnerType) db.cookFoodDao().getCookFoodList(BaseApp.canteenId, cookMode, dinnerType)
} }
suspend fun countCookFood(cookMode: Int) = withContext(Dispatchers.IO) { suspend fun countCookFood(cookMode: Int) = withContext(Dispatchers.IO) {
appDao.countCookFood(BaseApp.canteenId, cookMode) db.cookFoodDao().countCookFood(BaseApp.canteenId, cookMode)
} }
suspend fun deleteCookFood(foodId: String, cookMode: Int) = withContext(Dispatchers.IO) { suspend fun deleteCookFood(foodId: String, cookMode: Int) = withContext(Dispatchers.IO) {
appDao.deleteCookFood(BaseApp.canteenId, foodId, cookMode) db.cookFoodDao().deleteCookFood(BaseApp.canteenId, foodId, cookMode)
} }
suspend fun deleteCookFoodGoodsList(pid: Long, foodId: String) = withContext(Dispatchers.IO) { suspend fun deleteCookFoodGoodsList(pid: Long, foodId: String) = withContext(Dispatchers.IO) {
appDao.deleteCookFoodGoodsList(pid, foodId) db.cookFoodGoodsDao().deleteCookFoodGoodsList(pid, foodId)
} }
//-------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------
// suspend fun insertGoods(item: CookFoodGoodsEntity) = withContext(Dispatchers.IO) {
// appDao.insertGoods(item)
// }
suspend fun insertGoodsList(items: MutableList<CookFoodGoodsEntity>) = suspend fun insertGoodsList(items: MutableList<CookFoodGoodsEntity>) =
withContext(Dispatchers.IO) { withContext(Dispatchers.IO) {
appDao.insertGoodsList(items) db.cookFoodGoodsDao().insertGoodsList(items)
} }
// suspend fun updateGoods(item: CookFoodGoodsEntity) = withContext(Dispatchers.IO) {
// appDao.updateGoods(item)
// }
suspend fun getCookFoodGoodsList(pid: Long, foodId: String) = withContext(Dispatchers.IO) { suspend fun getCookFoodGoodsList(pid: Long, foodId: String) = withContext(Dispatchers.IO) {
appDao.getCookFoodGoodsList(pid, foodId) db.cookFoodGoodsDao().getCookFoodGoodsList(pid, foodId)
} }
suspend fun getCookFoodGoodsListByType( suspend fun getCookFoodGoodsListByType(
foodId: String, foodId: String,
materialType: Int materialType: Int
) = withContext(Dispatchers.IO) { ) = withContext(Dispatchers.IO) {
appDao.getCookFoodGoodsListByType(foodId, materialType) db.cookFoodGoodsDao().getCookFoodGoodsListByType(foodId, materialType)
} }
//-------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------
suspend fun getSeasoningById(id: Long) = withContext(Dispatchers.IO) { suspend fun getSeasoningById(id: Long) = withContext(Dispatchers.IO) {
appDao.getSeasoningById(id) db.seasoningDao().getSeasoningById(id)
} }
suspend fun getSeasoningBySort(sort: Int) = withContext(Dispatchers.IO) { suspend fun getSeasoningBySort(sort: Int) = withContext(Dispatchers.IO) {
appDao.getSeasoningBySort(sort) db.seasoningDao().getSeasoningBySort(sort)
} }
suspend fun getSeasoningByGoodsId(goodsId: Int) = withContext(Dispatchers.IO) { suspend fun getSeasoningByGoodsId(goodsId: Int) = withContext(Dispatchers.IO) {
appDao.getSeasoningByGoodsId(goodsId) db.seasoningDao().getSeasoningByGoodsId(goodsId)
} }
suspend fun getAllStream() = withContext(Dispatchers.IO) { suspend fun getAllStream() = withContext(Dispatchers.IO) {
appDao.getAllStream() db.seasoningDao().getAllStream()
} }
suspend fun search(query: String) = withContext(Dispatchers.IO) { suspend fun search(query: String) = withContext(Dispatchers.IO) {
appDao.search(query) db.seasoningDao().search(query)
} }
suspend fun clearAllSeasoning() = withContext(Dispatchers.IO) { suspend fun clearAllSeasoning() = withContext(Dispatchers.IO) {
appDao.clearAllSeasoning() db.seasoningDao().clearAllSeasoning()
} }
suspend fun deleteSeasoningBySort(sort: Int) = withContext(Dispatchers.IO) { suspend fun deleteSeasoningBySort(sort: Int) = withContext(Dispatchers.IO) {
appDao.deleteSeasoningBySort(sort) db.seasoningDao().deleteSeasoningBySort(sort)
} }
suspend fun insertSeasoningList(items: MutableList<SeasoningEntity>) = suspend fun insertSeasoningList(items: MutableList<SeasoningEntity>) =
withContext(Dispatchers.IO) { withContext(Dispatchers.IO) {
appDao.insertSeasoningList(items) db.seasoningDao().insertSeasoningList(items)
} }
suspend fun updateSeasoning(item: SeasoningEntity) = withContext(Dispatchers.IO) { suspend fun updateSeasoning(item: SeasoningEntity) = withContext(Dispatchers.IO) {
appDao.updateSeasoning(item) db.seasoningDao().updateSeasoning(item)
} }
suspend fun insertSeasoning(item: SeasoningEntity) = withContext(Dispatchers.IO) { suspend fun insertSeasoning(item: SeasoningEntity) = withContext(Dispatchers.IO) {
appDao.insertSeasoning(item) db.seasoningDao().insertSeasoning(item)
} }
/** /**
@@ -114,14 +106,14 @@ class DbRepository(val appDao: AppDao, val seasoningSlotDao: SeasoningSlotDao) {
* @return true 表示已有配置,false 表示未配置 * @return true 表示已有配置,false 表示未配置
*/ */
suspend fun hasSeasoningSlotConfig(deviceId: String) = withContext(Dispatchers.IO) { suspend fun hasSeasoningSlotConfig(deviceId: String) = withContext(Dispatchers.IO) {
seasoningSlotDao.queryByDeviceId(deviceId).isNotEmpty() db.seasoningSlotDao().queryByDeviceId(deviceId).isNotEmpty()
} }
/** /**
* 查询所有设备的调料槽位配置 * 查询所有设备的调料槽位配置
*/ */
suspend fun getAllSeasoningSlots() = withContext(Dispatchers.IO) { suspend fun getAllSeasoningSlots() = withContext(Dispatchers.IO) {
seasoningSlotDao.queryAll() db.seasoningSlotDao().queryAll()
} }
/** /**
@@ -129,21 +121,21 @@ class DbRepository(val appDao: AppDao, val seasoningSlotDao: SeasoningSlotDao) {
* @param deviceId 目标设备 ID * @param deviceId 目标设备 ID
*/ */
suspend fun getSeasoningSlotsByDeviceId(deviceId: String) = withContext(Dispatchers.IO) { suspend fun getSeasoningSlotsByDeviceId(deviceId: String) = withContext(Dispatchers.IO) {
seasoningSlotDao.queryByDeviceId(deviceId) db.seasoningSlotDao().queryByDeviceId(deviceId)
} }
/** /**
* 插入或更新单个调料槽位配置 * 插入或更新单个调料槽位配置
*/ */
suspend fun upsertSeasoningSlot(slot: SeasoningSlotEntity) = withContext(Dispatchers.IO) { suspend fun upsertSeasoningSlot(slot: SeasoningSlotEntity) = withContext(Dispatchers.IO) {
seasoningSlotDao.upsert(slot) db.seasoningSlotDao().upsert(slot)
} }
/** /**
* 批量插入或更新调料槽位配置 * 批量插入或更新调料槽位配置
*/ */
suspend fun upsertAllSeasoningSlots(slots: List<SeasoningSlotEntity>) = withContext(Dispatchers.IO) { suspend fun upsertAllSeasoningSlots(slots: List<SeasoningSlotEntity>) = withContext(Dispatchers.IO) {
seasoningSlotDao.upsertAll(slots) db.seasoningSlotDao().upsertAll(slots)
} }
} }
// //
@@ -1,8 +1,7 @@
package com.shuwei.dish.match.viewmodel package com.shuwei.dish.match.db
import androidx.lifecycle.ViewModel import androidx.lifecycle.ViewModel
import androidx.lifecycle.viewModelScope import androidx.lifecycle.viewModelScope
import com.shuwei.dish.match.db.DbRepository
import com.shuwei.dish.match.entity.CookFoodEntity import com.shuwei.dish.match.entity.CookFoodEntity
import com.shuwei.dish.match.entity.CookFoodGoodsEntity import com.shuwei.dish.match.entity.CookFoodGoodsEntity
import com.shuwei.dish.match.entity.SeasoningEntity import com.shuwei.dish.match.entity.SeasoningEntity
@@ -15,7 +14,9 @@ import kotlinx.coroutines.sync.Mutex
import kotlinx.coroutines.sync.withLock import kotlinx.coroutines.sync.withLock
import kotlin.collections.forEach import kotlin.collections.forEach
class DbViewModel(private val rep: DbRepository) : ViewModel() { class DbViewModel : ViewModel() {
private val rep = DbRepository()
fun updateCookFood(entity: CookFoodEntity) { fun updateCookFood(entity: CookFoodEntity) {
viewModelScope.launch { viewModelScope.launch {
@@ -1,92 +0,0 @@
package com.shuwei.dish.match.db.dao
import androidx.room.Dao
import androidx.room.Insert
import androidx.room.OnConflictStrategy
import androidx.room.Query
import androidx.room.Update
import com.shuwei.dish.match.entity.CookFoodEntity
import com.shuwei.dish.match.entity.CookFoodGoodsEntity
import com.shuwei.dish.match.entity.SeasoningEntity
import kotlinx.coroutines.flow.Flow
@Dao
interface AppDao {
@Insert(onConflict = OnConflictStrategy.REPLACE)
suspend fun insertCookFood(item: CookFoodEntity): Long
@Update
suspend fun updateCookFood(item: CookFoodEntity)
@Query("SELECT * FROM dm_cook_food WHERE isDel = 0 AND canteenId = :canteenId AND foodId = :foodId AND cookMode = :cookMode")
suspend fun getCookFoodById(canteenId:String, foodId: String, cookMode: Int): CookFoodEntity?
@Query("SELECT * FROM dm_cook_food WHERE isDel = 0 AND canteenId = :canteenId AND cookMode = :cookMode AND dinnerType = :dinnerType ORDER BY createTime DESC")
suspend fun getCookFoodList(canteenId:String, cookMode: Int, dinnerType:String): MutableList<CookFoodEntity>?
@Query("SELECT count(1) FROM dm_cook_food WHERE isDel = 0 AND canteenId = :canteenId AND cookMode = :cookMode")
suspend fun countCookFood(canteenId:String, cookMode: Int): Int
@Query("DELETE FROM dm_cook_food WHERE canteenId = :canteenId AND foodId = :foodId AND cookMode = :cookMode")
suspend fun deleteCookFood(canteenId:String, foodId: String, cookMode: Int)
//--------------------------------------------------------------------------------------------
@Insert(onConflict = OnConflictStrategy.REPLACE)
suspend fun insertGoods(item: CookFoodGoodsEntity): Long
@Insert(onConflict = OnConflictStrategy.REPLACE)
suspend fun insertGoodsList(items: MutableList<CookFoodGoodsEntity>): Array<Long>
@Update
suspend fun updateGoods(item: CookFoodGoodsEntity)
@Query("SELECT * FROM dm_cook_food_goods WHERE isDel = 0 AND pid = :pid AND foodId = :foodId")
suspend fun getCookFoodGoodsList(pid:Long, foodId: String): MutableList<CookFoodGoodsEntity>
@Query("SELECT * FROM dm_cook_food_goods WHERE isDel = 0 AND foodId = :foodId AND materialType = :materialType")
suspend fun getCookFoodGoodsListByType(
foodId: String,
materialType: Int
): MutableList<CookFoodGoodsEntity>
@Query("DELETE FROM dm_cook_food_goods WHERE pid = :pid AND foodId = :foodId")
suspend fun deleteCookFoodGoodsList(pid:Long, foodId: String)
//--------------------------------------------------------------------------------------------
@Query("SELECT * FROM dm_seasoning WHERE isDel = 0 AND id = :id")
suspend fun getSeasoningById(id: Long): SeasoningEntity?
@Query("SELECT * FROM dm_seasoning WHERE isDel = 0 AND sort = :sort")
suspend fun getSeasoningBySort(sort: Int): MutableList<SeasoningEntity>?
@Query("SELECT * FROM dm_seasoning WHERE isDel = 0 AND goodsId = :goodsId")
suspend fun getSeasoningByGoodsId(goodsId: Int): SeasoningEntity?
// @Query("SELECT * FROM dm_seasoning WHERE isDel = 0 AND goodsId != -1 AND goodsName != '' ORDER BY sort ASC")
// fun getAllStream(): Flow<MutableList<SeasoningEntity>>
@Query("SELECT * FROM dm_seasoning WHERE isDel = 0 AND goodsId != -1 AND goodsName != '' ORDER BY sort ASC")
fun getAllStream(): MutableList<SeasoningEntity>
@Query("SELECT * FROM dm_seasoning WHERE isDel = 0 AND goodsName LIKE '%' || :query || '%'")
suspend fun search(query: String): MutableList<SeasoningEntity>
@Query("DELETE FROM dm_seasoning WHERE isDel = 0 AND sort = :sort")
suspend fun deleteSeasoningBySort(sort:Int): Int
@Query("DELETE FROM dm_seasoning WHERE isDel = 0")
suspend fun clearAllSeasoning(): Int
@Insert(onConflict = OnConflictStrategy.REPLACE)
suspend fun insertSeasoningList(items: MutableList<SeasoningEntity>): Array<Long>
@Update
suspend fun updateSeasoning(item: SeasoningEntity)
@Insert
suspend fun insertSeasoning(item: SeasoningEntity): Long
//--------------------------------------------------------------------------------------------
}
@@ -1,20 +1,30 @@
//package com.shuwei.dish.match.db.dao package com.shuwei.dish.match.db.dao
//
//import androidx.room.Dao import androidx.room.Dao
//import androidx.room.Query import androidx.room.Insert
//import com.shuwei.dish.match.db.BaseDao import androidx.room.OnConflictStrategy
//import com.shuwei.dish.match.entity.CookFoodEntity import androidx.room.Query
// import androidx.room.Update
//@Dao import com.shuwei.dish.match.entity.CookFoodEntity
//interface CookFoodDao : BaseDao<CookFoodEntity> {
// @Dao
// @Query("SELECT * FROM dm_cook_food WHERE isDel = 0 AND foodId = :foodId AND cookMode = :cookMode") interface CookFoodDao {
// suspend fun getCookFoodById(foodId: String, cookMode:Int): CookFoodEntity?
// @Insert(onConflict = OnConflictStrategy.REPLACE)
// @Query("SELECT * FROM dm_cook_food WHERE isDel = 0 AND cookMode = :cookMode") suspend fun insertCookFood(item: CookFoodEntity): Long
// suspend fun getCookFoodList(cookMode:Int): MutableList<CookFoodEntity>?
// @Update
// @Query("SELECT count(1) FROM dm_cook_food WHERE isDel = 0 AND cookMode = :cookMode") suspend fun updateCookFood(item: CookFoodEntity)
// suspend fun countCookFood(cookMode:Int): Int
// @Query("SELECT * FROM dm_cook_food WHERE isDel = 0 AND canteenId = :canteenId AND foodId = :foodId AND cookMode = :cookMode")
//} suspend fun getCookFoodById(canteenId: String, foodId: String, cookMode: Int): CookFoodEntity?
@Query("SELECT * FROM dm_cook_food WHERE isDel = 0 AND canteenId = :canteenId AND cookMode = :cookMode AND dinnerType = :dinnerType ORDER BY createTime DESC")
suspend fun getCookFoodList(canteenId: String, cookMode: Int, dinnerType: String): MutableList<CookFoodEntity>?
@Query("SELECT count(1) FROM dm_cook_food WHERE isDel = 0 AND canteenId = :canteenId AND cookMode = :cookMode")
suspend fun countCookFood(canteenId: String, cookMode: Int): Int
@Query("DELETE FROM dm_cook_food WHERE canteenId = :canteenId AND foodId = :foodId AND cookMode = :cookMode")
suspend fun deleteCookFood(canteenId: String, foodId: String, cookMode: Int)
}
@@ -1,29 +1,30 @@
//package com.shuwei.dish.match.db.dao package com.shuwei.dish.match.db.dao
//
//import androidx.room.Dao import androidx.room.Dao
//import androidx.room.Query import androidx.room.Insert
//import com.shuwei.dish.match.db.BaseDao import androidx.room.OnConflictStrategy
//import com.shuwei.dish.match.entity.CookFoodGoodsEntity import androidx.room.Query
// import androidx.room.Update
//@Dao import com.shuwei.dish.match.entity.CookFoodGoodsEntity
//interface CookFoodGoodsDao : BaseDao<CookFoodGoodsEntity> {
// @Dao
// @Query("SELECT * FROM dm_cook_food_goods WHERE isDel = 0 AND foodId = :foodId") interface CookFoodGoodsDao {
// suspend fun getCookFoodGoodsList(foodId: String): MutableList<CookFoodGoodsEntity>
// @Insert(onConflict = OnConflictStrategy.REPLACE)
// @Query("SELECT * FROM dm_cook_food_goods WHERE isDel = 0 AND foodId = :foodId AND materialType = :materialType") suspend fun insertGoods(item: CookFoodGoodsEntity): Long
// suspend fun getCookFoodGoodsListByType(foodId: String, materialType:Int): MutableList<CookFoodGoodsEntity>
// @Insert(onConflict = OnConflictStrategy.REPLACE)
//// @Query( suspend fun insertGoodsList(items: MutableList<CookFoodGoodsEntity>): Array<Long>
//// """
//// UPDATE dm_cook_food_goods @Update
//// SET goodsName=:entity.goodsName, foodId=:entity.foodId, relateionType=:entity.relateionType, sort=:entity.sort suspend fun updateGoods(item: CookFoodGoodsEntity)
//// allEdible=:entity.allEdible, useWeight=:entity.useWeight, isDel=:entity.isDel, createTime=:entity.createTime
//// WHERE isDel = 0 @Query("SELECT * FROM dm_cook_food_goods WHERE isDel = 0 AND pid = :pid AND foodId = :foodId")
//// AND foodId=:entity.foodId suspend fun getCookFoodGoodsList(pid: Long, foodId: String): MutableList<CookFoodGoodsEntity>
//// AND goodsId=:goodsId
//// """ @Query("SELECT * FROM dm_cook_food_goods WHERE isDel = 0 AND foodId = :foodId AND materialType = :materialType")
//// ) suspend fun getCookFoodGoodsListByType(foodId: String, materialType: Int): MutableList<CookFoodGoodsEntity>
//// fun updateByGoodsId(entity: CookFoodGoodsEntity)
// @Query("DELETE FROM dm_cook_food_goods WHERE pid = :pid AND foodId = :foodId")
//} suspend fun deleteCookFoodGoodsList(pid: Long, foodId: String)
}
@@ -1,25 +1,42 @@
//package com.shuwei.dish.match.db.dao package com.shuwei.dish.match.db.dao
//
//import androidx.room.Dao import androidx.room.Dao
//import androidx.room.Query import androidx.room.Insert
//import com.shuwei.dish.match.db.BaseDao import androidx.room.OnConflictStrategy
//import com.shuwei.dish.match.entity.SeasoningEntity import androidx.room.Query
//import kotlinx.coroutines.flow.Flow import androidx.room.Update
// import com.shuwei.dish.match.entity.SeasoningEntity
//@Dao
//interface SeasoningDao : BaseDao<SeasoningEntity> { @Dao
// interface SeasoningDao {
//// @Query("SELECT * FROM dm_seasoning WHERE isDel = 0 AND id = :id")
//// suspend fun getSeasoningById(id: Long): SeasoningEntity? @Insert(onConflict = OnConflictStrategy.REPLACE)
//// suspend fun insertSeasoning(item: SeasoningEntity): Long
//// @Query("SELECT * FROM dm_seasoning WHERE isDel = 0 ORDER BY sort ASC")
//// fun getAllStream(): Flow<MutableList<SeasoningEntity>> @Insert(onConflict = OnConflictStrategy.REPLACE)
//// suspend fun insertSeasoningList(items: MutableList<SeasoningEntity>): Array<Long>
//// @Query("SELECT * FROM dm_seasoning WHERE isDel = 0 AND name LIKE '%' || :query || '%'")
//// suspend fun search(query: String): MutableList<SeasoningEntity> @Update
//// suspend fun updateSeasoning(item: SeasoningEntity)
//// @Query("DELETE FROM dm_seasoning WHERE rowid IN " +
//// "(SELECT rowid FROM dm_seasoning LIMIT 1000)") @Query("SELECT * FROM dm_seasoning WHERE isDel = 0 AND id = :id")
//// suspend fun deleteBatch(): Int suspend fun getSeasoningById(id: Long): SeasoningEntity?
//
//} @Query("SELECT * FROM dm_seasoning WHERE isDel = 0 AND sort = :sort")
suspend fun getSeasoningBySort(sort: Int): MutableList<SeasoningEntity>?
@Query("SELECT * FROM dm_seasoning WHERE isDel = 0 AND goodsId = :goodsId")
suspend fun getSeasoningByGoodsId(goodsId: Int): SeasoningEntity?
@Query("SELECT * FROM dm_seasoning WHERE isDel = 0 AND goodsId != -1 AND goodsName != '' ORDER BY sort ASC")
fun getAllStream(): MutableList<SeasoningEntity>
@Query("SELECT * FROM dm_seasoning WHERE isDel = 0 AND goodsName LIKE '%' || :query || '%'")
suspend fun search(query: String): MutableList<SeasoningEntity>
@Query("DELETE FROM dm_seasoning WHERE isDel = 0 AND sort = :sort")
suspend fun deleteSeasoningBySort(sort: Int): Int
@Query("DELETE FROM dm_seasoning WHERE isDel = 0")
suspend fun clearAllSeasoning(): Int
}
@@ -29,8 +29,6 @@
//import com.shuwei.dish.match.utils.ext.startActivity //import com.shuwei.dish.match.utils.ext.startActivity
//import com.shuwei.dish.match.utils.ext.toast //import com.shuwei.dish.match.utils.ext.toast
//import com.shuwei.dish.match.utils.ext.visible //import com.shuwei.dish.match.utils.ext.visible
//import com.shuwei.dish.match.viewmodel.DbViewModel
//import com.shuwei.dish.match.viewmodel.factory.AppFactory
//import com.shuwei.dish.match.adapter.TextCellAdapter //import com.shuwei.dish.match.adapter.TextCellAdapter
//import com.shuwei.dish.match.databinding.ActivityDeviceConfigBinding //import com.shuwei.dish.match.databinding.ActivityDeviceConfigBinding
//import com.shuwei.dish.match.dialog.SeasoningSearchDialog //import com.shuwei.dish.match.dialog.SeasoningSearchDialog
@@ -7,7 +7,6 @@ import android.util.Log
import android.view.View import android.view.View
import androidx.activity.addCallback import androidx.activity.addCallback
import androidx.activity.viewModels import androidx.activity.viewModels
import androidx.lifecycle.ViewModelProvider
import androidx.recyclerview.widget.ItemTouchHelper import androidx.recyclerview.widget.ItemTouchHelper
import androidx.recyclerview.widget.LinearLayoutManager import androidx.recyclerview.widget.LinearLayoutManager
import com.shuwei.dish.match.R import com.shuwei.dish.match.R
@@ -15,7 +14,6 @@ import com.shuwei.dish.match.adapter.DishPartAdapter
import com.shuwei.dish.match.base.BaseActivity import com.shuwei.dish.match.base.BaseActivity
import com.shuwei.dish.match.base.BaseApp import com.shuwei.dish.match.base.BaseApp
import com.shuwei.dish.match.databinding.ActivityDishSamplingBinding import com.shuwei.dish.match.databinding.ActivityDishSamplingBinding
import com.shuwei.dish.match.db.DbRepository
import com.shuwei.dish.match.dialog.FoodSearchDialog import com.shuwei.dish.match.dialog.FoodSearchDialog
import com.shuwei.dish.match.dialog.CommonDialog import com.shuwei.dish.match.dialog.CommonDialog
import com.shuwei.dish.match.entity.CookFoodEntity import com.shuwei.dish.match.entity.CookFoodEntity
@@ -33,8 +31,6 @@ import com.shuwei.dish.match.utils.ext.startActivity
import com.shuwei.dish.match.utils.ext.toJsonString import com.shuwei.dish.match.utils.ext.toJsonString
import com.shuwei.dish.match.utils.ext.toast import com.shuwei.dish.match.utils.ext.toast
import com.shuwei.dish.match.utils.ext.visible import com.shuwei.dish.match.utils.ext.visible
import com.shuwei.dish.match.viewmodel.DbViewModel
import com.shuwei.dish.match.viewmodel.factory.AppFactory
import java.io.Serializable import java.io.Serializable
class DishSamplingActivity : BaseActivity() { class DishSamplingActivity : BaseActivity() {
@@ -62,7 +58,6 @@ class DishSamplingActivity : BaseActivity() {
setTitleBar() setTitleBar()
setHeaderBackground() setHeaderBackground()
addViewClickListener() addViewClickListener()
initViewModel()
foodName = intent.getStringExtra(FOOD_NAME) foodName = intent.getStringExtra(FOOD_NAME)
binding.etInputDish.setText(foodName) binding.etInputDish.setText(foodName)
@@ -97,15 +92,7 @@ class DishSamplingActivity : BaseActivity() {
}) })
} }
private lateinit var appViewModel: DbViewModel
private fun initViewModel() {
val db = BaseApp.instance!!.database
val factory =
AppFactory(DbRepository(db.appDao(), db.seasoningSlotDao()))
appViewModel =
ViewModelProvider(this, factory)[DbViewModel::class.java]
}
fun getCookFoodList() { fun getCookFoodList() {
appViewModel.getCookFoodList(cookMode = 1) appViewModel.getCookFoodList(cookMode = 1)
@@ -3,7 +3,6 @@ package com.shuwei.dish.match.ui
import android.annotation.SuppressLint import android.annotation.SuppressLint
import android.os.Bundle import android.os.Bundle
import androidx.activity.addCallback import androidx.activity.addCallback
import androidx.lifecycle.ViewModelProvider
import androidx.lifecycle.lifecycleScope import androidx.lifecycle.lifecycleScope
import androidx.recyclerview.widget.LinearLayoutManager import androidx.recyclerview.widget.LinearLayoutManager
import com.shuwei.dish.match.R import com.shuwei.dish.match.R
@@ -11,13 +10,10 @@ import com.shuwei.dish.match.adapter.HomeModeAdapter
import com.shuwei.dish.match.base.BaseActivity import com.shuwei.dish.match.base.BaseActivity
import com.shuwei.dish.match.base.BaseApp import com.shuwei.dish.match.base.BaseApp
import com.shuwei.dish.match.databinding.ActivityHomeBinding import com.shuwei.dish.match.databinding.ActivityHomeBinding
import com.shuwei.dish.match.db.DbRepository
import com.shuwei.dish.match.entity.HomeModeBean import com.shuwei.dish.match.entity.HomeModeBean
import com.shuwei.dish.match.utils.SpTool import com.shuwei.dish.match.utils.SpTool
import com.shuwei.dish.match.utils.ext.startActivity import com.shuwei.dish.match.utils.ext.startActivity
import com.shuwei.dish.match.utils.ext.toast import com.shuwei.dish.match.utils.ext.toast
import com.shuwei.dish.match.viewmodel.DbViewModel
import com.shuwei.dish.match.viewmodel.factory.AppFactory
import kotlinx.coroutines.launch import kotlinx.coroutines.launch
class HomeActivity : BaseActivity() { class HomeActivity : BaseActivity() {
@@ -34,7 +30,6 @@ class HomeActivity : BaseActivity() {
override fun onCreate(savedInstanceState: Bundle?) { override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState) super.onCreate(savedInstanceState)
statusBarDarkFont(enable = true) statusBarDarkFont(enable = true)
initViewModel()
// // 获取 ANDROID_ID // // 获取 ANDROID_ID
// val deviceId = // val deviceId =
// Settings.Secure.getString(contentResolver, Settings.Secure.ANDROID_ID) // Settings.Secure.getString(contentResolver, Settings.Secure.ANDROID_ID)
@@ -136,13 +131,7 @@ class HomeActivity : BaseActivity() {
) )
} }
private lateinit var appViewModel: DbViewModel
private fun initViewModel() {
val db = BaseApp.instance!!.database
val factory = AppFactory(DbRepository(db.appDao(), db.seasoningSlotDao()))
appViewModel = ViewModelProvider(this, factory)[DbViewModel::class.java]
}
private fun goSampling() { private fun goSampling() {
lifecycleScope.launch { lifecycleScope.launch {
@@ -9,14 +9,12 @@ import android.view.KeyEvent
import android.view.animation.RotateAnimation import android.view.animation.RotateAnimation
import androidx.activity.addCallback import androidx.activity.addCallback
import androidx.core.graphics.toColorInt import androidx.core.graphics.toColorInt
import androidx.lifecycle.ViewModelProvider
import androidx.lifecycle.lifecycleScope import androidx.lifecycle.lifecycleScope
import com.shuwei.dish.match.base.BaseActivity import com.shuwei.dish.match.base.BaseActivity
import com.shuwei.dish.match.base.BaseApp import com.shuwei.dish.match.base.BaseApp
import com.shuwei.dish.match.base.DeviceRole import com.shuwei.dish.match.base.DeviceRole
import com.shuwei.dish.match.base.GlobalData import com.shuwei.dish.match.base.GlobalData
import com.shuwei.dish.match.databinding.ActivityInitBinding import com.shuwei.dish.match.databinding.ActivityInitBinding
import com.shuwei.dish.match.db.DbRepository
import com.shuwei.dish.match.objbox.FoodModule import com.shuwei.dish.match.objbox.FoodModule
import com.shuwei.dish.match.scale.ScaleServiceManager import com.shuwei.dish.match.scale.ScaleServiceManager
import com.shuwei.dish.match.utils.AppUtil import com.shuwei.dish.match.utils.AppUtil
@@ -27,8 +25,6 @@ import com.shuwei.dish.match.utils.WeightUtil
import com.shuwei.dish.match.utils.ext.gone import com.shuwei.dish.match.utils.ext.gone
import com.shuwei.dish.match.utils.ext.startActivity import com.shuwei.dish.match.utils.ext.startActivity
import com.shuwei.dish.match.utils.ext.visible import com.shuwei.dish.match.utils.ext.visible
import com.shuwei.dish.match.viewmodel.DbViewModel
import com.shuwei.dish.match.viewmodel.factory.AppFactory
import kotlinx.coroutines.delay import kotlinx.coroutines.delay
import kotlinx.coroutines.launch import kotlinx.coroutines.launch
@@ -38,7 +34,6 @@ class InitActivity : BaseActivity() {
} }
private lateinit var binding: ActivityInitBinding private lateinit var binding: ActivityInitBinding
private lateinit var appViewModel: DbViewModel
private var startTime = 0L // 倒计时开始时间 private var startTime = 0L // 倒计时开始时间
private var lastNetworkCheckTime = 0L // 上次检测网络的时间 private var lastNetworkCheckTime = 0L // 上次检测网络的时间
@@ -59,8 +54,6 @@ class InitActivity : BaseActivity() {
BaseApp.canteenId = "0" BaseApp.canteenId = "0"
initViewModel()
WeightUtil.init() WeightUtil.init()
WeightUtil.getWeight() WeightUtil.getWeight()
WeightUtil.startContinuousRead() WeightUtil.startContinuousRead()
@@ -68,11 +61,6 @@ class InitActivity : BaseActivity() {
initViews() initViews()
} }
private fun initViewModel() {
val db = BaseApp.instance!!.database
val factory = AppFactory(DbRepository(db.appDao(), db.seasoningSlotDao()))
appViewModel = ViewModelProvider(this, factory)[DbViewModel::class.java]
}
private fun startNextPage(withDelay: Boolean = false) { private fun startNextPage(withDelay: Boolean = false) {
lifecycleScope.launch { lifecycleScope.launch {
@@ -26,10 +26,6 @@ import com.shuwei.dish.match.databinding.ListTypeScale18Binding
import com.shuwei.dish.match.databinding.ListTypeScale2Binding import com.shuwei.dish.match.databinding.ListTypeScale2Binding
import com.shuwei.dish.match.databinding.ListTypeScale22Binding import com.shuwei.dish.match.databinding.ListTypeScale22Binding
import com.shuwei.dish.match.base.BaseApp import com.shuwei.dish.match.base.BaseApp
import com.shuwei.dish.match.db.DbRepository
import androidx.lifecycle.ViewModelProvider
import com.shuwei.dish.match.viewmodel.DbViewModel
import com.shuwei.dish.match.viewmodel.factory.AppFactory
import com.shuwei.dish.match.databinding.ListItemScale22RowBinding import com.shuwei.dish.match.databinding.ListItemScale22RowBinding
import com.shuwei.dish.match.scale.ScaleData import com.shuwei.dish.match.scale.ScaleData
import com.shuwei.dish.match.scale.ScaleDeviceConfig import com.shuwei.dish.match.scale.ScaleDeviceConfig
@@ -56,7 +52,6 @@ class MasterScaleActivity : BaseActivity() {
private lateinit var binding: ActivityMasterScaleBinding private lateinit var binding: ActivityMasterScaleBinding
private val size by lazy { SizeTool.getFlexLayoutSize(10.dp) } private val size by lazy { SizeTool.getFlexLayoutSize(10.dp) }
private lateinit var appViewModel: DbViewModel
private data class DeviceGroup( private data class DeviceGroup(
val deviceId: String, val deviceId: String,
val ip: String, val ip: String,
@@ -80,8 +75,6 @@ class MasterScaleActivity : BaseActivity() {
binding.rvScaleList.itemAnimator = null binding.rvScaleList.itemAnimator = null
binding.rvScaleList.adapter = adapter binding.rvScaleList.adapter = adapter
val db = BaseApp.instance!!.database
appViewModel = ViewModelProvider(this, AppFactory(DbRepository(db.appDao(), db.seasoningSlotDao())))[DbViewModel::class.java]
loadSlotNames() loadSlotNames()
} }
@@ -6,7 +6,6 @@ import android.os.Bundle
import android.view.LayoutInflater import android.view.LayoutInflater
import androidx.activity.addCallback import androidx.activity.addCallback
import androidx.lifecycle.Lifecycle import androidx.lifecycle.Lifecycle
import androidx.lifecycle.ViewModelProvider
import androidx.lifecycle.lifecycleScope import androidx.lifecycle.lifecycleScope
import androidx.lifecycle.repeatOnLifecycle import androidx.lifecycle.repeatOnLifecycle
import androidx.recyclerview.widget.ItemTouchHelper import androidx.recyclerview.widget.ItemTouchHelper
@@ -17,7 +16,6 @@ import com.shuwei.dish.match.base.BaseActivity
import com.shuwei.dish.match.base.BaseApp import com.shuwei.dish.match.base.BaseApp
import com.shuwei.dish.match.databinding.ActivitySamplingBinding import com.shuwei.dish.match.databinding.ActivitySamplingBinding
import com.shuwei.dish.match.databinding.LayoutEmptyViewBinding import com.shuwei.dish.match.databinding.LayoutEmptyViewBinding
import com.shuwei.dish.match.db.DbRepository
import com.shuwei.dish.match.dialog.CommonDialog import com.shuwei.dish.match.dialog.CommonDialog
import com.shuwei.dish.match.entity.CookFoodEntity import com.shuwei.dish.match.entity.CookFoodEntity
import com.shuwei.dish.match.entity.FoodRecord import com.shuwei.dish.match.entity.FoodRecord
@@ -27,8 +25,6 @@ import com.shuwei.dish.match.utils.ext.gone
import com.shuwei.dish.match.utils.ext.startActivity import com.shuwei.dish.match.utils.ext.startActivity
import com.shuwei.dish.match.utils.ext.toast import com.shuwei.dish.match.utils.ext.toast
import com.shuwei.dish.match.utils.ext.visible import com.shuwei.dish.match.utils.ext.visible
import com.shuwei.dish.match.viewmodel.DbViewModel
import com.shuwei.dish.match.viewmodel.factory.AppFactory
import java.io.Serializable import java.io.Serializable
import kotlinx.coroutines.launch import kotlinx.coroutines.launch
import com.shuwei.dish.match.net.UiState import com.shuwei.dish.match.net.UiState
@@ -49,7 +45,6 @@ class SamplingListActivity : BaseActivity() {
setContentView(binding.root) setContentView(binding.root)
setTitleBar() setTitleBar()
setHeaderBackground() setHeaderBackground()
initViewModel()
initRecyclerView() initRecyclerView()
addViewListener() addViewListener()
initObserver() initObserver()
@@ -128,13 +123,7 @@ class SamplingListActivity : BaseActivity() {
} }
private lateinit var appViewModel: DbViewModel
private fun initViewModel() {
val db = BaseApp.instance!!.database
val factory = AppFactory(DbRepository(db.appDao(), db.seasoningSlotDao()))
appViewModel = ViewModelProvider(this, factory)[DbViewModel::class.java]
}
fun getCookFoodList() { fun getCookFoodList() {
appViewModel.getCookFoodList(cookMode = 1) appViewModel.getCookFoodList(cookMode = 1)
@@ -3,14 +3,12 @@ package com.shuwei.dish.match.ui
import android.content.Intent import android.content.Intent
import android.os.Bundle import android.os.Bundle
import androidx.activity.addCallback import androidx.activity.addCallback
import androidx.lifecycle.ViewModelProvider
import androidx.lifecycle.lifecycleScope import androidx.lifecycle.lifecycleScope
import kotlinx.coroutines.launch import kotlinx.coroutines.launch
import com.shuwei.dish.match.R import com.shuwei.dish.match.R
import com.shuwei.dish.match.base.BaseActivity import com.shuwei.dish.match.base.BaseActivity
import com.shuwei.dish.match.base.BaseApp import com.shuwei.dish.match.base.BaseApp
import com.shuwei.dish.match.databinding.ActivitySelectDishBinding import com.shuwei.dish.match.databinding.ActivitySelectDishBinding
import com.shuwei.dish.match.db.DbRepository
import com.shuwei.dish.match.dialog.CommonDialog import com.shuwei.dish.match.dialog.CommonDialog
import com.shuwei.dish.match.ui.fragment.DishListFragment import com.shuwei.dish.match.ui.fragment.DishListFragment
import com.shuwei.dish.match.utils.KeyboardUtil import com.shuwei.dish.match.utils.KeyboardUtil
@@ -19,8 +17,6 @@ import com.shuwei.dish.match.utils.ext.gone
import com.shuwei.dish.match.utils.ext.startActivity import com.shuwei.dish.match.utils.ext.startActivity
import com.shuwei.dish.match.utils.ext.toast import com.shuwei.dish.match.utils.ext.toast
import com.shuwei.dish.match.utils.ext.visible import com.shuwei.dish.match.utils.ext.visible
import com.shuwei.dish.match.viewmodel.DbViewModel
import com.shuwei.dish.match.viewmodel.factory.AppFactory
class SelectDishActivity : BaseActivity() { class SelectDishActivity : BaseActivity() {
@@ -32,9 +28,6 @@ class SelectDishActivity : BaseActivity() {
private lateinit var binding: ActivitySelectDishBinding private lateinit var binding: ActivitySelectDishBinding
lateinit var appViewModel: DbViewModel
private set
private var dinnerType: String = "1" private var dinnerType: String = "1"
private val fragmentList = mutableListOf<DishListFragment>().apply { private val fragmentList = mutableListOf<DishListFragment>().apply {
@@ -61,17 +54,11 @@ class SelectDishActivity : BaseActivity() {
}, backAction = { }, backAction = {
it.gone() it.gone()
}) })
initViewModel()
addViewListener() addViewListener()
loadFragment() loadFragment()
onBackPressedDispatcher.addCallback(this) {} onBackPressedDispatcher.addCallback(this) {}
} }
private fun initViewModel() {
val db = BaseApp.instance!!.database
val factory = AppFactory(DbRepository(db.appDao(), db.seasoningSlotDao()))
appViewModel = ViewModelProvider(this, factory)[DbViewModel::class.java]
}
fun getCookFoodList() { fun getCookFoodList() {
appViewModel.getCookFoodList(cookMode = 0, dinnerType = dinnerType) appViewModel.getCookFoodList(cookMode = 0, dinnerType = dinnerType)
@@ -4,17 +4,13 @@ import android.content.Context
import android.content.Intent import android.content.Intent
import android.os.Bundle import android.os.Bundle
import androidx.fragment.app.Fragment import androidx.fragment.app.Fragment
import androidx.lifecycle.ViewModelProvider
import com.shuwei.dish.match.base.BaseActivity import com.shuwei.dish.match.base.BaseActivity
import com.shuwei.dish.match.base.BaseApp import com.shuwei.dish.match.base.BaseApp
import com.shuwei.dish.match.db.DbRepository
import com.shuwei.dish.match.ui.fragment.CollectFragment import com.shuwei.dish.match.ui.fragment.CollectFragment
import com.shuwei.dish.match.ui.fragment.DeviceConfigFragment import com.shuwei.dish.match.ui.fragment.DeviceConfigFragment
import com.shuwei.dish.match.ui.fragment.SeasoningConfigFragment import com.shuwei.dish.match.ui.fragment.SeasoningConfigFragment
import com.shuwei.dish.match.utils.ext.gone import com.shuwei.dish.match.utils.ext.gone
import com.shuwei.dish.match.utils.ext.visible import com.shuwei.dish.match.utils.ext.visible
import com.shuwei.dish.match.viewmodel.DbViewModel
import com.shuwei.dish.match.viewmodel.factory.AppFactory
/** /**
* 通用单 Fragment 容器 Activity * 通用单 Fragment 容器 Activity
@@ -63,15 +59,9 @@ class SingleFragmentActivity : BaseActivity() {
lifecycleCallback = callback lifecycleCallback = callback
} }
lateinit var appViewModel: DbViewModel
private set
override fun onCreate(savedInstanceState: Bundle?) { override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState) super.onCreate(savedInstanceState)
val db = BaseApp.instance!!.database
appViewModel = ViewModelProvider(this, AppFactory(DbRepository(db.appDao(), db.seasoningSlotDao())))[DbViewModel::class.java]
setHeaderBackground() setHeaderBackground()
// 解析页面类型,非法值直接关闭 // 解析页面类型,非法值直接关闭
@@ -31,10 +31,6 @@ import com.shuwei.dish.match.utils.SizeTool
import com.shuwei.dish.match.utils.WeightUtil import com.shuwei.dish.match.utils.WeightUtil
import com.shuwei.dish.match.utils.ext.dp import com.shuwei.dish.match.utils.ext.dp
import kotlinx.coroutines.launch import kotlinx.coroutines.launch
import androidx.lifecycle.ViewModelProvider
import com.shuwei.dish.match.db.DbRepository
import com.shuwei.dish.match.viewmodel.DbViewModel
import com.shuwei.dish.match.viewmodel.factory.AppFactory
/** /**
* 子设备专属页面(小屏幕设备使用) * 子设备专属页面(小屏幕设备使用)
@@ -66,17 +62,12 @@ class SlaveActivity : BaseActivity() {
private var clearHighlightRunnable: Runnable? = null private var clearHighlightRunnable: Runnable? = null
private val size by lazy { SizeTool.getFlexLayoutSize(10.dp) } private val size by lazy { SizeTool.getFlexLayoutSize(10.dp) }
private lateinit var appViewModel: DbViewModel
override fun onCreate(savedInstanceState: Bundle?) { override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState) super.onCreate(savedInstanceState)
binding = ActivitySlaveBinding.inflate(layoutInflater) binding = ActivitySlaveBinding.inflate(layoutInflater)
setContentView(binding.root) setContentView(binding.root)
setHeaderBackground() setHeaderBackground()
val db = BaseApp.instance!!.database
appViewModel = ViewModelProvider(this, AppFactory(DbRepository(db.appDao(), db.seasoningSlotDao())))[DbViewModel::class.java]
binding.tvDeviceId.text = "设备:${GlobalData.deviceId}" binding.tvDeviceId.text = "设备:${GlobalData.deviceId}"
binding.tvDeviceIp.text = "IP${getLocalIpAddress()}" binding.tvDeviceIp.text = "IP${getLocalIpAddress()}"
@@ -4,7 +4,6 @@ import android.annotation.SuppressLint
import android.os.Bundle import android.os.Bundle
import android.util.Log import android.util.Log
import androidx.activity.addCallback import androidx.activity.addCallback
import androidx.lifecycle.ViewModelProvider
import androidx.lifecycle.Lifecycle import androidx.lifecycle.Lifecycle
import androidx.lifecycle.lifecycleScope import androidx.lifecycle.lifecycleScope
import androidx.lifecycle.repeatOnLifecycle import androidx.lifecycle.repeatOnLifecycle
@@ -15,7 +14,6 @@ import com.shuwei.dish.match.adapter.SeasoningWeightAdapter
import com.shuwei.dish.match.base.BaseActivity import com.shuwei.dish.match.base.BaseActivity
import com.shuwei.dish.match.base.BaseApp import com.shuwei.dish.match.base.BaseApp
import com.shuwei.dish.match.databinding.ActivitySubmitFoodBinding import com.shuwei.dish.match.databinding.ActivitySubmitFoodBinding
import com.shuwei.dish.match.db.DbRepository
import com.shuwei.dish.match.dialog.CommonDialog import com.shuwei.dish.match.dialog.CommonDialog
import com.shuwei.dish.match.entity.CookFoodEntity import com.shuwei.dish.match.entity.CookFoodEntity
import com.shuwei.dish.match.entity.CookFoodGoodsEntity import com.shuwei.dish.match.entity.CookFoodGoodsEntity
@@ -35,8 +33,6 @@ import com.shuwei.dish.match.utils.ext.toJsonString
import com.shuwei.dish.match.utils.ext.toType import com.shuwei.dish.match.utils.ext.toType
import com.shuwei.dish.match.utils.ext.toast import com.shuwei.dish.match.utils.ext.toast
import com.shuwei.dish.match.utils.ext.visible import com.shuwei.dish.match.utils.ext.visible
import com.shuwei.dish.match.viewmodel.DbViewModel
import com.shuwei.dish.match.viewmodel.factory.AppFactory
import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.flow.collectLatest import kotlinx.coroutines.flow.collectLatest
import kotlinx.coroutines.launch import kotlinx.coroutines.launch
@@ -100,7 +96,6 @@ class SubmitFoodActivity : BaseActivity() {
super.onCreate(savedInstanceState) super.onCreate(savedInstanceState)
binding = ActivitySubmitFoodBinding.inflate(layoutInflater) binding = ActivitySubmitFoodBinding.inflate(layoutInflater)
setContentView(binding.root) setContentView(binding.root)
initViewModel()
setHeaderBackground() setHeaderBackground()
intent.extras?.apply { intent.extras?.apply {
food = getSerializable(FOOD_ITEM) as FoodRecord? food = getSerializable(FOOD_ITEM) as FoodRecord?
@@ -406,13 +401,7 @@ class SubmitFoodActivity : BaseActivity() {
} }
} }
private lateinit var appViewModel: DbViewModel
private fun initViewModel() {
val db = BaseApp.instance!!.database
val factory = AppFactory(DbRepository(db.appDao(), db.seasoningSlotDao()))
appViewModel = ViewModelProvider(this, factory)[DbViewModel::class.java]
}
override fun onDestroy() { override fun onDestroy() {
WeightUtil.removeWeightListener(TAG) WeightUtil.removeWeightListener(TAG)
@@ -54,22 +54,12 @@ class DeviceConfigFragment : BaseFragment<FragmentDeviceConfigBinding>() {
} }
override fun initialize() { override fun initialize() {
initViewModel()
initUI() initUI()
// addWeighListener() // addWeighListener()
// addGridItemListener() // addGridItemListener()
// loadSeasoning() // loadSeasoning()
} }
/**
* 初始化ViewModel
*/
private fun initViewModel() {
// val db = BaseApp.instance!!.database
// val factory = AppFactory(DbRepository(db.appDao()))
// appViewModel = ViewModelProvider(this, factory)[DbViewModel::class.java]
}
/** /**
* 初始化UI * 初始化UI
*/ */
@@ -1,42 +0,0 @@
//package com.shuwei.dish.match.viewmodel
//
//import androidx.lifecycle.ViewModel
//import androidx.lifecycle.viewModelScope
//import com.shuwei.dish.match.db.CookFoodGoodsRepository
//import com.shuwei.dish.match.entity.CookFoodGoodsEntity
//import kotlinx.coroutines.launch
//
//class CookFoodGoodsViewModel(private val rep: CookFoodGoodsRepository) : ViewModel() {
//
// fun getCookFoodGoodsList(
// foodId: String,
// action: (list: MutableList<CookFoodGoodsEntity>) -> Unit
// ) {
// viewModelScope.launch {
// val list = rep.cookFoodGoodsDao.getCookFoodGoodsList(foodId)
// action(list)
// }
// }
//
// fun saveCookFoodGoods(list: MutableList<CookFoodGoodsEntity>) {
// viewModelScope.launch {
// val foodId = list[0].foodId
// val data: MutableList<CookFoodGoodsEntity>? =
// rep.cookFoodGoodsDao.getCookFoodGoodsList(foodId!!)
// if (data.isNullOrEmpty()) {
// rep.cookFoodGoodsDao.insertAll(list)
// return@launch
// }
// val localDbSeasoningList = rep.cookFoodGoodsDao.getCookFoodGoodsListByType(foodId, 3)
// localDbSeasoningList.forEach {
// it.isDel = 1
// //更新本地调料数据为已删除的状态
// rep.cookFoodGoodsDao.update(it)
// }
// //筛选出调料数据保存,主辅材不会变更不需要再次处理
// val saveSeasoningList = list.filter { it.materialType == 3 }
// rep.cookFoodGoodsDao.insertAll(saveSeasoningList.toMutableList())
// }
// }
//
//}
@@ -1,44 +0,0 @@
//package com.shuwei.dish.match.viewmodel
//
//import androidx.lifecycle.ViewModel
//import androidx.lifecycle.viewModelScope
//import com.shuwei.dish.match.db.CookFoodRepository
//import com.shuwei.dish.match.entity.CookFoodEntity
//import kotlinx.coroutines.launch
//
//class CookFoodViewModel(private val rep: CookFoodRepository) : ViewModel() {
//
// fun getCookFoodById(foodId: String, cookMode: Int, action: (CookFoodEntity?) -> Unit) {
// viewModelScope.launch {
// val data = rep.cookFoodDao.getCookFoodById(foodId, cookMode)
// action(data)
// }
// }
//
// fun getCookFoodList(cookMode: Int, action: (MutableList<CookFoodEntity>?) -> Unit) {
// viewModelScope.launch {
// val data = rep.cookFoodDao.getCookFoodList(cookMode)
// action(data)
// }
// }
//
// fun countCookFood(cookMode: Int, action: (Int) -> Unit) {
// viewModelScope.launch {
// val count = rep.cookFoodDao.countCookFood(cookMode)
// action(count)
// }
// }
//
// fun saveCookFood(cookMode: Int, entity: CookFoodEntity) {
// viewModelScope.launch {
// val data = rep.cookFoodDao.getCookFoodById(entity.foodId, cookMode)
// if (data == null) {
// rep.cookFoodDao.insert(entity)
// return@launch
// }
// rep.cookFoodDao.update(entity)
//
// }
// }
//
//}
@@ -1,47 +0,0 @@
//package com.shuwei.dish.match.viewmodel
//
//import androidx.lifecycle.ViewModel
//import androidx.lifecycle.viewModelScope
//import com.shuwei.dish.match.db.SeasoningRepository
//import com.shuwei.dish.match.entity.SeasoningEntity
//import kotlinx.coroutines.delay
//import kotlinx.coroutines.launch
//
//class DeviceSettingViewModel(private val rep: SeasoningRepository) : ViewModel() {
// fun addSeasoning(list: MutableList<SeasoningEntity>, callback:()-> Unit) {
// viewModelScope.launch {
// rep.seasoningDao.deleteBatch()
// delay(500)
// val rows: Array<Long>? = rep.seasoningDao.insertAll(items = list)
// if (rows.isNullOrEmpty().not()) {
// callback()
// }
// }
// }
//
// private var isProcessing = false
// fun loadSeasoning(action: (list: MutableList<SeasoningEntity>) -> Unit) {
// viewModelScope.launch {
// if (isProcessing) return@launch
// isProcessing = true
// rep.seasoningDao.getAllStream().collect { list ->
// action(list)
// isProcessing = false
// }
// }
// }
//
// fun deleteAll() {
// viewModelScope.launch {
// rep.seasoningDao.deleteBatch()
// }
// }
//
// fun updateAll(list: MutableList<SeasoningEntity>) {
// viewModelScope.launch {
// list.forEach {
// rep.seasoningDao.update(it)
// }
// }
// }
//}
@@ -1,24 +0,0 @@
//package com.shuwei.dish.match.viewmodel
//
//import androidx.lifecycle.ViewModel
//import androidx.lifecycle.viewModelScope
//import com.shuwei.dish.match.db.SeasoningRepository
//import com.shuwei.dish.match.entity.CookFoodEntity
//import com.shuwei.dish.match.entity.SeasoningEntity
//import kotlinx.coroutines.launch
//
//class SubmitDishViewModel(private val rep: SeasoningRepository) : ViewModel() {
//
// private var isProcessing = false
// fun loadSeasoning(action: (list: MutableList<SeasoningEntity>) -> Unit) {
// viewModelScope.launch {
// if (isProcessing) return@launch
// isProcessing = true
// rep.seasoningDao.getAllStream().collect { list ->
// action(list)
// isProcessing = false
// }
// }
// }
//
//}
@@ -1,44 +0,0 @@
package com.shuwei.dish.match.viewmodel.factory
import androidx.lifecycle.ViewModel
import androidx.lifecycle.ViewModelProvider
import com.shuwei.dish.match.db.DbRepository
import com.shuwei.dish.match.db.dao.SeasoningSlotDao
import com.shuwei.dish.match.viewmodel.DbViewModel
@Suppress("UNCHECKED_CAST")
class AppFactory(private val repo: DbRepository) : ViewModelProvider.Factory {
override fun <T : ViewModel> create(modelClass: Class<T>): T {
return DbViewModel(repo) as T
}
}
//
//@Suppress("UNCHECKED_CAST")
//class DeviceSettingFactory(private val repo: SeasoningRepository) : ViewModelProvider.Factory {
// override fun <T : ViewModel> create(modelClass: Class<T>): T {
// return DeviceSettingViewModel(repo) as T
// }
//}
//
////@Suppress("UNCHECKED_CAST")
////class SubmitDishFactory(private val repo: SeasoningRepository) : ViewModelProvider.Factory {
//// override fun <T : ViewModel> create(modelClass: Class<T>): T {
//// return SubmitDishViewModel(repo) as T
//// }
////}
//
//@Suppress("UNCHECKED_CAST")
//class CookFoodFactory(private val repo: CookFoodRepository) : ViewModelProvider.Factory {
// override fun <T : ViewModel> create(modelClass: Class<T>): T {
// return CookFoodViewModel(repo) as T
// }
//}
//
//@Suppress("UNCHECKED_CAST")
//class CookFoodGoodsFactory(private val repo: CookFoodGoodsRepository) : ViewModelProvider.Factory {
// override fun <T : ViewModel> create(modelClass: Class<T>): T {
// return CookFoodGoodsViewModel(repo) as T
// }
//}