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 | 76 ++++++++++++++++++++++++++++++++----- 1 files changed, 65 insertions(+), 11 deletions(-) diff --git a/third_data/third_blocks_manager.py b/third_data/third_blocks_manager.py index 5eb5910..19cc4da 100644 --- a/third_data/third_blocks_manager.py +++ b/third_data/third_blocks_manager.py @@ -4,12 +4,15 @@ from itertools import combinations from db.mysql_data_delegate import Mysqldb -from third_data import kpl_api +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,17 +211,41 @@ 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): return self.__block_map.keys() +def load_if_less(codes): + """ + 鍔犺浇 + @param codes: + @return: + """ + for code in codes: + source_blocks = CodeThirdBlocksManager().get_source_blocks_origin(code) + if source_blocks is None: + source_blocks = {} + all_source = {SOURCE_TYPE_EASTMONEY, SOURCE_TYPE_TDX, SOURCE_TYPE_THS} + sources = all_source - source_blocks.keys() + for source in sources: + try: + blocks = middle_api_protocol.request(middle_api_protocol.get_third_blocks(code, source)) + if blocks: + CodeThirdBlocksManager().set_blocks(code, blocks, source) + except: + pass + + if __name__ == '__main__': code = "000761" - blocks = kpl_api.getCodeJingXuanBlocks(code, jx=False) - blocks = set([b[1] for b in blocks]) - print(CodeThirdBlocksManager().get_intersection_blocks_info(code, blocks)) + try: + blocks = middle_api_protocol.request(middle_api_protocol.get_third_blocks(code, 4)) + print(blocks) + except Exception as e: + print(e) -- Gitblit v1.8.0