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