This commit is contained in:
liang2711
2025-02-15 21:29:28 +08:00
parent fb947accd9
commit 83be0537d1
8 changed files with 98 additions and 6 deletions

View File

@@ -1,12 +1,16 @@
package com.zywl.test1229.bean
import android.os.Parcelable
import androidx.room.Entity
import androidx.room.PrimaryKey
import kotlinx.parcelize.Parcelize
import kotlinx.serialization.Serializable
@Entity(tableName = "info_table")
@Serializable
@Parcelize
data class StakeInfo(
@PrimaryKey(autoGenerate = true) val id: Long = 0,
val tempNo: String,
val pipeLine: String,
val stakeType: String,
@@ -23,6 +27,7 @@ data class StakeInfo(
) : Parcelable {
companion object {
val Empty = StakeInfo(
0,
"",
"",
"",

View File

@@ -0,0 +1,28 @@
package com.zywl.test1229.database
import android.content.Context
import androidx.room.Dao
import androidx.room.Database
import androidx.room.Room
import androidx.room.RoomDatabase
import com.zywl.test1229.bean.StakeInfo
@Database(entities = [StakeInfo::class], version = 1, exportSchema = false)
abstract class AppDatabase : RoomDatabase() {
abstract fun dataDao():DataDao
companion object{
@Volatile
private var INSTANCE: AppDatabase? = null
fun getDatabase(context: Context): AppDatabase {
return INSTANCE ?: synchronized(this) {
val instance = Room.databaseBuilder(
context.applicationContext,
AppDatabase::class.java,
"app_database.db"
).build()
INSTANCE = instance
instance
}
}
}
}

View File

@@ -0,0 +1,19 @@
package com.zywl.test1229.database
import androidx.lifecycle.LiveData
import androidx.room.Dao
import androidx.room.Insert
import androidx.room.Query
import com.zywl.test1229.bean.StakeInfo
@Dao
interface DataDao {
@Insert
suspend fun insert(data:StakeInfo)
@Insert
suspend fun insertAll(data:List<StakeInfo>)
@Query("SELECT * FROM info_table")
fun getAllStakeInfo(): LiveData<List<StakeInfo>>
@Query("DELETE FROM info_table")
suspend fun deleteAll()
}

View File

@@ -1,6 +1,12 @@
package com.zywl.test1229.di
import android.app.Application
import android.content.Context
import androidx.room.Dao
import androidx.room.Room
import com.zywl.test1229.data.PermissionState
import com.zywl.test1229.database.AppDatabase
import com.zywl.test1229.database.DataDao
import dagger.Module
import dagger.Provides
import dagger.hilt.InstallIn
@@ -18,6 +24,25 @@ object SharedModule {
fun providePermissionState(): MutableStateFlow<PermissionState> {
return MutableStateFlow(PermissionState.None)
}
@Provides
@Singleton
fun provideContext(app: Application): Context {
return app.applicationContext
}
@Provides
@Singleton
fun provideDatabase(context: Context): AppDatabase {
return Room.databaseBuilder(
context.applicationContext,
AppDatabase::class.java,
"app_database.db"
).build()
}
@Provides
@Singleton
fun provideUserDao(appDatabase: AppDatabase): DataDao {
return appDatabase.dataDao()
}
}
@Qualifier

View File

@@ -7,6 +7,7 @@ import androidx.lifecycle.viewModelScope
import com.zywl.test1229.bean.Constant
import com.zywl.test1229.bean.StakeInfo
import com.zywl.test1229.data.PermissionState
import com.zywl.test1229.database.DataDao
import com.zywl.test1229.di.PermissionStateFlow
import com.zywl.test1229.ktx.TAG
import com.zywl.test1229.ktx.toast
@@ -31,7 +32,8 @@ class HomeViewModel @Inject constructor(
@ApplicationContext
private val context: Context,
@PermissionStateFlow
private val permissionState: MutableStateFlow<PermissionState>
private val permissionState: MutableStateFlow<PermissionState>,
private val dao: DataDao
) : ViewModel() {
private val _state = MutableStateFlow(HomeViewState())
val state = _state.asStateFlow()
@@ -49,13 +51,16 @@ class HomeViewModel @Inject constructor(
delay(10_000)
val items = _state.value.items
if (items.isEmpty()) continue
ExcelUtils.produceExcel(context, items, true)
// ExcelUtils.produceExcel(context, items, true)
dao.insertAll(items)
Log.d(TAG, "HomeViewModel: produceExcel")
}
}
permissionState.onEach {
if (it == PermissionState.Granted) {
val file = File(File(Constant.SDCARD, Constant.projectName), "backup/main.xls")
onFileSelected(file.path)
// val file = File(File(Constant.SDCARD, Constant.projectName), "backup/main.xls")
// onFileSelected(file.path)
onUpdateItems(dao)
}
}.launchIn(viewModelScope)
}
@@ -67,6 +72,15 @@ class HomeViewModel @Inject constructor(
_state.update { it.copy(items = it.items + stakeInfoList) }
}
}
private fun onUpdateItems(dataDao: DataDao){
viewModelScope.launch(Dispatchers.IO) {
val stakeInfoList = dataDao.getAllStakeInfo().value
stakeInfoList?.let {
Log.d(TAG, "onFileSelected: $stakeInfoList")
_state.update { it.copy(items = stakeInfoList) }
}
}
}
private fun onPipeLineChanged(index: Int, value: StakeInfo) {
Log.d(TAG, "onPipeLineChanged: $index, $value")

View File

@@ -46,6 +46,7 @@ object ExcelUtils {
// 跳过空行
if (row == null) continue
var stakeInfo = StakeInfo(
0,
getCellData(row.getCell(1)),
getCellData(row.getCell(0)),
getCellData(row.getCell(2)),

View File

@@ -1,5 +1,5 @@
[versions]
agp = "8.8.0"
agp = "8.7.3"
kotlin = "2.1.10"
core-ktx = "1.15.0"
appcompat = "1.7.0"

View File

@@ -1,6 +1,6 @@
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-8.12.1-bin.zip
distributionUrl=https\://mirrors.cloud.tencent.com/gradle/gradle-8.12.1-bin.zip
networkTimeout=10000
validateDistributionUrl=true
zipStoreBase=GRADLE_USER_HOME