diff --git a/controllers/print_controller.go b/controllers/print_controller.go index de87b3c..4048655 100644 --- a/controllers/print_controller.go +++ b/controllers/print_controller.go @@ -187,3 +187,20 @@ func GetPrintMessages(c *gin.Context) { } return } + +//查询打印统计(首页) GET +func GetPrinterReport(c *gin.Context) { + var ( + tokenInfo *model.TokenInfo + ) + if tokenInfo = checkToken(c); tokenInfo == nil { + return + } + if !callFunc(c, func() (retVal interface{}, errCode string, err error) { + retVal, err = services.GetPrinterReport(c, tokenInfo) + return retVal, "", err + }) { + return + } + return +} diff --git a/dao/print_dao.go b/dao/print_dao.go index 49d6f19..cde24bf 100644 --- a/dao/print_dao.go +++ b/dao/print_dao.go @@ -151,6 +151,63 @@ func GetPrintMessagesPage(db *sqlx.DB, printNo, msgID, beginAt, endAt string, of return page, err } +func GetPrintMessages(db *sqlx.DB, printNo, msgID, beginAt, endAt string, statusNeq int) (printMsgs []*model.PrintMsg, err error) { + var ( + count int + beginTime, endTime time.Time + ) + if beginAt == "" { + beginTime = utils.Time2Date(time.Now().AddDate(0, 0, -7)) + } else { + beginTime = utils.Str2Time(beginAt) + } + if endAt == "" { + endTime = utils.Str2Time(utils.Time2Str(utils.Time2Date(time.Now())) + " 23:59:59") + } else { + endTime = utils.Str2Time(endAt) + } + sqlCount := ` + SELECT COUNT(id) count + ` + sql := ` + SELECT * + ` + sqlOhter := ` + FROM print_msg + WHERE 1 = 1 AND deleted_at = ? + ` + sqlParams := []interface{}{utils.DefaultTimeValue} + if printNo != "" { + sqlOhter += " AND print_no = ?" + sqlParams = append(sqlParams, printNo) + } + if msgID != "" { + sqlOhter += " AND msg_id = ?" + sqlParams = append(sqlParams, msgID) + } + if beginTime != utils.ZeroTimeValue { + sqlOhter += " AND created_at > ?" + sqlParams = append(sqlParams, beginTime) + } + if endTime != utils.ZeroTimeValue { + sqlOhter += " AND created_at < ?" + sqlParams = append(sqlParams, endTime) + } + if statusNeq != 0 { + sqlOhter += " AND status <> ?" + sqlParams = append(sqlParams, statusNeq) + } + //查总数 + row := db.DB.QueryRow(sqlCount+sqlOhter, sqlParams...) + if err = row.Scan(&count); err != nil { + return printMsgs, err + } + if err = db.Select(&printMsgs, sql+sqlOhter, sqlParams...); err == nil { + return printMsgs, err + } + return printMsgs, err +} + func GetPrinter(db *sqlx.DB, printNo, iccID string) (printer *model.Printer, err error) { var ( printers []*model.Printer diff --git a/routers/router.go b/routers/router.go index 4aff0b7..680b162 100644 --- a/routers/router.go +++ b/routers/router.go @@ -26,6 +26,7 @@ func Init(r *gin.Engine) { print.POST("/updatePrinter", controllers.UpdatePrinter) print.POST("/testPrint", controllers.TestPrint) print.GET("/getPrintMessages", controllers.GetPrintMessages) + print.GET("/getPrinterReport", controllers.GetPrinterReport) //order order := v2.Group("/order") order.POST("/createOrder", controllers.CreateOrder) diff --git a/services/print.go b/services/print.go index 2cc02d9..584f324 100644 --- a/services/print.go +++ b/services/print.go @@ -186,3 +186,53 @@ func GetPrintMessages(c *gin.Context, appID int, tokenInfo *model.TokenInfo, pri } return dao.GetPrintMessagesPage(db, printNo, msgID, beginAt, endAt, offset, pageSize) } + +type GetPrinterReportResult struct { + WeekPrintCount int `json:"week_print_count"` + DayPrintCount int `json:"day_print_count"` + DayUnPrintCount int `json:"day_un_print_count"` + OnlinePrinterCount int `json:"online_printer_count"` + OfflinePrinterCount int `json:"offline_printer_count"` + FlowPrinterCount int `json:"flow_printer_count"` + PaperPrinterCount int `json:"paper_printer_count"` +} + +func GetPrinterReport(c *gin.Context, tokenInfo *model.TokenInfo) (getPrinterReportResult *GetPrinterReportResult, err error) { + var ( + db = globals.GetDB() + weekCount, DayCount, DayUnCount = 0, 0, 0 + onlineC, offlineC, flowC, paperC = 0, 0, 0, 0 + ) + getPrinterReportResult = &GetPrinterReportResult{} + apps, _ := dao.GetApps(db, 0, tokenInfo.User.UserID, "") + if len(apps) == 0 { + return nil, err + } + for _, app := range apps { + printers, _ := dao.GetPrinters(db, app.ID, "", 0, 0, 0) + for _, printer := range printers { + weeks, _ := dao.GetPrintMessages(db, printer.PrintNo, "", utils.Time2Str(time.Now().AddDate(0, 0, -7)), utils.Time2Str(time.Now()), 0) + weekCount += len(weeks) + days, _ := dao.GetPrintMessages(db, printer.PrintNo, "", utils.Time2Str(time.Now().AddDate(0, 0, -1)), utils.Time2Str(time.Now()), 0) + DayCount += len(days) + dayUns, _ := dao.GetPrintMessages(db, printer.PrintNo, "", utils.Time2Str(time.Now().AddDate(0, 0, -1)), utils.Time2Str(time.Now()), 1) + DayUnCount += len(dayUns) + } + onlines, _ := dao.GetPrinters(db, app.ID, "", model.PrinterOnline, 0, 0) + onlineC += len(onlines) + offlines, _ := dao.GetPrinters(db, app.ID, "", model.PrinterOffline, 0, 0) + offlineC += len(offlines) + flows, _ := dao.GetPrinters(db, app.ID, "", 0, 0, 1) + flowC += len(flows) + papers, _ := dao.GetPrinters(db, app.ID, "", model.PrinterStatusWithouPaper, 0, 0) + paperC += len(papers) + } + getPrinterReportResult.WeekPrintCount = weekCount + getPrinterReportResult.DayPrintCount = DayCount + getPrinterReportResult.DayUnPrintCount = DayUnCount + getPrinterReportResult.OnlinePrinterCount = onlineC + getPrinterReportResult.OfflinePrinterCount = offlineC + getPrinterReportResult.FlowPrinterCount = flowC + getPrinterReportResult.PaperPrinterCount = paperC + return getPrinterReportResult, err +}