From f09823c8aa1ac777d634d37ab29c0ad85386a06e Mon Sep 17 00:00:00 2001
From: Administrator <admin@example.com>
Date: 星期五, 11 四月 2025 00:53:22 +0800
Subject: [PATCH] 新题材重新定义

---
 servers/data_server.py |   50 ++++++++++++++++++++++----------------------------
 1 files changed, 22 insertions(+), 28 deletions(-)

diff --git a/servers/data_server.py b/servers/data_server.py
index d581ca9..aca2244 100644
--- a/servers/data_server.py
+++ b/servers/data_server.py
@@ -990,6 +990,13 @@
             for k in code_blocks_dict:
                 fdata[k] = list(code_blocks_dict[k])
             response_data = json.dumps({"code": 0, "data": fdata})
+        elif url.path == "/get_new_blocks_special_codes":
+            # 鑾峰彇鎵�鏈夎鲸璇嗗害鐨勪唬鐮�
+            code_blocks_dict = BlockSpecialCodesManager().get_temp_code_blocks_dict()
+            fdata = {}
+            for k in code_blocks_dict:
+                fdata[k] = list(code_blocks_dict[k])
+            response_data = json.dumps({"code": 0, "data": fdata})
 
         async_log_util.info(logger_request_api, f"缁撴潫璇锋眰{tool.get_thread_id()}-{url}")
         self.send_response(200)
@@ -1023,7 +1030,7 @@
 
         def do_limit_up(result_list_):
 
-            def request_new_blocks_codes(blocks_info):
+            def request_new_blocks_codes(blocks_info, all_new_blocks):
                 """
                 璇锋眰鏂版澘鍧楃殑浠g爜
                 @param blocks_info:[(鏉垮潡鍚嶇О,鏉垮潡浠g爜)]
@@ -1045,8 +1052,7 @@
                         code_info_list.append((d[0], d[6]))
                     if code_info_list:
                         # 灏嗕唬鐮佸姞鍏ユ柊棰樻潗
-                        for x in code_info_list:
-                            new_block_processor.process_new_block(x[0], bi[0])
+                        new_block_processor.process_new_block_by_component_codes(bi[0], set([x[0] for x in code_info_list]), all_new_blocks)
 
 
             try:
@@ -1122,39 +1128,27 @@
                         pass
 
                     try:
-                        records = KPLLimitUpDataRecordManager.total_datas
-                        # 璁$畻浠婃棩鏂板鐨勯鏉愭蹇�
-                        block_codes = {}
-                        # 缁熻鏉垮潡鐨勪唬鐮�
-                        block_plate_code_dict = {}
-                        for x in records:
-                            bs = {kpl_util.filter_block(x[2])}
-                            block_plate_code_dict[kpl_util.filter_block(x[2])] = x[15]
-                            # if x[6]:
-                            #     bs |= set(x[6].split("銆�"))
-                            for b in bs:
-                                if b not in block_codes:
-                                    block_codes[b] = set()
-                                block_codes[b].add(x[3])
-                        # 鎵�鏈変唬鐮佺殑娑ㄥ仠鍘熷洜
-                        reasons = set(block_codes.keys())
-                        reasons -= constant.KPL_INVALID_BLOCKS
-                        # 鍘熸潵鐨勮�侀鏉�
-                        reasons -= BeforeBlocksComputer().get_old_blocks()
-                        if reasons:
+                        # 鏂伴鏉�
+                        new_block_codes = new_block_processor.screen_new_blocks_with_limit_up_datas([(x[0], x[5]) for x in result_list_])
+                        if new_block_codes:
+                            # 缁熻鏉垮潡鐨勪唬鐮�
+                            records = KPLLimitUpDataRecordManager.total_datas
+                            block_plate_code_dict = {}
+                            for x in records:
+                                block_plate_code_dict[kpl_util.filter_block(x[2])] = x[15]
                             # 鏂版澘鍧�
                             update_new_block_plates = []
-                            for r in reasons:
-                                for c in block_codes[r]:
-                                    new_block_processor.process_new_block(c, r)
+                            for b in new_block_codes:
+                                for c in new_block_codes[b]:
+                                    new_block_processor.process_new_block_by_limit_up_list(c, b)
 
-                            for r in reasons:
+                            for r in new_block_codes:
                                 if r in block_plate_code_dict:
                                     update_new_block_plates.append((r, block_plate_code_dict[r]))
                             if update_new_block_plates:
                                 # 闇�瑕佽幏鍙栨澘鍧椾笅鐨勪唬鐮�
                                 self.__new_blocks_codes_request_thread_pool.submit(
-                                    lambda: request_new_blocks_codes(update_new_block_plates))
+                                    lambda: request_new_blocks_codes(update_new_block_plates, new_block_codes.keys()))
                     except:
                         pass
                     self.__kplDataManager.save_data(type_, result_list_)

--
Gitblit v1.8.0