From 1873461012c99801f364bd07fae2c218d245048e Mon Sep 17 00:00:00 2001 From: zhangzengfei <zhangzengfei@smartai.com> Date: 星期一, 11 九月 2023 19:42:39 +0800 Subject: [PATCH] 修复bom第一启动时的全量上报 --- report/task.go | 99 +++++++++++++++++++++---------------------------- 1 files changed, 43 insertions(+), 56 deletions(-) diff --git a/report/task.go b/report/task.go index 40f0ac4..50c2727 100644 --- a/report/task.go +++ b/report/task.go @@ -1,70 +1,57 @@ package report import ( - "encoding/json" + "context" + "time" - "kingdee-dbapi/cache" "kingdee-dbapi/config" - "kingdee-dbapi/kingdee" - "kingdee-dbapi/models" - "kingdee-dbapi/nsqclient" + "kingdee-dbapi/logger" ) -func SendOrder() { - var completedOrderNo = make(map[string]struct{}) - list := kingdee.SeOrderList() +var ctx context.Context +var cancel context.CancelFunc - for i := 0; i < len(list); i++ { - if cache.Exists(list[i].FBillNo) { - list = append(list[:i], list[i+1:]...) - } else { - completedOrderNo[list[i].FBillNo] = struct{}{} - } - } - - b, _ := json.Marshal(list) - - ok := nsqclient.HttpPost(config.Options.OrderTopic, b) - if ok { - // 鍐欏叆鏁版嵁搴�, 鏍囪宸茬粡涓婃姤杩囦簡,閬垮厤閲嶅涓婃姤 - for orderNo, _ := range completedOrderNo { - cursor := models.Order{ - OrderNo: orderNo, - } - - cursor.Insert() - cache.WriteCache(orderNo) - } - } - - // 閫愭潯鍙戦�� - //for idx, _ := range list { - // // 宸茬粡鎺ㄩ�佽繃鐨勮鍗� - // if cache.Exists(list[idx].FBillNo) { - // continue - // } - // - // b, _ := json.Marshal(list[idx]) - // - // ok := nsqclient.HttpPost(config.Options.OrderTopic, b) - // if ok { - // completedOrderNo[list[idx].FBillNo] = struct{}{} - // } - //} +func Start() { + ctx, cancel = context.WithCancel(context.Background()) + go queryTasks(ctx) } -func SendInventory() { - list := kingdee.ICInventory() +func RestartReport() { + cancel() - // 姣忔鍙� 300 鏉� - for i := 0; i < len(list); i += 300 { - end := i + 300 - if end > len(list) { - end = len(list) + Start() +} + +func queryTasks(c context.Context) { + logger.Debug("鍚姩鏁版嵁涓婃姤浠诲姟") + for { + select { + case <-c.Done(): + logger.Debug("鍋滄涓婃姤") + return + default: + // 涓婃姤璁㈠崟 + if config.Options.OrderTopic != "" { + SendOrder() + } + + // 涓婃姤鍗虫椂搴撳瓨 + if config.Options.InventoryTopic != "" { + SendInventory() + } + + // 涓婃姤bom + if config.Options.BomTopic != "" { + SendBom(false) + } + + time.Sleep(time.Duration(config.Options.SyncInterval) * time.Second) } - - b, _ := json.Marshal(list[i:end]) - - nsqclient.HttpPost(config.Options.InventoryTopic, b) } } + +func HandleBomQuery(msg []byte) error { + SendBom(true) + + return nil +} -- Gitblit v1.8.0