GAAS GFrame项目web后台
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.

159 lines
3.4 KiB

  1. package task
  2. import (
  3. model "LAPP_GAAS_GFrame_BACKEND/models/log"
  4. qmmodel "LAPP_GAAS_GFrame_BACKEND/models/qm"
  5. svr "LAPP_GAAS_GFrame_BACKEND/services/log"
  6. qmsvr "LAPP_GAAS_GFrame_BACKEND/services/qm"
  7. "LAPP_GAAS_GFrame_BACKEND/web/middleware/glog"
  8. "context"
  9. "time"
  10. )
  11. /*************************************
  12. *功能:异步打印生成打印规则(包装单打印方法生成)
  13. **************************************/
  14. //仓库
  15. var packChan = make(chan model.PackOrder, 100) //定义一个调度任务通道
  16. var printNum = 50
  17. func CreatePackPrintTaskTick() {
  18. tick := time.Tick(1 * time.Second)
  19. for {
  20. select {
  21. case <-tick:
  22. CreatePackPrintTask()
  23. }
  24. }
  25. }
  26. /****查询要打印的任务**********/
  27. func CreatePackPrintTask() {
  28. //创建继承Baxkground的子节点Context
  29. ctx, cancel := context.WithCancel(context.Background())
  30. defer cancel()
  31. go doTaskPrintPack(ctx)
  32. data := make([]model.PackOrder, 0)
  33. packList := make([]string, 0)
  34. //第一步,查询要打印的数据
  35. var serviceOfPackOrder = svr.NewPackOrderService()
  36. data, err := serviceOfPackOrder.SelectUnPrint(printNum)
  37. if err != nil {
  38. return
  39. }
  40. if len(data) == 0 {
  41. return
  42. }
  43. //锁定
  44. for _, v := range data {
  45. packList = append(packList, v.PackOrderId)
  46. }
  47. err = serviceOfPackOrder.UpdateUnPrint(packList)
  48. if err != nil {
  49. return
  50. }
  51. //第二步,把所有的服务调度放到channel
  52. for _, v := range data {
  53. packChan <- v
  54. }
  55. }
  56. /********打印逻辑************/
  57. func doTaskPrintPack(ctx context.Context) {
  58. //第三步,启动协程,从channel里读取数据
  59. for {
  60. select {
  61. case <-ctx.Done():
  62. return
  63. case task, ok := <-packChan:
  64. if !ok {
  65. return //停机退出
  66. }
  67. var serviceOfPackOrder = svr.NewPackOrderService()
  68. err := serviceOfPackOrder.CreatePackOrderPrintInfo(task)
  69. if err != nil {
  70. glog.InfoExtln("serviceOfPackOrder", "err:", err)
  71. continue
  72. }
  73. }
  74. }
  75. }
  76. //仓库
  77. var recChan = make(chan qmmodel.ReclinerReclst, 100) //定义一个调度任务通道
  78. func CreateRecPrintTaskTick() {
  79. tick := time.Tick(1 * time.Second)
  80. for {
  81. select {
  82. case <-tick:
  83. CreateRecPrintTask()
  84. }
  85. }
  86. }
  87. /****查询要打印的任务**********/
  88. func CreateRecPrintTask() {
  89. //创建继承Baxkground的子节点Context
  90. ctx, cancel := context.WithCancel(context.Background())
  91. defer cancel()
  92. go doTaskPrintRec(ctx)
  93. data := make([]qmmodel.ReclinerReclst, 0)
  94. recList := make([]int, 0)
  95. //第一步,查询要打印的数据
  96. var serviceOfRec = qmsvr.NewReclinerReclstService()
  97. data, err := serviceOfRec.SelectUnPrint(printNum)
  98. if err != nil {
  99. glog.InfoExtln("返修错误", "err:", err)
  100. return
  101. }
  102. if len(data) == 0 {
  103. return
  104. }
  105. //锁定
  106. for _, v := range data {
  107. recList = append(recList, v.RecNr)
  108. }
  109. err = serviceOfRec.UpdateUnPrint(recList)
  110. if err != nil {
  111. glog.InfoExtln("返修错误", "err:", err)
  112. return
  113. }
  114. //第二步,把所有的服务调度放到channel
  115. for _, v := range data {
  116. recChan <- v
  117. }
  118. }
  119. /********打印逻辑************/
  120. func doTaskPrintRec(ctx context.Context) {
  121. //第三步,启动协程,从channel里读取数据
  122. for {
  123. select {
  124. case <-ctx.Done():
  125. return
  126. case task, ok := <-recChan:
  127. if !ok {
  128. return //停机退出
  129. }
  130. var serviceOfRec = qmsvr.NewReclinerReclstService()
  131. err := serviceOfRec.CreateRecPrintInfo(task)
  132. if err != nil {
  133. glog.InfoExtln("返修错误", "返修错误打印err:", err)
  134. continue
  135. }
  136. }
  137. }
  138. }