ferry/pkg/service/dashboard.go

143 lines
3.3 KiB
Go
Raw Normal View History

2020-08-01 16:15:40 +08:00
package service
import (
"database/sql"
"ferry/global/orm"
)
/*
@Author : lanyulei
*/
// 查询周统计数据
func WeeklyStatistics() (statisticsData map[string][]interface{}, err error) {
var (
datetime string
total int
over int
processing int
sqlValue string
rows *sql.Rows
)
sqlValue = `SELECT
a.click_date,
ifnull( b.total, 0 ) AS total,
ifnull( b.over, 0 ) AS over,
ifnull( b.processing, 0 ) AS processing
FROM
(
SELECT
curdate() AS click_date UNION ALL
SELECT
date_sub( curdate(), INTERVAL 1 DAY ) AS click_date UNION ALL
SELECT
date_sub( curdate(), INTERVAL 2 DAY ) AS click_date UNION ALL
SELECT
date_sub( curdate(), INTERVAL 3 DAY ) AS click_date UNION ALL
SELECT
date_sub( curdate(), INTERVAL 4 DAY ) AS click_date UNION ALL
SELECT
date_sub( curdate(), INTERVAL 5 DAY ) AS click_date UNION ALL
SELECT
date_sub( curdate(), INTERVAL 6 DAY ) AS click_date
) a
LEFT JOIN (
SELECT
a1.datetime AS datetime,
a1.count AS total,
b1.count AS over,
c.count AS processing
FROM
(
SELECT
date( create_time ) AS datetime,
count(*) AS count
FROM
p_work_order_info
GROUP BY
date( create_time )) a1
LEFT JOIN (
SELECT
date( create_time ) AS datetime,
count(*) AS count
FROM
p_work_order_info
WHERE
is_end = 1
GROUP BY
date( create_time )) b1 ON a1.datetime = b1.datetime
LEFT JOIN (
SELECT
date( create_time ) AS datetime,
count(*) AS count
FROM
p_work_order_info
WHERE
is_end = 0
GROUP BY
date( create_time )) c ON a1.datetime = c.datetime
) b ON a.click_date = b.datetime order by a.click_date;`
rows, err = orm.Eloquent.Raw(sqlValue).Rows()
if err != nil {
return
}
defer func() {
_ = rows.Close()
}()
statisticsData = map[string][]interface{}{}
for rows.Next() {
err = rows.Scan(&datetime, &total, &over, &processing)
if err != nil {
return
}
statisticsData["datetime"] = append(statisticsData["datetime"], datetime[:10])
statisticsData["total"] = append(statisticsData["total"], total)
statisticsData["over"] = append(statisticsData["over"], over)
statisticsData["processing"] = append(statisticsData["processing"], processing)
}
return
}
// 查询工单提交排名
func SubmitRanking() (submitRankingData map[string][]interface{}, err error) {
var (
userId int
username string
nickname string
rankingCount int
rows *sql.Rows
)
sqlValue := `SELECT
creator AS user_id,
sys_user.username AS username,
sys_user.nick_name,
COUNT(*) AS rankingCount
FROM
p_work_order_info
LEFT JOIN sys_user ON sys_user.user_id = p_work_order_info.creator
GROUP BY
p_work_order_info.creator ORDER BY rankingCount limit 6;`
rows, err = orm.Eloquent.Raw(sqlValue).Rows()
if err != nil {
return
}
defer func() {
_ = rows.Close()
}()
submitRankingData = map[string][]interface{}{}
for rows.Next() {
err = rows.Scan(&userId, &username, &nickname, &rankingCount)
if err != nil {
return
}
submitRankingData["userId"] = append(submitRankingData["userId"], userId)
submitRankingData["username"] = append(submitRankingData["username"], username)
submitRankingData["nickname"] = append(submitRankingData["nickname"], nickname)
submitRankingData["rankingCount"] = append(submitRankingData["rankingCount"], rankingCount)
}
return
}