From 892b50e242e3c59a738b92dfdfee1bf1ff8932f2 Mon Sep 17 00:00:00 2001
From: Administrator <admin@example.com>
Date: 星期五, 21 十月 2022 16:59:58 +0800
Subject: [PATCH] 新策略修改

---
 gui.py |   93 ++++++++++++++++++++++++++++++++++++++--------
 1 files changed, 77 insertions(+), 16 deletions(-)

diff --git a/gui.py b/gui.py
index 8bfe3ce..d4fc3aa 100644
--- a/gui.py
+++ b/gui.py
@@ -12,8 +12,9 @@
 import multiprocessing
 
 import global_util
+import log
+import mysql_data
 import redis_manager
-import mongo_data
 import server
 import trade_gui
 from l2_code_operate import L2CodeOperate
@@ -22,12 +23,39 @@
 from server import *
 
 
-def createServer(pipe):
+# 璇诲彇server杩涚▼鐨勬秷鎭�
+def __read_server_pipe(pipe):
+    while True:
+        value = pipe.recv()
+        if value is not None:
+            value = json.loads(value)
+            if value.get("type") == "clear_l2":
+                code = value["data"]["code"]
+                print("娓呴櫎l2鏁版嵁", code)
+                if len(code) != 6:
+                    continue
+                l2_data_manager.clear_l2_data(code)
+                # 鍒犻櫎level2鐨勬暟鎹�
+                if l2_data_manager.local_today_datas and code in l2_data_manager.local_today_datas:
+                    l2_data_manager.local_today_datas.pop(code)
+                if l2_data_manager.local_latest_datas and code in l2_data_manager.local_latest_datas:
+                    l2_data_manager.local_latest_datas.pop(code)
+
+        time.sleep(0.1)
+
+
+def createServer(pipe_juejin, pipe_gui):
     print("create SocketServer")
     # 鍒濆鍖栧弬鏁�
     global_util.init()
+
+    t1 = threading.Thread(target=lambda: __read_server_pipe(pipe_gui))
+    # 鍚庡彴杩愯
+    t1.setDaemon(True)
+    t1.start()
+
     laddr = "", 9001
-    tcpserver = MyThreadingTCPServer(laddr, MyBaseRequestHandle, pipe=pipe)  # 娉ㄦ剰锛氬弬鏁版槸MyBaseRequestHandle
+    tcpserver = MyThreadingTCPServer(laddr, MyBaseRequestHandle, pipe_juejin=pipe_juejin)  # 娉ㄦ剰锛氬弬鏁版槸MyBaseRequestHandle
     # tcpserver.handle_request()  # 鍙帴鍙椾竴涓鎴风杩炴帴
     tcpserver.serve_forever()  # 姘镐箙寰幆鎵ц,鍙互鎺ュ彈澶氫釜瀹㈡埛绔繛鎺�
 
@@ -37,11 +65,17 @@
 
 
 class GUI:
+
+
     def __init__(self):
         p1, p2 = multiprocessing.Pipe()
+        gs_gui_pipe, gs_server_pipe = multiprocessing.Pipe()
 
-        self.serverProcess = multiprocessing.Process(target=createServer, args=(p1,))
+        self.serverProcess = multiprocessing.Process(target=createServer, args=(p1, gs_server_pipe,))
         self.jueJinProcess = multiprocessing.Process(target=startJueJin, args=(p2,))
+        self.p1 = p1
+        self.p2 = p2
+        self.gs_gui_pipe = gs_gui_pipe
         # L2鏄剧ず
         self.l2_codes = {}
         # 鑾峰彇l2鐨勫鎴风鍒楄〃
@@ -51,6 +85,19 @@
             for i in range(0, 8):
                 code = gpcode_manager.get_listen_code_by_pos(client_id, i)
                 self.l2_codes[client_id].append(code)
+
+    # 璇诲彇server杩涚▼鐨勬秷鎭�
+    def __read_gui_server_pipe(self,pipe):
+        while True:
+            value = pipe.recv()
+            if value is not None:
+                value = json.loads(value)
+                if value.get("type") == "l2_data_notify":
+                    code = value["data"]["code"]
+                    count =value["data"]["count"]
+                    print("l2鏁版嵁閫氱煡锛歿}-{}", code,count)
+
+            time.sleep(0.1)
 
     def run(self):
         # TODO
@@ -63,6 +110,11 @@
 
         # 瀹㈡埛绔痵erver杩炴帴
         t1 = threading.Thread(target=lambda: server.test_client_server())
+        # 鍚庡彴杩愯
+        t1.setDaemon(True)
+        t1.start()
+
+        t1 = threading.Thread(target=lambda: self.__read_gui_server_pipe(self.gs_gui_pipe))
         # 鍚庡彴杩愯
         t1.setDaemon(True)
         t1.start()
@@ -93,12 +145,12 @@
                 _set_error_color(text, 1, error)
             # 楠岃瘉mongodb
             try:
-                count = mongo_data.count("clients", {})
-                if count < 1:
+                counts = mysql_data.Mysqldb().select_one("select count(*) from clients")
+                if counts[0] < 1:
                     raise Exception("")
-                text.insert(END, "mongodb杩炴帴鎴愬姛锛乗n")
+                text.insert(END, "mysql杩炴帴鎴愬姛锛乗n")
             except:
-                error = "mongodb杩炴帴澶辫触...\n"
+                error = "mysql杩炴帴澶辫触...\n"
                 text.insert(END, error)
                 _set_error_color(text, 2, error)
                 pass
@@ -221,18 +273,18 @@
     # 缁樺埗浜ゆ槗鐘舵��
     def __draw_trade_state(self, frame):
         def refresh_data():
-            normal=True
+            normal = True
             if l2_code_operate.L2CodeOperate.is_read_queue_valid():
                 cl_queue.configure(text="姝e父", foreground="#008000")
             else:
                 cl_queue.configure(text="寮傚父", foreground="#FF7F27")
-                normal=False
+                normal = False
             try:
                 trade_gui.THSGuiTrade.checkEnv()
                 cl_win.configure(text="姝e父", foreground="#008000")
             except Exception as e:
                 normal = False
-                cl_win.configure(text="寮傚父:{}".format(str(e)),foreground="#FF7F27")
+                cl_win.configure(text="寮傚父:{}".format(str(e)), foreground="#FF7F27")
             # 鐘舵�佹湁闂锛岄渶瑕佹姤璀�
             if not normal:
                 alert_util.alarm()
@@ -247,11 +299,10 @@
                     pass
                 time.sleep(2)
 
-        start_y=230
+        start_y = 230
 
         btn = Button(frame, text="鍒锋柊鐘舵��", command=refresh_data)
         btn.place(x=10, y=start_y)
-
 
         auo_refresh = IntVar()
         ch1 = Checkbutton(frame, text='鑷姩鍒锋柊', variable=auo_refresh, onvalue=1, offvalue=0, background="#DDDDDD",
@@ -260,7 +311,7 @@
         auo_refresh.set(1)
         ch1.place(x=100, y=start_y)
 
-        y_=start_y+30
+        y_ = start_y + 30
         cl = Label(frame, text="鎿嶄綔闃熷垪鐘舵�侊細", bg="#DDDDDD")
         cl.place(x=10, y=y_)
         cl_queue = Label(frame, text="鏈煡", bg="#DDDDDD")
@@ -687,6 +738,10 @@
             m = L2TradeFactorUtil.compute_m_value(code)
             showinfo("鎻愮ず", "{}".format(m))
 
+        def clear_l2(code):
+            self.gs_gui_pipe.send(json.dumps({"type": "clear_l2", "data": {"code": code}}))
+            pass
+
         frame = Frame(root, {"height": 280, "width": 300, "bg": "#DDDDDD"})
         frame.grid(row=2, column=2, rowspan=2, pady=5)
         btntext = StringVar()
@@ -723,11 +778,17 @@
         btn.place(x=220, y=100)
 
         btn = Button(frame, text="鑾峰彇m鍊�", command=lambda: compute_m(code.get()))
-        btn.place(x=10, y=120)
+        btn.place(x=10, y=130)
+
+        btn = Button(frame, text="瀵煎嚭浜ゆ槗鏃ュ織", command=lambda: log.export_l2_log(code.get()))
+        btn.place(x=80, y=130)
+
+        btn = Button(frame, text="娓呯┖l2鏁版嵁", command=lambda: clear_l2(code.get()))
+        btn.place(x=150, y=130)
 
         # 浜ゆ槗鎸夐挳
         btn = Button(frame, textvariable=btntext, command=startJueJinGui)
-        btn.place(x=10, y=150)
+        btn.place(x=10, y=160)
         btntext.set("鍚姩鎺橀噾")
 
         btn = Button(frame, text="閲嶆柊璁㈤槄琛屾儏", command=resub)

--
Gitblit v1.8.0