From 0e68e24f54db11d340785b17570fff2bc5fc7ac6 Mon Sep 17 00:00:00 2001
From: Administrator <admin@example.com>
Date: 星期一, 24 七月 2023 13:05:16 +0800
Subject: [PATCH] bug修复

---
 third_data/block_info.py |   86 +++++++++++++++++++++++++++++++++----------
 1 files changed, 66 insertions(+), 20 deletions(-)

diff --git a/third_data/block_info.py b/third_data/block_info.py
index c0885f0..786f055 100644
--- a/third_data/block_info.py
+++ b/third_data/block_info.py
@@ -3,10 +3,13 @@
 """
 import datetime
 
-import juejin
-import tool
-from third_data import kpl_util, kpl_data_manager
+import constant
+from utils import tool
+from third_data import kpl_util
+from third_data.history_k_data_util import HistoryKDatasUtils
 from third_data.kpl_data_manager import KPLLimitUpDataRecordManager, KPLDataManager
+
+from third_data import kpl_data_manager
 
 __before_block_dict = {}
 
@@ -23,20 +26,31 @@
     return __before_block_dict.get(code)
 
 
+# 鑾峰彇涔嬪墠鐨勬澘鍧�
+def get_before_blocks(code):
+    return __before_block_dict.get(code)
+
+
+# 鑾峰彇涔嬪墠鐨勪唬鐮�-鏉垮潡瀛楀吀
+def get_before_blocks_dict():
+    return __before_block_dict
+
+
 def __get_code_from_code_info(code_info):
     code = code_info[0][1].split(".")[0]
     return code
 
 
 # (浠g爜, 鍚嶇О, 棣栨娑ㄥ仠鏃堕棿, 鏈�杩戞定鍋滄椂闂�, 鍑犳澘, 娑ㄥ仠鍘熷洜, 鏉垮潡, 瀹為檯娴侀��, 涓诲姏鍑�棰�)
-def __get_blocks(code, limit_up_datas):
+def __get_blocks(code, limit_up_datas, filter=True):
     blocks = []
-    for data in limit_up_datas:
-        if data[0] == code:
-            block = data[5]
-            if block in kpl_data_manager.INVALID_BLOCKS:
-                continue
-            blocks.append(block)
+    if limit_up_datas:
+        for data in limit_up_datas:
+            if data[0] == code:
+                block = data[5]
+                if block in constant.KPL_INVALID_BLOCKS and filter:
+                    continue
+                blocks.append(block)
     return blocks
 
 
@@ -56,10 +70,10 @@
     if now_day in __blocks_dict:
         return __blocks_dict[now_day]
     now_date = datetime.datetime.now()
-    end_date = juejin.JueJinManager.get_previous_trading_date(tool.get_now_date_str())
+    end_date = HistoryKDatasUtils.get_previous_trading_date(tool.get_now_date_str())
     start_date = now_date - datetime.timedelta(days=(day_count * 2 + 10))
     start_date = start_date.strftime("%Y-%m-%d")
-    days = juejin.JueJinManager.get_trading_dates(start_date, end_date)
+    days = HistoryKDatasUtils.get_trading_dates(start_date, end_date)
     days = days[0 - day_count:]
     results = KPLLimitUpDataRecordManager.list_blocks_with_day(days)
     __blocks_dict[now_day] = results
@@ -71,6 +85,24 @@
     latest_datas = __kplDataManager.get_data(kpl_util.KPLDataType.LIMIT_UP)
     blocks = __get_blocks(code, latest_datas)
     return blocks
+
+
+def get_target_block_info(code, filter=False):
+    latest_datas = __kplDataManager.get_data(kpl_util.KPLDataType.LIMIT_UP)
+    blocks = __get_blocks(code, latest_datas, filter)
+    if not blocks:
+        blocks = __load_before_block(code)
+        # 鑾峰彇鐩爣鏉垮潡
+    target_block = None
+    if blocks:
+        for block in blocks:
+            if block in constant.KPL_INVALID_BLOCKS and filter:
+                continue
+            target_block = block
+            break
+    if not target_block:
+        return None
+    return target_block
 
 
 # 鑾峰彇浠g爜鎵�鍦ㄦ澘鍧椾俊鎭�
@@ -86,7 +118,7 @@
     target_block = None
     if blocks:
         for block in blocks:
-            if block in kpl_data_manager.INVALID_BLOCKS:
+            if block in constant.KPL_INVALID_BLOCKS:
                 continue
             target_block = block
             break
@@ -121,7 +153,7 @@
     # 鏄惁鍑虹幇杩囬珮浣嶆澘
     high_block_infos = []
     for block in blocks:
-        if block in kpl_data_manager.INVALID_BLOCKS:
+        if block in constant.KPL_INVALID_BLOCKS:
             continue
         if latest_datas:
             has_high, high_code_info = __is_has_high_code(block, latest_datas)
@@ -140,6 +172,8 @@
                 code_ = d[3]
                 limit_up_codes_info_set.add((code_, d[5]))
                 block_codes_set.add(code_)
+            elif d[3] == code:
+                limit_up_codes_info_set.add((d[3], d[5]))
     # 鑾峰彇娑ㄥ仠鐨勯『搴�
     limit_up_index = -1
     limit_up_codes_info_list = list(limit_up_codes_info_set)
@@ -163,12 +197,13 @@
     re_limit_codes = set()
     # 鐐告澘锛�
     # (浠g爜,鍚嶇О,娑ㄥ箙,鏉垮潡,瀹為檯娴侀��)
-    for data in open_limit_up_datas:
-        blocks = set(data[3].split("銆�"))
-        if target_block not in blocks:
-            continue
-        code_ = data[0]
-        break_codes.add(code_)
+    if open_limit_up_datas:
+        for data in open_limit_up_datas:
+            blocks = set(data[3].split("銆�"))
+            if target_block not in blocks:
+                continue
+            code_ = data[0]
+            break_codes.add(code_)
     # 缁熻鍥炲皝
     for data in latest_datas:
         if data[5] != target_block:
@@ -206,5 +241,16 @@
     return fresult
 
 
+# 鍒濆鍖栨澘鍧楁暟鎹�
+def init():
+    # 鍔犺浇鏁版嵁鍒板唴瀛樹腑
+    kpl_data_manager.get_current_limit_up_data_records(10)
+
+
+def init_code(code):
+    # 鍔犺浇鍘嗗彶娑ㄥ仠鍘熷洜
+    __load_before_block(code)
+
+
 if __name__ == "__main__":
     get_info("603133")

--
Gitblit v1.8.0