From ae8d76a456b64c1c6c4ebf11b6ec33b7df217b1a Mon Sep 17 00:00:00 2001
From: Administrator <admin@example.com>
Date: 星期一, 18 八月 2025 13:43:46 +0800
Subject: [PATCH] bug修复

---
 code_attribute/code_volumn_manager.py |   44 +++++++++++++++++++++++++++++++++-----------
 1 files changed, 33 insertions(+), 11 deletions(-)

diff --git a/code_attribute/code_volumn_manager.py b/code_attribute/code_volumn_manager.py
index faf8ce9..2af92a6 100644
--- a/code_attribute/code_volumn_manager.py
+++ b/code_attribute/code_volumn_manager.py
@@ -21,7 +21,7 @@
     __instance = None
     __today_volumn_cache = {}
     __reference_volume_as_money_y_dict = {}
-    __max_volume_in_5days = {}
+    __max_volume_info_in_5days = {}
 
     def __new__(cls, *args, **kwargs):
         if not cls.__instance:
@@ -47,21 +47,21 @@
                 for k in keys:
                     code = k.split("-")[1]
                     global_util.yesterday_volumn[code] = RedisUtils.get(redis, k, auto_free=False)
-            keys = RedisUtils.keys(redis, "volumn_max_5days-*", auto_free=False)
+            keys = RedisUtils.keys(redis, "volumn_max_5days_info-*", auto_free=False)
             if keys is not None:
                 for k in keys:
                     code = k.split("-")[1]
                     val = RedisUtils.get(redis, k, auto_free=False)
-                    cls.__max_volume_in_5days[code] = int(val)
+                    cls.__max_volume_info_in_5days[code] = json.loads(val)
         finally:
             RedisUtils.realse(redis)
 
     # 璁剧疆鍘嗗彶閲�
-    def set_histry_volumn(self, code, max60, yesterday, max60_day, max60_day_count, max5_volume):
+    def set_histry_volumn(self, code, max60, yesterday, max60_day, max60_day_count, max5_volume, max5_volume_day):
         redis = self.__redis_manager.getRedis()
         global_util.max60_volumn[code] = (max60, max60_day, max60_day_count)
         global_util.yesterday_volumn[code] = yesterday
-        self.__save_max_volume_in_5days(code, max5_volume)
+        self.__save_max_volume_in_5days(code, max5_volume, max5_volume_day)
         try:
             RedisUtils.setex_async(self.__db, "volumn_max60-{}".format(code), tool.get_expire(),
                                    json.dumps((max60, max60_day, max60_day_count)),
@@ -71,9 +71,9 @@
         finally:
             RedisUtils.realse(redis)
 
-    def __save_max_volume_in_5days(self, code, volume):
-        self.__max_volume_in_5days[code] = volume
-        RedisUtils.setex_async(self.__db, "volumn_max_5days-{}".format(code), tool.get_expire(), volume,
+    def __save_max_volume_in_5days(self, code, volume, day):
+        self.__max_volume_info_in_5days[code] = (volume, day)
+        RedisUtils.setex_async(self.__db, "volumn_max_5days_info-{}".format(code), tool.get_expire(), json.dumps((volume, day)),
                                auto_free=False)
 
     def get_max_volume_in_5days(self, code):
@@ -82,7 +82,9 @@
         @param code:
         @return:
         """
-        return self.__max_volume_in_5days.get(code)
+        if code in self.__max_volume_info_in_5days:
+            return self.__max_volume_info_in_5days.get(code)[0]
+        return None
 
     def get_radical_buy_refer_volume(self, code, limit_up_price):
         """
@@ -99,8 +101,28 @@
         if k_format and not k_format[13]:
             has_limit_up_in_60 = False
         volume = self.get_max_volume_in_5days(code)
-        if volume * limit_up_price >= 9e8 and has_limit_up_in_60:
+        if volume and volume * limit_up_price >= 9e8 and has_limit_up_in_60:
             return volume
+        return int(self.get_reference_volume_as_money_y(code) * 1e8 / limit_up_price)
+
+    def get_radical_buy_refer_volume_info(self, code, limit_up_price):
+        """
+        TODO 鏇存敼姝g‘
+        鑾峰彇鎵叆鐨勫弬鑰冮噺:
+        鍙傝�冮灏忎簬3.14浜垮氨鍙�90澶╁弬鑰冮噺
+        鍚﹀垯灏卞彇鏈�杩�5澶╃殑鍙傝�冮噺
+        @param code:
+        @param limit_up_price:
+        @return:
+        """
+        # 60涓氦鏄撴棩鏈定鍋滃彇
+        k_format = code_nature_analyse.CodeNatureRecordManager().get_k_format_cache(code)
+        has_limit_up_in_60 = True
+        if k_format and not k_format[13]:
+            has_limit_up_in_60 = False
+        volume_info = self.__max_volume_info_in_5days.get(code, None)
+        if volume_info and volume_info[0] * limit_up_price >= 9e8 and has_limit_up_in_60:
+            return volume_info
         return int(self.get_reference_volume_as_money_y(code) * 1e8 / limit_up_price)
 
     def get_volume_rate_refer_in_5days(self, code, total_sell_volume=0):
@@ -161,7 +183,7 @@
         _volumn = global_util.today_volumn.get(code)
         if _volumn is None:
             _volumn = RedisUtils.get(self.__redis_manager.getRedis(), "volumn_today-{}".format(code))
-        return _volumn
+        return int(_volumn)
 
     # 鑾峰彇浠婃棩閲�
     def get_today_volumn_cache(self, code):

--
Gitblit v1.8.0