package Engine import ( "LAPP_SJA_ME/conf" "LAPP_SJA_ME/utils" "LAPP_SJA_ME/web/middleware/glog" "LAPP_SJA_ME/web/models" "fmt" "time" ) // 启动打印引擎 func RunEngine(conf *conf.EnvConfig){ //删除七天前的数据 //go DelPrinterInfo() fmt.Println("printer is landing.....!") // 初始化任务读取和保存通道 var( inChan = make(chan models.PrintTask, 1000) // 待打印任务管道 printChan = make(chan models.PrintTask, 1000) // 表单串行打印管道 outChan = make(chan models.PrintTask, 1000) // 打印完待保存任务管道 prnDict = make(map[string] *Printer) p *Printer err error ) // 获取打印机列表并启动打印机 if err = GetPrinterDict(conf, prnDict); err != nil { glog.Infoln("Engine: failed to get the printer dict due to", err) return } // 启动打印任务获取服务 StartFetcher(conf, inChan) // 启动打印任务调度服务 StartScheduler(inChan, prnDict) // 启动每台打印机的打印服务 for _, p = range prnDict { StartPrinter(p, conf, printChan, outChan) } // 启动串行打印表单的服务 StartSheetSerialPrintService(prnDict, printChan, outChan) // 启动打印任务保存服务 StartSaver(conf, outChan) } // 获取所有激活的打印机列表 func GetPrinterDict(conf *conf.EnvConfig,prnDict map[string]*Printer) error { var( printerList []models.Printertab p models.Printertab err error ) printer := new(models.Printertab) if printerList, err= printer.GetPrinterList(conf); err != nil { glog.Infoln("GetPrinterDict: Faile to get the printer list due to: ", err) return err } for _, p = range printerList { var prn = Printer{} prn.Create(p) prnDict[prn.PrinterId] = &prn } return nil } //删除一个礼拜前的打印消息 func DelPrinterInfo() { tick := time.Tick(10 * time.Second) //tick := time.Tick(72 * time.Hour) fmt.Println("开始执行") for { select { case <-tick: //执行删除操作 before7day := time.Now().AddDate(0, 0, -7) fmt.Printf("before7day:%s", before7day) timestr := utils.TimeFormat(before7day, "yyyyMMddHHmmss") fmt.Printf("timestr:%s", timestr) printer := new(models.Printheadtab) printer.Finr = 100 printer.DelBefore7DayRecords(timestr) } } }