From d9bc2c9e991b2fe925565dfd7d0ec667b64bb52f Mon Sep 17 00:00:00 2001
From: zhangzengfei <zhangzengfei@smartai.com>
Date: 星期四, 17 八月 2023 16:01:02 +0800
Subject: [PATCH] 完成bom上报
---
report/send.go | 51 +++++++++++++++++++++++++++++++++++++++------------
1 files changed, 39 insertions(+), 12 deletions(-)
diff --git a/report/send.go b/report/send.go
index 10818a0..aadd06b 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,50 +141,74 @@
logger.Debug("宸蹭笂鎶�%d鏉″簱瀛樻暟鎹�", successCnt)
}
+// bom鏁版嵁鍒哹om鍜宐omChild涓や釜琛�
func SendBom(fData bool) {
+ var bomList []kingdee.ICBom
+ var bomChildList []kingdee.ICBomChild
+
// 涓婃姤bom
- bomList := kingdee.BomList(fData)
- logger.Debug("鏌ヨ鍒�%d鏉om鏁版嵁", len(bomList))
+ bomList = kingdee.BomList(fData)
+ logger.Debug("鏌ヨ鍒�%d鏉OM鏁版嵁", len(bomList))
// 杩囨护鏁版嵁, 鍒ゆ柇鏄惁宸茬粡涓婃姤杩�, 璇锋眰鍏ㄩ噺鏁版嵁涓嶈繃婊�, 鐩存帴涓婃姤
- if fData {
+ if !fData {
+ var bomNumbers []string
for i := 0; i < len(bomList); {
cacheKey := bomList[i].FBOMNumber + bomList[i].FAudDate
if _, ok := bomReportedCache[cacheKey]; ok {
bomList = append(bomList[:i], bomList[i+1:]...)
} else {
bomReportedCache[cacheKey] = struct{}{}
+ bomNumbers = append(bomNumbers, bomList[i].FBOMNumber)
i++
}
}
+ if len(bomNumbers) > 0 {
+ bomChildList = kingdee.BomChild(bomNumbers)
+ }
+ } else {
+ bomChildList = kingdee.BomChild(nil)
}
+ // 鍒嗙粍涓婁紶bom鏁版嵁
if len(bomList) == 0 {
- logger.Debug("娌℃湁瑕佹洿鏂扮殑Bom鏁版嵁.")
+ logger.Debug("娌℃湁瑕佹洿鏂扮殑BOM鏁版嵁.")
} else {
- // 姣忔鍙� 1000 鏉�
+ // 灏哹om缁勪欢鎸塨omId鏁寸悊
+ var bomChildMap = make(map[int][]kingdee.ICBomChild, 0)
+ for idx, bomChild := range bomChildList {
+ bomChildMap[bomChild.FInterID] = append(bomChildMap[bomChild.FInterID], bomChildList[idx])
+ }
+
+ // 缁檅om娣诲姞缁勪欢
+ for idx, bom := range bomList {
+ bomList[idx].Component = bomChildMap[bom.FInterID]
+ }
+
+ // 姣忔鍙� 200 鏉�
successCnt := 0
- for i := 0; i < len(bomList); i += 1000 {
- end := i + 1000
+ for i := 0; i < len(bomList); i += 200 {
+ end := i + 200
if end > len(bomList) {
end = len(bomList)
}
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瀛愰」
}
--
Gitblit v1.8.0