From 27bbd0435881e408f267c99e6a253d2e17873bcc Mon Sep 17 00:00:00 2001 From: tj <1378534974@qq.com> Date: 星期五, 11 四月 2025 17:44:11 +0800 Subject: [PATCH] 1.2 --- app/src/main/java/com/example/firstapp/database/dao/CodeDao.kt | 59 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 files changed, 58 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 7572a45..d8b0118 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 @@ -29,6 +29,9 @@ @Query("DELETE FROM Code where id=:id") fun delete(id: Long) + @Query("DELETE FROM Code") + fun deleteAll(): Completable + @Query("SELECT * FROM Code WHERE id = :id LIMIT 1") fun getCodeById(id: Long): Code? @@ -75,10 +78,18 @@ @Query(""" SELECT * FROM code WHERE substr(createTime, 1, 10) = - date(:date/1000, 'unixepoch', 'localtime') + date(:date/1000, 'unixepoch', 'localtime') ORDER BY createTime DESC """) fun getPackagesByDay(date: Long): Flow<List<Code>> + + @Query(""" + SELECT * FROM code + WHERE substr(createTime, 1, 10) = + date(:date/1000, 'unixepoch', 'localtime') and pickup = 1 + ORDER BY createTime DESC + """) + fun getPackagesByDayUnread(date: Long): Flow<List<Code>> @Query(""" SELECT oneLevel as courierName, COUNT(*) as count @@ -283,4 +294,50 @@ ORDER BY createTime DESC """) fun getPackagesByTypeAndStation(type: String, stationName: String): List<Code> + + + @Query(""" + SELECT COUNT(1) + FROM code + WHERE date(createTime) BETWEEN date(:startDateCur) AND date(:endDateCur) + """) + fun getCurrentWeekStats2(startDateCur: String, endDateCur: String): Flow<Long> + +// @Query(""" +// WITH RECURSIVE dates(date_value) AS ( +// SELECT date('now', 'weekday 1', '-7 days') +// UNION ALL +// SELECT date(date_value, '+1 day') +// FROM dates +// WHERE date_value < date('now', 'weekday 1', '-7 days', '+6 days') +// ) +// SELECT +// strftime('%d', date_value) AS date, +// COUNT(c.id) AS count, +// '' as weekStart +// FROM dates d +// LEFT JOIN code c ON date(c.createTime) = d.date_value +// GROUP BY d.date_value +// ORDER BY d.date_value ASC +// +// """) + + @Query(""" + WITH RECURSIVE dates(date_value) AS ( + SELECT date(:startDateCur) + UNION ALL + SELECT date(date_value, '+1 day') + FROM dates + WHERE date_value < date(:endDateCur) + ) + SELECT + strftime('%d', date_value) AS date, + COUNT(c.id) AS count, + '' AS weekStart + FROM dates d + LEFT JOIN code c ON date(c.createTime) = d.date_value + GROUP BY d.date_value + ORDER BY d.date_value ASC +""") + fun getWeeklyStatsChart(startDateCur: String, endDateCur: String): Flow<List<DailyStat>> } -- Gitblit v1.9.3