|
|
- package task
-
- import (
- svr "LAPP_GAAS_GFrame_BACKEND/services/log"
- model "LAPP_GAAS_GFrame_BACKEND/models/log"
- "context"
- "time"
- )
-
- /*************************************
- *功能:异步打印生成打印规则(包装单打印方法生成)
- **************************************/
-
- //仓库
- var packChan = make(chan model.PackOrder, 100) //定义一个调度任务通道
-
- var printNum = 50
-
- /****查询要打印的任务**********/
- func CreatePackPrintTask() {
- for {
- //创建继承Baxkground的子节点Context
- ctx, cancel := context.WithCancel(context.Background())
- defer cancel()
- go doTaskPrintPack(ctx)
-
- data := make([]model.PackOrder, 0)
- packList := make([]string, 0)
- //第一步,查询要打印的数据
- var serviceOfPackOrder = svr.NewPackOrderService()
-
- data, err := serviceOfPackOrder.SelectUnPrint(printNum)
- if err != nil {
- return
- }
- //锁定
- for _, v := range data {
- packList = append(packList, v.PackOrderId)
- }
- err = serviceOfPackOrder.UpdateUnPrint(packList)
- if err != nil {
- time.Sleep(1 * time.Second)
- continue
- }
- //第二步,把所有的服务调度放到channel
- for _, v := range data {
- packChan <- v
- }
- time.Sleep(1 * time.Second)
- }
- }
-
- /********打印逻辑************/
- func doTaskPrintPack(ctx context.Context) {
- //第三步,启动协程,从channel里读取数据
- for {
- select {
- case <-ctx.Done():
- return
- case task, ok := <-packChan:
-
- if !ok {
- return //停机退出
- }
- var serviceOfPackOrder = svr.NewPackOrderService()
- err := serviceOfPackOrder.CreatePackOrderPrintInfo(task)
- if err !=nil{
- return
- }
- }
- }
- }
|