From 09991e316ce092d0b05a198aad9d58e78e06f69b Mon Sep 17 00:00:00 2001
From: Administrator <admin@example.com>
Date: 星期四, 23 五月 2024 10:55:13 +0800
Subject: [PATCH] bug修复

---
 main.py |   48 +++++++++++++++++++++++++++++++++++++++++++++---
 1 files changed, 45 insertions(+), 3 deletions(-)

diff --git a/main.py b/main.py
index e3bca69..8b07885 100644
--- a/main.py
+++ b/main.py
@@ -7,13 +7,14 @@
 import threading
 import time
 
-from code_attribute import target_codes_manager, gpcode_manager
+from code_attribute import target_codes_manager, gpcode_manager, code_market_manager
 from huaxin_client import l2_client_for_cb, trade_client_for_cb
 from huaxin_client.client_network import SendResponseSkManager
 from log_module import async_log_util
 from records import huaxin_trade_record_manager
 from trade import huaxin_trade_api, huaxin_trade_data_update, huaxin_sell_util
-from utils import middle_api_protocol, outside_api_command_manager, constant, tool, huaxin_util, socket_util, sell_util
+from utils import middle_api_protocol, outside_api_command_manager, constant, tool, huaxin_util, socket_util, sell_util, \
+    output_util
 
 middle_api_protocol.SERVER_PORT = 10008
 middle_api_protocol.SERVER_HOST = "43.138.167.68"
@@ -123,6 +124,31 @@
         # 鏌ヨ姝や粨
         code = data.get("code")
         results = huaxin_trade_record_manager.PositionManager().list_by_day(tool.get_now_date_str("%Y%m%d"), code)
+        for r in results:
+            cb_code = r["securityID"]
+            underlying_code = target_codes_manager.get_underlying_code(cb_code)
+            cb_market = code_market_manager.get_market_info(code)
+            underlying_market = code_market_manager.get_market_info(underlying_code)
+            if cb_market:
+                r["marketInfo"] = {"code": cb_market.code, "name": r["securityName"],
+                                   "rate": f"{cb_market.rate * 100}%",
+                                   "price": cb_market.price, "lastVolume": cb_market.total_bid_volume // 100,
+                                   "buy1Money": output_util.money_desc(cb_market.buy1_price * cb_market.buy1_volume)}
+            if underlying_market:
+                if not gpcode_manager.CodesNameManager().get_code_name(underlying_market.code):
+                    # 寮傛璇锋眰鍚嶇О
+                    threading.Thread(
+                        target=lambda: gpcode_manager.CodesNameManager().request_code_name(underlying_market.code),
+                        daemon=True).start()
+
+                r["underlyingMarketInfo"] = {"code": underlying_market.code,
+                                             "name": gpcode_manager.CodesNameManager().get_code_name(
+                                                 underlying_market.code), "rate": f"{underlying_market.rate * 100}%",
+                                             "price": underlying_market.price,
+                                             "lastVolume": underlying_market.total_bid_volume // 100,
+                                             "buy1Money": output_util.money_desc(
+                                                 underlying_market.buy1_price * underlying_market.buy1_volume)}
+
         send_response({"code": 0, "data": results}, client_id, request_id)
     elif type_ == "refresh_trade_data":
         # 鍒锋柊浜ゆ槗鏁版嵁
@@ -178,6 +204,20 @@
             pass
 
 
+def __read_market_data(queue_market: multiprocessing.Queue):
+    while True:
+        try:
+            result = queue_market.get()
+            if result:
+                # 浠g爜, 鏈�杩戠殑浠锋牸, 娑ㄥ箙, 涔�1浠凤紝 涔�1閲�, 鎴愪氦鎬婚噺
+                code_market_manager.set_market_info(result)
+        except Exception as e:
+            logger_debug.exception(e)
+            time.sleep(1)
+        finally:
+            pass
+
+
 if __name__ == '__main__':
     # ===========鍒濆鍖栨暟鎹�==========
     try:
@@ -214,4 +254,6 @@
     # ===========寮傛鏃ュ織鎸佷箙鍖�==========
     threading.Thread(target=async_log_util.run_sync, daemon=True).start()
     # 杩愯L2鏁版嵁鐩戝惉闃熷垪
-    l2_client_for_cb.run(trade_call_back_queue)
+    queue_market = multiprocessing.Queue()
+    threading.Thread(target=__read_market_data, args=(queue_market,), daemon=True).start()
+    l2_client_for_cb.run(trade_call_back_queue, queue_market)

--
Gitblit v1.8.0