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

---
 app/src/main/java/com/example/firstapp/model/DailyStat.kt                |    7 ++-
 app/src/main/java/com/example/firstapp/model/CourierStat.kt              |    7 ++-
 app/src/main/java/com/example/firstapp/ui/dashboard/DashboardFragment.kt |   15 +++----
 app/src/main/java/com/example/firstapp/database/dao/CodeDao.kt           |   36 +++++++++--------
 4 files changed, 34 insertions(+), 31 deletions(-)

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 d86d5c1..343140a 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
@@ -64,36 +64,38 @@
     @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")
+    @Query("""
+        SELECT * FROM code 
+        WHERE substr(createtime, 1, 10) = 
+              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') 
+        WHERE strftime('%Y-%W', substr(createtime, 1, 10)) = 
+              strftime('%Y-%W', datetime(: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')
-        )
+        SELECT category as courierName, COUNT(*) as count 
+        FROM code 
+        WHERE strftime('%Y-%W', substr(createtime, 1, 10)) = 
+              strftime('%Y-%W', datetime(:date/1000, 'unixepoch', 'localtime'))
+        GROUP BY category
     """)
     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')
-        )
+        SELECT substr(createtime, 1, 10) as date,
+               COUNT(*) as count
+        FROM code 
+        WHERE strftime('%Y-%W', substr(createtime, 1, 10)) = 
+              strftime('%Y-%W', datetime(:date/1000, 'unixepoch', 'localtime'))
+        GROUP BY substr(createtime, 1, 10)
     """)
     fun getDailyStatsByWeek(date: Long): Flow<List<DailyStat>>
 }
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 8abab2c..fe385fe 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,13 @@
 
 @DatabaseView(
     """
-    SELECT category, COUNT(*) as count 
+    SELECT category as courierName, COUNT(*) as count 
     FROM Code 
+    WHERE substr(createtime, 1, 10) = date('now')
     GROUP BY category
     """
 )
 data class CourierStat(
-    val category: String,
+    val courierName: 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 5cd26c6..f916d6f 100644
--- a/app/src/main/java/com/example/firstapp/model/DailyStat.kt
+++ b/app/src/main/java/com/example/firstapp/model/DailyStat.kt
@@ -4,13 +4,14 @@
 
 @DatabaseView(
     """
-    SELECT date(createtime/1000, 'unixepoch', 'localtime') as date, 
+    SELECT substr(createtime, 1, 10) as date, 
            COUNT(*) as count 
     FROM code 
-    GROUP BY date(createtime/1000, 'unixepoch', 'localtime')
+    WHERE substr(createtime, 1, 10) = date('now')
+    GROUP BY substr(createtime, 1, 10)
     """
 )
 data class DailyStat(
     val date: String,
     val count: Int
-) 
\ No newline at end of file
+)
\ 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 565676c..f0e308a 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
@@ -85,7 +85,8 @@
                     else -> 0
                 }
                 updateDateDisplay()
-//                loadPackages()
+                //加载按天统计包裹数量和列表
+                loadPackages()
                 observePackages()
             }
             override fun onTabUnselected(tab: TabLayout.Tab?) {}
@@ -185,7 +186,7 @@
     private fun updatePieChartData() {
         viewModel.getCourierStats(currentDate.timeInMillis).observe(viewLifecycleOwner) { stats ->
             val entries = stats.map { stat ->
-                PieEntry(stat.count.toFloat(), stat.category)
+                PieEntry(stat.count.toFloat(), stat.courierName)
             }
 
             val dataSet = PieDataSet(entries, "快递公司分布")
@@ -205,15 +206,13 @@
     private fun loadPackages() {
         // 这里应该从数据库或网络加载数据
         // 根据当前选择的日期类型传入对应参数
-        val packages = when (currentDateType) {
-            DateType.DAY -> Core.code.getPackagesByDay(currentDate.timeInMillis)
+//        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()
-        }
+//        }
+        val packages =Core.code.getPackagesByDay(currentDate.timeInMillis)
         packageAdapter.updatePackages(packages)
         binding.textPackageCount.text = "${packageAdapter.itemCount}个"
     }

--
Gitblit v1.9.3