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

package task
import (
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"
)
/*************************************
*功能:异步打印生成打印规则(包装单打印方法生成)
**************************************/
//仓库
var packChan = make(chan model.PackOrder, 100) //定义一个调度任务通道
var printNum = 50
func CreatePackPrintTaskTick() {
tick := time.Tick(1 * time.Second)
for {
select {
case <-tick:
CreatePackPrintTask()
}
}
}
/****查询要打印的任务**********/
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里读取数据
for {
select {
case <-ctx.Done():
return
case task, ok := <-packChan:
if !ok {
return //停机退出
}
var serviceOfPackOrder = svr.NewPackOrderService()
err := serviceOfPackOrder.CreatePackOrderPrintInfo(task)
if err != nil {
glog.InfoExtln("serviceOfPackOrder", "err:", err)
continue
}
}
}
}
//仓库
var recChan = make(chan qmmodel.ReclinerReclst, 100) //定义一个调度任务通道
func CreateRecPrintTaskTick() {
tick := time.Tick(1 * time.Second)
for {
select {
case <-tick:
CreateRecPrintTask()
}
}
}
/****查询要打印的任务**********/
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)
continue
}
}
}
}