forked from liang2711/test1229
dawd
This commit is contained in:
@@ -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,
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
|
||||
28
app/src/main/java/com/zywl/test1229/database/AppDatabase.kt
Normal file
28
app/src/main/java/com/zywl/test1229/database/AppDatabase.kt
Normal 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
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
19
app/src/main/java/com/zywl/test1229/database/DataDao.kt
Normal file
19
app/src/main/java/com/zywl/test1229/database/DataDao.kt
Normal 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()
|
||||
}
|
||||
@@ -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
|
||||
|
||||
@@ -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")
|
||||
|
||||
@@ -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)),
|
||||
|
||||
@@ -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"
|
||||
|
||||
2
gradle/wrapper/gradle-wrapper.properties
vendored
2
gradle/wrapper/gradle-wrapper.properties
vendored
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user