tj
2025-03-25 be5829165f7cd49216971d22e39b8eae16fad915
app/src/main/java/com/example/firstapp/ui/home/HomeViewModel.kt
@@ -3,34 +3,75 @@
import androidx.lifecycle.LiveData
import androidx.lifecycle.MutableLiveData
import androidx.lifecycle.ViewModel
import androidx.lifecycle.viewModelScope
import com.example.firstapp.core.Core
import com.example.firstapp.database.entity.Code
import com.example.firstapp.model.ExpressGroup
import com.example.firstapp.model.ExpressPackage
import com.example.firstapp.model.FinanceGroup
import com.example.firstapp.model.FinancePackage
import kotlinx.coroutines.launch
class HomeViewModel : ViewModel() {
    private val _text = MutableLiveData<String>().apply {
        value = "短信主页面"
    }
    val text: LiveData<String> = _text
    private val _codeList = MutableLiveData<List<Code>>()
    val codeList: LiveData<List<Code>> get() = _codeList
    private val _expressItems = MutableLiveData<List<ExpressGroup>>()
    private val _financeItems = MutableLiveData<List<FinanceGroup>>()
    val expressItems: LiveData<List<ExpressGroup>> = _expressItems
    val financeItems: LiveData<List<FinanceGroup>> = _financeItems
    init {
        // 初始化时加载数据
        loadData()
        // 初始化时加载包裹列表数据
        loadExpressData()
        // 初始化时不加载财务列表数据 0317
        //  loadFinanceData()
    }
    // 加载数据的方法
    fun loadData() {
        // 获取数据,并更新 LiveData
        _codeList.value = Core.code.getAllDesc() // 假设这是获取最新的 data 的方法
    fun loadExpressData() {
        viewModelScope.launch {
            // 1. 获取所有驿站类型的提醒设置
            val stations = Core.reminder.getByType("驿站")
            // 2. 按驿站分组获取包裹信息
            val groups = stations.map { station ->
                val packages = Core.code.getByKeyword(station.nickname).map { code ->
                    ExpressPackage(
                        id = code.id, //ID
                        company = code.name, //快递公司
                        trackingNumber = code.code, // 取件码
                        createTime = code.createtime  //快递时间
                    )
                }
                ExpressGroup(
                    stationName = station.nickname, packages = packages
                )
            }
            _expressItems.postValue(groups)
        }
    }
    // 如果需要手动更新数据,可以调用这个方法
    fun updateData() {
        _codeList.value = Core.code.getAllDesc() // 重新获取并更新数据
    fun loadFinanceData() {
        viewModelScope.launch {
            // 1. 获取所有驿站类型的提醒设置
            val stations = Core.reminder.getByType("财务")
            // 2. 按驿站分组获取包裹信息
            val groups = stations.map { station ->
                val packages = Core.code.getByKeyword(station.nickname).map { code ->
                    FinancePackage(
                        id = code.id, //ID
                        company = code.name, //快递公司
                        trackingNumber = code.code, // 取件码
                        createTime = code.createtime  //快递时间
                    )
                }
                FinanceGroup(
                    stationName = station.nickname, packages = packages
                )
            }
            _financeItems.postValue(groups)
        }
    }
}