From e7f8c6013d777dd5ba10b8d548d2d3db6158d37a Mon Sep 17 00:00:00 2001
From: Administrator <admin@example.com>
Date: 星期四, 08 九月 2022 17:04:27 +0800
Subject: [PATCH] '完善'

---
 l2_data_manager.py |   51 ++++++++++++++++++++++++++++++---------------------
 1 files changed, 30 insertions(+), 21 deletions(-)

diff --git a/l2_data_manager.py b/l2_data_manager.py
index ffa57c1..2ece3bd 100644
--- a/l2_data_manager.py
+++ b/l2_data_manager.py
@@ -4,6 +4,7 @@
 from datetime import datetime
 
 import data_process
+import l2_data_util
 import mysql
 
 import gpcode_manager
@@ -19,6 +20,9 @@
 local_latest_datas = {}
 # 鏈湴浠婃棩鏁版嵁
 local_today_datas = {}
+# 鏈湴鎵嬫暟+鎿嶄綔閭g被鍨嬬粍鎴愮殑涓存椂鍙橀噺
+# 鐢ㄤ簬鍔犲揩鏁版嵁澶勭悊锛岀敤绌烘崲鏃堕棿
+local_today_num_operate_map = {}
 
 
 class L2DataException(Exception):
@@ -125,26 +129,15 @@
         datas = []
         keys = redis.keys("l2-{}-*".format(code))
         for k in keys:
-            key = k.replace("l2-", "")
-            split_data = key.split("-")
-            code = split_data[0]
-            operateType = split_data[1]
-            time = split_data[2]
-            num = split_data[3]
-            price = split_data[4]
-            limitPrice = split_data[5]
-            cancelTime = split_data[6]
-            cancelTimeUnit = split_data[7]
-            item = {"operateType": operateType, "time": time, "num": num, "price": price, "limitPrice": limitPrice,
-                    "cancelTime": cancelTime, "cancelTimeUnit": cancelTimeUnit}
             value = redis.get(k)
-            json_value = json.loads(value)
-            _data = {"key": key, "val": item, "re": json_value["re"], "index": int(json_value["index"])}
+            _data = l2_data_util.l2_data_key_2_obj(k, value)
             datas.append(_data)
         # 鎺掑簭
         new_datas = sorted(datas,
                            key=lambda e: (int(e.__getitem__('val')["time"].replace(":", "")), e.__getitem__('index')))
-        local_today_datas.setdefault(code, new_datas)
+        local_today_datas[code] = new_datas
+    # 鏍规嵁浠婃棩鏁版嵁鍔犺浇
+    l2_data_util.load_num_operate_map(local_today_num_operate_map, code, local_today_datas.get(code), force)
 
 
 def saveL2Data(code, datas):
@@ -233,9 +226,13 @@
             dataIndexs.setdefault(key, len(datas) - 1)
     for key in same_time_num:
         if same_time_num[key] > 50:
-            # TODO 淇濆瓨鏁版嵁
-            redis = _redisManager.getRedis()
-            redis.set("big_data-{}-{}".format(code, int(round(t.time() * 1000))), str)
+            # 鍙兘淇濆瓨杩�3s鐨勬暟鎹�
+            ts1 = l2_data_util.get_time_as_seconds(datas[-1]["val"]["time"])
+            ts_now = l2_data_util.get_time_as_seconds(datetime.now().strftime("%H:%M:%S"))
+            if abs(ts1 - ts_now) <= 3:
+                # TODO 淇濆瓨鏁版嵁
+                redis = _redisManager.getRedis()
+                redis.set("big_data-{}-{}".format(code, int(round(t.time() * 1000))), str)
 
     return day, client, channel, code, datas
 
@@ -317,7 +314,8 @@
         if len(datas) > 0:
             # 鍒ゆ柇浠锋牸鍖洪棿鏄惁姝g‘
             if not data_process.is_same_code_with_price(code, float(datas[0]["val"]["price"])):
-                raise L2DataException(L2DataException.CODE_PRICE_ERROR, "鑲′环涓嶅尮閰�")
+
+                raise L2DataException(L2DataException.CODE_PRICE_ERROR, "鑲′环涓嶅尮閰� code-{} price-{}".format(code,datas[0]["val"]["price"]))
             # 鍔犺浇鍘嗗彶鏁版嵁
             load_l2_data(code)
             # 绾犳鏁版嵁
@@ -326,6 +324,8 @@
             if len(add_datas) > 0:
                 # 鎷兼帴鏁版嵁
                 local_today_datas[code].extend(add_datas)
+                l2_data_util.load_num_operate_map(local_today_num_operate_map, code, add_datas)
+
                 latest_time = add_datas[len(add_datas) - 1]["val"]["time"]
                 # 鏃堕棿宸笉鑳藉お澶ф墠鑳藉鐞�
                 if __is_same_time(now_time_str, latest_time):
@@ -697,8 +697,17 @@
 
 
 if __name__ == "__main__":
-    print("big_data-{}-{}".format("123", int(round(t.time() * 1000))))
-    pass
+    # 鍒犻櫎澶ф暟鎹�
+    redis = redis_manager.RedisManager(1).getRedis()
+    keys = redis.keys("big_data*")
+    for key in keys:
+        redis.delete(key)
+    # print("big_data-{}-{}".format("123", int(round(t.time() * 1000))))
+    # load_l2_data("002868")
+    # keys= local_today_num_operate_map["002868"]
+    # for k in keys:
+    #     print(len( local_today_num_operate_map["002868"][k]))
+    # pass
     # __set_buy_compute_start_data("000000", 100, 1)
     # __set_buy_compute_start_data("000000", 100)
     # __set_l2_data_latest_count("000333", 20)

--
Gitblit v1.8.0