From 8a5f5dc40e82bf98e307082726ebe860002e019f Mon Sep 17 00:00:00 2001
From: gigibox <gigibox@163.com>
Date: 星期三, 21 六月 2023 15:45:31 +0800
Subject: [PATCH] 修改库存数据为增量上报

---
 report/tasks.go |   30 ++++++++++++++++++++++++++++++
 1 files changed, 30 insertions(+), 0 deletions(-)

diff --git a/report/tasks.go b/report/tasks.go
index de930dc..7d23605 100644
--- a/report/tasks.go
+++ b/report/tasks.go
@@ -4,6 +4,7 @@
 	"encoding/json"
 	"io/ioutil"
 	"kingdee-dbapi/logger"
+	"time"
 
 	"kingdee-dbapi/cache"
 	"kingdee-dbapi/config"
@@ -78,8 +79,22 @@
 	}
 }
 
+var invReportedCache = make(map[string]float64, 0)
+var fullLoad bool
+
 func SendInventory() {
 	var list []kingdee.Inventory
+
+	// 璁剧疆姣忓ぉ鍑屾櫒1鐐逛笂鎶ヤ竴娆″叏閲忔暟鎹�
+	hour := time.Now().Hour()
+	if hour == 1 {
+		if fullLoad == false {
+			invReportedCache = make(map[string]float64, 0)
+			fullLoad = true
+		}
+	} else {
+		fullLoad = false
+	}
 
 	if config.Options.Debug {
 		data, err := ioutil.ReadFile(inventoryLocalStore)
@@ -95,7 +110,18 @@
 		}
 	} else {
 		list = kingdee.ICInventory()
+
 		logger.Debug("鏌ヨ鍒�%d鏉″簱瀛樻暟鎹�", len(list))
+
+		for i := 0; i < len(list); {
+			cacheKey := list[i].FNumber + list[i].FBatchNo + list[i].FStockNo
+			if qty, ok := invReportedCache[cacheKey]; ok && qty == list[i].FUnitQty {
+				list = append(list[:i], list[i+1:]...)
+			} else {
+				invReportedCache[cacheKey] = list[i].FUnitQty
+				i++
+			}
+		}
 	}
 
 	// 姣忔鍙� 100 鏉�
@@ -119,9 +145,13 @@
 		ok := nsqclient.Produce(config.Options.InventoryTopic, b)
 		if !ok {
 			logger.Warn("搴撳瓨鏁版嵁涓婃姤澶辫触")
+
+			//涓婃姤澶辫触, 缂撳瓨娓呯┖
+			invReportedCache = make(map[string]float64, 0)
 		} else {
 			successCnt = end
 		}
 	}
+
 	logger.Debug("宸蹭笂鎶�%d鏉″簱瀛樻暟鎹�", successCnt)
 }

--
Gitblit v1.8.0