SJA APS后端代码
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

57 lines
1.4 KiB

package Engine
import (
conf "leit.com/leit_seat_aps/config"
"leit.com/leit_seat_aps/db"
"leit.com/leit_seat_aps/glog"
"time"
)
// 启动打印任务提取服务
// conf Config.EnvConfig 配置文件
// c chan Model.PrintTask 任务通道->Scheduler
func StartFetcher(conf *conf.EnvConfig, c chan db.PrintTask) {
var (
prnlist []string
err error
)
printers := db.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 []db.PrintTask
stalist []string
err error
)
// 首先加载pending 未打印的任务
stalist =[]string{"P"}
task := new(db.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)
}
}()
}