Commit d309074e authored by 赵杰's avatar 赵杰

新增基金的数据联动接口3

parent eb7f5f4d
...@@ -14,12 +14,7 @@ import uuid ...@@ -14,12 +14,7 @@ import uuid
import oss2 import oss2
from flask_restful import Resource, reqparse from flask_restful import Resource, reqparse
from flask import request, render_template, g from flask import request, render_template, g
from flask import make_response
from app.api.engine import config
from app.service.folio_comment_service import recalculation_fund_comment from app.service.folio_comment_service import recalculation_fund_comment
from app.service.report_service import get_report_list, delete_report, get_one_report, edit_report, make_report, edit_report_name
from app.service.template_manage_service import get_make_report_data
from app.utils.auth import login_require from app.utils.auth import login_require
from app.utils.format_transfer import npEncoder from app.utils.format_transfer import npEncoder
...@@ -40,7 +35,13 @@ class UpdateReportHandlers(Resource): ...@@ -40,7 +35,13 @@ class UpdateReportHandlers(Resource):
args = self.parser.parse_args() args = self.parser.parse_args()
args['ifa_id'] = g.ifa_id args['ifa_id'] = g.ifa_id
data = recalculation_fund_comment(args) data = recalculation_fund_comment(args)
# data = make_report(args) if data is False:
resq = {
"statusCode": "8888",
"message": "内部错误",
"attributes": data
}
return resq
resp = { resp = {
"statusCode": "0000", "statusCode": "0000",
"message": "成功", "message": "成功",
......
from app.service.portfolio_diagnose import PortfolioDiagnose from app.service.portfolio_diagnose import PortfolioDiagnose
from app.service.result_service_v2 import UserCustomerResultAdaptor from app.service.result_service_v2 import UserCustomerResultAdaptor
import datetime import datetime
import json
from app.utils.draw import draw_combination_chart from app.utils.draw import draw_combination_chart
from app.utils.format_transfer import npEncoder
def recalculation_fund_comment(args): def recalculation_fund_comment(args):
ifa_id = args.get("ifa_id") try:
customer_id = args.get("customer_id") ifa_id = args.get("ifa_id")
folio = args.get("folio") customer_id = args.get("customer_id")
suggest_result = args.get("suggest_data") folio = args.get("folio")
suggest_result = json.loads(args.get("suggest_data"))
suggest_fund_dict = {}
suggest_fund_list = [] suggest_fund_dict = {}
suggest_amount_list = [] suggest_fund_list = []
for key, value_list in suggest_result.items(): suggest_amount_list = []
for value in value_list: for key, value_list in suggest_result.items():
if value["after_optimization"] <= 0: for value in value_list:
continue if value["after_optimization"] <= 0:
suggest_fund_dict[value["fund_id"]] = value["fund_type"] continue
suggest_fund_list.append(value["fund_id"]) suggest_fund_dict[value["fund_id"]] = value["fund_type"]
suggest_amount_list.append(value["after_optimization"]) suggest_fund_list.append(value["fund_id"])
sum_amount = sum(suggest_amount_list) suggest_amount_list.append(value["after_optimization"])
suggest_weight_list = [round(amount / sum_amount, 4) for amount in suggest_amount_list] sum_amount = sum(suggest_amount_list)
suggest_weight_list = [round(amount / sum_amount, 4) for amount in suggest_amount_list]
user_customer = UserCustomerResultAdaptor(ifa_id, customer_id, end_date=datetime.datetime.now().strftime("%Y-%m-%d"))
group_result = user_customer.calculate_group_result_data() user_customer = UserCustomerResultAdaptor(ifa_id, customer_id, end_date=datetime.datetime.now().strftime("%Y-%m-%d"))
cur_folio_result = group_result[folio] group_result = user_customer.calculate_group_result_data()
cur_folio_result = group_result[folio]
portfolio_diagnose = PortfolioDiagnose(client_type=1, portfolio=user_customer.all_fund_type_dict,
invest_amount=float(cur_folio_result["total_cost"]), portfolio_diagnose = PortfolioDiagnose(client_type=1, portfolio=user_customer.all_fund_type_dict,
start_date=user_customer.start_date) invest_amount=float(cur_folio_result["total_cost"]),
start_date=user_customer.start_date)
portfolio_diagnose.proposal_customize(suggest_fund_list, suggest_weight_list, suggest_fund_dict)
portfolio_diagnose.proposal_customize(suggest_fund_list, suggest_weight_list, suggest_fund_dict)
abandon_fund = list(set(cur_folio_result["fund_id_list"]) - set(suggest_fund_list))
portfolio_diagnose.abandon_fund_score = abandon_fund abandon_fund = list(set(cur_folio_result["fund_id_list"]) - set(suggest_fund_list))
portfolio_diagnose.abandon_fund_score = abandon_fund
finall_reslut = {}
finall_reslut["suggestions_result"], finall_reslut["suggestions_result_asset"], \ finall_reslut = {}
finall_reslut["return_compare_data"], \ finall_reslut["suggestions_result"], finall_reslut["suggestions_result_asset"], \
finall_reslut["indicator_compare"], finall_reslut["new_group_evaluation"] = \ finall_reslut["return_compare_data"], \
portfolio_diagnose.new_evaluation(folio, group_result, user_customer, suggest_fund_dict) finall_reslut["indicator_compare"], finall_reslut["new_group_evaluation"] = \
portfolio_diagnose.new_evaluation(folio, group_result, user_customer, suggest_fund_dict)
finall_reslut["return_compare_pic"] = draw_combination_chart(
finall_reslut["return_compare_data"]["xlabels"], finall_reslut["return_compare_pic"] = draw_combination_chart(
finall_reslut["return_compare_data"]["new_combination"], finall_reslut["return_compare_data"]["xlabels"],
finall_reslut["return_compare_data"]["origin_combination"], finall_reslut["return_compare_data"]["new_combination"],
finall_reslut["return_compare_data"]["index"]) finall_reslut["return_compare_data"]["origin_combination"],
finall_reslut["return_compare_data"]["index"])
return finall_reslut except Exception as e:
\ No newline at end of file return False
return json.dumps(finall_reslut, cls=npEncoder, ensure_ascii=False)
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment