- avoid memory overflow 4 func TransferLegacyJdOrder and TransferLegacyElmOrder
This commit is contained in:
@@ -1,6 +1,7 @@
|
||||
package initdata
|
||||
|
||||
import (
|
||||
"math"
|
||||
"time"
|
||||
|
||||
"git.rosy.net.cn/baseapi/platformapi/jdapi"
|
||||
@@ -16,19 +17,22 @@ import (
|
||||
)
|
||||
|
||||
func TransferLegacyJdOrder(ctx *jxcontext.Context, isAsync, isContinueWhenError bool) (hint string, err error) {
|
||||
sqlBatchCount := 1000
|
||||
rootTask := tasksch.NewSeqTask("TransferLegacyJdOrder", ctx.GetUserName(), func(rootTask *tasksch.SeqTask, step int, params ...interface{}) (result interface{}, err error) {
|
||||
sql := `
|
||||
SELECT t1.*
|
||||
FROM jdorder t1
|
||||
LEFT JOIN goods_order t2 ON t2.vendor_order_id = t1.vendor_order_id
|
||||
LEFT JOIN goods_order_original t2 ON t2.vendor_order_id = t1.vendor_order_id
|
||||
WHERE t2.id IS NULL
|
||||
LIMIT ?
|
||||
`
|
||||
db := dao.GetDB()
|
||||
var jdOrderList []*legacymodel2.Jdorder
|
||||
if err = dao.GetRows(db, &jdOrderList, sql); err != nil {
|
||||
return "", err
|
||||
if err = dao.GetRows(db, &jdOrderList, sql, sqlBatchCount); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
task := tasksch.NewParallelTask("TransferLegacyJdOrder", tasksch.NewParallelConfig().SetIsContinueWhenError(isContinueWhenError).SetBatchSize(40), ctx.GetUserName(), func(task *tasksch.ParallelTask, batchItemList []interface{}, params ...interface{}) (retVal interface{}, err error) {
|
||||
if len(jdOrderList) > 0 {
|
||||
task := tasksch.NewParallelTask("TransferLegacyJdOrder2", tasksch.NewParallelConfig().SetIsContinueWhenError(isContinueWhenError).SetBatchSize(40), ctx.GetUserName(), func(task *tasksch.ParallelTask, batchItemList []interface{}, params ...interface{}) (retVal interface{}, err error) {
|
||||
var orderDetailList []*model.GoodsOrderOriginal
|
||||
for _, v := range batchItemList {
|
||||
jdOrder := v.(*legacymodel2.Jdorder)
|
||||
@@ -57,30 +61,39 @@ func TransferLegacyJdOrder(ctx *jxcontext.Context, isAsync, isContinueWhenError
|
||||
}
|
||||
return nil, err
|
||||
}, jdOrderList)
|
||||
tasksch.ManageTask(task).Run()
|
||||
|
||||
if !isAsync {
|
||||
rootTask.AddChild(task).Run()
|
||||
_, err = task.GetResult(0)
|
||||
} else {
|
||||
hint = task.ID
|
||||
rootTask.Cancel()
|
||||
}
|
||||
return nil, err
|
||||
}, math.MaxInt32)
|
||||
tasksch.ManageTask(rootTask).Run()
|
||||
if !isAsync {
|
||||
_, err = rootTask.GetResult(0)
|
||||
} else {
|
||||
hint = rootTask.ID
|
||||
}
|
||||
return hint, err
|
||||
}
|
||||
|
||||
func TransferLegacyElmOrder(ctx *jxcontext.Context, isAsync, isContinueWhenError bool) (hint string, err error) {
|
||||
sqlBatchCount := 1000
|
||||
rootTask := tasksch.NewSeqTask("TransferLegacyElmOrder", ctx.GetUserName(), func(rootTask *tasksch.SeqTask, step int, params ...interface{}) (result interface{}, err error) {
|
||||
sql := `
|
||||
SELECT t1.*
|
||||
FROM elemeorder t1
|
||||
LEFT JOIN goods_order t2 ON t2.vendor_order_id = t1.orderid
|
||||
LEFT JOIN goods_order_original t2 ON t2.vendor_order_id = t1.orderid
|
||||
WHERE t2.id IS NULL
|
||||
LIMIT ?
|
||||
`
|
||||
db := dao.GetDB()
|
||||
var elmOrderList []*legacymodel2.Elemeorder
|
||||
if err = dao.GetRows(db, &elmOrderList, sql); err != nil {
|
||||
if err = dao.GetRows(db, &elmOrderList, sql, sqlBatchCount); err != nil {
|
||||
return "", err
|
||||
}
|
||||
|
||||
task := tasksch.NewParallelTask("TransferLegacyElmOrder", tasksch.NewParallelConfig().SetIsContinueWhenError(isContinueWhenError).SetBatchSize(40), ctx.GetUserName(), func(task *tasksch.ParallelTask, batchItemList []interface{}, params ...interface{}) (retVal interface{}, err error) {
|
||||
if len(elmOrderList) > 0 {
|
||||
task := tasksch.NewParallelTask("TransferLegacyElmOrder2", tasksch.NewParallelConfig().SetIsContinueWhenError(isContinueWhenError).SetBatchSize(40), ctx.GetUserName(), func(task *tasksch.ParallelTask, batchItemList []interface{}, params ...interface{}) (retVal interface{}, err error) {
|
||||
var orderDetailList []*model.GoodsOrderOriginal
|
||||
for _, v := range batchItemList {
|
||||
elmOrder := v.(*legacymodel2.Elemeorder)
|
||||
@@ -102,12 +115,18 @@ func TransferLegacyElmOrder(ctx *jxcontext.Context, isAsync, isContinueWhenError
|
||||
}
|
||||
return nil, err
|
||||
}, elmOrderList)
|
||||
tasksch.ManageTask(task).Run()
|
||||
|
||||
if !isAsync {
|
||||
rootTask.AddChild(task).Run()
|
||||
_, err = task.GetResult(0)
|
||||
} else {
|
||||
hint = task.ID
|
||||
rootTask.Cancel()
|
||||
}
|
||||
return nil, err
|
||||
}, math.MaxInt32)
|
||||
tasksch.ManageTask(rootTask).Run()
|
||||
if !isAsync {
|
||||
_, err = rootTask.GetResult(0)
|
||||
} else {
|
||||
hint = rootTask.ID
|
||||
}
|
||||
return hint, err
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user