1
2
3
4
5
6
7
8
9
10
11
12
13
14
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
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
# -*- encoding: utf-8 -*-
# -----------------------------------------------------------------------------
# @File Name : report_service.py
# @Time : 2021/1/13 下午3:14
# @Author : X. Peng
# @Email : acepengxiong@163.com
# @Software : PyCharm
# -----------------------------------------------------------------------------
import datetime
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()
def get_one_report(args):
"""."""
id = args.get('id')
type = args.get('type')
ifa_id = args.get('ifa_id')
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.id == id,
HoldReport.ifa_id == ifa_id,
))
hold_diagnose_report = tamp_diagnose_session.query(HoldDiagnoseReport).filter(and_(
HoldDiagnoseReport.id == id,
HoldDiagnoseReport.ifa_id == ifa_id,
))
periodic_report = tamp_diagnose_session.query(PeriodicReport).filter(and_(
PeriodicReport.id == id,
PeriodicReport.ifa_id == ifa_id,
))
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
data = [r.to_dict() for r in res]
return data
def edit_report(args):
"""编辑报告"""
id = args.get('id')
type = args.get('type')
ifa_id = args.get('ifa_id')
report_data = args.get('report_data')
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.id == id,
HoldReport.ifa_id == ifa_id,
))
hold_diagnose_report = tamp_diagnose_session.query(HoldDiagnoseReport).filter(and_(
HoldDiagnoseReport.id == id,
HoldDiagnoseReport.ifa_id == ifa_id,
))
periodic_report = tamp_diagnose_session.query(PeriodicReport).filter(and_(
PeriodicReport.id == id,
PeriodicReport.ifa_id == ifa_id,
))
if type == 1:
res = hold_report
elif type == 2:
res = hold_diagnose_report
elif type == 3:
res = periodic_report
if not res:
return False
r = res.update({
'report_data': report_data,
'update_time': datetime.datetime.now()
})
if r > 0:
return True
return False