package Engine
|
|
|
|
import (
|
|
"LAPP_SJA_ME/conf"
|
|
"LAPP_SJA_ME/web/middleware/glog"
|
|
"LAPP_SJA_ME/web/models"
|
|
"time"
|
|
)
|
|
|
|
// 启动打印任务提取服务
|
|
// conf Config.EnvConfig 配置文件
|
|
// c chan Model.PrintTask 任务通道->Scheduler
|
|
func StartFetcher(conf *conf.EnvConfig, c chan models.PrintTask) {
|
|
var (
|
|
prnlist []string
|
|
err error
|
|
)
|
|
printers := models.Printertab{}
|
|
prnlist, err = printers.GetPrinterIdList(conf)
|
|
if err != nil {
|
|
glog.InfoExtln("Fetcher","Fetcher: failed to get printer id list due to ", err)
|
|
return
|
|
}
|
|
|
|
// 启动Goroutine不间断读取打印任务
|
|
go func(){
|
|
var(
|
|
taskList []models.PrintTask
|
|
stalist []string
|
|
err error
|
|
)
|
|
// 首先加载pending 未打印的任务
|
|
stalist =[]string{"P"}
|
|
task := new(models.PrintTask)
|
|
taskList, err = task.GetPrintTaskList(stalist, prnlist,conf)
|
|
if err != nil {
|
|
glog.InfoExtln("Fetcher","Failed to read the task due to : ", err)
|
|
}
|
|
for _, t := range taskList {
|
|
c <- t
|
|
}
|
|
|
|
// 循环加载新建的打印任务
|
|
stalist =[]string{"N", "R"}
|
|
for {
|
|
taskList, err := task.GetPrintTaskList(stalist, prnlist,conf)
|
|
if err != nil {
|
|
glog.InfoExtln("Fetcher","Failed to read the task due to : ", err)
|
|
}
|
|
for _, t := range taskList {
|
|
c <- t
|
|
task.ChangePrintTaskStatus(t, "P") // 将任务状态置为处理中
|
|
}
|
|
time.Sleep(time.Duration(conf.ReadTaskInterval) * time.Second)
|
|
}
|
|
}()
|
|
}
|