From f67cf3b81a00f732ca743431258ae6b78f5f40ab Mon Sep 17 00:00:00 2001 From: tj <1378534974@qq.com> Date: 星期四, 17 四月 2025 15:05:28 +0800 Subject: [PATCH] 11、我的 切换头像 点击切换头像没有显示允许存储权限的窗口,华为的手机目前有 49、首页 实时刷新 点击全部取件或其他分类后,回到上一层,内容没有刷新(5个分类) 52、数据统计 数据统计 1.周月年的柱状图统计逻辑需要修改为只统计快递类的数据 2.按年的图形统计,右下方加上图示说明 53、首页 首页登录 点击用户协议、隐私政策无反应 --- app/src/main/java/com/example/firstapp/database/dao/CodeDao.kt | 129 ++++++++++++++++++++++++++++++++++++------- 1 files changed, 108 insertions(+), 21 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 f79e67a..e63ba6a 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 @@ -10,6 +10,7 @@ import com.example.firstapp.model.CourierStat import com.example.firstapp.model.DailyStat import com.example.firstapp.model.HeatmapStat +import com.example.firstapp.model.StationGroup import io.reactivex.Completable import kotlinx.coroutines.flow.Flow @@ -27,6 +28,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") @@ -54,8 +58,14 @@ """) fun getByKeyword(keyword: String): List<Code> - @Query("SELECT * FROM Code WHERE oneLevel = :content and code= :code and createTime = :dateString LIMIT 1") - fun queryByTypeAndCodeAndDate(content: String, code: String, dateString: String): Code + @Query(""" + SELECT * FROM Code + WHERE category = :category + AND code = :code + AND substr(createTime, 1, 10) = substr(:dateString, 1, 10) + LIMIT 1 + """) + fun queryByTypeAndCodeAndDate(category: String, code: String, dateString: String): Code? @Query("update Code set pickup = '1' , pickuptime = CURRENT_TIMESTAMP where id=:id") @@ -68,16 +78,24 @@ @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 and category='快递' + ORDER BY createTime DESC + """) + fun getPackagesByDayReaded(date: Long): Flow<List<Code>> + + @Query(""" SELECT oneLevel as courierName, COUNT(*) as count FROM code WHERE strftime('%Y-%W', substr(createTime, 1, 10)) = - strftime('%Y-%W', datetime(:date/1000, 'unixepoch', 'localtime')) + strftime('%Y-%W', datetime(:date/1000, 'unixepoch', 'localtime')) and category='快递' GROUP BY oneLevel ORDER BY count DESC """) @@ -85,10 +103,8 @@ @Query(""" WITH RECURSIVE dates(date_value) AS ( - -- 从当前日期往前3周的周一开始 SELECT date(datetime(:date/1000, 'unixepoch', 'localtime'), 'weekday 0', '-21 days') as date_value UNION ALL - -- 每次加7天,直到后2周 SELECT date(date_value, '+7 days') FROM dates WHERE date_value < date(datetime(:date/1000, 'unixepoch', 'localtime'), 'weekday 0', '+14 days') @@ -96,7 +112,7 @@ SELECT strftime('%Y-%m-%d', date_value) as date, COUNT(c.id) as count, - date_value as weekStart + strftime('%Y-%m-%d', date_value) as weekStart FROM dates d LEFT JOIN code c ON strftime('%Y-%m-%d', c.createTime) BETWEEN strftime('%Y-%m-%d', d.date_value) @@ -119,7 +135,7 @@ SELECT oneLevel as courierName, COUNT(*) as count FROM code WHERE strftime('%Y-%m', substr(createTime, 1, 10)) = - strftime('%Y-%m', datetime(:date/1000, 'unixepoch', 'localtime')) + strftime('%Y-%m', datetime(:date/1000, 'unixepoch', 'localtime')) and category='快递' GROUP BY oneLevel ORDER BY count DESC """) @@ -129,7 +145,7 @@ SELECT oneLevel as courierName, COUNT(*) as count FROM code WHERE strftime('%Y', substr(createTime, 1, 10)) = - strftime('%Y', datetime(:date/1000, 'unixepoch', 'localtime')) + strftime('%Y', datetime(:date/1000, 'unixepoch', 'localtime')) and category='快递' GROUP BY oneLevel ORDER BY count DESC """) @@ -165,7 +181,7 @@ SELECT strftime('%Y', year_start) as date, COUNT(code.id) as count, - year_start as week_start + strftime('%Y-%m-%d', year_start) as weekStart FROM years LEFT JOIN code ON strftime('%Y', code.createTime) = strftime('%Y', years.year_start) GROUP BY years.year_start @@ -186,7 +202,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 and code.category='快递' GROUP BY dates.date ORDER BY dates.date """) @@ -201,9 +217,9 @@ WHERE date < date(datetime(:date/1000, 'unixepoch', 'localtime'), 'start of month', '+1 month', '-1 day') ) SELECT - strftime('%d', days.date) || '' as date, -- 确保 date 不为空 + strftime('%d', days.date) || '' as date, COUNT(code.id) as count, - days.date as week_start + strftime('%Y-%m-%d', days.date) as weekStart FROM days LEFT JOIN code ON date(code.createTime) = days.date GROUP BY days.date @@ -221,12 +237,12 @@ ) SELECT strftime('%m', month_start) as date, - 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) - GROUP BY months.month_start - ORDER BY months.month_start ASC + COUNT(c.id) as count, + strftime('%Y-%m-%d', month_start) as weekStart + FROM months m + LEFT JOIN code c ON strftime('%Y-%m', c.createTime) = strftime('%Y-%m', m.month_start) and c.category='快递' + GROUP BY m.month_start + ORDER BY m.month_start ASC """) fun getYearMonthlyStats(date: Long): Flow<List<DailyStat>> @@ -243,7 +259,7 @@ SELECT strftime('%Y-%m-%d', days.date) as date, COUNT(code.id) as count, - days.date as weekStart + strftime('%Y-%m-%d', days.date) as weekStart FROM days LEFT JOIN code ON date(code.createTime) = days.date GROUP BY days.date @@ -256,9 +272,80 @@ SELECT strftime('%Y', datetime(:date/1000, 'unixepoch', 'localtime')) as date, COUNT(id) as count, - datetime(:date/1000, 'unixepoch', 'localtime') as weekStart + strftime('%Y-%m-%d', 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>> + + @Query(""" + SELECT oneLevel as stationName, COUNT(*) as count + FROM Code + WHERE category = :type AND pickup = '0' + GROUP BY oneLevel + ORDER BY createTime DESC + """) + fun getStationsByType(type: String): List<StationGroup> + + @Query(""" + SELECT * FROM Code + WHERE category = :type AND pickup = '0' + AND oneLevel = :stationName + 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 and c.category='快递' + GROUP BY d.date_value + ORDER BY d.date_value ASC +""") + fun getWeeklyStatsChart(startDateCur: String, endDateCur: String): Flow<List<DailyStat>> + + + @Query(""" + SELECT COUNT(1) + FROM code + WHERE date(createTime) BETWEEN date(:startDateCur) AND date(:endDateCur) and category =:type + """) + fun getDateStatsByType(startDateCur: String, endDateCur: String,type: String): Flow<Long> } -- Gitblit v1.9.3