From 8158d37a1cbd0cfd40403c6e0e490799acdc9702 Mon Sep 17 00:00:00 2001 From: louwenzhi Date: Mon, 21 Feb 2022 16:11:48 +0800 Subject: [PATCH] =?UTF-8?q?=E8=A7=A3=E5=86=B3=E4=BA=86=E5=B9=B6=E5=8F=91?= =?UTF-8?q?=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- main.go | 10 ++- task/printer.go | 159 +++++++++++++++++++++++++++--------------------- 2 files changed, 97 insertions(+), 72 deletions(-) diff --git a/main.go b/main.go index a4cd1fe..35d4c45 100644 --- a/main.go +++ b/main.go @@ -14,6 +14,8 @@ import ( "github.com/kataras/iris/v12" "log" "os" + "net/http" + _ "net/http/pprof" "path/filepath" "time" ) @@ -133,10 +135,12 @@ func imain() { go task.CreateTask() //开启生成打印包装消息 - go task.CreatePackPrintTask() + go task.CreatePackPrintTaskTick() //返修打印 - go task.CreateRecPrintTask() - + go task.CreateRecPrintTaskTick() + go func() { + http.ListenAndServe("0.0.0.0:8899", nil) + }() //启动监听端口 app.Run(iris.Addr(":8093"), iris.WithConfiguration(conf.C)) //app.Run(iris.Addr(":8097"), iris.WithConfiguration(conf.C)) diff --git a/task/printer.go b/task/printer.go index 8eec0de..f8425e9 100644 --- a/task/printer.go +++ b/task/printer.go @@ -1,10 +1,10 @@ package task import ( - svr "LAPP_GAAS_GFrame_BACKEND/services/log" - qmsvr "LAPP_GAAS_GFrame_BACKEND/services/qm" model "LAPP_GAAS_GFrame_BACKEND/models/log" qmmodel "LAPP_GAAS_GFrame_BACKEND/models/qm" + svr "LAPP_GAAS_GFrame_BACKEND/services/log" + qmsvr "LAPP_GAAS_GFrame_BACKEND/services/qm" "LAPP_GAAS_GFrame_BACKEND/web/middleware/glog" "context" "time" @@ -19,40 +19,52 @@ var packChan = make(chan model.PackOrder, 100) //定义一个调度任务通道 var printNum = 50 -/****查询要打印的任务**********/ -func CreatePackPrintTask() { +func CreatePackPrintTaskTick() { + tick := time.Tick(1 * time.Second) 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 + select { + case <-tick: + CreatePackPrintTask() } - time.Sleep(1 * time.Second) } } +/****查询要打印的任务**********/ +func CreatePackPrintTask() { + + //创建继承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 + } + if len(data) == 0 { + return + } + //锁定 + for _, v := range data { + packList = append(packList, v.PackOrderId) + } + err = serviceOfPackOrder.UpdateUnPrint(packList) + if err != nil { + return + } + //第二步,把所有的服务调度放到channel + for _, v := range data { + packChan <- v + } + +} + /********打印逻辑************/ func doTaskPrintPack(ctx context.Context) { //第三步,启动协程,从channel里读取数据 @@ -67,72 +79,81 @@ func doTaskPrintPack(ctx context.Context) { } var serviceOfPackOrder = svr.NewPackOrderService() err := serviceOfPackOrder.CreatePackOrderPrintInfo(task) - if err !=nil{ + if err != nil { + glog.InfoExtln("serviceOfPackOrder", "err:", err) continue } } } } - //仓库 var recChan = make(chan qmmodel.ReclinerReclst, 100) //定义一个调度任务通道 -/****查询要打印的任务**********/ -func CreateRecPrintTask() { +func CreateRecPrintTaskTick() { + tick := time.Tick(1 * time.Second) for { - //创建继承Baxkground的子节点Context - ctx, cancel := context.WithCancel(context.Background()) - defer cancel() - go doTaskPrintRec(ctx) - - data := make([]qmmodel.ReclinerReclst, 0) - recList := make([]int, 0) - //第一步,查询要打印的数据 - var serviceOfRec = qmsvr.NewReclinerReclstService() - - data, err := serviceOfRec.SelectUnPrint(printNum) - glog.InfoExtln("返修错误","data:",len(data)) - if err != nil { - glog.InfoExtln("返修错误","err:",err) - return - } - //锁定 - for _, v := range data { - recList = append(recList, v.RecNr) - } - err = serviceOfRec.UpdateUnPrint(recList) - if err != nil { - glog.InfoExtln("返修错误","err:",err) - time.Sleep(1 * time.Second) - continue - } - //第二步,把所有的服务调度放到channel - for _, v := range data { - recChan <- v + select { + case <-tick: + CreateRecPrintTask() } - time.Sleep(1 * time.Second) } } +/****查询要打印的任务**********/ +func CreateRecPrintTask() { + + //创建继承Baxkground的子节点Context + ctx, cancel := context.WithCancel(context.Background()) + defer cancel() + go doTaskPrintRec(ctx) + + data := make([]qmmodel.ReclinerReclst, 0) + recList := make([]int, 0) + //第一步,查询要打印的数据 + var serviceOfRec = qmsvr.NewReclinerReclstService() + data, err := serviceOfRec.SelectUnPrint(printNum) + if err != nil { + glog.InfoExtln("返修错误", "err:", err) + return + } + if len(data) == 0 { + return + } + //锁定 + for _, v := range data { + recList = append(recList, v.RecNr) + } + err = serviceOfRec.UpdateUnPrint(recList) + if err != nil { + glog.InfoExtln("返修错误", "err:", err) + return + } + //第二步,把所有的服务调度放到channel + for _, v := range data { + recChan <- v + } + +} + /********打印逻辑************/ func doTaskPrintRec(ctx context.Context) { + //第三步,启动协程,从channel里读取数据 for { select { case <-ctx.Done(): return case task, ok := <-recChan: - if !ok { return //停机退出 } var serviceOfRec = qmsvr.NewReclinerReclstService() err := serviceOfRec.CreateRecPrintInfo(task) - if err !=nil{ - glog.InfoExtln("返修错误","返修错误打印err:",err) + if err != nil { + glog.InfoExtln("返修错误", "返修错误打印err:", err) continue } } } -} \ No newline at end of file +}