From efb92d737774650854cb79b37677b0ac4924f37d Mon Sep 17 00:00:00 2001
From: zhangzengfei <zhangzengfei@smartai.com>
Date: 星期二, 15 八月 2023 18:10:05 +0800
Subject: [PATCH] 修复channel的初始化

---
 report/send.go |   63 +++++++++++++++++++++++++++++--
 1 files changed, 58 insertions(+), 5 deletions(-)

diff --git a/report/send.go b/report/send.go
index 770f53c..f495445 100644
--- a/report/send.go
+++ b/report/send.go
@@ -129,7 +129,10 @@
 			logger.Warn("搴撳瓨鏁版嵁涓婃姤澶辫触")
 
 			//涓婃姤澶辫触, 缂撳瓨娓呯┖
-			invReportedCache = make(map[string]float64, 0)
+			for _, v := range list[i:end] {
+				key := v.FNumber + v.FBatchNo + v.FStockNo
+				delete(invReportedCache, key)
+			}
 		} else {
 			successCnt = end
 		}
@@ -138,11 +141,14 @@
 	logger.Debug("宸蹭笂鎶�%d鏉″簱瀛樻暟鎹�", successCnt)
 }
 
+// bom鏁版嵁鍒哹om鍜宐omChild涓や釜琛�
 func SendBom(fData bool) {
 	// 涓婃姤bom
 	bomList := kingdee.BomList(fData)
+	logger.Debug("鏌ヨ鍒�%d鏉OM鏁版嵁", len(bomList))
+
 	// 杩囨护鏁版嵁, 鍒ゆ柇鏄惁宸茬粡涓婃姤杩�, 璇锋眰鍏ㄩ噺鏁版嵁涓嶈繃婊�, 鐩存帴涓婃姤
-	if fData {
+	if !fData {
 		for i := 0; i < len(bomList); {
 			cacheKey := bomList[i].FBOMNumber + bomList[i].FAudDate
 			if _, ok := bomReportedCache[cacheKey]; ok {
@@ -154,8 +160,9 @@
 		}
 	}
 
+	// 鍒嗙粍涓婁紶bom鏁版嵁
 	if len(bomList) == 0 {
-		logger.Debug("娌℃湁瑕佹洿鏂扮殑Bom鏁版嵁.")
+		logger.Debug("娌℃湁瑕佹洿鏂扮殑BOM鏁版嵁.")
 	} else {
 		// 姣忔鍙� 1000 鏉�
 		successCnt := 0
@@ -167,19 +174,65 @@
 
 			b, _ := json.Marshal(bomList[i:end])
 
-			// TCP鍗忚涓婃姤
 			ok := nsqclient.Produce(config.Options.BomTopic, b)
 			if !ok {
 				logger.Warn("BOM鏁版嵁涓婃姤澶辫触")
 
 				//涓婃姤澶辫触, 缂撳瓨娓呯┖
-				bomReportedCache = make(map[string]struct{}, 0)
+				for _, v := range bomList[i:end] {
+					key := v.FBOMNumber + v.FAudDate
+					delete(bomReportedCache, key)
+				}
 			} else {
 				successCnt = end
 			}
 		}
+
 		logger.Debug("宸蹭笂鎶�%d鏉OM鏁版嵁", successCnt)
 	}
 
 	// 涓婃姤bom瀛愰」
+	var bomChildList []kingdee.ICBomChild
+
+	// 濡傛灉璇锋眰鍏ㄩ噺鏁版嵁, 鐩存帴鏌ヨ鎵�鏈夌殑鏁版嵁骞跺彂閫�. 澧為噺涓婃姤, 鍏堝垽鏂璪om鏄惁鏈夋洿鏂�,鐒跺悗鎸塨om缂栫爜鏌ヨ瀛愰」
+	if fData {
+		bomChildList = kingdee.BomChild(nil)
+	} else {
+		if len(bomList) <= 0 {
+			return
+		}
+
+		var bomIds []string
+		for _, v := range bomList {
+			bomIds = append(bomIds, v.FBOMNumber)
+		}
+
+		bomChildList = kingdee.BomChild(bomIds)
+	}
+
+	logger.Debug("鏌ヨ鍒�%d鏉OM瀛愰」鏁版嵁", len(bomList))
+
+	if len(bomChildList) == 0 {
+		logger.Debug("娌℃湁瑕佹洿鏂扮殑BOM瀛愰」鏁版嵁.")
+		return
+	}
+
+	// 姣忔鍙� 1000 鏉�
+	successCnt := 0
+	for i := 0; i < len(bomChildList); i += 1000 {
+		end := i + 1000
+		if end > len(bomChildList) {
+			end = len(bomChildList)
+		}
+
+		b, _ := json.Marshal(bomChildList[i:end])
+
+		ok := nsqclient.Produce(config.Options.BomChildTopic, b)
+		if !ok {
+			logger.Warn("BOM鏁版嵁涓婃姤澶辫触")
+		} else {
+			successCnt = end
+		}
+	}
+	logger.Debug("宸蹭笂鎶�%d鏉OM瀛愰」鏁版嵁", successCnt)
 }

--
Gitblit v1.8.0