timed_task_v2.py 3.67 KB
Newer Older
赵杰's avatar
赵杰 committed
1 2 3 4 5 6 7 8 9 10 11
# coding: utf-8

"""
找出所有 ifa
        找出 ifa 所有的客户
                           进行月报生成
"""
import datetime
import time
import traceback
import uuid
赵杰's avatar
赵杰 committed
12
import pandas as pd
wang zhengwei's avatar
wang zhengwei committed
13 14
# 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
赵杰's avatar
赵杰 committed
15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68
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))
赵杰's avatar
赵杰 committed
69
        data = dt.get_template_data()
赵杰's avatar
赵杰 committed
70 71 72 73 74
        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:
wang zhengwei's avatar
wang zhengwei committed
75
        # logging.error("IFAID{}: IFAName{}, 客户ID{}, 客户Name: {}的基金月报生成异常,错误追踪:{}".format(ifauser_id, ifauser_name, customer_id, customer_name, traceback.format_exc()))
赵杰's avatar
赵杰 committed
76 77 78 79 80 81 82 83 84
        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
赵杰's avatar
赵杰 committed
85
        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;')
赵杰's avatar
赵杰 committed
86
        data = res.fetchall()
赵杰's avatar
赵杰 committed
87 88 89 90 91 92 93 94
    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)

赵杰's avatar
赵杰 committed
95
    for d in data:
赵杰's avatar
赵杰 committed
96 97 98
        if d[0] in inner_ifa_list:
            print(d)
            continue
赵杰's avatar
赵杰 committed
99 100
        call_month_report(d[0], d[2], d[1], d[3])