report.py 6.89 KB
Newer Older
pengxiong's avatar
pengxiong committed
1 2 3 4 5 6 7 8 9
# -*- encoding: utf-8 -*-
# -----------------------------------------------------------------------------
# @File Name  : report.py
# @Time       : 2020/11/18 下午3:19
# @Author     : X. Peng
# @Email      : acepengxiong@163.com
# @Software   : PyCharm
# -----------------------------------------------------------------------------
import datetime
pengxiong's avatar
pengxiong committed
10
import json
pengxiong's avatar
pengxiong committed
11 12 13 14 15
import time
import uuid

import oss2
from flask_restful import Resource, reqparse
pengxiong's avatar
pengxiong committed
16
from flask import request, render_template, g
pengxiong's avatar
pengxiong committed
17 18 19
from flask import make_response

from app.api.engine import config
wang zhengwei's avatar
wang zhengwei committed
20 21
from app.service.report_service import get_report_list, delete_report, \
    get_one_report, edit_report, make_report, edit_report_name, make_app_report
pengxiong's avatar
pengxiong committed
22
from app.service.template_manage_service import get_make_report_data
pengxiong's avatar
pengxiong committed
23
from app.utils.auth import login_require
pengxiong's avatar
pengxiong committed
24
from app.utils.format_transfer import npEncoder
pengxiong's avatar
pengxiong committed
25 26 27 28 29 30 31 32 33


class ReportHandlers(Resource):
    """."""

    def __init__(self):
        """."""
        self.parser = reqparse.RequestParser()

pengxiong's avatar
pengxiong committed
34
    @login_require
pengxiong's avatar
pengxiong committed
35
    def get(self):
pengxiong's avatar
pengxiong committed
36
        """获取新建报告数据."""
pengxiong's avatar
pengxiong committed
37
        self.parser.add_argument('id', type=str, required=True, help='模版id不能为空')
pengxiong's avatar
pengxiong committed
38 39
        self.parser.add_argument('customer_id', type=str, required=True, help='customer_id不能为空')
        args = self.parser.parse_args()
pengxiong's avatar
pengxiong committed
40
        args['ifa_id'] = g.ifa_id
pengxiong's avatar
pengxiong committed
41
        data = get_make_report_data(args)
pengxiong's avatar
pengxiong committed
42
        resp = {
pengxiong's avatar
pengxiong committed
43 44 45
            "statusCode": "0000",
            "message": "成功",
            "attributes": data
pengxiong's avatar
pengxiong committed
46
        }
pengxiong's avatar
pengxiong committed
47
        return json.dumps(resp, cls=npEncoder, ensure_ascii=False)
pengxiong's avatar
pengxiong committed
48

pengxiong's avatar
pengxiong committed
49
    @login_require
pengxiong's avatar
pengxiong committed
50
    def post(self):
pengxiong's avatar
pengxiong committed
51 52
        """保存报告."""
        self.parser.add_argument('type', type=int, required=True, help='1为持仓报告2为诊断报告3周期报告')
53
        self.parser.add_argument('name', type=str, required=False, help='报告名称')
pengxiong's avatar
pengxiong committed
54
        self.parser.add_argument('customer_id', type=str, required=True, help='customer_id不能为空')
pengxiong's avatar
pengxiong committed
55
        self.parser.add_argument('report_data', type=str, required=True, help='report_data不能为空')
pengxiong's avatar
pengxiong committed
56
        args = self.parser.parse_args()
pengxiong's avatar
pengxiong committed
57
        args['ifa_id'] = g.ifa_id
pengxiong's avatar
pengxiong committed
58
        data = make_report(args)
pengxiong's avatar
pengxiong committed
59 60 61
        resp = {
            "statusCode": "0000",
            "message": "成功",
pengxiong's avatar
pengxiong committed
62
            "attributes": data
pengxiong's avatar
pengxiong committed
63 64
        }
        return resp
pengxiong's avatar
pengxiong committed
65

pengxiong's avatar
pengxiong committed
66
    @login_require
wang zhengwei's avatar
wang zhengwei committed
67
    def put(self):
68 69 70 71 72 73 74 75 76 77 78 79 80
        """编辑报告名称."""
        self.parser.add_argument('type', type=int, required=True, help='1为持仓报告2为诊断报告3周期报告')
        self.parser.add_argument('id', type=int, required=True, help='报告id不能为空')
        self.parser.add_argument('name', type=str, required=True, help='报告名称不能为空')
        args = self.parser.parse_args()
        args['ifa_id'] = g.ifa_id
        data = edit_report_name(args)
        resp = {
            "statusCode": "0000",
            "message": "成功",
            "attributes": data
        }
        return resp
pengxiong's avatar
pengxiong committed
81

pengxiong's avatar
pengxiong committed
82
    @login_require
pengxiong's avatar
pengxiong committed
83 84 85
    def delete(self, id):
        """."""
        pass
pengxiong's avatar
pengxiong committed
86 87 88 89 90 91 92 93 94


class ReportList(Resource):
    """报告列表."""

    def __init__(self):
        """."""
        self.parser = reqparse.RequestParser()

pengxiong's avatar
pengxiong committed
95
    @login_require
pengxiong's avatar
pengxiong committed
96 97 98 99 100 101 102 103 104
    def get(self):
        """获取我的报告列表."""
        self.parser.add_argument('type', type=int, required=True, help='0为全部1为持仓报告2为诊断报告3周期报告')
        self.parser.add_argument('name', type=str, required=False, help='报告名称或者客户姓名')
        self.parser.add_argument('pageNumber', type=int, required=True)
        self.parser.add_argument('pageSize', type=int, required=True)
        self.parser.add_argument('start_time', type=str, required=False)
        self.parser.add_argument('end_time', type=str, required=False)
        args = self.parser.parse_args()
pengxiong's avatar
pengxiong committed
105
        args['ifa_id'] = g.ifa_id
pengxiong's avatar
pengxiong committed
106 107 108 109 110 111 112 113
        data = get_report_list(args)
        resp = {
            "statusCode": "0000",
            "message": "成功",
            "attributes": data
        }
        return resp

pengxiong's avatar
pengxiong committed
114
    @login_require
pengxiong's avatar
pengxiong committed
115
    def post(self):
pengxiong's avatar
pengxiong committed
116
        """保存报告."""
pengxiong's avatar
pengxiong committed
117
        pass
pengxiong's avatar
pengxiong committed
118

pengxiong's avatar
pengxiong committed
119
    @login_require
pengxiong's avatar
pengxiong committed
120 121 122 123 124 125
    def put(self):
        """编辑报告."""
        self.parser.add_argument('type', type=int, required=True, help='1为持仓报告2为诊断报告3周期报告')
        self.parser.add_argument('id', type=int, required=True, help='报告id不能为空')
        self.parser.add_argument('report_data', type=str, required=True, help='报告数据不能为空')
        args = self.parser.parse_args()
pengxiong's avatar
pengxiong committed
126
        args['ifa_id'] = g.ifa_id
pengxiong's avatar
pengxiong committed
127 128 129 130 131 132 133 134
        data = edit_report(args)
        resp = {
            "statusCode": "0000",
            "message": "成功",
            "attributes": data
        }
        return resp

pengxiong's avatar
pengxiong committed
135
    @login_require
pengxiong's avatar
pengxiong committed
136 137 138 139 140
    def delete(self):
        """."""
        self.parser.add_argument('type', type=int, required=True, help='0为全部1为持仓报告2为诊断报告3周期报告')
        self.parser.add_argument('id', type=int, required=True, help='报告id不能为空')
        args = self.parser.parse_args()
pengxiong's avatar
pengxiong committed
141
        args['ifa_id'] = g.ifa_id
pengxiong's avatar
pengxiong committed
142 143 144 145 146 147
        delete_report(args)
        resp = {
            "statusCode": "0000",
            "message": "成功",
            "attributes": []
        }
pengxiong's avatar
pengxiong committed
148 149 150 151 152 153 154 155 156 157
        return resp


class FindReport(Resource):
    """."""

    def __init__(self):
        """."""
        self.parser = reqparse.RequestParser()

pengxiong's avatar
pengxiong committed
158
    @login_require
pengxiong's avatar
pengxiong committed
159 160 161 162 163
    def get(self):
        """获取单个报告."""
        self.parser.add_argument('type', type=int, required=True, help='1为持仓报告2为诊断报告3周期报告')
        self.parser.add_argument('id', type=str, required=False, help='')
        args = self.parser.parse_args()
pengxiong's avatar
pengxiong committed
164
        args['ifa_id'] = g.ifa_id
pengxiong's avatar
pengxiong committed
165 166 167 168 169 170
        data = get_one_report(args)
        resp = {
            "statusCode": "0000",
            "message": "成功",
            "attributes": data
        }
wang zhengwei's avatar
wang zhengwei committed
171 172 173 174 175 176 177 178 179 180 181 182 183
        return resp
    
class AppReportHandlers(Resource):
    """."""

    def __init__(self):
        """."""
        self.parser = reqparse.RequestParser()

    @login_require
    def get(self):
        """."""
        self.parser.add_argument('customer_id', type=str, required=True, help='customer_id不能为空')
184
        self.parser.add_argument('custom_time', type=str, required=True, help='custom_time不能为空')
wang zhengwei's avatar
wang zhengwei committed
185 186 187 188 189 190 191 192 193 194 195 196 197 198 199
        args = self.parser.parse_args()
        args['ifa_id'] = g.ifa_id
        # 默认模版制作持仓报告
        data = make_app_report(args)
        
        if data:
            url = data
            resp = {
                "code": 0,
                "data": data,
                "lang": "zh_CN",
                "msg": "成功"
            }
        else:
            resp = {
200
                "code": 8888,
wang zhengwei's avatar
wang zhengwei committed
201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217
                "data": '',
                "lang": "zh_CN",
                "msg": "失败"
            }
        return resp

    def post(self):
        """."""
        pass

    def put(self, id):
        """."""
        pass

    def delete(self, id):
        """."""
        pass