From e3783b167f132005c7afcc4c10f9ab167806331d Mon Sep 17 00:00:00 2001
From: cloudroam <cloudroam>
Date: 星期二, 04 三月 2025 13:22:04 +0800
Subject: [PATCH] fix: 按天统计相关逻辑
---
app/src/main/java/com/example/firstapp/model/DailyStat.kt | 7 ++-
app/src/main/java/com/example/firstapp/model/CourierStat.kt | 7 ++-
app/src/main/java/com/example/firstapp/ui/dashboard/DashboardFragment.kt | 15 +++----
app/src/main/java/com/example/firstapp/database/dao/CodeDao.kt | 36 +++++++++--------
4 files changed, 34 insertions(+), 31 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 d86d5c1..343140a 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
@@ -64,36 +64,38 @@
@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")
+ @Query("""
+ SELECT * FROM code
+ WHERE substr(createtime, 1, 10) =
+ 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')
+ WHERE strftime('%Y-%W', substr(createtime, 1, 10)) =
+ strftime('%Y-%W', datetime(: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')
- )
+ SELECT category as courierName, COUNT(*) as count
+ FROM code
+ WHERE strftime('%Y-%W', substr(createtime, 1, 10)) =
+ strftime('%Y-%W', datetime(:date/1000, 'unixepoch', 'localtime'))
+ GROUP BY category
""")
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')
- )
+ SELECT substr(createtime, 1, 10) as date,
+ COUNT(*) as count
+ FROM code
+ WHERE strftime('%Y-%W', substr(createtime, 1, 10)) =
+ strftime('%Y-%W', datetime(:date/1000, 'unixepoch', 'localtime'))
+ GROUP BY substr(createtime, 1, 10)
""")
fun getDailyStatsByWeek(date: Long): Flow<List<DailyStat>>
}
diff --git a/app/src/main/java/com/example/firstapp/model/CourierStat.kt b/app/src/main/java/com/example/firstapp/model/CourierStat.kt
index 8abab2c..fe385fe 100644
--- a/app/src/main/java/com/example/firstapp/model/CourierStat.kt
+++ b/app/src/main/java/com/example/firstapp/model/CourierStat.kt
@@ -4,12 +4,13 @@
@DatabaseView(
"""
- SELECT category, COUNT(*) as count
+ SELECT category as courierName, COUNT(*) as count
FROM Code
+ WHERE substr(createtime, 1, 10) = date('now')
GROUP BY category
"""
)
data class CourierStat(
- val category: String,
+ val courierName: String,
val count: Int
-)
\ No newline at end of file
+)
diff --git a/app/src/main/java/com/example/firstapp/model/DailyStat.kt b/app/src/main/java/com/example/firstapp/model/DailyStat.kt
index 5cd26c6..f916d6f 100644
--- a/app/src/main/java/com/example/firstapp/model/DailyStat.kt
+++ b/app/src/main/java/com/example/firstapp/model/DailyStat.kt
@@ -4,13 +4,14 @@
@DatabaseView(
"""
- SELECT date(createtime/1000, 'unixepoch', 'localtime') as date,
+ SELECT substr(createtime, 1, 10) as date,
COUNT(*) as count
FROM code
- GROUP BY date(createtime/1000, 'unixepoch', 'localtime')
+ WHERE substr(createtime, 1, 10) = date('now')
+ GROUP BY substr(createtime, 1, 10)
"""
)
data class DailyStat(
val date: String,
val count: Int
-)
\ No newline at end of file
+)
\ No newline at end of file
diff --git a/app/src/main/java/com/example/firstapp/ui/dashboard/DashboardFragment.kt b/app/src/main/java/com/example/firstapp/ui/dashboard/DashboardFragment.kt
index 565676c..f0e308a 100644
--- a/app/src/main/java/com/example/firstapp/ui/dashboard/DashboardFragment.kt
+++ b/app/src/main/java/com/example/firstapp/ui/dashboard/DashboardFragment.kt
@@ -85,7 +85,8 @@
else -> 0
}
updateDateDisplay()
-// loadPackages()
+ //加载按天统计包裹数量和列表
+ loadPackages()
observePackages()
}
override fun onTabUnselected(tab: TabLayout.Tab?) {}
@@ -185,7 +186,7 @@
private fun updatePieChartData() {
viewModel.getCourierStats(currentDate.timeInMillis).observe(viewLifecycleOwner) { stats ->
val entries = stats.map { stat ->
- PieEntry(stat.count.toFloat(), stat.category)
+ PieEntry(stat.count.toFloat(), stat.courierName)
}
val dataSet = PieDataSet(entries, "快递公司分布")
@@ -205,15 +206,13 @@
private fun loadPackages() {
// 这里应该从数据库或网络加载数据
// 根据当前选择的日期类型传入对应参数
- val packages = when (currentDateType) {
- DateType.DAY -> Core.code.getPackagesByDay(currentDate.timeInMillis)
+// val packages = when (currentDateType) {
+// DateType.DAY -> Core.code.getPackagesByDay(currentDate.timeInMillis)
// DateType.WEEK -> Core.code.getPackagesByWeek(currentDate.timeInMillis)
// DateType.MONTH -> Core.code.getPackagesByMonth(currentDate.timeInMillis)
// DateType.YEAR -> Core.code.getPackagesByYear(currentDate.timeInMillis)
- DateType.WEEK -> TODO()
- DateType.MONTH -> TODO()
- DateType.YEAR -> TODO()
- }
+// }
+ val packages =Core.code.getPackagesByDay(currentDate.timeInMillis)
packageAdapter.updatePackages(packages)
binding.textPackageCount.text = "${packageAdapter.itemCount}个"
}
--
Gitblit v1.9.3