cloudroam
2 天以前 88cf855268a05a68bb4570c6d45841bbe23fe5ec
app/src/main/java/com/example/firstapp/database/dao/CodeDao.kt
@@ -54,7 +54,7 @@
        SELECT * FROM Code 
        WHERE oneLevel LIKE '%' || :keyword || '%' 
        AND pickup = '0'
        ORDER BY time DESC
        ORDER BY createTime DESC
    """)
    fun getByKeyword(keyword: String): List<Code>
@@ -62,10 +62,10 @@
        SELECT * FROM Code 
        WHERE category = :category 
        AND code = :code 
        AND substr(createTime, 1, 10) = substr(:dateString, 1, 10)
        AND (smsTimestamp = :smsTimestamp )
        LIMIT 1
    """)
    fun queryByTypeAndCodeAndDate(category: String, code: String, dateString: String): Code?
    fun queryByTypeAndCodeAndDate(category: String, code: String, smsTimestamp: Long): Code?
    @Query("update  Code set pickup = '1' ,  pickuptime = CURRENT_TIMESTAMP  where id=:id")
@@ -86,16 +86,16 @@
    @Query("""
        SELECT * FROM code 
        WHERE substr(createTime, 1, 10) = 
              date(:date/1000, 'unixepoch', 'localtime') and pickup = 1
              date(:date/1000, 'unixepoch', 'localtime') and pickup = 1 and category='快递'
        ORDER BY createTime DESC
    """)
    fun getPackagesByDayUnread(date: Long): Flow<List<Code>>
    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
    """)
@@ -135,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
    """)
@@ -145,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
    """)
@@ -202,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
    """)
@@ -237,12 +237,12 @@
        )
        SELECT 
            strftime('%m', month_start) as date,
            COUNT(code.id) as count,
            COUNT(c.id) as count,
            strftime('%Y-%m-%d', 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
        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>>
@@ -335,9 +335,17 @@
        COUNT(c.id) AS count,
        '' AS weekStart
    FROM dates d
    LEFT JOIN code c ON date(c.createTime) = d.date_value
    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>
}