diff --git a/app/service/result_service_v2.py b/app/service/result_service_v2.py index 5a3fb83262d933589aaf8942e002b0fbdfde61cf..02130a5f63eb00c8c339939672585ed12b248f69 100644 --- a/app/service/result_service_v2.py +++ b/app/service/result_service_v2.py @@ -341,29 +341,55 @@ class UserCustomerResultAdaptor(UserCustomerDataAdaptor): for index, row in p_order_df.iterrows(): cur_fund_id = str(row["fund_id"]) cur_fund_performance = self.all_fund_performance[cur_fund_id] - cur_fund_info_series = cur_fund_performance.iloc[-1] - # åŸºé‡‘å‡€å€¼æ•°æ® - fund_basic_info = {"fund_name": row["fund_name"], "confirm_nav": round(row["nav"],4)} - fund_basic_info["cur_nav"] = round(float(self.fund_nav_total[cur_fund_id].dropna().values[-1]), 4) - fund_basic_info["cur_cnav"] = round(float(self.fund_cnav_total[cur_fund_id].dropna().values[-1]), 4) - fund_basic_info["ret_1w"] = round(cur_fund_info_series["ret_1w"]*100, 2) if cur_fund_info_series["ret_1w"] is not None else "-" # 上周 - fund_basic_info["ret_cum_1m"] = round(cur_fund_info_series["ret_cum_1m"]*100, 2) if cur_fund_info_series["ret_cum_1m"] is not None else "-" # 最近一个月 - fund_basic_info["ret_cum_6m"] = round(cur_fund_info_series["ret_cum_6m"]*100, 2) if cur_fund_info_series["ret_cum_6m"] is not None else "-" # 最近åŠå¹´ - fund_basic_info["ret_cum_1y"] = round(cur_fund_info_series["ret_cum_1y"]*100, 2) if cur_fund_info_series["ret_cum_1y"] is not None else "-" # 最近一年 - fund_basic_info["ret_cum_ytd"] = round(cur_fund_info_series["ret_cum_ytd"]*100, 2) if cur_fund_info_series["ret_cum_ytd"] is not None else "-" # ä»Šå¹´ä»¥æ¥ - fund_basic_info["ret_cum_incep"] = round(cur_fund_info_series["ret_cum_incep"]*100, 2) if cur_fund_info_series["ret_cum_incep"] is not None else "-" # æˆç«‹ä»¥æ¥ - # 申è´ä»¥æ¥ - confirm_date = pd.to_datetime(row["confirm_share_date"]) - confirm_cnav = float(p_result_cnav_data.loc[confirm_date, cur_fund_id]) - fund_basic_info["ret_after_confirm"] = round((fund_basic_info["cur_cnav"] - confirm_cnav)/confirm_cnav*100, 2) - # 分红 - distribution_df = self.all_fund_distribution[cur_fund_id] - if distribution_df.empty: - fund_basic_info["distribution"] = "-" + if len(cur_fund_performance) <=0: + fund_basic_info = {"fund_name": row["fund_name"], "confirm_nav": round(row["nav"], 4)} + fund_basic_info["cur_nav"] = round(float(self.fund_nav_total[cur_fund_id].dropna().values[-1]), 4) + fund_basic_info["cur_cnav"] = round(float(self.fund_cnav_total[cur_fund_id].dropna().values[-1]), 4) + fund_basic_info["ret_1w"] = "-" # 上周 + fund_basic_info["ret_cum_1m"] = "-" # 最近一个月 + fund_basic_info["ret_cum_6m"] = "-" # 最近åŠå¹´ + fund_basic_info["ret_cum_1y"] = "-" # 最近一年 + fund_basic_info["ret_cum_ytd"] = "-" # ä»Šå¹´ä»¥æ¥ + fund_basic_info["ret_cum_incep"] = "-" # æˆç«‹ä»¥æ¥ + + # 申è´ä»¥æ¥ + confirm_date = pd.to_datetime(row["confirm_share_date"]) + confirm_cnav = float(p_result_cnav_data.loc[confirm_date, cur_fund_id]) + fund_basic_info["ret_after_confirm"] = round( + (fund_basic_info["cur_cnav"] - confirm_cnav) / confirm_cnav * 100, 2) + # 分红 + distribution_df = self.all_fund_distribution[cur_fund_id] + if distribution_df.empty: + fund_basic_info["distribution"] = "-" + else: + distribution_df["price_date"] = pd.to_datetime(distribution_df["price_date"]) + distribution = float( + distribution_df[distribution_df["price_date"] > confirm_date]["distribution"].sum()) + fund_basic_info["distribution"] = round(distribution, 4) if distribution != 0 else "-" else: - distribution_df["price_date"] = pd.to_datetime(distribution_df["price_date"]) - distribution = float(distribution_df[distribution_df["price_date"] > confirm_date]["distribution"].sum()) - fund_basic_info["distribution"] = round(distribution, 4) if distribution != 0 else "-" + cur_fund_info_series = cur_fund_performance.iloc[-1] + # åŸºé‡‘å‡€å€¼æ•°æ® + fund_basic_info = {"fund_name": row["fund_name"], "confirm_nav": round(row["nav"],4)} + fund_basic_info["cur_nav"] = round(float(self.fund_nav_total[cur_fund_id].dropna().values[-1]), 4) + fund_basic_info["cur_cnav"] = round(float(self.fund_cnav_total[cur_fund_id].dropna().values[-1]), 4) + fund_basic_info["ret_1w"] = str(round(cur_fund_info_series["ret_1w"]*100, 2)) + "%" if cur_fund_info_series["ret_1w"] is not None else "-" # 上周 + fund_basic_info["ret_cum_1m"] = str(round(cur_fund_info_series["ret_cum_1m"]*100, 2)) + "%" if cur_fund_info_series["ret_cum_1m"] is not None else "-" # 最近一个月 + fund_basic_info["ret_cum_6m"] = str(round(cur_fund_info_series["ret_cum_6m"]*100, 2)) + "%" if cur_fund_info_series["ret_cum_6m"] is not None else "-" # 最近åŠå¹´ + fund_basic_info["ret_cum_1y"] = str(round(cur_fund_info_series["ret_cum_1y"]*100, 2)) + "%" if cur_fund_info_series["ret_cum_1y"] is not None else "-" # 最近一年 + fund_basic_info["ret_cum_ytd"] = str(round(cur_fund_info_series["ret_cum_ytd"]*100, 2)) + "%" if cur_fund_info_series["ret_cum_ytd"] is not None else "-" # ä»Šå¹´ä»¥æ¥ + fund_basic_info["ret_cum_incep"] = str(round(cur_fund_info_series["ret_cum_incep"]*100, 2)) + "%" if cur_fund_info_series["ret_cum_incep"] is not None else "-" # æˆç«‹ä»¥æ¥ + # 申è´ä»¥æ¥ + confirm_date = pd.to_datetime(row["confirm_share_date"]) + confirm_cnav = float(p_result_cnav_data.loc[confirm_date, cur_fund_id]) + fund_basic_info["ret_after_confirm"] = str(round((fund_basic_info["cur_cnav"] - confirm_cnav)/confirm_cnav*100, 2)) + "%" + # 分红 + distribution_df = self.all_fund_distribution[cur_fund_id] + if distribution_df.empty: + fund_basic_info["distribution"] = "-" + else: + distribution_df["price_date"] = pd.to_datetime(distribution_df["price_date"]) + distribution = float(distribution_df[distribution_df["price_date"] > confirm_date]["distribution"].sum()) + fund_basic_info["distribution"] = round(distribution, 4) if distribution != 0 else "-" group_fund_basic_info.append(fund_basic_info)