ferry/apis/dashboard/dashboard.go
2020-08-01 16:15:40 +08:00

101 lines
2.5 KiB
Go

package dashboard
import (
"ferry/global/orm"
"ferry/models/process"
"ferry/models/system"
"ferry/pkg/pagination"
"ferry/pkg/service"
"ferry/tools/app"
"fmt"
"github.com/gin-gonic/gin"
)
/*
@Author : lanyulei
*/
func InitData(c *gin.Context) {
var (
err error
panelGroup struct {
UserTotalCount int `json:"user_total_count"`
WorkOrderTotalCount int `json:"work_order_total_count"`
UpcomingTotalCount int `json:"upcoming_total_count"`
MyUpcomingCount int `json:"my_upcoming_count"`
}
result interface{}
processOrderList []process.Info
processOrderListMap map[string][]interface{}
)
// 查询用户总数
err = orm.Eloquent.Model(&system.SysUser{}).Count(&panelGroup.UserTotalCount).Error
if err != nil {
app.Error(c, -1, err, "")
return
}
// 查询工单总数
err = orm.Eloquent.Model(&process.WorkOrderInfo{}).Count(&panelGroup.WorkOrderTotalCount).Error
if err != nil {
app.Error(c, -1, err, "")
return
}
// 查询待办总数
err = orm.Eloquent.Model(&process.WorkOrderInfo{}).
Where("is_end = 0").
Count(&panelGroup.UpcomingTotalCount).Error
if err != nil {
app.Error(c, -1, err, "")
return
}
// 查询我的待办
w := service.WorkOrder{
Classify: 1,
GinObj: c,
}
result, err = w.PureWorkOrderList()
if err != nil {
app.Error(c, -1, err, "")
return
}
panelGroup.MyUpcomingCount = result.(*pagination.Paginator).TotalCount
// 查询周工单统计
statisticsData, err := service.WeeklyStatistics()
if err != nil {
app.Error(c, -1, err, fmt.Sprintf("查询周工单统计失败,%v", err.Error()))
return
}
// 查询工单提交排名
submitRankingData, err := service.SubmitRanking()
if err != nil {
app.Error(c, -1, err, fmt.Sprintf("查询工单提交排名失败,%v", err.Error()))
return
}
// 查询最常用的流程
err = orm.Eloquent.Model(&process.Info{}).Order("submit_count desc").Limit(10).Find(&processOrderList).Error
if err != nil {
app.Error(c, -1, err, fmt.Sprintf("查询最常用的流程失败,%v", err.Error()))
return
}
processOrderListMap = make(map[string][]interface{})
for _, v := range processOrderList {
processOrderListMap["title"] = append(processOrderListMap["title"], v.Name)
processOrderListMap["submit_count"] = append(processOrderListMap["submit_count"], v.SubmitCount)
}
app.OK(c, map[string]interface{}{
"panelGroup": panelGroup,
"statisticsData": statisticsData,
"submitRankingData": submitRankingData,
"processOrderList": processOrderListMap,
}, "")
}