From 897ffe5e29ab022d75ad948ecf894e0a3ed3b2f5 Mon Sep 17 00:00:00 2001
From: cloudroam <cloudroam>
Date: 星期二, 04 三月 2025 18:01:41 +0800
Subject: [PATCH] fix: 1

---
 app/src/main/java/com/example/firstapp/database/dao/CodeDao.kt |   52 ++++++++++++++++++++++++++++------------------------
 1 files changed, 28 insertions(+), 24 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..00e535f 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,40 @@
     @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') 
-        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 type 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 type
+        ORDER BY count DESC
     """)
     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 strftime('%W', createtime) as date,
+               COUNT(*) as count,
+               MIN(createtime) as week_start
+        FROM code 
+        WHERE strftime('%Y', createtime) = strftime('%Y', 'now')
+        GROUP BY strftime('%W', createtime)
+        ORDER BY week_start ASC
     """)
-    fun getDailyStatsByWeek(date: Long): Flow<List<DailyStat>>
+    fun getDailyStatsByWeek(): Flow<List<DailyStat>>
+
+    @Query("""
+        SELECT * FROM code 
+        WHERE substr(createtime, 1, 10) = 
+              date(:date/1000, 'unixepoch', 'localtime')
+        ORDER BY createtime DESC
+    """)
+     fun getPackagesByWeek(date: Long): Flow<List<Code>>
 }

--
Gitblit v1.9.3