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.

81 lines
2.1 KiB

  1. package Engine
  2. import (
  3. "fmt"
  4. "leit.com/leit_seat_aps/common"
  5. conf "leit.com/leit_seat_aps/config"
  6. "leit.com/leit_seat_aps/db"
  7. "leit.com/leit_seat_aps/glog"
  8. "time"
  9. )
  10. // 启动打印引擎
  11. func RunEngine(conf *conf.EnvConfig) {
  12. // 初始化任务读取和保存通道
  13. var (
  14. inChan = make(chan db.PrintTask, 1000) // 待打印任务管道
  15. printChan = make(chan db.PrintTask, 1000) // 表单串行打印管道
  16. outChan = make(chan db.PrintTask, 1000) // 打印完待保存任务管道
  17. prnDict = make(map[string]*Printer)
  18. p *Printer
  19. err error
  20. )
  21. // 获取打印机列表并启动打印机
  22. if err = GetPrinterDict(conf, prnDict); err != nil {
  23. glog.Infoln("Engine: failed to get the printer dict due to", err)
  24. return
  25. }
  26. // 启动打印任务获取服务
  27. StartFetcher(conf, inChan)
  28. // 启动打印任务调度服务
  29. StartScheduler(inChan, prnDict)
  30. // 启动每台打印机的打印服务
  31. for _, p = range prnDict {
  32. StartPrinter(p, conf, printChan, outChan)
  33. }
  34. // 启动串行打印表单的服务
  35. StartSheetSerialPrintService(prnDict, printChan, outChan)
  36. // 启动打印任务保存服务
  37. StartSaver(conf, outChan)
  38. }
  39. // 获取所有激活的打印机列表
  40. func GetPrinterDict(conf *conf.EnvConfig, prnDict map[string]*Printer) error {
  41. var (
  42. printerList []db.Printertab
  43. p db.Printertab
  44. err error
  45. )
  46. printer := new(db.Printertab)
  47. if printerList, err = printer.GetPrinterList(conf); err != nil {
  48. glog.Infoln("GetPrinterDict: Faile to get the printer list due to: ", err)
  49. return err
  50. }
  51. for _, p = range printerList {
  52. var prn = Printer{}
  53. prn.Create(p)
  54. prnDict[prn.PrinterId] = &prn
  55. }
  56. return nil
  57. }
  58. //删除一个礼拜前的打印消息
  59. func DelPrinterInfo() {
  60. tick := time.Tick(5 * time.Second)
  61. //tick := time.Tick(72 * time.Hour)
  62. fmt.Println("开始执行")
  63. for {
  64. select {
  65. case <-tick:
  66. //执行删除操作
  67. before7day := time.Now().AddDate(0, 0, -7)
  68. fmt.Printf("before7day:%s", before7day)
  69. timestr := common.TimeFormat(before7day, "yyyyMMddHHmmss")
  70. printer := new(db.Printheadtab)
  71. printer.Finr = db.G_FINR
  72. printer.DelBefore7DayRecords(timestr)
  73. }
  74. }
  75. }