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/database/dao/CodeDao.kt | 50 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 50 insertions(+), 0 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 64e658e..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 @@ -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 { @@ -45,7 +48,54 @@ @Query(""" SELECT * FROM Code WHERE type 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") + fun queryByTypeAndCodeAndDate(content: String, code: String, dateString: String): Code + + + @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 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', 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 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 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>> } -- Gitblit v1.9.3