From 7c6d06136079b73c5676c716c992fdebb23cca7c Mon Sep 17 00:00:00 2001
From: Administrator <admin@example.com>
Date: 星期二, 27 五月 2025 16:15:31 +0800
Subject: [PATCH] bug修复

---
 servers/data_server.py |   82 +++++++++++++++++++++++------------------
 1 files changed, 46 insertions(+), 36 deletions(-)

diff --git a/servers/data_server.py b/servers/data_server.py
index 55d1ba8..3c5cc04 100644
--- a/servers/data_server.py
+++ b/servers/data_server.py
@@ -12,7 +12,8 @@
 from code_attribute.gpcode_manager import BlackListCodeManager, HumanRemoveForbiddenManager
 from l2.huaxin import huaxin_target_codes_manager
 from l2.l2_transaction_data_manager import HuaXinBuyOrderManager
-from log_module.log import logger_system, logger_debug, logger_kpl_limit_up, logger_request_api
+from log_module.log import logger_system, logger_debug, logger_kpl_limit_up, logger_request_api, \
+    logger_kpl_market_strong, logger_kpl_new_blocks
 from third_data.custom_block_in_money_manager import CodeInMoneyManager
 from third_data.kpl_data_constant import LimitUpCodesBlockRecordManager, LimitUpDataConstant, \
     ContainsLimitupCodesBlocksManager
@@ -20,6 +21,7 @@
 from third_data.third_blocks_manager import BlockMapManager
 from trade.buy_radical import radical_buy_data_manager, new_block_processor
 from trade.buy_radical.block_special_codes_manager import BlockSpecialCodesManager
+from trade.buy_radical.new_block_processor import BeforeBlocksComputer
 from trade.buy_strategy import OpenLimitUpGoodBlocksBuyStrategy
 from trade.buy_radical.radical_buy_data_manager import RadicalBuyBlockManager, BeforeSubDealBigOrderManager
 from utils import global_util, tool, data_export_util
@@ -807,8 +809,9 @@
                 deals_month = trade_data_manager.AccountMoneyManager().get_deal_count_info(start_date, end_date)
                 cost_month = sum([round(0.1 * x[1], 2) for x in delegates_month])
                 make_month = 0
-                make_month += max(1 * deals_month[0][1], deals_month[0][2] * 1.854 / 10000) + 1 * deals_month[1][
-                    1] + 0 * deals_month[2][1]
+                make_month += max(1 * deals_month[0][1] if deals_month[0][1] else 0,
+                                  deals_month[0][2] * 1.854 / 10000 if deals_month[0][2] else 0) + 1 * deals_month[1][
+                                  1] + 0 * deals_month[2][1]
                 fdata["month_commission"] = round(make_month - cost_month, 2)
                 # 璁$畻褰撴棩鎵嬬画璐硅鎯�
                 delegates = trade_data_manager.AccountMoneyManager().get_delegated_count_info()
@@ -958,7 +961,9 @@
                                  big_money_rate * 100  # 澶у崟鎴愪氦姣�
                                  ),
                                 output_util.money_desc(deal_big_money_info[1]),
-                                output_util.money_desc(deal_big_money_info[2])]
+                                output_util.money_desc(deal_big_money_info[2]),
+                                output_util.money_desc(deal_big_money_info[3]),
+                            ]
                             if len(codes) == 1:
                                 # 鍔犺浇澶у崟璇︽儏
                                 deal_big_order_detail_info = radical_buy_data_manager.get_l2_big_order_deal_info(code)
@@ -985,6 +990,13 @@
         elif url.path == "/get_all_special_codes":
             # 鑾峰彇鎵�鏈夎鲸璇嗗害鐨勪唬鐮�
             code_blocks_dict = BlockSpecialCodesManager().get_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})
+        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])
@@ -1022,14 +1034,18 @@
 
         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爜)]
                 @return:
                 """
                 yesterday_codes = kpl_data_manager.get_yesterday_limit_up_codes()
+                blocks = set()
                 for bi in blocks_info:
+                    if bi[0] in blocks:
+                        continue
+                    blocks.add(bi[0])
                     result = kpl_api.getCodesByPlate(bi[1])
                     result = json.loads(result)
                     code_info_list = []
@@ -1038,15 +1054,18 @@
                             continue
                         # 娑ㄥ箙瑕佸ぇ浜�5%
                         rate = d[6] / int(round((tool.get_limit_up_rate(d[0]) - 1) * 10))
-                        if rate < 5:
+                        if rate / ((tool.get_limit_up_rate(d[0]) - 1) * 10) < 5:
                             continue
                         # 鏍煎紡锛�(浠g爜,娑ㄥ箙)
                         code_info_list.append((d[0], d[6]))
+                    # 淇濆瓨鏂伴鏉�
+                    datas = [(d[0], d[6]) for d in result["list"]]
+                    async_log_util.info(logger_kpl_new_blocks, f"{(tool.get_thread_id() ,bi, datas)}")
                     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:
                 if result_list_:
@@ -1121,39 +1140,31 @@
                         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 -= LimitUpCodesBlockRecordManager().get_total_before_blocks()
-                        if reasons:
+                        # 鏂伴鏉�
+                        new_block_processor.process_limit_up_list({x[0]: x[5] for x in result_list_})
+                        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))
-                    except:
-                        pass
+                                    lambda: request_new_blocks_codes(update_new_block_plates, new_block_codes.keys()))
+                    except Exception as e:
+                        logger_debug.exception(e)
                     self.__kplDataManager.save_data(type_, result_list_)
             except Exception as e:
                 logger_debug.exception(e)
@@ -1233,11 +1244,10 @@
                 RealTimeKplMarketData.set_market_jingxuan_out_blocks(result_list)
         elif type_ == KPLDataType.MARKET_STRONG.value:
             strong = data["data"]
-            logger_debug.debug("寮�鐩樺暒甯傚満寮哄害锛歿}", strong)
+            logger_kpl_market_strong.info(strong)
             # 淇濆瓨甯傚満鐑害
             if strong is not None:
                 RealTimeKplMarketData.set_market_strong(strong)
-
         return json.dumps({"code": 0})
 
     def __send_response(self, data):

--
Gitblit v1.8.0