From 2a117297daf83b2e1a104603e9641226d5beeba3 Mon Sep 17 00:00:00 2001
From: cloudroam <cloudroam>
Date: 星期二, 04 三月 2025 10:41:38 +0800
Subject: [PATCH] fix: 按天统计相关逻辑

---
 app/src/main/java/com/example/firstapp/database/repository/CodeRepository.kt |   26 +++++
 app/src/main/java/com/example/firstapp/receiver/SmsReceiver.kt               |    2 
 app/src/main/java/com/example/firstapp/ui/dashboard/DashboardFragment.kt     |   38 +++----
 app/src/main/java/com/example/firstapp/database/dao/CodeDao.kt               |   42 ++++++++
 app/src/main/java/com/example/firstapp/adapter/PackageAdapter.kt             |   47 +++++++-
 app/src/main/java/com/example/firstapp/database/entity/Code.kt               |    4 
 app/src/main/java/com/example/firstapp/ui/dashboard/DashboardViewModel.kt    |   28 ++---
 app/src/main/java/com/example/firstapp/model/DailyStat.kt                    |    6 
 /dev/null                                                                    |   34 ------
 app/src/main/java/com/example/firstapp/model/CourierStat.kt                  |    8 
 app/src/main/java/com/example/firstapp/database/AppDatabase.kt               |    6 -
 app/src/main/res/layout/fragment_dashboard.xml                               |    6 
 app/src/main/java/com/example/firstapp/MainActivity.kt                       |    2 
 app/src/main/res/layout/item_package_dashboard.xml                           |   26 ++++
 14 files changed, 170 insertions(+), 105 deletions(-)

diff --git a/app/src/main/java/com/example/firstapp/MainActivity.kt b/app/src/main/java/com/example/firstapp/MainActivity.kt
index bd37767..52a8e13 100644
--- a/app/src/main/java/com/example/firstapp/MainActivity.kt
+++ b/app/src/main/java/com/example/firstapp/MainActivity.kt
@@ -232,7 +232,7 @@
                                 android.util.Log.d("SmsReceiver", "Received SMS code: ${code}")
                                 val msg = Msg(0, "1111", "111111", messageBody.toString(), 1, "111", 1, 1)
                                 val msgId = Core.msg.insert(msg)
-                                val code = Code(0, rule.type, 1, rule.content, 1, 1, msgId, code, dateString, "中通",0)
+                                val code = Code(0, rule.type, 1, rule.content, 1, 1, msgId, code, dateString, "中通",0,"","")
                                 Core.code.insert(code)
                                 android.util.Log.d("SMS_DEBUG", "历史短信已保存到数据库")
                             }else{
diff --git a/app/src/main/java/com/example/firstapp/adapter/PackageAdapter.kt b/app/src/main/java/com/example/firstapp/adapter/PackageAdapter.kt
index 4abce71..21edc63 100644
--- a/app/src/main/java/com/example/firstapp/adapter/PackageAdapter.kt
+++ b/app/src/main/java/com/example/firstapp/adapter/PackageAdapter.kt
@@ -7,20 +7,23 @@
 import android.widget.TextView
 import androidx.recyclerview.widget.RecyclerView
 import com.example.firstapp.R
-import com.example.firstapp.model.PackageInfo
+import com.example.firstapp.database.entity.Code
+import java.text.ParseException
 import java.text.SimpleDateFormat
+import java.util.Date
 import java.util.Locale
 
 
 class PackageAdapter : RecyclerView.Adapter<PackageAdapter.PackageViewHolder>() {
 
-    private var packages = listOf<PackageInfo>()
+    private var packages = listOf<Code>()
 
-    fun updatePackages(newPackages: List<PackageInfo>) {
+    fun updatePackages(newPackages: List<Code>) {
         packages = newPackages
         notifyDataSetChanged()
     }
 
+    //此处是渲染数据
     override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): PackageViewHolder {
         val view = LayoutInflater.from(parent.context)
             .inflate(R.layout.item_package_dashboard, parent, false)
@@ -38,13 +41,39 @@
         private val textCourierName: TextView = view.findViewById(R.id.text_courier_name)
         private val textTrackingNumber: TextView = view.findViewById(R.id.text_tracking_number)
         private val textTime: TextView = view.findViewById(R.id.text_time)
+        private val textPickTime: TextView = view.findViewById(R.id.text_pick_time)
 
-        fun bind(packageInfo: PackageInfo) {
-            imgCourier.setImageResource(packageInfo.courierIcon)
-            textCourierName.text = packageInfo.courierName
-            textTrackingNumber.text = packageInfo.trackingNumber
-            textTime.text = SimpleDateFormat("yyyy-MM-dd HH:mm", Locale.getDefault())
-                .format(packageInfo.receivedTime)
+        fun bind(code: Code) {
+//            imgCourier.setImageResource(code.category)
+            textCourierName.text = code.type
+            textTrackingNumber.text = code.code
+            // 步骤1:定义解析器,将字符串转为 Date
+            val parser = SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.getDefault())
+            val formatter = SimpleDateFormat("yyyy-MM-dd HH:mm", Locale.getDefault())
+            try {
+                val date: Date? = parser.parse(code.createtime)  // 解析字符串
+                date?.let {
+                    textTime.text = "到货:"+formatter.format(it)  // 格式化并赋值
+                } ?: run {
+                    // 处理解析失败(date 为 null 的情况)
+                    textTime.text = "Invalid Date"
+                }
+            } catch (e: ParseException) {
+                e.printStackTrace()
+                textTime.text = "Format Error"
+            }
+            try {
+                val date2: Date? = parser.parse(code.pickuptime)  // 解析字符串
+                date2?.let {
+                    textPickTime.text = "取件:"+formatter.format(it)  // 格式化并赋值
+                } ?: run {
+                    textPickTime.text = "未取件"
+                }
+            } catch (e: ParseException) {
+                e.printStackTrace()
+                textPickTime.text = "未取件"
+            }
+
         }
     }
 }
diff --git a/app/src/main/java/com/example/firstapp/dao/PackageDao.kt b/app/src/main/java/com/example/firstapp/dao/PackageDao.kt
deleted file mode 100644
index e156386..0000000
--- a/app/src/main/java/com/example/firstapp/dao/PackageDao.kt
+++ /dev/null
@@ -1,49 +0,0 @@
-package com.example.firstapp.dao
-
-import androidx.room.*
-import com.example.firstapp.model.PackageInfo
-import com.example.firstapp.model.CourierStat
-import com.example.firstapp.model.DailyStat
-import kotlinx.coroutines.flow.Flow
-
-@Dao
-interface PackageDao {
-    @Query("SELECT * FROM packages WHERE date(receivedTime/1000, 'unixepoch', 'localtime') = date(:date/1000, 'unixepoch', 'localtime') ORDER BY receivedTime DESC")
-    fun getPackagesByDay(date: Long): Flow<List<PackageInfo>>
-
-    @Query("""
-        SELECT * FROM packages 
-        WHERE strftime('%Y-%W', receivedTime/1000, 'unixepoch', 'localtime') = 
-              strftime('%Y-%W', :date/1000, 'unixepoch', 'localtime') 
-        ORDER BY receivedTime DESC
-    """)
-    fun getPackagesByWeek(date: Long): Flow<List<PackageInfo>>
-
-    @Query("""
-        SELECT * FROM CourierStat 
-        WHERE EXISTS (
-            SELECT 1 FROM packages p 
-            WHERE p.courierName = CourierStat.courierName
-            AND strftime('%Y-%W', p.receivedTime/1000, 'unixepoch', 'localtime') = 
-                strftime('%Y-%W', :date/1000, 'unixepoch', 'localtime')
-        )
-    """)
-    fun getCourierStatsByWeek(date: Long): Flow<List<CourierStat>>
-
-    @Query("""
-        SELECT * FROM DailyStat 
-        WHERE EXISTS (
-            SELECT 1 FROM packages p 
-            WHERE date(p.receivedTime/1000, 'unixepoch', 'localtime') = DailyStat.date
-            AND strftime('%Y-%W', p.receivedTime/1000, 'unixepoch', 'localtime') = 
-                strftime('%Y-%W', :date/1000, 'unixepoch', 'localtime')
-        )
-    """)
-    fun getDailyStatsByWeek(date: Long): Flow<List<DailyStat>>
-
-    @Insert(onConflict = OnConflictStrategy.REPLACE)
-    fun insert(packageInfo: PackageInfo)
-
-    @Update
-    fun update(packageInfo: PackageInfo)
-} 
\ No newline at end of file
diff --git a/app/src/main/java/com/example/firstapp/database/AppDatabase.kt b/app/src/main/java/com/example/firstapp/database/AppDatabase.kt
index b520136..626aae1 100644
--- a/app/src/main/java/com/example/firstapp/database/AppDatabase.kt
+++ b/app/src/main/java/com/example/firstapp/database/AppDatabase.kt
@@ -7,7 +7,6 @@
 import androidx.room.TypeConverters
 import androidx.room.migration.Migration
 import androidx.sqlite.db.SupportSQLiteDatabase
-import com.example.firstapp.dao.PackageDao
 import com.example.firstapp.database.dao.CodeDao
 import com.example.firstapp.database.dao.KeywordDao
 import com.example.firstapp.database.dao.MsgDao
@@ -21,7 +20,6 @@
 import com.example.firstapp.utils.TAG_LIST
 
 import com.example.firstapp.database.ext.ConvertersDate
-import com.example.firstapp.model.PackageInfo
 import com.example.firstapp.model.CourierStat
 import com.example.firstapp.model.DailyStat
 
@@ -31,8 +29,7 @@
         Msg::class, 
         Code::class, 
         KeywordEntity::class, 
-        Reminder::class, 
-        PackageInfo::class
+        Reminder::class
     ],
     views = [
         CourierStat::class,
@@ -47,7 +44,6 @@
     abstract fun codeDao(): CodeDao
     abstract fun keywordDao(): KeywordDao
     abstract fun reminderDao(): ReminderDao
-    abstract fun packageDao(): PackageDao
 
     companion object {
         @Volatile
diff --git a/app/src/main/java/com/example/firstapp/database/dao/CodeDao.kt b/app/src/main/java/com/example/firstapp/database/dao/CodeDao.kt
index b27f1dd..d86d5c1 100644
--- a/app/src/main/java/com/example/firstapp/database/dao/CodeDao.kt
+++ b/app/src/main/java/com/example/firstapp/database/dao/CodeDao.kt
@@ -7,7 +7,10 @@
 import androidx.room.Update
 import com.example.firstapp.database.entity.Code
 import com.example.firstapp.database.entity.Msg
+import com.example.firstapp.model.CourierStat
+import com.example.firstapp.model.DailyStat
 import io.reactivex.Completable
+import kotlinx.coroutines.flow.Flow
 
 @Dao
 interface CodeDao {
@@ -54,6 +57,43 @@
     fun queryByTypeAndCodeAndDate(content: String, code: String, dateString: String): Code
 
 
-    @Query("update  Code set pickup = '1' where id=:id")
+    @Query("update  Code set pickup = '1' ,  pickuptime = CURRENT_TIMESTAMP  where id=:id")
     fun pickup(id: Long)
+
+    //查询当天包裹信息
+    @Query("SELECT * FROM code WHERE date(createtime) = date(:date/1000, 'unixepoch', 'localtime') ORDER BY createtime DESC")
+    fun getNewPackagesByDay(date: Long): List<Code>
+
+    @Query("SELECT * FROM code WHERE date(createtime/1000, 'unixepoch', 'localtime') = date(:date/1000, 'unixepoch', 'localtime') ORDER BY createtime DESC")
+    fun getPackagesByDay(date: Long): Flow<List<Code>>
+
+    @Query("""
+        SELECT * FROM code 
+        WHERE strftime('%Y-%W', createtime/1000, 'unixepoch', 'localtime') = 
+              strftime('%Y-%W', :date/1000, 'unixepoch', 'localtime') 
+        ORDER BY createtime DESC
+    """)
+    fun getPackagesByWeek(date: Long): Flow<List<Code>>
+
+    @Query("""
+        SELECT * FROM CourierStat 
+        WHERE EXISTS (
+            SELECT 1 FROM code p 
+            WHERE p.category = CourierStat.category
+            AND strftime('%Y-%W', p.createtime/1000, 'unixepoch', 'localtime') = 
+                strftime('%Y-%W', :date/1000, 'unixepoch', 'localtime')
+        )
+    """)
+    fun getCourierStatsByWeek(date: Long): Flow<List<CourierStat>>
+
+    @Query("""
+        SELECT * FROM DailyStat 
+        WHERE EXISTS (
+            SELECT 1 FROM code p 
+            WHERE date(p.createtime/1000, 'unixepoch', 'localtime') = DailyStat.date
+            AND strftime('%Y-%W', p.createtime/1000, 'unixepoch', 'localtime') = 
+                strftime('%Y-%W', :date/1000, 'unixepoch', 'localtime')
+        )
+    """)
+    fun getDailyStatsByWeek(date: Long): Flow<List<DailyStat>>
 }
diff --git a/app/src/main/java/com/example/firstapp/database/entity/Code.kt b/app/src/main/java/com/example/firstapp/database/entity/Code.kt
index 30dff0a..40a1ac5 100644
--- a/app/src/main/java/com/example/firstapp/database/entity/Code.kt
+++ b/app/src/main/java/com/example/firstapp/database/entity/Code.kt
@@ -17,7 +17,7 @@
     var createtime: String,
     var name: String,
     var pickup: Int,
+    var pickuptime: String,  //取件时间
+    var overtime: String,   // 超期时间
     var time: Date = Date(),
-//    var overtime: String,
-
 )
diff --git a/app/src/main/java/com/example/firstapp/database/repository/CodeRepository.kt b/app/src/main/java/com/example/firstapp/database/repository/CodeRepository.kt
index bd77948..f187d22 100644
--- a/app/src/main/java/com/example/firstapp/database/repository/CodeRepository.kt
+++ b/app/src/main/java/com/example/firstapp/database/repository/CodeRepository.kt
@@ -3,6 +3,9 @@
 import androidx.annotation.WorkerThread
 import com.example.firstapp.database.dao.CodeDao
 import com.example.firstapp.database.entity.Code
+import kotlinx.coroutines.Dispatchers
+import kotlinx.coroutines.flow.Flow
+import kotlinx.coroutines.withContext
 
 
 class CodeRepository(private val codeDao: CodeDao) {
@@ -23,9 +26,30 @@
     }
 
     fun queryByTypeAndCodeAndDate(content: String, code: String, dateString: String): Code {
-        return codeDao.queryByTypeAndCodeAndDate(content,code,dateString)
+        return codeDao.queryByTypeAndCodeAndDate(content, code, dateString)
     }
 
     @WorkerThread
     fun pickup(id: Long) = codeDao.pickup(id)
+
+
+    fun getPackages(date: Long, dateType: String): Flow<List<Code>> {
+        return when (dateType) {
+            "DAY" -> codeDao.getPackagesByDay(date)
+            "WEEK" -> codeDao.getPackagesByWeek(date)
+            else -> codeDao.getPackagesByDay(date)
+        }
+    }
+
+    fun getCourierStats(date: Long) = codeDao.getCourierStatsByWeek(date)
+
+    fun getDailyStats(date: Long) = codeDao.getDailyStatsByWeek(date)
+
+
+    @WorkerThread
+    fun getPackagesByDay(date: Long): List<Code> {
+        return codeDao.getNewPackagesByDay(date)
+    }
+
+
 }
\ No newline at end of file
diff --git a/app/src/main/java/com/example/firstapp/model/CourierStat.kt b/app/src/main/java/com/example/firstapp/model/CourierStat.kt
index c112e7c..8abab2c 100644
--- a/app/src/main/java/com/example/firstapp/model/CourierStat.kt
+++ b/app/src/main/java/com/example/firstapp/model/CourierStat.kt
@@ -4,12 +4,12 @@
 
 @DatabaseView(
     """
-    SELECT courierName, COUNT(*) as count 
-    FROM packages 
-    GROUP BY courierName
+    SELECT category, COUNT(*) as count 
+    FROM Code 
+    GROUP BY category
     """
 )
 data class CourierStat(
-    val courierName: String,
+    val category: String,
     val count: Int
 ) 
\ No newline at end of file
diff --git a/app/src/main/java/com/example/firstapp/model/DailyStat.kt b/app/src/main/java/com/example/firstapp/model/DailyStat.kt
index dc61551..5cd26c6 100644
--- a/app/src/main/java/com/example/firstapp/model/DailyStat.kt
+++ b/app/src/main/java/com/example/firstapp/model/DailyStat.kt
@@ -4,10 +4,10 @@
 
 @DatabaseView(
     """
-    SELECT date(receivedTime/1000, 'unixepoch', 'localtime') as date, 
+    SELECT date(createtime/1000, 'unixepoch', 'localtime') as date, 
            COUNT(*) as count 
-    FROM packages 
-    GROUP BY date(receivedTime/1000, 'unixepoch', 'localtime')
+    FROM code 
+    GROUP BY date(createtime/1000, 'unixepoch', 'localtime')
     """
 )
 data class DailyStat(
diff --git a/app/src/main/java/com/example/firstapp/model/PackageInfo.kt b/app/src/main/java/com/example/firstapp/model/PackageInfo.kt
deleted file mode 100644
index d1e2005..0000000
--- a/app/src/main/java/com/example/firstapp/model/PackageInfo.kt
+++ /dev/null
@@ -1,15 +0,0 @@
-package com.example.firstapp.model
-
-import androidx.room.Entity
-import androidx.room.PrimaryKey
-
-@Entity(tableName = "packages")
-data class PackageInfo(
-    @PrimaryKey
-    val trackingNumber: String,     // 快递单号
-    val courierName: String,        // 快递公司名称
-    val receivedTime: Long,         // 收件时间
-    val courierIcon: Int,          // 快递公司图标资源ID
-    val status: Int = 0            // 取件状态: 0-未取件, 1-已取件
-)
-
diff --git a/app/src/main/java/com/example/firstapp/receiver/SmsReceiver.kt b/app/src/main/java/com/example/firstapp/receiver/SmsReceiver.kt
index f45812a..711ad6b 100644
--- a/app/src/main/java/com/example/firstapp/receiver/SmsReceiver.kt
+++ b/app/src/main/java/com/example/firstapp/receiver/SmsReceiver.kt
@@ -85,7 +85,7 @@
                             val createtime = sdf.format(date)
                             val existingCode = Core.code.queryByTypeAndCodeAndDate(rule.content, code, createtime)
                             if (existingCode == null) {
-                                val code = Code(0, rule.type, 1, rule.content, 1, 1, msgId, code, createtime, "中通",0)
+                                val code = Code(0, rule.type, 1, rule.content, 1, 1, msgId, code, createtime, "中通",0,"","")
                                 Core.code.insert(code)
                                 Log.d("SMS_DEBUG", "新短信已保存到数据库")
 
diff --git a/app/src/main/java/com/example/firstapp/repository/PackageRepository.kt b/app/src/main/java/com/example/firstapp/repository/PackageRepository.kt
deleted file mode 100644
index 082178c..0000000
--- a/app/src/main/java/com/example/firstapp/repository/PackageRepository.kt
+++ /dev/null
@@ -1,34 +0,0 @@
-package com.example.firstapp.repository
-
-import com.example.firstapp.dao.PackageDao
-import com.example.firstapp.model.PackageInfo
-import kotlinx.coroutines.flow.Flow
-import kotlinx.coroutines.Dispatchers
-import kotlinx.coroutines.withContext
-
-class PackageRepository(private val packageDao: PackageDao) {
-    
-    fun getPackages(date: Long, dateType: String): Flow<List<PackageInfo>> {
-        return when(dateType) {
-            "DAY" -> packageDao.getPackagesByDay(date)
-            "WEEK" -> packageDao.getPackagesByWeek(date)
-            else -> packageDao.getPackagesByDay(date)
-        }
-    }
-
-    fun getCourierStats(date: Long) = packageDao.getCourierStatsByWeek(date)
-    
-    fun getDailyStats(date: Long) = packageDao.getDailyStatsByWeek(date)
-
-    suspend fun insert(packageInfo: PackageInfo) {
-        withContext(Dispatchers.IO) {
-            packageDao.insert(packageInfo)
-        }
-    }
-
-    suspend fun update(packageInfo: PackageInfo) {
-        withContext(Dispatchers.IO) {
-            packageDao.update(packageInfo)
-        }
-    }
-} 
\ No newline at end of file
diff --git a/app/src/main/java/com/example/firstapp/ui/dashboard/DashboardFragment.kt b/app/src/main/java/com/example/firstapp/ui/dashboard/DashboardFragment.kt
index 992fcb1..565676c 100644
--- a/app/src/main/java/com/example/firstapp/ui/dashboard/DashboardFragment.kt
+++ b/app/src/main/java/com/example/firstapp/ui/dashboard/DashboardFragment.kt
@@ -13,7 +13,7 @@
 import com.google.android.material.tabs.TabLayout
 import androidx.recyclerview.widget.LinearLayoutManager
 import com.example.firstapp.adapter.PackageAdapter
-import com.example.firstapp.model.PackageInfo
+import com.example.firstapp.core.Core
 import com.github.mikephil.charting.charts.BarChart
 import com.github.mikephil.charting.charts.PieChart
 import com.github.mikephil.charting.components.Legend
@@ -185,7 +185,7 @@
     private fun updatePieChartData() {
         viewModel.getCourierStats(currentDate.timeInMillis).observe(viewLifecycleOwner) { stats ->
             val entries = stats.map { stat ->
-                PieEntry(stat.count.toFloat(), stat.courierName)
+                PieEntry(stat.count.toFloat(), stat.category)
             }
 
             val dataSet = PieDataSet(entries, "快递公司分布")
@@ -204,24 +204,18 @@
 
     private fun loadPackages() {
         // 这里应该从数据库或网络加载数据
-        // 这里使用模拟数据作为示例
-        val mockPackages = listOf(
-            PackageInfo(
-                trackingNumber = "14-6-7023",
-                courierName = "某快递",
-                receivedTime = System.currentTimeMillis(),
-                courierIcon = R.drawable.data
-            ),
-            PackageInfo(
-                trackingNumber = "230721",
-                courierName = "京东",
-                receivedTime = System.currentTimeMillis() - 3600000,
-                courierIcon = R.drawable.data
-            )
-        )
-
-        packageAdapter.updatePackages(mockPackages)
-        binding.textPackageCount.text = "${mockPackages.size}个"
+        // 根据当前选择的日期类型传入对应参数
+        val packages = when (currentDateType) {
+            DateType.DAY -> Core.code.getPackagesByDay(currentDate.timeInMillis)
+//            DateType.WEEK -> Core.code.getPackagesByWeek(currentDate.timeInMillis)
+//            DateType.MONTH -> Core.code.getPackagesByMonth(currentDate.timeInMillis)
+//            DateType.YEAR -> Core.code.getPackagesByYear(currentDate.timeInMillis)
+            DateType.WEEK -> TODO()
+            DateType.MONTH -> TODO()
+            DateType.YEAR -> TODO()
+        }
+        packageAdapter.updatePackages(packages)
+        binding.textPackageCount.text = "${packageAdapter.itemCount}个"
     }
     private fun observePackages() {
         viewModel.getPackages(
@@ -235,8 +229,8 @@
                     updatePieChartData()
                 }
                 else -> {
-                    packageAdapter.updatePackages(packages)
-                }
+                packageAdapter.updatePackages(packages)
+            }
             }
             binding.textPackageCount.text = "${packages.size}个"
         }
diff --git a/app/src/main/java/com/example/firstapp/ui/dashboard/DashboardViewModel.kt b/app/src/main/java/com/example/firstapp/ui/dashboard/DashboardViewModel.kt
index dae2211..c2c0fc9 100644
--- a/app/src/main/java/com/example/firstapp/ui/dashboard/DashboardViewModel.kt
+++ b/app/src/main/java/com/example/firstapp/ui/dashboard/DashboardViewModel.kt
@@ -5,31 +5,27 @@
 import androidx.lifecycle.asLiveData
 import androidx.lifecycle.viewModelScope
 import com.example.firstapp.AppDatabase
-import com.example.firstapp.model.PackageInfo
-import com.example.firstapp.repository.PackageRepository
+import com.example.firstapp.database.entity.Code
+import com.example.firstapp.database.repository.CodeRepository
 import kotlinx.coroutines.launch
 
 class DashboardViewModel(application: Application) : AndroidViewModel(application) {
-    
-    private val repository: PackageRepository
-    
+
+    private val repository: CodeRepository
+
     init {
-        val packageDao = AppDatabase.getInstance(application).packageDao()
-        repository = PackageRepository(packageDao)
+        val codeDao = AppDatabase.getInstance(application).codeDao()
+        repository = CodeRepository(codeDao)
     }
-    
-    fun getPackages(date: Long, dateType: String) = 
+
+    fun getPackages(date: Long, dateType: String) =
         repository.getPackages(date, dateType).asLiveData()
 
     fun getCourierStats(date: Long) = repository.getCourierStats(date).asLiveData()
-    
+
     fun getDailyStats(date: Long) = repository.getDailyStats(date).asLiveData()
 
-    fun updatePackageStatus(packageInfo: PackageInfo) = viewModelScope.launch {
-        repository.update(packageInfo)
-    }
-
-    fun insert(packageInfo: PackageInfo) = viewModelScope.launch {
-        repository.insert(packageInfo)
+    fun insert(code: Code) = viewModelScope.launch {
+        repository.insert(code)
     }
 }
\ No newline at end of file
diff --git a/app/src/main/res/layout/fragment_dashboard.xml b/app/src/main/res/layout/fragment_dashboard.xml
index 4d90e0c..8e543a4 100644
--- a/app/src/main/res/layout/fragment_dashboard.xml
+++ b/app/src/main/res/layout/fragment_dashboard.xml
@@ -84,16 +84,18 @@
             android:padding="16dp">
 
             <ImageView
-                android:layout_width="48dp"
+                android:layout_width="0dp"
                 android:layout_height="48dp"
+                android:layout_weight="1"
                 android:src="@drawable/resource_package" />
 
             <TextView
                 android:id="@+id/text_package_count"
-                android:layout_width="wrap_content"
+                android:layout_width="0dp"
                 android:layout_height="wrap_content"
                 android:layout_gravity="center_vertical"
                 android:layout_marginStart="16dp"
+                android:layout_weight="1"
                 android:textSize="24sp"
                 android:textStyle="bold"
                 tools:text="4个" />
diff --git a/app/src/main/res/layout/item_package_dashboard.xml b/app/src/main/res/layout/item_package_dashboard.xml
index b0990bb..fbb34f9 100644
--- a/app/src/main/res/layout/item_package_dashboard.xml
+++ b/app/src/main/res/layout/item_package_dashboard.xml
@@ -46,12 +46,30 @@
                 tools:text="2025-01-14 10:30" />
         </LinearLayout>
 
-        <TextView
-            android:id="@+id/text_tracking_number"
+        <LinearLayout
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"
-            android:textColor="@android:color/darker_gray"
-            tools:text="14-6-7023" />
+            android:orientation="vertical">
+
+            <TextView
+                android:id="@+id/text_tracking_number"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:textColor="@android:color/darker_gray"
+                android:layout_gravity="end"
+                tools:text="14-6-7023" />
+
+            <TextView
+                android:id="@+id/text_pick_time"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:layout_marginTop="4dp"
+                android:textColor="@android:color/darker_gray"
+                android:layout_gravity="end"
+                android:textSize="12sp"
+                tools:text="2025-01-15 11:30" />
+        </LinearLayout>
+
     </LinearLayout>
 
 </androidx.cardview.widget.CardView> 
\ No newline at end of file

--
Gitblit v1.9.3