celery.py 2.16 KB
Newer Older
pengxiong's avatar
pengxiong committed
1
import datetime
pengxiong's avatar
pengxiong committed
2
import os
pengxiong's avatar
pengxiong committed
3

4 5 6 7
from celery import Celery
from sqlalchemy import and_, or_

from app.api.engine import TAMP_SQL, tamp_diagnose_app_engine, template_folder, temp_img_save_folder, \
pengxiong's avatar
pengxiong committed
8
    redis_host, redis_port, redis_db, redis_password, pdf_save_folder
9 10 11 12 13
from app.model.tamp_diagnose_app import HoldReport, HoldDiagnoseReport, PeriodicReport, Customer, ReportView
from app.utils.jinjia2html_v2 import DataIntegrate

celery_app = Celery(__name__)

wang zhengwei's avatar
wang zhengwei committed
14
celery_conf = "redis://:{}@{}:{}/{}".format(redis_password,redis_host[0],redis_port[0],redis_db[0])
15 16 17 18
celery_app.conf.update({"broker_url": celery_conf, "result_backend": celery_conf})


@celery_app.task
19
def save_pdf(id, ifa_id, customer_id, pdf_name, type, report_data):
20 21 22 23 24 25 26 27 28 29 30 31 32
    """
    加法
    :param x:
    :param y:
    :return:
    """
    try:
        dt = DataIntegrate(ifa_id=ifa_id, customer_id=customer_id, pdf_name=pdf_name, type=type)
        dt.render_data(data=report_data)
    except:
        pass
    with TAMP_SQL(tamp_diagnose_app_engine) as tamp_diagnose_app:
        tamp_diagnose_session = tamp_diagnose_app.session
pengxiong's avatar
pengxiong committed
33
        res = None
34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50
        if type == 1:
            res = tamp_diagnose_session.query(HoldReport).filter(and_(
                HoldReport.id == id,
                HoldReport.ifa_id == ifa_id,
            ))
        elif type == 2:
            res = tamp_diagnose_session.query(HoldDiagnoseReport).filter(and_(
                HoldDiagnoseReport.id == id,
                HoldDiagnoseReport.ifa_id == ifa_id,
            ))
        elif type == 3:
            res = tamp_diagnose_session.query(PeriodicReport).filter(and_(
                PeriodicReport.id == id,
                PeriodicReport.ifa_id == ifa_id,
            ))
        else:
            return False
pengxiong's avatar
pengxiong committed
51
        if res.all():
pengxiong's avatar
pengxiong committed
52 53 54 55 56 57 58 59 60 61 62
            if os.path.exists(pdf_save_folder + pdf_name):
                res.update({
                    'file': pdf_name,
                    'update_status': 2,
                    'update_time': datetime.datetime.now()
                })
            else:
                res.update({
                    'update_status': 0,
                    'update_time': datetime.datetime.now()
                })
pengxiong's avatar
pengxiong committed
63 64
    return True

65 66 67