From 1a6fa89e9ffc8ade73afbeda3e6c791bad1d4cd9 Mon Sep 17 00:00:00 2001 From: zhangzengfei <zhangzengfei@smartai.com> Date: 星期二, 15 八月 2023 17:30:57 +0800 Subject: [PATCH] 添加bom子项的上报 --- report/task.go | 142 +++++++++++------------------------------------ 1 files changed, 33 insertions(+), 109 deletions(-) diff --git a/report/task.go b/report/task.go index 96380e2..f0011d1 100644 --- a/report/task.go +++ b/report/task.go @@ -1,127 +1,51 @@ package report import ( - "encoding/json" - "io/ioutil" - "kingdee-dbapi/logger" + "context" + "time" - "kingdee-dbapi/cache" "kingdee-dbapi/config" - "kingdee-dbapi/kingdee" - "kingdee-dbapi/models" - "kingdee-dbapi/nsqclient" + "kingdee-dbapi/logger" ) -const orderLocalStore = "order.tmp" -const inventoryLocalStore = "inventory.tmp" +var ctx context.Context +var cancel context.CancelFunc -func SendOrder() { - var list []kingdee.SEOrder - - if config.Options.Debug { - data, err := ioutil.ReadFile(orderLocalStore) - if err != nil { - logger.Error("鏂囦欢璇诲彇澶辫触, %s", err.Error()) - return - } - err = json.Unmarshal(data, &list) - if err != nil { - logger.Error("鏂囦欢鍐呭瑙f瀽澶辫触, %s", err.Error()) - return - } - } else { - list = kingdee.SeOrderList() - logger.Debug("鏌ヨ鍒�%d鏉¤鍗曚俊鎭�", len(list)) - } - - var completedOrderNo = make(map[string]struct{}) - - for i := 0; i < len(list); { - if cache.Exists(list[i].FBillNo) { - list = append(list[:i], list[i+1:]...) - } else { - completedOrderNo[list[i].FBillNo] = struct{}{} - i++ - } - } - - b, _ := json.Marshal(list) - - if !config.Options.Debug { - ioutil.WriteFile(orderLocalStore, b, 0644) - } - - // http鍗忚涓婃姤, 宸蹭慨鏀逛负TCP - //ok := nsqclient.HttpPost(config.Options.OrderTopic, b) - - if len(list) == 0 { - logger.Debug("娌℃湁鏂扮殑璁㈠崟闇�瑕佷笂鎶�") - return - } - - // TCP鍗忚涓婃姤 - ok := nsqclient.Produce(config.Options.OrderTopic, b) - if ok { - // 鍐欏叆鏁版嵁搴�, 鏍囪宸茬粡涓婃姤杩囦簡,閬垮厤閲嶅涓婃姤 - for orderNo, _ := range completedOrderNo { - cursor := models.Order{ - OrderNo: orderNo, - } - - cursor.Insert() - cache.WriteCache(orderNo) - } - - logger.Debug("宸蹭笂鎶�%d涓鍗曚俊鎭�", len(list)) - } else { - logger.Warn("璁㈠崟鏁版嵁涓婃姤澶辫触") - } +func Start() { + ctx, cancel = context.WithCancel(context.Background()) + go queryTasks(ctx) } -func SendInventory() { - var list []kingdee.Inventory +func RestartReport() { + cancel() - if config.Options.Debug { - data, err := ioutil.ReadFile(inventoryLocalStore) - if err != nil { - logger.Error("鏂囦欢璇诲彇澶辫触, %s", err.Error()) + Start() +} + +func queryTasks(c context.Context) { + logger.Debug("鍚姩鏁版嵁涓婃姤浠诲姟") + for { + select { + case <-c.Done(): + logger.Debug("鍋滄涓婃姤") return - } + default: + // 涓婃姤璁㈠崟 + if config.Options.OrderTopic != "" { + SendOrder() + } - err = json.Unmarshal(data, &list) - if err != nil { - logger.Error("鏂囦欢鍐呭瑙f瀽澶辫触, %s", err.Error()) - return - } - } else { - list = kingdee.ICInventory() - logger.Debug("鏌ヨ鍒�%d鏉″簱瀛樻暟鎹�", len(list)) - } + // 涓婃姤鍗虫椂搴撳瓨 + if config.Options.InventoryTopic != "" { + SendInventory() + } - // 姣忔鍙� 100 鏉� - successCnt := 0 - for i := 0; i < len(list); i += 1000 { - end := i + 1000 - if end > len(list) { - end = len(list) - } + // 涓婃姤bom + if config.Options.BomTopic != "" { + SendBom(true) + } - b, _ := json.Marshal(list[i:end]) - - if !config.Options.Debug { - ioutil.WriteFile(inventoryLocalStore, b, 0644) - } - - // HTTP鍗忚涓婃姤,宸蹭慨鏀逛负TCP - //nsqclient.HttpPost(config.Options.InventoryTopic, b) - - // TCP鍗忚涓婃姤 - ok := nsqclient.Produce(config.Options.InventoryTopic, b) - if !ok { - logger.Warn("搴撳瓨鏁版嵁涓婃姤澶辫触") - } else { - successCnt += end + time.Sleep(time.Duration(config.Options.SyncInterval) * time.Second) } } - logger.Debug("宸蹭笂鎶�%d鏉″簱瀛樻暟鎹�", successCnt) } -- Gitblit v1.8.0