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/dao/CodeDao.kt |   42 +++++++++++++++++++++++++++++++++++++++++-
 1 files changed, 41 insertions(+), 1 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 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>>
 }

--
Gitblit v1.9.3