From aacc6148dd43a9cffbff9a23a273a55b64bf3d8c Mon Sep 17 00:00:00 2001
From: Administrator <admin@example.com>
Date: 星期六, 12 十月 2024 17:21:42 +0800
Subject: [PATCH] bug修复

---
 third_data/third_blocks_manager.py |   45 ++++++++++++++++++++++++++++++++++++++-------
 1 files changed, 38 insertions(+), 7 deletions(-)

diff --git a/third_data/third_blocks_manager.py b/third_data/third_blocks_manager.py
index a94ea1c..19cc4da 100644
--- a/third_data/third_blocks_manager.py
+++ b/third_data/third_blocks_manager.py
@@ -5,11 +5,14 @@
 
 from db.mysql_data_delegate import Mysqldb
 from utils import middle_api_protocol
+from utils.kpl_data_db_util import KPLLimitUpDataUtil
+from utils.ths_industry_util import ThsCodeIndustryManager
 
-SOURCE_TYPE_KPL = 1  # 涓滄柟璐㈠瘜
+SOURCE_TYPE_KPL = 1  # 寮�鐩樺暒
 SOURCE_TYPE_TDX = 2  # 閫氳揪淇�
 SOURCE_TYPE_THS = 3  # 鍚岃姳椤�
 SOURCE_TYPE_EASTMONEY = 4  # 涓滄柟璐㈠瘜
+SOURCE_TYPE_KPL_RECORD = 5  # 寮�鐩樺暒鍘嗗彶鏁版嵁
 
 
 class CodeThirdBlocksManager:
@@ -21,6 +24,7 @@
     # 浠g爜鏉垮潡锛歿code:{1:{"b1","b2"},2:{"c1","c2"}}}
     __code_source_blocks_dict = {}
     __code_source_blocks_dict_origin = {}
+    __ths_industry = ThsCodeIndustryManager()
 
     def __new__(cls, *args, **kwargs):
         if not cls.__instance:
@@ -37,8 +41,31 @@
                 cls.__code_source_blocks_dict[result[0]] = {}
                 cls.__code_source_blocks_dict_origin[result[0]] = {}
             blocks = set(result[2].split("銆�"))
+            if result[1] == SOURCE_TYPE_THS:
+                # 鍚岃姳椤哄姞鍏�2绾у垎绫�
+                industry = cls.__ths_industry.get_industry(result[0])
+                if industry:
+                    blocks.add(industry)
+
             cls.__code_source_blocks_dict_origin[result[0]][result[1]] = blocks
             cls.__code_source_blocks_dict[result[0]][result[1]] = BlockMapManager().filter_blocks(blocks)
+        # 鍔犺浇寮�鐩樺暒鍘嗗彶娑ㄥ仠鍘熷洜
+        kpl_results = KPLLimitUpDataUtil.get_latest_block_infos()
+        code_blocks = {}
+        for r in kpl_results:
+            if r[0] not in code_blocks:
+                code_blocks[r[0]] = set()
+            code_blocks[r[0]].add(r[2])
+            if r[3]:
+                code_blocks[r[0]] |= set(r[3].split("銆�"))
+        for code in code_blocks:
+            if code not in cls.__code_source_blocks_dict:
+                cls.__code_source_blocks_dict[code] = {}
+                cls.__code_source_blocks_dict_origin[code] = {}
+            blocks = code_blocks[code]
+            cls.__code_source_blocks_dict_origin[code][SOURCE_TYPE_KPL_RECORD] = blocks
+            cls.__code_source_blocks_dict[code][SOURCE_TYPE_KPL_RECORD] = BlockMapManager().filter_blocks(blocks)
+
 
     def get_source_blocks(self, code):
         """
@@ -56,7 +83,7 @@
         """
         return self.__code_source_blocks_dict_origin.get(code)
 
-    def get_intersection_blocks_info(self, code, blocks):
+    def get_intersection_blocks_info(self, code, blocks, same_count=2):
         # 鑾峰彇浜ら泦
         bs = []
         b1 = BlockMapManager().filter_blocks(blocks)
@@ -67,13 +94,13 @@
             for s in sb_dict:
                 if sb_dict[s]:
                     bs.append(sb_dict[s])
-        if len(bs) < 2:
+        if len(bs) < same_count:
             return set(), bs
         s_count = len(bs)
         fblocks = set()
 
         # 姹�2涓钩鍙扮殑浜ら泦
-        for ces in combinations(bs, 2):
+        for ces in combinations(bs, same_count):
             ic = None
             for c in ces:
                 if ic is None:
@@ -94,6 +121,9 @@
         # 鏇存柊缂撳瓨鏁版嵁
         if code not in self.__code_source_blocks_dict:
             self.__code_source_blocks_dict[code] = {}
+        if code not in self.__code_source_blocks_dict_origin:
+            self.__code_source_blocks_dict_origin[code] = {}
+
         if blocks:
             self.__code_source_blocks_dict[code][source_type] = BlockMapManager().filter_blocks(set(blocks))
             self.__code_source_blocks_dict_origin[code][source_type] = set(blocks)
@@ -181,9 +211,10 @@
         for block in blocks:
             if block.endswith("姒傚康"):
                 block = block[:-2]
-            b = self.get_map_blocks_cache(block)
-            if b:
-                fbs |= b
+            # b = self.get_map_blocks_cache(block)
+            # if b:
+            #     fbs |= b
+            fbs.add(block)
         return fbs
 
     def get_all_blocks(self):

--
Gitblit v1.8.0