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"
|
|
"LAPP_GAAS_GFrame_BACKEND/web/middleware/glog"
|
|
"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{
|
|
continue
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
//仓库
|
|
var recChan = make(chan qmmodel.ReclinerReclst, 100) //定义一个调度任务通道
|
|
|
|
/****查询要打印的任务**********/
|
|
func CreateRecPrintTask() {
|
|
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
|
|
}
|
|
time.Sleep(1 * time.Second)
|
|
}
|
|
}
|
|
|
|
/********打印逻辑************/
|
|
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
|
|
}
|
|
}
|
|
}
|
|
}
|