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