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

  1. package Engine
  2. import (
  3. conf "leit.com/leit_seat_aps/config"
  4. "leit.com/leit_seat_aps/db"
  5. "leit.com/leit_seat_aps/glog"
  6. "time"
  7. )
  8. // 启动打印任务提取服务
  9. // conf Config.EnvConfig 配置文件
  10. // c chan Model.PrintTask 任务通道->Scheduler
  11. func StartFetcher(conf *conf.EnvConfig, c chan db.PrintTask) {
  12. var (
  13. prnlist []string
  14. err error
  15. )
  16. printers := db.Printertab{}
  17. prnlist, err = printers.GetPrinterIdList(conf)
  18. if err != nil {
  19. glog.InfoExtln("Fetcher","Fetcher: failed to get printer id list due to ", err)
  20. return
  21. }
  22. // 启动Goroutine不间断读取打印任务
  23. go func(){
  24. var(
  25. taskList []db.PrintTask
  26. stalist []string
  27. err error
  28. )
  29. // 首先加载pending 未打印的任务
  30. stalist =[]string{"P"}
  31. task := new(db.PrintTask)
  32. taskList, err = task.GetPrintTaskList(stalist, prnlist,conf)
  33. if err != nil {
  34. glog.InfoExtln("Fetcher","Failed to read the task due to : ", err)
  35. }
  36. for _, t := range taskList {
  37. c <- t
  38. }
  39. // 循环加载新建的打印任务
  40. stalist =[]string{"N", "R"}
  41. for {
  42. taskList, err := task.GetPrintTaskList(stalist, prnlist,conf)
  43. if err != nil {
  44. glog.InfoExtln("Fetcher","Failed to read the task due to : ", err)
  45. }
  46. for _, t := range taskList {
  47. c <- t
  48. task.ChangePrintTaskStatus(t, "P") // 将任务状态置为处理中
  49. }
  50. time.Sleep(time.Duration(conf.ReadTaskInterval) * time.Second)
  51. }
  52. }()
  53. }