From 942f3416b333304bde50f0dca5581595f397eafa Mon Sep 17 00:00:00 2001 From: gigibox <gigibox@163.com> Date: 星期一, 19 六月 2023 16:27:26 +0800 Subject: [PATCH] 完善功能,添加日志,添加nsq tcp上报 --- report/task.go | 107 +++++++++++++++++++++++++++++++++++++++++------------ 1 files changed, 82 insertions(+), 25 deletions(-) diff --git a/report/task.go b/report/task.go index 40f0ac4..96380e2 100644 --- a/report/task.go +++ b/report/task.go @@ -2,6 +2,8 @@ import ( "encoding/json" + "io/ioutil" + "kingdee-dbapi/logger" "kingdee-dbapi/cache" "kingdee-dbapi/config" @@ -10,21 +12,55 @@ "kingdee-dbapi/nsqclient" ) -func SendOrder() { - var completedOrderNo = make(map[string]struct{}) - list := kingdee.SeOrderList() +const orderLocalStore = "order.tmp" +const inventoryLocalStore = "inventory.tmp" - for i := 0; i < len(list); i++ { +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) - ok := nsqclient.HttpPost(config.Options.OrderTopic, b) + 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 { @@ -35,36 +71,57 @@ 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{}{} - // } - //} + logger.Debug("宸蹭笂鎶�%d涓鍗曚俊鎭�", len(list)) + } else { + logger.Warn("璁㈠崟鏁版嵁涓婃姤澶辫触") + } } func SendInventory() { - list := kingdee.ICInventory() + var list []kingdee.Inventory - // 姣忔鍙� 300 鏉� - for i := 0; i < len(list); i += 300 { - end := i + 300 + if config.Options.Debug { + data, err := ioutil.ReadFile(inventoryLocalStore) + 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.ICInventory() + logger.Debug("鏌ヨ鍒�%d鏉″簱瀛樻暟鎹�", len(list)) + } + + // 姣忔鍙� 100 鏉� + successCnt := 0 + for i := 0; i < len(list); i += 1000 { + end := i + 1000 if end > len(list) { end = len(list) } b, _ := json.Marshal(list[i:end]) - nsqclient.HttpPost(config.Options.InventoryTopic, b) + 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 + } } + logger.Debug("宸蹭笂鎶�%d鏉″簱瀛樻暟鎹�", successCnt) } -- Gitblit v1.8.0