From 4ed001ff84ed21bf32da85dbc4ba53ff2829e987 Mon Sep 17 00:00:00 2001 From: cloudroam <cloudroam> Date: 星期四, 27 三月 2025 17:01:19 +0800 Subject: [PATCH] fix 修改表字段后版本, --- app/src/main/java/com/example/firstapp/database/dao/CodeDao.kt | 78 +++++++++++++++++++++++++++----------- 1 files changed, 55 insertions(+), 23 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 39d54e2..f79e67a 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 @@ -35,7 +35,7 @@ @Query("SELECT * FROM Code") fun getAllCodes(): List<Code> - @Query("SELECT * FROM Code WHERE type = :type") + @Query("SELECT * FROM Code WHERE oneLevel = :type") fun getCodesByType(type: String): List<Code> @@ -48,13 +48,13 @@ @Query(""" SELECT * FROM Code - WHERE type LIKE '%' || :keyword || '%' + WHERE oneLevel LIKE '%' || :keyword || '%' AND pickup = '0' ORDER BY time DESC """) fun getByKeyword(keyword: String): List<Code> - @Query("SELECT * FROM Code WHERE type = :content and code= :code and createtime = :dateString LIMIT 1") + @Query("SELECT * FROM Code WHERE oneLevel = :content and code= :code and createTime = :dateString LIMIT 1") fun queryByTypeAndCodeAndDate(content: String, code: String, dateString: String): Code @@ -62,23 +62,23 @@ fun pickup(id: Long) //查询当天包裹信息 - @Query("SELECT * FROM code WHERE date(createtime) = date(:date/1000, 'unixepoch', 'localtime') ORDER BY createtime DESC") + @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 substr(createtime, 1, 10) = + WHERE substr(createTime, 1, 10) = date(:date/1000, 'unixepoch', 'localtime') - ORDER BY createtime DESC + ORDER BY createTime DESC """) fun getPackagesByDay(date: Long): Flow<List<Code>> @Query(""" - SELECT type as courierName, COUNT(*) as count + SELECT oneLevel as courierName, COUNT(*) as count FROM code - WHERE strftime('%Y-%W', substr(createtime, 1, 10)) = + WHERE strftime('%Y-%W', substr(createTime, 1, 10)) = strftime('%Y-%W', datetime(:date/1000, 'unixepoch', 'localtime')) - GROUP BY type + GROUP BY oneLevel ORDER BY count DESC """) fun getCourierStatsByWeek(date: Long): Flow<List<CourierStat>> @@ -98,7 +98,7 @@ COUNT(c.id) as count, date_value as weekStart FROM dates d - LEFT JOIN code c ON strftime('%Y-%m-%d', c.createtime) BETWEEN + LEFT JOIN code c ON strftime('%Y-%m-%d', c.createTime) BETWEEN strftime('%Y-%m-%d', d.date_value) AND strftime('%Y-%m-%d', date(d.date_value, '+6 days')) GROUP BY d.date_value @@ -109,28 +109,28 @@ @Query(""" SELECT * FROM code - WHERE substr(createtime, 1, 10) = + WHERE substr(createTime, 1, 10) = date(:date/1000, 'unixepoch', 'localtime') - ORDER BY createtime DESC + ORDER BY createTime DESC """) fun getPackagesByWeek(date: Long): Flow<List<Code>> @Query(""" - SELECT type as courierName, COUNT(*) as count + SELECT oneLevel as courierName, COUNT(*) as count FROM code - WHERE strftime('%Y-%m', substr(createtime, 1, 10)) = + WHERE strftime('%Y-%m', substr(createTime, 1, 10)) = strftime('%Y-%m', datetime(:date/1000, 'unixepoch', 'localtime')) - GROUP BY type + GROUP BY oneLevel ORDER BY count DESC """) fun getCourierStatsByMonth(date: Long): Flow<List<CourierStat>> @Query(""" - SELECT type as courierName, COUNT(*) as count + SELECT oneLevel as courierName, COUNT(*) as count FROM code - WHERE strftime('%Y', substr(createtime, 1, 10)) = + WHERE strftime('%Y', substr(createTime, 1, 10)) = strftime('%Y', datetime(:date/1000, 'unixepoch', 'localtime')) - GROUP BY type + GROUP BY oneLevel ORDER BY count DESC """) fun getCourierStatsByYear(date: Long): Flow<List<CourierStat>> @@ -148,7 +148,7 @@ // COUNT(code.id) as count, // month_start as week_start // FROM months -// LEFT JOIN code ON strftime('%Y-%m', code.createtime) = strftime('%Y-%m', months.month_start) +// LEFT JOIN code ON strftime('%Y-%m', code.createTime) = strftime('%Y-%m', months.month_start) // GROUP BY months.month_start // ORDER BY months.month_start ASC // """) @@ -167,7 +167,7 @@ COUNT(code.id) as count, year_start as week_start FROM years - LEFT JOIN code ON strftime('%Y', code.createtime) = strftime('%Y', years.year_start) + LEFT JOIN code ON strftime('%Y', code.createTime) = strftime('%Y', years.year_start) GROUP BY years.year_start ORDER BY years.year_start ASC """) @@ -186,7 +186,7 @@ CAST(strftime('%W', dates.date) AS INTEGER) as weekOfYear, COUNT(code.id) as count FROM dates - LEFT JOIN code ON date(code.createtime) = dates.date + LEFT JOIN code ON date(code.createTime) = dates.date GROUP BY dates.date ORDER BY dates.date """) @@ -205,7 +205,7 @@ COUNT(code.id) as count, days.date as week_start FROM days - LEFT JOIN code ON date(code.createtime) = days.date + LEFT JOIN code ON date(code.createTime) = days.date GROUP BY days.date ORDER BY days.date ASC """) @@ -224,9 +224,41 @@ COUNT(code.id) as count, month_start as weekStart FROM months - LEFT JOIN code ON strftime('%Y-%m', code.createtime) = strftime('%Y-%m', months.month_start) + LEFT JOIN code ON strftime('%Y-%m', code.createTime) = strftime('%Y-%m', months.month_start) GROUP BY months.month_start ORDER BY months.month_start ASC """) fun getYearMonthlyStats(date: Long): Flow<List<DailyStat>> + + + // 新增当前周统计方法 + @Query(""" + WITH RECURSIVE days(date) AS ( + SELECT date(datetime(:date/1000, 'unixepoch', 'localtime'), 'weekday 0') as date + UNION ALL + SELECT date(date, '+1 day') + FROM days + WHERE date < date(datetime(:date/1000, 'unixepoch', 'localtime'), 'weekday 6') + ) + SELECT + strftime('%Y-%m-%d', days.date) as date, + COUNT(code.id) as count, + days.date as weekStart + FROM days + LEFT JOIN code ON date(code.createTime) = days.date + GROUP BY days.date + ORDER BY days.date ASC +""") + fun getCurrentWeekStats(date: Long): Flow<List<DailyStat>> + + // 新增当前年统计方法 + @Query(""" + SELECT + strftime('%Y', datetime(:date/1000, 'unixepoch', 'localtime')) as date, + COUNT(id) as count, + datetime(:date/1000, 'unixepoch', 'localtime') as weekStart + FROM code + WHERE strftime('%Y', createTime) = strftime('%Y', datetime(:date/1000, 'unixepoch', 'localtime')) +""") + fun getCurrentYearStats(date: Long): Flow<List<DailyStat>> } -- Gitblit v1.9.3