# coding: utf-8 """ 找出所有 ifa 找出 ifa 所有的客户 进行月报生成 """ import datetime import time import traceback import uuid import pandas as pd # from app.api.engine import logging, pdf_folder, tamp_diagnose_app_engine, config, env from app.api.engine import pdf_folder, tamp_diagnose_app_engine, config, env import os from app.api.engine import tamp_user_engine, tamp_order_engine, TAMP_SQL from sqlalchemy.ext.declarative import declarative_base from sqlalchemy import Column, String, Integer, and_ from app.service.portfolio_diagnose import fund_rank, tamp_fund from app.utils.jinjia2html_v2 import DataIntegrate from concurrent import futures Base = declarative_base() class IfaUser(Base): __tablename__ = "user_info" id = Column(String(64), primary_key=True) ui_username = Column(String(64)) ui_sex = Column(String(64)) class Ifa_Customer(Base): __tablename__ = "ifa_customer" id = Column(String(64), primary_key=True) customer_id = Column(String(32)) ifa_id = Column(String(64)) class Customer(Base): __tablename__ = "customer" id = Column(String(64), primary_key=True) customer_name = Column(String(128)) # class CustomerOrder(Base): # __tablename__ = 'customer_order' # # user_id = Column(String(128)) # customer_id = Column(String(128)) # class UserInfo(Base): # __tablename__ = 'user_info' # # id = Column(String(64), primary_key=True) # ui_username = Column(String(128)) def call_month_report(ifauser_id, ifauser_name, customer_id, customer_name): filename = '{}_{}_.pdf'.format(ifauser_name, customer_name) if os.path.exists(pdf_folder + filename): return None print('开始制作IFA: {}, 客户: {}的基金月报'.format(ifauser_name, customer_name)) start = time.time() try: dt = DataIntegrate(ifauser_id, customer_id, '{}_{}_.pdf'.format(ifauser_name, customer_name)) data = dt.get_template_data() dt.render_data() print('IFA: {}, 客户: {}的基金月报已经生成, 耗时{}秒'.format(ifauser_name, customer_name, time.time()-start)) except OSError: print('IFA: {}, 客户: {}的基金月报已经生成,耗时{}秒'.format(ifauser_name, customer_name, time.time()-start)) except Exception as e: # logging.error("IFAID{}: IFAName{}, 客户ID{}, 客户Name: {}的基金月报生成异常,错误追踪:{}".format(ifauser_id, ifauser_name, customer_id, customer_name, traceback.format_exc())) print("IFA: {}, 客户: {}的基金月报生成异常,错误追踪:{}".format(ifauser_name, customer_name, traceback.format_exc())) finally: return if __name__ == '__main__': data = [] with TAMP_SQL(tamp_user_engine) as tamp_user, TAMP_SQL(tamp_order_engine) as tamp_order: tamp_user_session = tamp_user.session res = tamp_user_session.execute('SELECT DISTINCT user_id, customer_id , realname, customer_name FROM (select f1.user_id, f1.customer_id, f2.realname,f3.customer_name from tamp_order.customer_order_view f1, tamp_user.user_info f2,tamp_order.customer f3 where f2.id=f1.user_id and f3.id=f1.customer_id) res;') data = res.fetchall() with TAMP_SQL(tamp_user_engine) as tamp_user: tamp_user_session = tamp_user.session sql = "SELECT `id` from user_info where team_id=0;" cur = tamp_user_session.execute(sql) ifa = cur.fetchall() inner_ifa_df = pd.DataFrame(list(ifa), columns=["ifa_id"]) inner_ifa_list = list(inner_ifa_df["ifa_id"].values) for d in data: if d[0] in inner_ifa_list: print(d) continue call_month_report(d[0], d[2], d[1], d[3])