timed_task.py 3.02 KB
Newer Older
wang zhengwei's avatar
wang zhengwei committed
1 2 3 4 5 6 7
# coding: utf-8

"""
找出所有 ifa
        找出 ifa 所有的客户
                           进行月报生成
"""
pengxiong's avatar
pengxiong committed
8
import time
pengxiong's avatar
pengxiong committed
9 10 11
import traceback
from app.api.engine import logging, pdf_folder
import os
wang zhengwei's avatar
wang zhengwei committed
12 13 14

from app.api.engine import tamp_user_engine, tamp_order_engine, TAMP_SQL
from sqlalchemy.ext.declarative import declarative_base
pengxiong's avatar
pengxiong committed
15
from sqlalchemy import Column, String, Integer, and_
pengxiong's avatar
pengxiong committed
16 17

from app.service.portfolio_diagnose import fund_rank, tamp_fund
pengxiong's avatar
2  
pengxiong committed
18
from app.utils.jinjia2html_v2 import DataIntegrate
pengxiong's avatar
pengxiong committed
19
from concurrent import futures
wang zhengwei's avatar
wang zhengwei committed
20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42

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))

pengxiong's avatar
pengxiong committed
43 44 45 46 47 48 49 50 51 52 53
# 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))
wang zhengwei's avatar
wang zhengwei committed
54 55

def call_month_report(ifauser_id, ifauser_name, customer_id, customer_name):
pengxiong's avatar
pengxiong committed
56 57 58
    filename = '{}_{}_.pdf'.format(ifauser_name, customer_name)
    if os.path.exists(pdf_folder + filename):
        return None
pengxiong's avatar
pengxiong committed
59 60 61
    print('开始制作IFA: {}, 客户: {}的基金月报'.format(ifauser_name, customer_name))
    start = time.time()
    try:
pengxiong's avatar
pengxiong committed
62 63
        dt = DataIntegrate(ifauser_id, customer_id, '{}_{}_.pdf'.format(ifauser_name, customer_name))
        dt.render_data()
pengxiong's avatar
pengxiong committed
64 65 66
        print('IFA: {}, 客户: {}的基金月报已经生成, 耗时{}秒'.format(ifauser_name, customer_name, time.time()-start))
    except OSError:
        print('IFA: {}, 客户: {}的基金月报已经生成,耗时{}秒'.format(ifauser_name, customer_name, time.time()-start))
pengxiong's avatar
pengxiong committed
67
    except Exception as e:
pengxiong's avatar
pengxiong committed
68
        logging.error("IFAID{}: IFAName{}, 客户ID{}, 客户Name: {}的基金月报生成异常,错误追踪:{}".format(ifauser_id, ifauser_name, customer_id, customer_name, traceback.format_exc()))
pengxiong's avatar
pengxiong committed
69
        print("IFA: {}, 客户: {}的基金月报生成异常,错误追踪:{}".format(ifauser_name, customer_name, traceback.format_exc()))
赵杰's avatar
赵杰 committed
70 71
    finally:
        return None
wang zhengwei's avatar
wang zhengwei committed
72

pengxiong's avatar
pengxiong committed
73 74 75 76 77 78
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 customer_order f1, user_info f2,customer_info f3   where f2.id=f1.user_id and f3.id=f1.customer_id) res;')
        data = res.fetchall()
pengxiong's avatar
pengxiong committed
79 80
    for d in data:
        call_month_report(d[0], d[2], d[1], d[3])
pengxiong's avatar
pengxiong committed
81