Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Sign in
Toggle navigation
F
fund_report
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Packages
Packages
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
彭熊
fund_report
Commits
57cd1e89
Commit
57cd1e89
authored
4 years ago
by
pengxiong
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
我的报告
parent
bdd373cc
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
11 changed files
with
9515 additions
and
2190 deletions
+9515
-2190
config.yaml
app/config/config.yaml
+2
-0
report.py
app/controller/report.py
+59
-1
template_manage.py
app/controller/template_manage.py
+14
-1
tamp_diagnose_app.py
app/model/tamp_diagnose_app.py
+77
-0
version1.py
app/router/version1.py
+1
-0
report_service.py
app/service/report_service.py
+83
-0
template_manage_service.py
app/service/template_manage_service.py
+23
-1
monthReportV2.1.html
app/templates/v2/monthReportV2.1.html
+1
-1
jinjia2html_v2.py
app/utils/jinjia2html_v2.py
+3
-2
fund_report.log
logs/fund_report.log
+9252
-0
fund_report_log.log
logs/fund_report_log.log
+0
-2184
No files found.
app/config/config.yaml
View file @
57cd1e89
...
...
@@ -28,6 +28,8 @@ test:
tamp_product_db
:
tamp_product
tamp_order_db
:
tamp_order
tamp_user_db
:
tamp_user
tamp_fund_db
:
tamp_fund
tamp_diagnose_app_db
:
tamp_diagnose_app
host
:
tools.caixiaoquan.com
port
:
3306
user
:
root
...
...
This diff is collapsed.
Click to expand it.
app/controller/report.py
View file @
57cd1e89
...
...
@@ -16,6 +16,7 @@ from flask import request, render_template
from
flask
import
make_response
from
app.api.engine
import
config
from
app.service.report_service
import
get_report_list
,
delete_report
from
app.service.template_manage_service
import
make_report
,
get_make_report_data
from
app.utils.html_to_pdf
import
html_to_pdf
from
app.api.engine
import
pdf_folder
,
redis
,
env
,
TAMP_SQL
,
tamp_diagnose_app_engine
...
...
@@ -50,7 +51,7 @@ class ReportHandlers(Resource):
return
resp
def
post
(
self
):
"""制作
模版
."""
"""制作
报告
."""
self
.
parser
.
add_argument
(
'customer_id'
,
type
=
str
,
required
=
True
,
help
=
'customer_id不能为空'
)
args
=
self
.
parser
.
parse_args
()
make_report
(
args
)
...
...
@@ -63,3 +64,60 @@ class ReportHandlers(Resource):
def
delete
(
self
,
id
):
"""."""
pass
class
ReportList
(
Resource
):
"""报告列表."""
def
__init__
(
self
):
"""."""
token
=
request
.
headers
.
get
(
'Authorization'
,
''
)
token
=
's:sid:'
+
token
.
split
(
' '
)[
1
]
ifa_id
=
redis
.
get
(
token
)
if
not
ifa_id
:
return
{
"code"
:
'9005'
,
"message"
:
"请登录"
,
"attributes"
:
[]}
self
.
ifa_id
=
ifa_id
.
decode
()
.
replace
(
'
\'
'
,
''
)
self
.
parser
=
reqparse
.
RequestParser
()
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
()
args
[
'ifa_id'
]
=
self
.
ifa_id
data
=
get_report_list
(
args
)
resp
=
{
"statusCode"
:
"0000"
,
"message"
:
"成功"
,
"attributes"
:
data
}
return
resp
def
post
(
self
):
"""制作报告."""
self
.
parser
.
add_argument
(
'customer_id'
,
type
=
str
,
required
=
True
,
help
=
'customer_id不能为空'
)
args
=
self
.
parser
.
parse_args
()
make_report
(
args
)
def
put
(
self
,
id
):
"""."""
pass
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
()
args
[
'ifa_id'
]
=
self
.
ifa_id
delete_report
(
args
)
resp
=
{
"statusCode"
:
"0000"
,
"message"
:
"成功"
,
"attributes"
:
[]
}
return
resp
\ No newline at end of file
This diff is collapsed.
Click to expand it.
app/controller/template_manage.py
View file @
57cd1e89
...
...
@@ -15,7 +15,7 @@ from app.api.engine import redis
from
app.config.default_template_params
import
hold_default_template
,
hold_default_data
,
diagnose_default_data
,
\
diagnose_default_template
from
app.service.template_manage_service
import
add_template
,
update_template
,
delete_template
,
get_template_list
,
\
get_default_template
get_default_template
,
set_default_template
from
app.utils.format_transfer
import
npEncoder
from
flask
import
jsonify
from
app.utils.jinjia2html_v2
import
DataIntegrate
...
...
@@ -127,3 +127,16 @@ class TemplateList(Resource):
"attributes"
:
data
}
return
resp
def
put
(
self
):
"""设置默认模版"""
self
.
parser
.
add_argument
(
'id'
,
type
=
str
,
required
=
True
,
help
=
'模版id'
)
args
=
self
.
parser
.
parse_args
()
args
[
'ifa_id'
]
=
self
.
ifa_id
data
=
set_default_template
(
args
)
resp
=
{
"statusCode"
:
"0000"
,
"message"
:
"成功"
,
"attributes"
:
data
}
return
resp
This diff is collapsed.
Click to expand it.
app/model/tamp_diagnose_app.py
View file @
57cd1e89
...
...
@@ -83,6 +83,7 @@ class FundReportManange(Base, BaseModel):
delete_tag
=
Column
(
INTEGER
(
2
),
server_default
=
text
(
"'0'"
))
name
=
Column
(
String
(
300
),
comment
=
'模版名称'
)
type
=
Column
(
INTEGER
(
2
),
comment
=
'模版类型1持仓报告2诊断报告'
)
default
=
Column
(
INTEGER
(
2
),
server_default
=
text
(
"'0'"
))
def
to_dict
(
self
,
allow_field
=
None
):
all_field
=
[
r
.
name
for
r
in
self
.
__table__
.
columns
]
...
...
@@ -122,6 +123,25 @@ class HoldDiagnoseReport(Base, BaseModel):
file
=
Column
(
String
(
128
))
be_viewed
=
Column
(
INTEGER
(
2
),
comment
=
'0未查看1已查看'
)
report_data
=
Column
(
Text
)
name
=
Column
(
String
(
100
))
def
to_dict
(
self
,
allow_field
=
None
):
all_field
=
[
r
.
name
for
r
in
self
.
__table__
.
columns
]
if
allow_field
:
allow_field
=
set
(
allow_field
)
&
set
(
allow_field
)
else
:
allow_field
=
all_field
data
=
{
c
:
int
(
getattr
(
self
,
c
)
.
timestamp
())
if
isinstance
(
getattr
(
self
,
c
),
datetime
.
datetime
)
else
getattr
(
self
,
c
)
for
c
in
allow_field
}
with
TAMP_SQL
(
tamp_user_engine
)
as
tamp_user
:
tamp_user_session
=
tamp_user
.
session
sql
=
"select ui_username_mp from user_info where id = '{}'"
.
format
(
self
.
ifa_id
)
res
=
tamp_user_session
.
execute
(
sql
)
sql2
=
"select customer_name from tamp_diagnose_app.customer_view where id = '{}'"
.
format
(
self
.
customer_id
)
res2
=
tamp_user_session
.
execute
(
sql2
)
data
[
'author_name'
]
=
res
.
fetchone
()[
0
]
data
[
'customer_name'
]
=
res2
.
fetchone
()[
0
]
data
[
'type'
]
=
2
return
data
class
HoldReport
(
Base
,
BaseModel
):
...
...
@@ -135,6 +155,63 @@ class HoldReport(Base, BaseModel):
file
=
Column
(
String
(
128
))
be_viewed
=
Column
(
INTEGER
(
2
),
comment
=
'0未查看1已查看'
)
report_data
=
Column
(
Text
)
name
=
Column
(
String
(
100
))
def
to_dict
(
self
,
allow_field
=
None
):
all_field
=
[
r
.
name
for
r
in
self
.
__table__
.
columns
]
if
allow_field
:
allow_field
=
set
(
allow_field
)
&
set
(
allow_field
)
else
:
allow_field
=
all_field
data
=
{
c
:
int
(
getattr
(
self
,
c
)
.
timestamp
())
if
isinstance
(
getattr
(
self
,
c
),
datetime
.
datetime
)
else
getattr
(
self
,
c
)
for
c
in
allow_field
}
with
TAMP_SQL
(
tamp_user_engine
)
as
tamp_user
:
tamp_user_session
=
tamp_user
.
session
sql
=
"select ui_username_mp from user_info where id = '{}'"
.
format
(
self
.
ifa_id
)
res
=
tamp_user_session
.
execute
(
sql
)
sql2
=
"select customer_name from tamp_diagnose_app.customer_view where id = '{}'"
.
format
(
self
.
customer_id
)
res2
=
tamp_user_session
.
execute
(
sql2
)
data
[
'author_name'
]
=
res
.
fetchone
()[
0
]
data
[
'customer_name'
]
=
res2
.
fetchone
()[
0
]
data
[
'type'
]
=
1
return
data
class
PeriodicReport
(
Base
,
BaseModel
):
__tablename__
=
'periodic_report'
id
=
Column
(
INTEGER
(
11
),
primary_key
=
True
)
customer_id
=
Column
(
String
(
64
))
ifa_id
=
Column
(
String
(
64
))
update_time
=
Column
(
DateTime
)
update_status
=
Column
(
INTEGER
(
11
))
file
=
Column
(
String
(
128
))
be_viewed
=
Column
(
INTEGER
(
2
),
comment
=
'0未查看1已查看'
)
report_data
=
Column
(
Text
)
name
=
Column
(
String
(
100
))
def
to_dict
(
self
,
allow_field
=
None
):
all_field
=
[
r
.
name
for
r
in
self
.
__table__
.
columns
]
if
allow_field
:
allow_field
=
set
(
allow_field
)
&
set
(
allow_field
)
else
:
allow_field
=
all_field
data
=
{
c
:
int
(
getattr
(
self
,
c
)
.
timestamp
())
if
isinstance
(
getattr
(
self
,
c
),
datetime
.
datetime
)
else
getattr
(
self
,
c
)
for
c
in
allow_field
}
with
TAMP_SQL
(
tamp_user_engine
)
as
tamp_user
:
tamp_user_session
=
tamp_user
.
session
sql
=
"select ui_username_mp from user_info where id = '{}'"
.
format
(
self
.
ifa_id
)
res
=
tamp_user_session
.
execute
(
sql
)
sql2
=
"select customer_name from tamp_diagnose_app.customer_view where id = '{}'"
.
format
(
self
.
customer_id
)
res2
=
tamp_user_session
.
execute
(
sql2
)
data
[
'author_name'
]
=
res
.
fetchone
()[
0
]
data
[
'customer_name'
]
=
res2
.
fetchone
()[
0
]
data
[
'type'
]
=
3
return
data
class
IfaCustomer
(
Base
,
BaseModel
):
...
...
This diff is collapsed.
Click to expand it.
app/router/version1.py
View file @
57cd1e89
...
...
@@ -13,6 +13,7 @@ from app.controller.template_manage import *
def
add_route
(
api
):
"""注册路由"""
api
.
add_resource
(
ReportHandlers
,
'/api/fund_report/report'
)
api
.
add_resource
(
ReportList
,
'/api/fund_report/reportlist'
)
api
.
add_resource
(
TemplateManage
,
'/api/template_manage'
)
api
.
add_resource
(
TemplateList
,
'/api/template_list'
)
api
.
add_resource
(
CustomerList
,
'/api/customer_list'
)
...
...
This diff is collapsed.
Click to expand it.
app/service/report_service.py
0 → 100644
View file @
57cd1e89
# -*- encoding: utf-8 -*-
# -----------------------------------------------------------------------------
# @File Name : report_service.py
# @Time : 2021/1/13 下午3:14
# @Author : X. Peng
# @Email : acepengxiong@163.com
# @Software : PyCharm
# -----------------------------------------------------------------------------
from
sqlalchemy
import
and_
# from sqlalchemy import union_all
from
app.api.engine
import
TAMP_SQL
,
tamp_diagnose_app_engine
from
app.model.tamp_diagnose_app
import
HoldReport
,
HoldDiagnoseReport
,
PeriodicReport
def
get_report_list
(
args
):
"""."""
type
=
args
.
get
(
'type'
)
ifa_id
=
args
.
get
(
'ifa_id'
)
pageNumber
=
args
[
'pageNumber'
]
pageSize
=
args
[
'pageSize'
]
start_time
=
args
.
get
(
'start_time'
)
end_time
=
args
.
get
(
'end_time'
)
offset
=
(
pageNumber
-
1
)
*
pageSize
res
=
[]
with
TAMP_SQL
(
tamp_diagnose_app_engine
)
as
tamp_diagnose_app
:
tamp_diagnose_session
=
tamp_diagnose_app
.
session
hold_report
=
tamp_diagnose_session
.
query
(
HoldReport
)
.
filter
(
and_
(
HoldReport
.
ifa_id
==
ifa_id
,
HoldReport
.
update_time
>=
start_time
,
HoldReport
.
update_time
<=
end_time
))
hold_diagnose_report
=
tamp_diagnose_session
.
query
(
HoldDiagnoseReport
)
.
filter
(
and_
(
HoldDiagnoseReport
.
ifa_id
==
ifa_id
,
HoldDiagnoseReport
.
update_time
>=
start_time
,
HoldDiagnoseReport
.
update_time
<=
end_time
))
periodic_report
=
tamp_diagnose_session
.
query
(
PeriodicReport
)
.
filter
(
and_
(
PeriodicReport
.
ifa_id
==
ifa_id
,
PeriodicReport
.
update_time
>=
start_time
,
PeriodicReport
.
update_time
<=
end_time
))
if
type
==
0
:
res
=
hold_report
.
union_all
(
hold_diagnose_report
)
.
union_all
(
periodic_report
)
elif
type
==
1
:
res
=
hold_report
elif
type
==
2
:
res
=
hold_diagnose_report
elif
type
==
3
:
res
=
periodic_report
totalSize
=
res
.
count
()
data
=
res
.
offset
(
offset
)
.
limit
(
pageSize
)
data
=
[
r
.
to_dict
()
for
r
in
data
]
return
{
'content'
:
data
,
'pageNum'
:
pageNumber
,
'pageSize'
:
pageSize
,
'totalSize'
:
totalSize
}
def
delete_report
(
args
):
"""."""
type
=
args
.
get
(
'type'
)
id
=
args
.
get
(
'id'
)
ifa_id
=
args
.
get
(
'ifa_id'
)
with
TAMP_SQL
(
tamp_diagnose_app_engine
)
as
tamp_diagnose_app
:
tamp_diagnose_session
=
tamp_diagnose_app
.
session
if
type
==
1
:
tamp_diagnose_session
.
query
(
HoldReport
)
.
filter
(
and_
(
HoldReport
.
ifa_id
==
ifa_id
,
HoldReport
.
id
==
id
))
.
delete
()
elif
type
==
2
:
tamp_diagnose_session
.
query
(
HoldDiagnoseReport
)
.
filter
(
and_
(
HoldDiagnoseReport
.
ifa_id
==
ifa_id
,
HoldDiagnoseReport
.
id
==
id
))
.
delete
()
elif
type
==
3
:
tamp_diagnose_session
.
query
(
PeriodicReport
)
.
filter
(
and_
(
PeriodicReport
.
ifa_id
==
ifa_id
,
PeriodicReport
.
id
==
id
))
.
delete
()
This diff is collapsed.
Click to expand it.
app/service/template_manage_service.py
View file @
57cd1e89
...
...
@@ -154,7 +154,7 @@ def get_template_list(args):
default_template
=
json
.
dumps
(
default_template
)
create_by
=
args
.
get
(
'ifa_id'
)
create_time
=
datetime
.
datetime
.
now
()
new_template
=
FundReportManange
(
id
=
id
,
ifa_id
=
args
.
get
(
'ifa_id'
),
name
=
name
,
default_template
=
default_template
,
type
=
t
,
create_by
=
create_by
,
create_time
=
create_time
)
new_template
=
FundReportManange
(
id
=
id
,
ifa_id
=
args
.
get
(
'ifa_id'
),
name
=
name
,
default_template
=
default_template
,
type
=
t
,
create_by
=
create_by
,
create_time
=
create_time
,
default
=
1
)
tamp_diagnose_session
.
add
(
new_template
)
res
=
tamp_diagnose_session
.
query
(
FundReportManange
)
.
filter
(
and_
(
*
conditions
...
...
@@ -197,6 +197,28 @@ def get_make_report_data(args):
return
data
def
set_default_template
(
args
):
"""."""
with
TAMP_SQL
(
tamp_diagnose_app_engine
)
as
tamp_diagnose_app
:
tamp_diagnose_session
=
tamp_diagnose_app
.
session
res
=
tamp_diagnose_session
.
query
(
FundReportManange
)
.
filter
(
and_
(
FundReportManange
.
id
==
args
.
get
(
'id'
),
FundReportManange
.
delete_tag
==
0
,
FundReportManange
.
ifa_id
==
args
.
get
(
'ifa_id'
)
))
if
not
res
:
return
False
tamp_diagnose_session
.
query
(
FundReportManange
)
.
update
({
'default'
:
0
})
r
=
res
.
update
({
'default'
:
1
})
if
r
>
0
:
return
True
return
False
def
make_report
(
args
):
"""制作报告."""
pdf_name
=
str
(
uuid
.
uuid4
())
+
'.pdf'
...
...
This diff is collapsed.
Click to expand it.
app/templates/v2/monthReportV2.1.html
View file @
57cd1e89
...
...
@@ -1878,7 +1878,7 @@
<div
class=
"tss3"
style=
"display: {{box6_section2}}"
>
<div
class=
"tss3_head dtable"
>
<div
class=
"tss3_title dcell"
>
指标对比
<span
class=
"tss3_start_time"
>
(起始日期
2019-11-06
)
</span>
指标对比
<span
class=
"tss3_start_time"
>
(起始日期
{{start_date}}
)
</span>
</div>
<div
class=
"tss3_now_time dcell"
>
截止日:最新净值日({{latest_worth_day}})
...
...
This diff is collapsed.
Click to expand it.
app/utils/jinjia2html_v2.py
View file @
57cd1e89
import
sys
import
time
import
uuid
...
...
@@ -313,8 +314,8 @@ class DataIntegrate:
if
__name__
==
'__main__'
:
start
=
time
.
time
()
dt
=
DataIntegrate
(
ifa_id
=
'USER_INFO15917850824287'
,
customer_id
=
'6716613802534121472'
,
type
=
1
)
dt
=
DataIntegrate
(
ifa_id
=
'USER_INFO15917850824287'
,
customer_id
=
'6716613802534121472'
,
type
=
2
)
data
=
dt
.
get_template_data
()
print
(
sys
.
getsizeof
(
data
)
*
8
)
# dt.render_data()
print
(
'耗时{}秒'
.
format
(
round
(
time
.
time
()
-
start
,
2
)))
This diff is collapsed.
Click to expand it.
logs/fund_report.log
0 → 100644
View file @
57cd1e89
This diff is collapsed.
Click to expand it.
logs/fund_report_log.log
deleted
100644 → 0
View file @
bdd373cc
This source diff could not be displayed because it is too large. You can
view the blob
instead.
This diff is collapsed.
Click to expand it.
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment