forked from liang2711/test1229
dawd
This commit is contained in:
@@ -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,
|
||||||
"",
|
"",
|
||||||
"",
|
"",
|
||||||
"",
|
"",
|
||||||
|
|||||||
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
|
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
|
||||||
|
|||||||
@@ -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")
|
||||||
|
|||||||
@@ -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)),
|
||||||
|
|||||||
@@ -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"
|
||||||
|
|||||||
2
gradle/wrapper/gradle-wrapper.properties
vendored
2
gradle/wrapper/gradle-wrapper.properties
vendored
@@ -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
|
||||||
|
|||||||
Reference in New Issue
Block a user