cloudroam
2025-03-27 4ed001ff84ed21bf32da85dbc4ba53ff2829e987
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,7 +224,7 @@
            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
    """)
@@ -245,7 +245,7 @@
        COUNT(code.id) as count,
        days.date as weekStart
    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
""")
@@ -258,7 +258,7 @@
        COUNT(id) as count,
        datetime(:date/1000, 'unixepoch', 'localtime') as weekStart
    FROM code 
    WHERE strftime('%Y', createtime) = strftime('%Y', datetime(:date/1000, 'unixepoch', 'localtime'))
    WHERE strftime('%Y', createTime) = strftime('%Y', datetime(:date/1000, 'unixepoch', 'localtime'))
""")
    fun getCurrentYearStats(date: Long): Flow<List<DailyStat>>
}