package print_server import ( "fmt" "git.rosy.net.cn/baseapi/utils" "git.rosy.net.cn/jx-print/dao" "git.rosy.net.cn/jx-print/globals" "git.rosy.net.cn/jx-print/model" putils "git.rosy.net.cn/jx-print/putils" "github.com/gin-gonic/gin" "time" ) const ( sounda = "sounda" //提示音a soundb = "soundb" //提示音b soundc = "soundc" //提示音c soundd = "soundd" //提示音d sounde = "sounde" //报警音e soundf = "soundf" //报警音f soundg = "soundg" //报警音g ) func AddPrinters(c *gin.Context, tokenInfo *model.TokenInfo, appID int, printInfos []*model.PrintInfo) (err error) { var ( db = globals.GetDB() errs []error now = time.Now() ) if len(printInfos) > 50 { return fmt.Errorf("每次最多添加50台!") } if apps, _ := dao.GetApps(db, appID, tokenInfo.User.UserID, ""); len(apps) == 0 { return fmt.Errorf("未查询到此应用!app_id:%d", appID) } for _, v := range printInfos { if v.PrintNo == "" { errs = append(errs, fmt.Errorf("请输入正确的打印机编号!print_no :%s 。", v.PrintNo)) continue } printers, _ := dao.GetPrinters(db, appID, v.PrintNo, 0, 0, 0) if len(printers) > 0 { errs = append(errs, fmt.Errorf("此打印机已被其他应用绑定!print_no :%s 。", v.PrintNo)) continue } printer := &model.Printer{ CreatedAt: &now, UpdatedAt: &now, DeletedAt: &utils.DefaultTimeValue, LastOperator: tokenInfo.User.Name, AppID: appID, PrintNo: v.PrintNo, Name: v.Name, //SIM: v.SIM, Status: model.PrinterStatusNormal, IsOnline: model.PrinterOffline, Sound: sounda, Volume: 4, UserId: "system", } if err = dao.Insert(db, printer); err != nil { errs = append(errs, err) } } if len(errs) > 0 { err = putils.BuildErr(errs) } return err } func GetPrinters(c *gin.Context, appID int, printNo, name string, status, isOnline, offset, pageSize int) (page *model.PagedInfo, err error) { return dao.GetPrintersPage(globals.GetDB(), appID, printNo, name, status, isOnline, offset, pageSize, "") } func DelPrinters(c *gin.Context, appID int, tokenInfo *model.TokenInfo, printNos []string) (err error) { var ( db = globals.GetDB() errs []error now = time.Now() ) if len(printNos) > 50 { return fmt.Errorf("每次最多删除50台!") } if apps, _ := dao.GetApps(db, appID, tokenInfo.User.UserID, ""); len(apps) == 0 { return fmt.Errorf("未查询到此应用!app_id:%d", appID) } for _, v := range printNos { if v == "" { errs = append(errs, fmt.Errorf("请输入正确的打印机编号!print_no :%s 。", v)) continue } printers, _ := dao.GetPrinters(db, appID, v, 0, 0, 0) if len(printers) == 0 { errs = append(errs, fmt.Errorf("未在该应用下查到此打印机!app_id: %d, print_no: %s", appID, v)) continue } printer := printers[0] printer.DeletedAt = &now printer.LastOperator = tokenInfo.User.Name if err = dao.Update(db, printer, model.FieldLastOperator, model.FieldDeletedAt); err != nil { errs = append(errs, err) } } if len(errs) > 0 { err = putils.BuildErr(errs) } return err } func UpdatePrinter(c *gin.Context, appID int, tokenInfo *model.TokenInfo, printNo, name, sound string, volume int) (err error) { var ( db = globals.GetDB() now = time.Now() fields []string ) if apps, _ := dao.GetApps(db, appID, tokenInfo.User.UserID, ""); len(apps) == 0 { return fmt.Errorf("未查询到此应用!app_id:%d", appID) } printers, _ := dao.GetPrinters(db, appID, printNo, 0, 0, 0) if len(printers) == 0 { return fmt.Errorf("未在该应用下查到此打印机!app_id: %d, print_no: %s", appID, printNo) } printer := printers[0] printer.UpdatedAt = &now printer.LastOperator = tokenInfo.User.Name fields = append(fields, model.FieldUpdatedAt, model.FieldLastOperator) if name != printer.Name { printer.Name = name fields = append(fields, "name") } //if sim != printer.IccID { // printer.IccID = sim // fields = append(fields, "iccid") //} if sound != printer.Sound { printer.Sound = sound fields = append(fields, "sound") } if volume != printer.Volume { printer.Volume = volume fields = append(fields, "volume") } if err = dao.Update(db, printer, fields...); err != nil { return err } return err } func TestPrint(c *gin.Context, appID int, tokenInfo *model.TokenInfo, printNo string, orderNo int64, content string) (msgID string, err error) { var ( db = globals.GetDB() now = time.Now() ) msgID = now.Format("20060102150405") + "_" + putils.RandStringBytesWithNumber(8) apps, err := dao.GetApps(db, appID, tokenInfo.User.UserID, "") if err != nil { return "", err } if len(apps) == 0 { return "", fmt.Errorf("未查询到此应用!app_id:%d", appID) } printers, _ := dao.GetPrinters(db, appID, printNo, 0, 0, 0) if len(printers) == 0 { return "", fmt.Errorf("未在该应用下查到此打印机!app_id: %d, print_no: %s", appID, printNo) } printMsg := &model.PrintMsg{ CreatedAt: &now, UpdatedAt: &now, LastOperator: tokenInfo.User.Name, DeletedAt: &utils.DefaultTimeValue, PrintNo: printNo, OrderNo: orderNo, Content: content, MsgID: msgID, } err = dao.Insert(db, printMsg) return msgID, err } func GetPrintMessages(c *gin.Context, appID int, tokenInfo *model.TokenInfo, printNo, msgID string, beginAt, endAt string, offset, pageSize int) (page *model.PagedInfo, err error) { var ( db = globals.GetDB() ) if apps, _ := dao.GetApps(db, appID, tokenInfo.User.UserID, ""); len(apps) == 0 { return nil, fmt.Errorf("未查询到此应用!app_id:%d", appID) } printers, _ := dao.GetPrinters(db, appID, printNo, 0, 0, 0) if len(printers) == 0 { return nil, fmt.Errorf("未在该应用下查到此打印机!app_id: %d, print_no: %s", appID, printNo) } 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 } // DeletePrintMsg 删除打印机打印消息 func DeletePrintMsg(printNos string) error { return dao.DeletePrinterMsg(printNos) }