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/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