From 1873461012c99801f364bd07fae2c218d245048e Mon Sep 17 00:00:00 2001
From: zhangzengfei <zhangzengfei@smartai.com>
Date: 星期一, 11 九月 2023 19:42:39 +0800
Subject: [PATCH] 修复bom第一启动时的全量上报

---
 report/task.go |   99 +++++++++++++++++++++----------------------------
 1 files changed, 43 insertions(+), 56 deletions(-)

diff --git a/report/task.go b/report/task.go
index 40f0ac4..50c2727 100644
--- a/report/task.go
+++ b/report/task.go
@@ -1,70 +1,57 @@
 package report
 
 import (
-	"encoding/json"
+	"context"
+	"time"
 
-	"kingdee-dbapi/cache"
 	"kingdee-dbapi/config"
-	"kingdee-dbapi/kingdee"
-	"kingdee-dbapi/models"
-	"kingdee-dbapi/nsqclient"
+	"kingdee-dbapi/logger"
 )
 
-func SendOrder() {
-	var completedOrderNo = make(map[string]struct{})
-	list := kingdee.SeOrderList()
+var ctx context.Context
+var cancel context.CancelFunc
 
-	for i := 0; i < len(list); i++ {
-		if cache.Exists(list[i].FBillNo) {
-			list = append(list[:i], list[i+1:]...)
-		} else {
-			completedOrderNo[list[i].FBillNo] = struct{}{}
-		}
-	}
-
-	b, _ := json.Marshal(list)
-
-	ok := nsqclient.HttpPost(config.Options.OrderTopic, b)
-	if ok {
-		// 鍐欏叆鏁版嵁搴�, 鏍囪宸茬粡涓婃姤杩囦簡,閬垮厤閲嶅涓婃姤
-		for orderNo, _ := range completedOrderNo {
-			cursor := models.Order{
-				OrderNo: orderNo,
-			}
-
-			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{}{}
-	//	}
-	//}
+func Start() {
+	ctx, cancel = context.WithCancel(context.Background())
+	go queryTasks(ctx)
 }
 
-func SendInventory() {
-	list := kingdee.ICInventory()
+func RestartReport() {
+	cancel()
 
-	// 姣忔鍙� 300 鏉�
-	for i := 0; i < len(list); i += 300 {
-		end := i + 300
-		if end > len(list) {
-			end = len(list)
+	Start()
+}
+
+func queryTasks(c context.Context) {
+	logger.Debug("鍚姩鏁版嵁涓婃姤浠诲姟")
+	for {
+		select {
+		case <-c.Done():
+			logger.Debug("鍋滄涓婃姤")
+			return
+		default:
+			// 涓婃姤璁㈠崟
+			if config.Options.OrderTopic != "" {
+				SendOrder()
+			}
+
+			// 涓婃姤鍗虫椂搴撳瓨
+			if config.Options.InventoryTopic != "" {
+				SendInventory()
+			}
+
+			// 涓婃姤bom
+			if config.Options.BomTopic != "" {
+				SendBom(false)
+			}
+
+			time.Sleep(time.Duration(config.Options.SyncInterval) * time.Second)
 		}
-
-		b, _ := json.Marshal(list[i:end])
-
-		nsqclient.HttpPost(config.Options.InventoryTopic, b)
 	}
 }
+
+func HandleBomQuery(msg []byte) error {
+	SendBom(true)
+
+	return nil
+}

--
Gitblit v1.8.0