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 package com.zywl.test1229.bean
import android.os.Parcelable import android.os.Parcelable
import androidx.room.Entity
import androidx.room.PrimaryKey
import kotlinx.parcelize.Parcelize import kotlinx.parcelize.Parcelize
import kotlinx.serialization.Serializable import kotlinx.serialization.Serializable
@Entity(tableName = "info_table")
@Serializable @Serializable
@Parcelize @Parcelize
data class StakeInfo( data class StakeInfo(
@PrimaryKey(autoGenerate = true) val id: Long = 0,
val tempNo: String, val tempNo: String,
val pipeLine: String, val pipeLine: String,
val stakeType: String, val stakeType: String,
@@ -23,6 +27,7 @@ data class StakeInfo(
) : Parcelable { ) : Parcelable {
companion object { companion object {
val Empty = StakeInfo( 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 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.data.PermissionState
import com.zywl.test1229.database.AppDatabase
import com.zywl.test1229.database.DataDao
import dagger.Module import dagger.Module
import dagger.Provides import dagger.Provides
import dagger.hilt.InstallIn import dagger.hilt.InstallIn
@@ -18,6 +24,25 @@ object SharedModule {
fun providePermissionState(): MutableStateFlow<PermissionState> { fun providePermissionState(): MutableStateFlow<PermissionState> {
return MutableStateFlow(PermissionState.None) 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 @Qualifier

View File

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

View File

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

View File

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

View File

@@ -1,6 +1,6 @@
distributionBase=GRADLE_USER_HOME distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists 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 networkTimeout=10000
validateDistributionUrl=true validateDistributionUrl=true
zipStoreBase=GRADLE_USER_HOME zipStoreBase=GRADLE_USER_HOME