Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
M
mancheng
Overview
Overview
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
Wiki
Wiki
Snippets
Snippets
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Administrator
mancheng
Commits
f9f5e843
Commit
f9f5e843
authored
Nov 26, 2022
by
dong
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
fix20221126
parent
88aa9901
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
835 additions
and
723 deletions
+835
-723
apps/inves_manage/project_manager.py
+422
-38
apps/inves_manage/statistic_analysis_view.py
+388
-672
apps/models.py
+25
-13
No files found.
apps/inves_manage/project_manager.py
View file @
f9f5e843
...
...
@@ -3,6 +3,7 @@ import time
import
oss2
import
requests
import
sqlalchemy
import
xlrd
import
xlwt
from
dateutil.relativedelta
import
relativedelta
...
...
@@ -129,7 +130,7 @@ def check_project_detail1():
if
not
project_id
:
return
jsonify
(
code
=
RET
.
PARAMERR
,
msg
=
"参数不能为空!"
)
try
:
project_obj
=
ProjectManagement
.
query
.
filter_by
(
id
=
project_id
)
.
first
()
project_obj
=
ProjectManagement
.
query
.
filter_by
(
id
=
project_id
,
is_delete
=
0
)
.
first
()
project_data
=
{
"id"
:
project_obj
.
id
,
"project_stalker"
:
project_obj
.
project_stalker
,
# 项目跟踪
"project_name"
:
project_obj
.
project_name
,
# 项目名称
...
...
@@ -241,7 +242,7 @@ def upload_project_data2():
# del (row_content[0])
project_name
=
row_content
[
1
]
# 项目名称
# 判断该项目是否已经存在
project_obj
=
ProjectManagement
.
query
.
filter_by
(
project_name
=
project_name
)
.
first
()
project_obj
=
ProjectManagement
.
query
.
filter_by
(
project_name
=
project_name
,
is_delete
=
0
)
.
first
()
if
project_obj
:
rep_num
+=
1
rep_project_name_list
.
append
(
project_name
)
...
...
@@ -369,7 +370,7 @@ def batch_export_project5():
target_data_list
=
[]
for
select_id
in
select_id_list
:
try
:
project_obj
=
ProjectManagement
.
query
.
filter_by
(
id
=
select_id
)
.
first
()
project_obj
=
ProjectManagement
.
query
.
filter_by
(
id
=
select_id
,
is_delete
=
0
)
.
first
()
# 提取数据,写入xslx表格
data_list
=
[]
project_num
=
project_obj
.
project_num
...
...
@@ -490,7 +491,7 @@ def batch_delete1():
try
:
for
select_id
in
delete_id_list
:
project_obj_list
=
ProjectManagement
.
query
.
filter_by
(
id
=
select_id
)
.
all
()
project_obj_list
=
ProjectManagement
.
query
.
filter_by
(
id
=
select_id
,
is_delete
=
0
)
.
all
()
if
not
project_obj_list
:
return
jsonify
(
code
=
RET
.
DBERR
,
msg
=
"数据不存在!"
)
for
project_obj
in
project_obj_list
:
...
...
@@ -562,7 +563,7 @@ def project_edit():
current_app
.
logger
.
error
(
e
)
return
jsonify
(
code
=
RET
.
SESSIONERR
,
msg
=
"进行编辑项目信息操作时用户信息校验失败,请重新登陆后尝试!"
)
try
:
project_obj
=
ProjectManagement
.
query
.
get
(
project_id
)
project_obj
=
ProjectManagement
.
query
.
filter_by
(
id
=
project_id
,
is_delete
=
0
)
.
first
(
)
if
not
project_obj
:
return
jsonify
(
code
=
RET
.
NODATA
,
msg
=
'查无此项目!'
)
project_obj
.
project_stalker
=
project_stalker
...
...
@@ -723,7 +724,7 @@ def upload_shanxi_data():
return
jsonify
(
code
=
RET
.
PARAMERR
,
msg
=
'区县名称不能为空!'
)
try
:
target_obj
=
ShanxiTarget
.
query
.
filter_by
(
district_name
=
district_name
,
data_time
=
data_time
)
.
first
()
target_obj
=
ShanxiTarget
.
query
.
filter_by
(
district_name
=
district_name
,
data_time
=
data_time
,
is_delete
=
0
)
.
first
()
if
target_obj
:
# 更新
# target_obj.file_name = target_obj.data_time + '全省数据'
target_obj
.
data_time
=
data_time
...
...
@@ -796,7 +797,10 @@ def shanxi_data_list():
year
=
req_dic
[
'year'
]
current_year
=
datetime
.
now
()
.
year
try
:
target_obj_list
=
ShanxiTarget
.
query
.
filter
(
ShanxiTarget
.
data_time
.
like
(
'
%
{}
%
'
.
format
(
year
)
if
year
else
current_year
))
.
all
()
target_obj_list
=
ShanxiTarget
.
query
.
filter
(
ShanxiTarget
.
data_time
.
like
(
'
%
{}
%
'
.
format
(
year
)
if
year
else
current_year
),
ShanxiTarget
.
is_delete
==
0
)
.
all
()
data_time_set
=
set
(
target_obj
.
data_time
for
target_obj
in
target_obj_list
)
# 收集上传周期
...
...
@@ -843,7 +847,7 @@ def add_shanxi_data():
arrive_target_money
=
data
[
'arrive_target_money'
]
# 目标资金到位
arrive_finish_rate
=
data
[
'arrive_finish_rate'
]
# 计划投资额完成率
try
:
target_obj
=
ShanxiTarget
.
query
.
filter_by
(
district_name
=
district_name
,
data_time
=
data_time
)
.
first
()
target_obj
=
ShanxiTarget
.
query
.
filter_by
(
district_name
=
district_name
,
data_time
=
data_time
,
is_delete
=
0
)
.
first
()
if
target_obj
:
# 更新
target_obj
.
data_time
=
data_time
target_obj
.
upload_time
=
upload_time
...
...
@@ -903,7 +907,7 @@ def shanxi_data_detail():
req_dic
=
request
.
get_json
()
data_time
=
req_dic
[
"data_time"
]
try
:
target_obj_li
=
ShanxiTarget
.
query
.
filter_by
(
data_time
=
data_time
)
.
all
()
target_obj_li
=
ShanxiTarget
.
query
.
filter_by
(
data_time
=
data_time
,
is_delete
=
0
)
.
all
()
data
=
[{
"data_time"
:
target_obj
.
data_time
,
"upload_time"
:
target_obj
.
upload_time
,
...
...
@@ -947,7 +951,7 @@ def download_shanxi_data():
return
jsonify
(
code
=
RET
.
PARAMERR
,
msg
=
"参数不能为空!"
)
target_data_list
=
[]
try
:
target_obj_li
=
ShanxiTarget
.
query
.
filter_by
(
data_time
=
data_time
)
.
all
()
target_obj_li
=
ShanxiTarget
.
query
.
filter_by
(
data_time
=
data_time
,
is_delete
=
0
)
.
all
()
for
target_obj
in
target_obj_li
:
# 提取数据,写入xslx表格
data_list
=
[]
...
...
@@ -1020,7 +1024,7 @@ def delete_shanxi_data():
req_dic
=
request
.
get_json
()
data_time
=
req_dic
[
"data_time"
]
try
:
target_obj_li
=
ShanxiTarget
.
query
.
filter_by
(
data_time
=
data_time
)
.
all
()
target_obj_li
=
ShanxiTarget
.
query
.
filter_by
(
data_time
=
data_time
,
is_delete
=
0
)
.
all
()
for
target_obj
in
target_obj_li
:
target_obj
.
is_delete
=
1
db
.
session
.
commit
()
...
...
@@ -1052,7 +1056,7 @@ def upload_jc_data():
print
(
file
.
filename
)
# 打印文件名
upload_time
=
datetime
.
now
()
.
strftime
(
"
%
Y-
%
m-
%
d
%
H:
%
M:
%
S"
)
current_year
=
str
(
datetime
.
now
()
.
year
)
+
'年'
#
current_year = str(datetime.now().year) + '年'
try
:
f
=
file
.
read
()
# 文件内容
...
...
@@ -1089,10 +1093,10 @@ def upload_jc_data():
return
jsonify
(
code
=
RET
.
PARAMERR
,
msg
=
'区县名称不能为空!'
)
try
:
target_obj
=
JcTarget
.
query
.
filter_by
(
district_name
=
district_name
,
year
=
year
)
.
first
()
target_obj
=
JcTarget
.
query
.
filter_by
(
district_name
=
district_name
,
year
=
year
,
is_delete
=
0
)
.
first
()
if
target_obj
:
# 更新
target_obj
.
file_name
=
current_
year
+
'年度目标数据'
target_obj
.
year
=
current_
year
# target_obj.file_name =
year + '年度目标数据'
# target_obj.year =
year
target_obj
.
upload_time
=
upload_time
target_obj
.
upload_unit
=
user_unity
target_obj
.
upload_people
=
user_name
...
...
@@ -1108,9 +1112,9 @@ def upload_jc_data():
else
:
# 写入数据库
target_obj
=
JcTarget
(
file_name
=
current_
year
+
'年度目标数据'
,
file_name
=
year
+
'年度目标数据'
,
is_delete
=
0
,
year
=
current_
year
,
year
=
year
,
upload_time
=
upload_time
,
upload_unit
=
user_unity
,
upload_people
=
user_name
,
...
...
@@ -1152,7 +1156,7 @@ def add_jc_data():
req_dic
=
request
.
get_json
()
data_list
=
req_dic
[
"data_list"
]
upload_time
=
datetime
.
now
()
.
strftime
(
"
%
Y-
%
m-
%
d
%
H:
%
M:
%
S"
)
current_year
=
str
(
datetime
.
now
()
.
year
)
+
'年'
#
current_year = str(datetime.now().year) + '年'
for
data
in
data_list
:
year
=
data
[
'year'
]
# 所属年份
...
...
@@ -1163,7 +1167,7 @@ def add_jc_data():
money_arrive_target1
=
data
[
'money_arrive_target1'
]
# 固定资产投资项目资金到位额
money_arrive_target0
=
data
[
'money_arrive_target0'
]
# 非固定资产投资项目资金到位额
try
:
target_obj
=
JcTarget
.
query
.
filter_by
(
district_name
=
district_name
,
year
=
year
)
.
first
()
target_obj
=
JcTarget
.
query
.
filter_by
(
district_name
=
district_name
,
year
=
year
,
is_delete
=
0
)
.
first
()
if
target_obj
:
# 更新
target_obj
.
district_name
=
district_name
target_obj
.
money_sign
=
money_sign
...
...
@@ -1173,9 +1177,10 @@ def add_jc_data():
target_obj
.
money_arrive_target0
=
money_arrive_target0
db
.
session
.
commit
()
else
:
target_obj
=
Shanxi
Target
(
target_obj
=
Jc
Target
(
is_delete
=
0
,
year
=
current_year
,
file_name
=
year
+
'年度目标数据'
,
year
=
year
,
upload_time
=
upload_time
,
upload_unit
=
user_unity
,
upload_people
=
user_name
,
...
...
@@ -1216,12 +1221,12 @@ def jc_data_list():
JcTarget
.
year
.
like
(
'
%
{}
%
'
.
format
(
str
(
year
))
if
year
else
text
(
''
)),
JcTarget
.
is_delete
==
0
)
.
all
()
data_time
_set
=
set
(
target_obj
.
year
for
target_obj
in
target_obj_list
)
year
_set
=
set
(
target_obj
.
year
for
target_obj
in
target_obj_list
)
# 收集上传周期
data_li
=
[]
for
data_time
in
list
(
data_time
_set
):
target_obj
=
JcTarget
.
query
.
filter_by
(
year
=
year
)
.
first
()
for
year
in
list
(
year
_set
):
target_obj
=
JcTarget
.
query
.
filter_by
(
year
=
year
,
is_delete
=
0
)
.
first
()
data
=
{
"year"
:
target_obj
.
year
,
"file_name"
:
target_obj
.
file_name
,
"upload_time"
:
target_obj
.
upload_time
,
...
...
@@ -1235,8 +1240,7 @@ def jc_data_list():
return
jsonify
(
code
=
RET
.
DBERR
,
msg
=
"查询数据库错误!"
)
# 详情数据列表(某周期山西各地市指标数据列表展示)
# 详情数据列表(某周期晋城各地市指标数据列表展示)
@api_manage.route
(
"/JcDataDetail"
,
methods
=
[
"POST"
])
def
jc_data_detail
():
token
=
request
.
headers
[
'token'
]
...
...
@@ -1248,24 +1252,25 @@ def jc_data_detail():
current_app
.
logger
.
error
(
e
)
return
jsonify
(
code
=
RET
.
SESSIONERR
,
msg
=
"进行操作时用户信息校验失败,请重新登陆后尝试!"
)
req_dic
=
request
.
get_json
()
data_time
=
req_dic
[
"data_time
"
]
year
=
req_dic
[
"year
"
]
try
:
target_obj_li
=
ShanxiTarget
.
query
.
filter_by
(
data_time
=
data_time
)
.
all
()
target_obj_li
=
JcTarget
.
query
.
filter_by
(
year
=
year
,
is_delete
=
0
)
.
all
()
data
=
[{
"
data_time"
:
target_obj
.
data_time
,
"
year"
:
target_obj
.
year
,
"upload_time"
:
target_obj
.
upload_time
,
"upload_unit"
:
target_obj
.
upload_unit
,
"upload_people"
:
target_obj
.
upload_people
,
"grade_sign"
:
target_obj
.
grade_sign
,
"grade_start"
:
target_obj
.
grade_start
,
"grade_plan_invest"
:
target_obj
.
grade_plan_invest
,
"grade_arrive_target1"
:
target_obj
.
grade_arrive_target1
,
"grade_arrive_target0"
:
target_obj
.
grade_arrive_target0
,
"district_name"
:
target_obj
.
district_name
,
"sign_money"
:
target_obj
.
sign_money
,
"sign_target_money"
:
target_obj
.
sign_target_money
,
"sign_finish_rate"
:
target_obj
.
sign_finish_rate
,
"plan_invest_money"
:
target_obj
.
plan_invest_money
,
"plan_target_money"
:
target_obj
.
plan_target_money
,
"plan_finish_rate"
:
target_obj
.
plan_finish_rate
,
"arrive_money"
:
target_obj
.
arrive_money
,
"arrive_target_money"
:
target_obj
.
arrive_target_money
,
"arrive_finish_rate"
:
target_obj
.
arrive_finish_rate
,
"money_sign"
:
target_obj
.
money_sign
,
"rate_start"
:
target_obj
.
rate_start
,
"money_plan_invest"
:
target_obj
.
money_plan_invest
,
"money_arrive_target1"
:
target_obj
.
money_arrive_target1
,
"money_arrive_target0"
:
target_obj
.
money_arrive_target0
}
for
target_obj
in
target_obj_li
]
return
jsonify
(
code
=
RET
.
OK
,
data
=
data
,
msg
=
"获取成功!"
)
except
Exception
as
e
:
...
...
@@ -1275,17 +1280,396 @@ def jc_data_detail():
return
jsonify
(
code
=
RET
.
DBERR
,
msg
=
"数据库异常"
)
# 删除某时间周期的数据
@api_manage.route
(
"/DeleteJcData"
,
methods
=
[
"POST"
])
def
delete_jc_data
():
token
=
request
.
headers
[
'token'
]
try
:
user_obj
=
verify_token
(
token
)
except
Exception
as
e
:
current_app
.
logger
.
error
(
e
)
return
jsonify
(
code
=
RET
.
SESSIONERR
,
msg
=
"进行操作时用户信息校验失败,请重新登陆后尝试!"
)
req_dic
=
request
.
get_json
()
year
=
req_dic
[
"year"
]
try
:
target_obj_li
=
JcTarget
.
query
.
filter_by
(
year
=
year
,
is_delete
=
0
)
.
all
()
for
target_obj
in
target_obj_li
:
target_obj
.
is_delete
=
1
db
.
session
.
commit
()
continue
return
jsonify
(
code
=
RET
.
OK
,
msg
=
"删除成功!"
)
except
Exception
as
e
:
db
.
session
.
rollback
()
current_app
.
logger
.
error
(
e
)
return
jsonify
(
code
=
RET
.
DBERR
,
msg
=
"查询数据库错误!"
)
# 下载数据详情
@api_manage.route
(
"/DownloadJcData"
,
methods
=
[
"POST"
])
def
download_jc_data
():
token
=
request
.
headers
[
'token'
]
try
:
user_obj
=
verify_token
(
token
)
except
Exception
as
e
:
current_app
.
logger
.
error
(
e
)
return
jsonify
(
code
=
RET
.
SESSIONERR
,
msg
=
"进行操作时用户信息校验失败,请重新登陆后尝试!"
)
req_dic
=
request
.
get_json
()
year
=
req_dic
[
"year"
]
path
=
'./apps/statics/project_file/'
# pro_path = 'http://39.100.39.50:8008/aaa_statics/project_file/' # 项目路径
pro_path
=
'http://192.168.1.4:5000/statics/project_file/'
# 项目路径
if
not
year
:
return
jsonify
(
code
=
RET
.
PARAMERR
,
msg
=
"参数不能为空!"
)
target_data_list
=
[]
try
:
target_obj_li
=
JcTarget
.
query
.
filter_by
(
year
=
year
,
is_delete
=
0
)
.
all
()
for
target_obj
in
target_obj_li
:
# 提取数据,写入xslx表格
data_list
=
[]
district_name
=
target_obj
.
district_name
data_list
.
append
(
district_name
)
# 区县名称
money_sign
=
target_obj
.
money_sign
data_list
.
append
(
money_sign
)
# 签约项目金额
rate_start
=
target_obj
.
rate_start
data_list
.
append
(
rate_start
)
# 项目开工率
money_plan_invest
=
target_obj
.
money_plan_invest
data_list
.
append
(
money_plan_invest
)
# 新开工固定资产投资项目计划投资额
money_arrive_target1
=
target_obj
.
money_arrive_target1
data_list
.
append
(
money_arrive_target1
)
# 固定资产投资项目资金到位额
money_arrive_target0
=
target_obj
.
money_arrive_target0
data_list
.
append
(
money_arrive_target0
)
# 非固定资产投资项目资金到位额
target_data_list
.
append
(
data_list
)
except
Exception
as
e
:
current_app
.
logger
.
error
(
e
)
return
jsonify
(
code
=
RET
.
DBERR
,
msg
=
"数据库查询错误!"
)
head_list
=
''
sheet
=
''
try
:
sheet_name_titles
=
{
"sheet1"
:
[
"县(市、区)、开发区"
,
"年度目标(亿元)"
,
"开工率年度目标"
,
"年度目标(亿元)"
,
"年度目标(亿元)"
,
"年度目标(亿元)"
]}
excel
=
xlwt
.
Workbook
(
encoding
=
'utf-8'
)
# 写入表头
for
i
in
range
(
len
(
sheet_name_titles
)):
for
k
,
v
in
sheet_name_titles
.
items
():
sheet_name
=
k
sheet
=
excel
.
add_sheet
(
sheet_name
)
head_list
=
v
print
(
head_list
)
for
j
in
range
(
len
(
head_list
)):
sheet
.
write
(
0
,
j
,
head_list
[
j
])
# 写入数据,从第二行(i+1)
rows
=
len
(
target_data_list
)
cols
=
len
(
head_list
)
for
i
in
range
(
rows
):
for
j
in
range
(
cols
):
sheet
.
write
(
i
+
1
,
j
,
target_data_list
[
i
][
j
])
time_stamp
=
'{0:
%
Y
%
m
%
d
%
H
%
M
%
S}'
.
format
(
datetime
.
now
())
file_name
=
"晋城市及县区年度目标表{}.xlsx"
.
format
(
time_stamp
)
excel
.
save
(
path
+
file_name
)
return
jsonify
(
code
=
RET
.
OK
,
url
=
pro_path
+
file_name
,
msg
=
"导出/下载成功!"
)
except
Exception
as
e
:
current_app
.
logger
.
error
(
e
)
return
jsonify
(
code
=
RET
.
DBERR
,
msg
=
"批量导出操作失败!"
)
"""固定资产投资项目资金到位"""
# 上传山西省地市指标
@api_manage.route
(
"/UploadMoneyArrive"
,
methods
=
[
"POST"
])
def
upload_money_arrive
():
token
=
request
.
headers
[
'token'
]
try
:
user_obj
=
verify_token
(
token
)
user_name
=
user_obj
.
real_name
user_unity
=
user_obj
.
belong_organization
except
Exception
as
e
:
current_app
.
logger
.
error
(
e
)
return
jsonify
(
code
=
RET
.
SESSIONERR
,
msg
=
"进行操作时用户信息校验失败,请重新登陆后尝试!"
)
# 上传的文件
file
=
request
.
files
[
'file'
]
print
(
file
.
filename
)
# 打印文件名
data_time
=
request
.
form
[
'data_time'
]
# file_name = file.filename
upload_time
=
datetime
.
now
()
.
strftime
(
"
%
Y-
%
m-
%
d
%
H:
%
M:
%
S"
)
try
:
f
=
file
.
read
()
# 文件内容
data
=
xlrd
.
open_workbook
(
file_contents
=
f
)
table
=
data
.
sheets
()[
0
]
names
=
data
.
sheet_names
()
# 返回book中所有工作表的名字
status
=
data
.
sheet_loaded
(
names
[
0
])
# 检查sheet1是否导入完毕
print
(
status
)
nrows
=
table
.
nrows
# 获取该sheet中的有效行数
except
Exception
as
e
:
current_app
.
logger
.
error
(
e
)
return
jsonify
(
code
=
RET
.
THIRDERR
,
msg
=
"读取文件失败!"
)
success_num
=
0
row_list
=
[
table
.
row_values
(
i
)
for
i
in
range
(
3
,
nrows
)]
for
i
in
range
(
0
,
len
(
row_list
)):
row_content
=
row_list
[
i
]
if
not
row_content
:
return
jsonify
(
code
=
RET
.
NODATA
,
msg
=
"表格内无有效数据!请尝试 <清空浏览器缓存> 后下载最新模板,根据模板提示信息编辑数据后再次上传。(注:第三行为首行有效数据不能为空、第一行和第二行无法读取。)"
)
try
:
district_name
=
row_content
[
0
]
# 区县名称
arrive_money
=
row_content
[
1
]
# 到位金额
except
Exception
as
e
:
# 表示操作失败,回滚数据库操作
current_app
.
logger
.
error
(
e
)
return
jsonify
(
code
=
RET
.
DBERR
,
msg
=
"数据异常!请尝试 <清空浏览器缓存> 后下载最新模板,根据模板提示信息编辑数据后再次上传。"
)
if
not
district_name
:
return
jsonify
(
code
=
RET
.
PARAMERR
,
msg
=
'区县名称不能为空!'
)
try
:
target_obj
=
MoneyArrive
.
query
.
filter_by
(
district_name
=
district_name
,
data_time
=
data_time
,
is_delete
=
0
)
.
first
()
if
target_obj
:
# 更新
# target_obj.file_name = target_obj.data_time + '固投资金到位情况'
target_obj
.
data_time
=
data_time
target_obj
.
upload_time
=
upload_time
target_obj
.
upload_unit
=
user_unity
target_obj
.
upload_people
=
user_name
target_obj
.
district_name
=
district_name
target_obj
.
arrive_money
=
arrive_money
db
.
session
.
commit
()
success_num
+=
1
continue
else
:
# 写入数据库
target_obj
=
ShanxiTarget
(
file_name
=
data_time
+
'固投资金到位情况'
,
is_delete
=
0
,
data_time
=
data_time
,
upload_time
=
upload_time
,
upload_unit
=
user_unity
,
upload_people
=
user_name
,
district_name
=
district_name
,
arrive_money
=
arrive_money
)
db
.
session
.
add
(
target_obj
)
db
.
session
.
commit
()
success_num
+=
1
continue
except
Exception
as
e
:
# 表示操作失败,回滚数据库操作
db
.
session
.
rollback
()
current_app
.
logger
.
error
(
e
)
return
jsonify
(
code
=
RET
.
DBERR
,
msg
=
"数据库异常"
)
if
success_num
>
0
:
return
jsonify
(
code
=
RET
.
OK
,
msg
=
'上传成功!数据上传 {} 条数据'
.
format
(
success_num
))
else
:
return
jsonify
(
code
=
RET
.
DATAERR
,
msg
=
'无新数据上传。'
)
# 概览数据列表(山西指标上传页数据列表展示)
@api_manage.route
(
"/MoneyArriveList"
,
methods
=
[
"POST"
])
def
money_arrive_list
():
token
=
request
.
headers
[
'token'
]
try
:
user_obj
=
verify_token
(
token
)
# user_name = user_obj.real_name
# user_unity = user_obj.belong_organization
except
Exception
as
e
:
current_app
.
logger
.
error
(
e
)
return
jsonify
(
code
=
RET
.
SESSIONERR
,
msg
=
"进行操作时用户信息校验失败,请重新登陆后尝试!"
)
req_dic
=
request
.
get_json
()
year
=
req_dic
[
'year'
]
current_year
=
datetime
.
now
()
.
year
try
:
target_obj_list
=
MoneyArrive
.
query
.
filter
(
MoneyArrive
.
data_time
.
like
(
'
%
{}
%
'
.
format
(
year
)
if
year
else
current_year
),
MoneyArrive
.
is_delete
==
0
)
.
all
()
data_time_set
=
set
(
target_obj
.
data_time
for
target_obj
in
target_obj_list
)
# 收集上传周期
data_li
=
[]
for
data_time
in
list
(
data_time_set
):
target_obj
=
MoneyArrive
.
query
.
filter_by
(
data_time
=
data_time
,
is_delete
=
0
)
.
first
()
data
=
{
"file_name"
:
target_obj
.
file_name
,
"data_time"
:
target_obj
.
data_time
,
"upload_time"
:
target_obj
.
upload_time
,
"upload_unit"
:
target_obj
.
upload_unit
,
"upload_people"
:
target_obj
.
upload_people
}
data_li
.
append
(
data
)
return
jsonify
(
code
=
RET
.
OK
,
data
=
data_li
,
msg
=
'获取成功!'
)
except
Exception
as
e
:
db
.
session
.
rollback
()
current_app
.
logger
.
error
(
e
)
return
jsonify
(
code
=
RET
.
DBERR
,
msg
=
"查询数据库错误!"
)
# 新增/编辑山西指标上传页数据
@api_manage.route
(
"/AddEditMoneyArrive"
,
methods
=
[
"POST"
])
def
add_edit_money_arrive
():
token
=
request
.
headers
[
'token'
]
try
:
user_obj
=
verify_token
(
token
)
user_name
=
user_obj
.
real_name
user_unity
=
user_obj
.
belong_organization
except
Exception
as
e
:
current_app
.
logger
.
error
(
e
)
return
jsonify
(
code
=
RET
.
SESSIONERR
,
msg
=
"进行操作时用户信息校验失败,请重新登陆后尝试!"
)
req_dic
=
request
.
get_json
()
data_list
=
req_dic
[
"data_list"
]
upload_time
=
datetime
.
now
()
.
strftime
(
"
%
Y-
%
m-
%
d
%
H:
%
M:
%
S"
)
for
data
in
data_list
:
data_time
=
data
[
'data_time'
]
# 数据年份
district_name
=
data
[
'district_name'
]
# 区县名称
money_arrive
=
data
[
'money_arrive'
]
# 签约金额
try
:
target_obj
=
MoneyArrive
.
query
.
filter_by
(
district_name
=
district_name
,
data_time
=
data_time
,
is_selete
=
0
)
.
first
()
if
target_obj
:
# 更新
target_obj
.
data_time
=
data_time
target_obj
.
upload_time
=
upload_time
target_obj
.
upload_unit
=
user_unity
target_obj
.
upload_people
=
user_name
target_obj
.
district_name
=
district_name
target_obj
.
money_arrive
=
money_arrive
db
.
session
.
commit
()
else
:
target_obj
=
MoneyArrive
(
is_delete
=
0
,
data_time
=
data_time
,
upload_time
=
upload_time
,
upload_unit
=
user_unity
,
upload_people
=
user_name
,
district_name
=
district_name
,
money_arrive
=
money_arrive
,
)
db
.
session
.
add
(
target_obj
)
db
.
session
.
commit
()
continue
except
Exception
as
e
:
# 表示操作失败,回滚数据库操作
db
.
session
.
rollback
()
current_app
.
logger
.
error
(
e
)
return
jsonify
(
code
=
RET
.
DBERR
,
msg
=
"数据库异常,新增失败!"
)
return
jsonify
(
code
=
RET
.
OK
,
msg
=
'新增成功!'
)
# 详情数据列表(某周期山西各地市指标数据列表展示)
@api_manage.route
(
"/MoneyArriveDetail"
,
methods
=
[
"POST"
])
def
arrive_money_detail
():
token
=
request
.
headers
[
'token'
]
try
:
user_obj
=
verify_token
(
token
)
user_name
=
user_obj
.
real_name
user_unity
=
user_obj
.
belong_organization
except
Exception
as
e
:
current_app
.
logger
.
error
(
e
)
return
jsonify
(
code
=
RET
.
SESSIONERR
,
msg
=
"进行操作时用户信息校验失败,请重新登陆后尝试!"
)
req_dic
=
request
.
get_json
()
data_time
=
req_dic
[
"data_time"
]
try
:
target_obj_li
=
MoneyArrive
.
query
.
filter_by
(
data_time
=
data_time
,
is_delete
=
0
)
.
all
()
data
=
[{
"data_time"
:
target_obj
.
data_time
,
"upload_time"
:
target_obj
.
upload_time
,
"upload_unit"
:
target_obj
.
upload_unit
,
"upload_people"
:
target_obj
.
upload_people
,
"district_name"
:
target_obj
.
district_name
,
"money_arrive"
:
target_obj
.
money_arrive
,
}
for
target_obj
in
target_obj_li
]
return
jsonify
(
code
=
RET
.
OK
,
data
=
data
,
msg
=
"获取成功!"
)
except
Exception
as
e
:
# 表示操作失败,回滚数据库操作
db
.
session
.
rollback
()
current_app
.
logger
.
error
(
e
)
return
jsonify
(
code
=
RET
.
DBERR
,
msg
=
"数据库异常"
)
# 下载数据详情
@api_manage.route
(
"/DownloadMoneyArrive"
,
methods
=
[
"POST"
])
def
download_money_arrive
():
token
=
request
.
headers
[
'token'
]
try
:
user_obj
=
verify_token
(
token
)
except
Exception
as
e
:
current_app
.
logger
.
error
(
e
)
return
jsonify
(
code
=
RET
.
SESSIONERR
,
msg
=
"进行操作时用户信息校验失败,请重新登陆后尝试!"
)
req_dic
=
request
.
get_json
()
data_time
=
req_dic
[
"data_time"
]
path
=
'./apps/statics/project_file/'
# pro_path = 'http://39.100.39.50:8008/aaa_statics/project_file/' # 项目路径
pro_path
=
'http://192.168.1.4:5000/statics/project_file/'
# 项目路径
if
not
data_time
:
return
jsonify
(
code
=
RET
.
PARAMERR
,
msg
=
"参数不能为空!"
)
target_data_list
=
[]
try
:
target_obj_li
=
MoneyArrive
.
query
.
filter_by
(
data_time
=
data_time
,
is_delete
=
0
)
.
all
()
for
target_obj
in
target_obj_li
:
# 提取数据,写入xslx表格
data_list
=
[]
district_name
=
target_obj
.
district_name
data_list
.
append
(
district_name
)
# 区县名称
money_arrive
=
target_obj
.
money_arrive
data_list
.
append
(
money_arrive
)
# 签约金额
target_data_list
.
append
(
data_list
)
except
Exception
as
e
:
current_app
.
logger
.
error
(
e
)
return
jsonify
(
code
=
RET
.
DBERR
,
msg
=
"数据库查询错误!"
)
head_list
=
''
sheet
=
''
try
:
sheet_name_titles
=
{
"sheet1"
:
[
"县(市、区)、开发区"
,
"固定资产投资项目资金到位额(亿元)"
]}
excel
=
xlwt
.
Workbook
(
encoding
=
'utf-8'
)
# 写入表头
for
i
in
range
(
len
(
sheet_name_titles
)):
for
k
,
v
in
sheet_name_titles
.
items
():
sheet_name
=
k
sheet
=
excel
.
add_sheet
(
sheet_name
)
head_list
=
v
print
(
head_list
)
for
j
in
range
(
len
(
head_list
)):
sheet
.
write
(
0
,
j
,
head_list
[
j
])
# 写入数据,从第二行(i+1)
rows
=
len
(
target_data_list
)
cols
=
len
(
head_list
)
for
i
in
range
(
rows
):
for
j
in
range
(
cols
):
sheet
.
write
(
i
+
1
,
j
,
target_data_list
[
i
][
j
])
time_stamp
=
'{0:
%
Y
%
m
%
d
%
H
%
M
%
S}'
.
format
(
datetime
.
now
())
file_name
=
"晋城市及县区固投到位资金完成情况{}.xlsx"
.
format
(
time_stamp
)
excel
.
save
(
path
+
file_name
)
return
jsonify
(
code
=
RET
.
OK
,
url
=
pro_path
+
file_name
,
msg
=
"导出/下载成功!"
)
except
Exception
as
e
:
current_app
.
logger
.
error
(
e
)
return
jsonify
(
code
=
RET
.
DBERR
,
msg
=
"批量导出操作失败!"
)
# 删除某时间周期的数据
@api_manage.route
(
"/DeleteMoneyArrive"
,
methods
=
[
"POST"
])
def
delete_money_arrive
():
token
=
request
.
headers
[
'token'
]
try
:
user_obj
=
verify_token
(
token
)
except
Exception
as
e
:
current_app
.
logger
.
error
(
e
)
return
jsonify
(
code
=
RET
.
SESSIONERR
,
msg
=
"进行操作时用户信息校验失败,请重新登陆后尝试!"
)
req_dic
=
request
.
get_json
()
data_time
=
req_dic
[
"data_time"
]
try
:
target_obj_li
=
MoneyArrive
.
query
.
filter_by
(
data_time
=
data_time
,
is_delete
=
0
)
.
all
()
for
target_obj
in
target_obj_li
:
target_obj
.
is_delete
=
1
db
.
session
.
commit
()
continue
return
jsonify
(
code
=
RET
.
OK
,
msg
=
"删除成功!"
)
except
Exception
as
e
:
db
.
session
.
rollback
()
current_app
.
logger
.
error
(
e
)
return
jsonify
(
code
=
RET
.
DBERR
,
msg
=
"查询数据库错误!"
)
...
...
apps/inves_manage/statistic_analysis_view.py
View file @
f9f5e843
import
os
import
time
import
oss2
import
requests
import
sqlalchemy
import
xlrd
import
xlwt
from
dateutil.relativedelta
import
relativedelta
from
flask
import
current_app
,
jsonify
,
request
from
sqlalchemy
import
and_
from
sqlalchemy
import
and_
,
or_
import
zipfile
from
apps.models
import
*
from
apps.models
import
ProjectManagement
from
apps.utils.response_code
import
RET
from
apps.view_project_management
import
api_project
from
apps.inves_manage
import
api_manage
from
apps.util
import
verify_token
from
apps.util
import
verify_identity
"""统计分析"""
# 项目管理---项目列表
from
apps.inves_manage.siku_view
import
get_num
,
upload_daily_picture
# 统计分析
@api_project.route
(
"/StatisticAnalysis"
,
methods
=
[
"POST"
])
def
statistic_analysis
():
req_dic
=
request
.
get_json
()
flag
=
req_dic
[
'flag'
]
district
=
req_dic
[
'district'
]
data_dic
=
{}
"""指标分析"""
# 山西省地市数据统计
@api_manage.route
(
"/StatisticShanxiData"
,
methods
=
[
"POST"
])
def
statistic_shanxi_data
():
req_dic
=
request
.
get_json
()
flag
=
req_dic
[
'flag'
]
# 1项目签约金额完成情况, 2新开工项目计划投资额完成情况, 3固定资产投资项目资金到位完成情况
try
:
# 行业分布
# 获取最新的时间周期
data_obj
=
ShanxiTarget
.
query
.
order_by
(
sqlalchemy
.
desc
(
ShanxiTarget
.
id
))
.
first
()
data_time
=
data_obj
.
data_time
# 获取最新时间周期的数据
target_obj_li
=
ShanxiTarget
.
query
.
filter_by
(
data_time
=
data_time
)
.
all
()
data1
=
''
data2
=
''
if
flag
==
1
:
data_list
=
[]
project_obj_list
=
ProjectManagement
.
query
.
all
()
# 获取所有项目中的行业并去重
industry_name_set
=
set
(
project_obj
.
industry
for
project_obj
in
project_obj_list
)
for
industry_name
in
list
(
industry_name_set
):
industry_count
=
ProjectManagement
.
query
.
filter
(
ProjectManagement
.
industry
==
industry_name
)
.
count
()
if
not
industry_count
:
industry_count
=
0
data_list
.
append
({
'industry_name'
:
industry_name
,
'industry_count'
:
industry_count
})
data_list
.
sort
(
key
=
lambda
s
:
s
[
"industry_count"
],
reverse
=
True
)
return
jsonify
(
code
=
RET
.
OK
,
data
=
data_list
,
msg
=
'数据获取成功!'
)
# 项目类型统计 1招引项目,2洽谈项目,3签约项目,4开工项目,5投产项目
data
=
[{
"district_name"
:
target_obj
.
district_name
,
"sign_money"
:
str
(
target_obj
.
sign_money
)
+
'亿'
,
"sign_target_money"
:
str
(
target_obj
.
sign_target_money
)
+
'亿'
,
"sign_finish_rate"
:
str
(
target_obj
.
sign_finish_rate
)
+
'
%
'
,
}
for
target_obj
in
target_obj_li
]
data1
=
sorted
(
data
,
key
=
lambda
x
:
x
[
'sign_money'
],
reverse
=
True
)
data2
=
sorted
(
data1
,
key
=
lambda
x
:
x
[
'sign_finish_rate'
],
reverse
=
True
)
if
flag
==
2
:
data_list
=
[]
project_type_name
=
''
for
project_type
in
[
1
,
2
,
3
,
4
,
5
]:
if
project_type
==
1
:
project_type_name
=
'已招引'
elif
project_type
==
2
:
project_type_name
=
'已洽谈'
elif
project_type
==
3
:
project_type_name
=
'已签约'
elif
project_type
==
4
:
project_type_name
=
'已开工'
elif
project_type
==
5
:
project_type_name
=
'已投产'
project_type_count
=
ProjectManagement
.
query
.
filter
(
ProjectManagement
.
project_type
==
project_type
)
.
count
()
if
not
project_type_count
:
project_type_count
=
0
data_list
.
append
({
'project_type_name'
:
project_type_name
,
'project_type_count'
:
project_type_count
})
return
jsonify
(
code
=
RET
.
OK
,
data
=
data_list
,
msg
=
'数据获取成功!'
)
# 企业投资额度统计
data
=
[{
"district_name"
:
target_obj
.
district_name
,
"plan_invest_money"
:
str
(
target_obj
.
plan_invest_money
)
+
'亿'
,
"plan_target_money"
:
str
(
target_obj
.
plan_target_money
)
+
'亿'
,
"plan_finish_rate"
:
str
(
target_obj
.
plan_finish_rate
)
+
'
%
'
,
}
for
target_obj
in
target_obj_li
]
data1
=
sorted
(
data
,
key
=
lambda
x
:
x
[
'plan_invest_money'
],
reverse
=
True
)
data2
=
sorted
(
data1
,
key
=
lambda
x
:
x
[
'plan_finish_rate'
],
reverse
=
True
)
if
flag
==
3
:
# # 投资额度为100万的
# investment_volume_count1 = ProjectManagement.query.filter(
# ProjectManagement.investment_volume == '100').count()
# if investment_volume_count1:
# data_dic.update({"investment_volume_count1": investment_volume_count1})
# else:
# data_dic.update({"investment_volume_count1": 0})
#
# # 投资额度为100万-300万的
# investment_volume_count2 = ProjectManagement.query.filter(and_
# (ProjectManagement.investment_volume > '100',
# ProjectManagement.investment_volume < '300')).count()
# if investment_volume_count2:
# data_dic.update({"investment_volume_count2": investment_volume_count2})
# else:
# data_dic.update({"investment_volume_count2": 0})
#
# # 投资额度为300, 500, 1000, 3000, 5000万的
# investment_volume_count3 = ProjectManagement.query.filter(
# ProjectManagement.investment_volume > '300').count()
# if investment_volume_count3:
# data_dic.update({"investment_volume_count3": investment_volume_count3})
# else:
# data_dic.update({"investment_volume_count3": 0})
#
# # 投资额度为300万的
# investment_volume_count4 = ProjectManagement.query.filter(
# ProjectManagement.investment_volume > '500').count()
# if investment_volume_count4:
# data_dic.update({"investment_volume_count4": investment_volume_count4})
# else:
# data_dic.update({"investment_volume_count4": 0})
#
# # 投资额度为1000万的
# investment_volume_count5 = ProjectManagement.query.filter(
# ProjectManagement.investment_volume > '1000').count()
# if investment_volume_count5:
# data_dic.update({"investment_volume_count5": investment_volume_count5})
# else:
# data_dic.update({"investment_volume_count5": 0})
#
# # 投资额度为3000万的
# investment_volume_count6 = ProjectManagement.query.filter(
# ProjectManagement.investment_volume > '3000').count()
# if investment_volume_count6:
# data_dic.update({"investment_volume_count6": investment_volume_count6})
# else:
# data_dic.update({"investment_volume_count6": 0})
#
# # 投资额度为5000万的
# investment_volume_count7 = ProjectManagement.query.filter(
# ProjectManagement.investment_volume > '5000').count()
# if investment_volume_count7:
# data_dic.update({"investment_volume_count7": investment_volume_count7})
# else:
# data_dic.update({"investment_volume_count7": 0})
investment_volume_count1
=
ProjectManagement
.
query
.
filter
(
and_
(
ProjectManagement
.
investment_volume
<=
0.3
,
ProjectManagement
.
project_type
>=
4
),
)
.
count
()
# 投资额度为0-0.3亿的
if
investment_volume_count1
:
data_dic
.
update
({
"investment_volume_count1"
:
investment_volume_count1
})
else
:
data_dic
.
update
({
"investment_volume_count1"
:
0
})
# 投资额度为0.3-1亿的
investment_volume_count2
=
ProjectManagement
.
query
.
filter
(
and_
(
ProjectManagement
.
investment_volume
>
0.3
,
ProjectManagement
.
investment_volume
<=
1
,
ProjectManagement
.
project_type
>=
4
),
)
.
count
()
if
investment_volume_count2
:
data_dic
.
update
({
"investment_volume_count2"
:
investment_volume_count2
})
else
:
data_dic
.
update
({
"investment_volume_count2"
:
0
})
# 投资额度为1-3亿的
investment_volume_count3
=
ProjectManagement
.
query
.
filter
(
and_
(
ProjectManagement
.
investment_volume
>
1
,
ProjectManagement
.
investment_volume
<=
3
,
ProjectManagement
.
project_type
>=
4
),
)
.
count
()
if
investment_volume_count3
:
data_dic
.
update
({
"investment_volume_count3"
:
investment_volume_count3
})
else
:
data_dic
.
update
({
"investment_volume_count3"
:
0
})
# 投资额度为3-10亿的
investment_volume_count4
=
ProjectManagement
.
query
.
filter
(
and_
(
ProjectManagement
.
investment_volume
>
3
,
ProjectManagement
.
investment_volume
<=
10
,
ProjectManagement
.
project_type
>=
4
),
)
.
count
()
if
investment_volume_count4
:
data_dic
.
update
({
"investment_volume_count4"
:
investment_volume_count4
})
else
:
data_dic
.
update
({
"investment_volume_count4"
:
0
})
# 投资额度为10-50亿的
investment_volume_count5
=
ProjectManagement
.
query
.
filter
(
and_
(
ProjectManagement
.
investment_volume
>
10
,
ProjectManagement
.
investment_volume
<=
50
,
ProjectManagement
.
project_type
>=
4
),
)
.
count
()
if
investment_volume_count5
:
data_dic
.
update
({
"investment_volume_count5"
:
investment_volume_count5
})
else
:
data_dic
.
update
({
"investment_volume_count5"
:
0
})
# 投资额度为50-100的
investment_volume_count6
=
ProjectManagement
.
query
.
filter
(
and_
(
ProjectManagement
.
investment_volume
>
50
,
ProjectManagement
.
investment_volume
<=
100
,
ProjectManagement
.
project_type
>=
4
),
)
.
count
()
if
investment_volume_count6
:
data_dic
.
update
({
"investment_volume_count6"
:
investment_volume_count6
})
else
:
data_dic
.
update
({
"investment_volume_count6"
:
0
})
# 投资额度为100-150亿的
investment_volume_count7
=
ProjectManagement
.
query
.
filter
(
and_
(
ProjectManagement
.
investment_volume
>
100
,
ProjectManagement
.
investment_volume
<=
150
,
ProjectManagement
.
project_type
>=
4
),
)
.
count
()
if
investment_volume_count7
:
data_dic
.
update
({
"investment_volume_count7"
:
investment_volume_count7
})
else
:
data_dic
.
update
({
"investment_volume_count7"
:
0
})
# 投资额度为大于150亿的
investment_volume_count8
=
ProjectManagement
.
query
.
filter
(
and_
(
ProjectManagement
.
investment_volume
>
150
,
ProjectManagement
.
project_type
>=
4
),
)
.
count
()
if
investment_volume_count8
:
data_dic
.
update
({
"investment_volume_count8"
:
investment_volume_count8
})
else
:
data_dic
.
update
({
"investment_volume_count8"
:
0
})
print
(
data_dic
)
return
jsonify
(
code
=
RET
.
OK
,
data
=
data_dic
,
msg
=
'数据获取成功!'
)
# 项目签约率、开工率、投产率
if
flag
==
4
:
data_list
=
[]
total_project_count
=
ProjectManagement
.
query
.
count
()
project_type_name
=
''
for
project_type
in
[
3
,
4
,
5
]:
if
project_type
==
3
:
project_type_name
=
'签约'
project_type_count_qy
=
ProjectManagement
.
query
.
filter
(
ProjectManagement
.
project_type
>=
project_type
)
.
count
()
if
not
project_type_count_qy
:
project_type_rate_qy
=
0
project_type_count_qy
=
0
else
:
project_type_rate_qy
=
str
(
round
((
project_type_count_qy
/
total_project_count
)
*
100
,
2
))
+
'
%
'
elif
project_type
==
4
:
project_type_name
=
'开工'
project_type_count_kg
=
ProjectManagement
.
query
.
filter
(
ProjectManagement
.
project_type
>=
project_type
)
.
count
()
if
not
project_type_count_kg
:
project_type_rate_kg
=
0
project_type_count_kg
=
0
else
:
project_type_rate_kg
=
str
(
round
((
project_type_count_kg
/
total_project_count
)
*
100
,
2
))
+
'
%
'
elif
project_type
==
5
:
project_type_name
=
'投产'
project_type_count_tc
=
ProjectManagement
.
query
.
filter
(
ProjectManagement
.
project_type
>=
project_type
)
.
count
()
if
not
project_type_count_tc
:
project_type_rate_tc
=
0
project_type_count_tc
=
0
else
:
project_type_rate_tc
=
str
(
round
((
project_type_count_tc
/
total_project_count
)
*
100
,
2
))
+
'
%
'
data_dic
=
{
"project_type_rate_qy"
:
project_type_rate_qy
,
"project_type_count_qy"
:
project_type_count_qy
,
"project_type_rate_kg"
:
project_type_rate_kg
,
"project_type_count_kg"
:
project_type_count_kg
,
"project_type_rate_tc"
:
project_type_rate_tc
,
"project_type_count_tc"
:
project_type_count_tc
,
"total_project_count"
:
total_project_count
}
return
jsonify
(
code
=
RET
.
OK
,
data
=
data_dic
,
msg
=
'数据获取成功!'
)
# 月投资额
if
flag
==
5
:
# 获取当前年份
year
=
datetime
.
now
()
.
year
data_list
=
[]
project_obj_list
=
ProjectManagement
.
query
.
filter
(
ProjectManagement
.
project_type
>=
3
)
.
all
()
month_set
=
set
([
str
(
project_obj
.
file_time
)
.
split
(
'-'
)[
1
]
for
project_obj
in
project_obj_list
])
for
month
in
list
(
month_set
):
project_list
=
ProjectManagement
.
query
.
filter
(
ProjectManagement
.
file_time
.
like
(
'
%
{}-{}
%
'
.
format
(
year
,
month
)))
.
all
()
# 获取投资额
data
=
[
float
(
project
.
investment_volume
)
for
project
in
project_list
]
data_list
.
append
({
'month'
:
month
,
'money'
:
round
(
sum
(
data
),
2
)})
return
jsonify
(
code
=
RET
.
OK
,
data
=
data_list
,
msg
=
'数据获取成功!'
)
# 根据所属区域统计个数
if
flag
==
6
:
# 收集项目区域
data_list
=
[]
if
not
district
:
project_obj_list
=
ProjectManagement
.
query
.
all
()
district_set
=
set
([
project
.
district
.
split
(
';'
)[
0
]
for
project
in
project_obj_list
])
for
district
in
list
(
district_set
):
project_count
=
ProjectManagement
.
query
.
filter
(
ProjectManagement
.
district
.
like
(
'
%
{}
%
'
.
format
(
district
)))
.
count
()
# data_dic.update({'district': district, 'count': project_count})
data_list
.
append
({
'district'
:
district
,
'count'
:
project_count
})
else
:
project_obj_list
=
ProjectManagement
.
query
.
filter
(
ProjectManagement
.
district
.
like
(
'
%
{}
%
'
.
format
(
district
)))
.
all
()
# city_set = set([project.district.split(';')[1] for project in project_obj_list])
city_set
=
set
()
for
project
in
project_obj_list
:
try
:
city
=
project
.
district
.
split
(
';'
)[
1
]
city_set
.
add
(
city
)
except
:
continue
for
city
in
list
(
city_set
):
project_count
=
ProjectManagement
.
query
.
filter
(
ProjectManagement
.
district
.
like
(
'
%
{}
%
'
.
format
(
city
)))
.
count
()
data_list
.
append
({
'city'
:
city
,
'count'
:
project_count
})
return
jsonify
(
code
=
RET
.
OK
,
data
=
data_list
,
msg
=
'数据获取成功!'
)
# return jsonify(code=RET.OK, data=data_dic, msg='数据获取成功!')
except
Exception
as
e
:
current_app
.
logger
.
error
(
e
)
return
jsonify
(
code
=
RET
.
DBERR
,
msg
=
'数据查询错误!'
)
"""绩效管理"""
# 绩效评分---项目专班下拉框内容
@api_project.route
(
"/ClassDropDownBox"
,
methods
=
[
"GET"
])
def
drop_down_box
():
try
:
class_obj_list
=
ProjectClass
.
query
.
all
()
class_name_list
=
set
(
[
class_obj
.
class_name
if
class_obj
.
class_name
else
''
for
class_obj
in
class_obj_list
])
return
jsonify
(
code
=
RET
.
OK
,
data
=
list
(
class_name_list
),
msg
=
'获取成功!'
)
data
=
[{
"district_name"
:
target_obj
.
district_name
,
"arrive_money"
:
str
(
target_obj
.
arrive_money
)
+
'亿'
,
"arrive_target_money"
:
str
(
target_obj
.
arrive_target_money
)
+
'亿'
,
"arrive_finish_rate"
:
str
(
target_obj
.
arrive_finish_rate
)
+
'
%
'
,
}
for
target_obj
in
target_obj_li
]
data1
=
sorted
(
data
,
key
=
lambda
x
:
x
[
'arrive_money'
],
reverse
=
True
)
data2
=
sorted
(
data1
,
key
=
lambda
x
:
x
[
'arrive_finish_rate'
],
reverse
=
True
)
return
jsonify
(
code
=
RET
.
OK
,
data
=
{
"data1"
:
data1
,
"data2"
:
data2
},
msg
=
"获取成功!"
)
except
Exception
as
e
:
current_app
.
logger
.
error
(
e
)
return
jsonify
(
code
=
RET
.
DBERR
,
msg
=
'数据查询错误!'
)
# 绩效评分---编辑项目专班考核分数
@api_project.route
(
"/EditClassScore"
,
methods
=
[
"POST"
])
def
edit_performance_score
():
req_dic
=
request
.
get_json
()
class_name
=
req_dic
[
'class_name'
]
class_score1
=
req_dic
[
'class_score1'
]
class_score2
=
req_dic
[
'class_score2'
]
class_score3
=
req_dic
[
'class_score3'
]
class_score4
=
req_dic
[
'class_score4'
]
total_score
=
0
score_list
=
[
class_score1
,
class_score2
,
class_score3
,
class_score4
]
for
i
in
range
(
0
,
len
(
score_list
)):
if
float
(
score_list
[
i
]):
total_score
+=
float
(
score_list
[
i
])
else
:
total_score
+=
0
try
:
class_obj
=
ProjectClass
.
query
.
filter_by
(
class_name
=
class_name
)
.
first
()
time
=
datetime
.
now
()
.
strftime
(
"
%
Y-
%
m-
%
d
%
H:
%
M"
)
if
not
class_obj
:
return
jsonify
(
code
=
RET
.
NODATA
,
msg
=
'无此专班,请先在项目中创建!'
)
class_obj
.
class_score1
=
class_score1
class_obj
.
class_score2
=
class_score2
class_obj
.
class_score3
=
class_score3
class_obj
.
class_score4
=
class_score4
class_obj
.
total_score
=
total_score
class_obj
.
time
=
time
db
.
session
.
commit
()
return
jsonify
(
code
=
RET
.
OK
,
msg
=
'提交成功!'
)
except
Exception
as
e
:
current_app
.
logger
.
error
(
e
)
db
.
session
.
rollback
()
return
jsonify
(
code
=
RET
.
DBERR
,
msg
=
'数据查询错误!'
)
# 绩效评分---编辑区县、开发区绩效评分
@api_project.route
(
"/EditDistrictScore"
,
methods
=
[
"POST"
])
def
edit_district_score
():
req_dic
=
request
.
get_json
()
district_name
=
req_dic
[
'district_name'
]
district_score1
=
req_dic
[
'district_score1'
]
district_score2
=
req_dic
[
'district_score2'
]
district_score3
=
req_dic
[
'district_score3'
]
district_score4
=
req_dic
[
'district_score4'
]
district_score5
=
req_dic
[
'district_score5'
]
district_score6
=
req_dic
[
'district_score6'
]
district_score7
=
req_dic
[
'district_score7'
]
district_score8
=
req_dic
[
'district_score8'
]
try
:
project_obj
=
ScoreDistrict
.
query
.
filter_by
(
district_name
=
district_name
)
.
first
()
time
=
datetime
.
now
()
.
strftime
(
"
%
Y-
%
m-
%
d
%
H:
%
M"
)
if
project_obj
:
project_obj
.
district_name
=
district_name
project_obj
.
district_score1
=
district_score1
project_obj
.
district_score2
=
district_score2
project_obj
.
district_score3
=
district_score3
project_obj
.
district_score4
=
district_score4
project_obj
.
district_score5
=
district_score5
project_obj
.
district_score6
=
district_score6
project_obj
.
district_score7
=
district_score7
project_obj
.
district_score8
=
district_score8
project_obj
.
time
=
time
db
.
session
.
commit
()
return
jsonify
(
code
=
RET
.
OK
,
msg
=
'提交成功!'
)
else
:
project_obj
=
ScoreDistrict
(
district_name
=
district_name
,
district_score1
=
district_score1
,
district_score2
=
district_score2
,
district_score3
=
district_score3
,
district_score4
=
district_score4
,
district_score5
=
district_score5
,
district_score6
=
district_score6
,
district_score7
=
district_score7
,
district_score8
=
district_score8
,
time
=
time
)
db
.
session
.
add
(
project_obj
)
db
.
session
.
commit
()
return
jsonify
(
code
=
RET
.
OK
,
msg
=
'提交成功!'
)
except
Exception
as
e
:
current_app
.
logger
.
error
(
e
)
db
.
session
.
rollback
()
return
jsonify
(
code
=
RET
.
DBERR
,
msg
=
'数据查询错误!'
)
# 绩效评分---编辑市直有关单位考核分数
@api_project.route
(
"/EditUnitScore"
,
methods
=
[
"POST"
])
def
edit_unit_score
():
req_dic
=
request
.
get_json
()
unit_name
=
req_dic
[
'unit_name'
]
unit_score1
=
req_dic
[
'unit_score1'
]
unit_score2
=
req_dic
[
'unit_score2'
]
unit_score3
=
req_dic
[
'unit_score3'
]
unit_score4
=
req_dic
[
'unit_score4'
]
unit_score5
=
req_dic
[
'unit_score5'
]
try
:
unit_obj
=
ScoreUnit
.
query
.
filter_by
(
unit_name
=
unit_name
)
.
first
()
time
=
datetime
.
now
()
.
strftime
(
"
%
Y-
%
m-
%
d
%
H:
%
M"
)
if
unit_obj
:
unit_obj
.
unit_name
=
unit_name
unit_obj
.
unit_score1
=
unit_score1
unit_obj
.
unit_score2
=
unit_score2
unit_obj
.
unit_score3
=
unit_score3
unit_obj
.
unit_score4
=
unit_score4
unit_obj
.
unit_score5
=
unit_score5
unit_obj
.
time
=
time
db
.
session
.
commit
()
return
jsonify
(
code
=
RET
.
OK
,
msg
=
'提交成功!'
)
else
:
unit_obj
=
ScoreUnit
(
unit_name
=
unit_name
,
unit_score1
=
unit_score1
,
unit_score2
=
unit_score2
,
unit_score3
=
unit_score3
,
unit_score4
=
unit_score4
,
unit_score5
=
unit_score5
,
time
=
time
)
db
.
session
.
add
(
unit_obj
)
db
.
session
.
commit
()
return
jsonify
(
code
=
RET
.
OK
,
msg
=
'提交成功!'
)
except
Exception
as
e
:
current_app
.
logger
.
error
(
e
)
db
.
session
.
rollback
()
return
jsonify
(
code
=
RET
.
DBERR
,
msg
=
'数据查询错误!'
)
return
jsonify
(
code
=
RET
.
DBERR
,
msg
=
"查询数据库错误!"
)
#
绩效评分---编辑驻外办事机构考核
@api_
project.route
(
"/EditOverseasScore
"
,
methods
=
[
"POST"
])
def
edit_overseas_score
():
#
晋城市数据统计
@api_
manage.route
(
"/StatisticJcData
"
,
methods
=
[
"POST"
])
def
statistic_jc_data
():
req_dic
=
request
.
get_json
()
offices_name
=
req_dic
[
'offices_name'
]
offices_score1
=
req_dic
[
'offices_score1'
]
offices_score2
=
req_dic
[
'offices_score2'
]
offices_score3
=
req_dic
[
'offices_score3'
]
try
:
offices_obj
=
ScoreOverseasOffices
.
query
.
filter_by
(
offices_name
=
offices_name
)
.
first
()
time
=
datetime
.
now
()
.
strftime
(
"
%
Y-
%
m-
%
d
%
H:
%
M"
)
if
offices_obj
:
offices_obj
.
offices_name
=
offices_name
offices_obj
.
offices_score1
=
offices_score1
offices_obj
.
offices_score2
=
offices_score2
offices_obj
.
offices_score3
=
offices_score3
offices_obj
.
time
=
time
db
.
session
.
commit
()
return
jsonify
(
code
=
RET
.
OK
,
msg
=
'提交成功!'
)
else
:
offices_obj
=
ScoreOverseasOffices
(
offices_name
=
offices_name
,
offices_score1
=
offices_score1
,
offices_score2
=
offices_score2
,
offices_score3
=
offices_score3
,
time
=
time
)
db
.
session
.
add
(
offices_obj
)
db
.
session
.
commit
()
return
jsonify
(
code
=
RET
.
OK
,
msg
=
'提交成功!'
)
except
Exception
as
e
:
current_app
.
logger
.
error
(
e
)
db
.
session
.
rollback
()
return
jsonify
(
code
=
RET
.
DBERR
,
msg
=
'数据查询错误!'
)
flag
=
req_dic
[
'flag'
]
current_year
=
datetime
.
now
()
.
year
district_li
=
[
"全市"
,
"城区"
,
"泽州县"
,
"高平市"
,
"阳城县"
,
"陵川县"
,
"沁水县"
,
"晋城经济技术开发区"
,
"高平经济技术开发区"
,
"阳城经济技术开发区"
,
"沁水经济技术开发区"
,
"陵川生态文化旅游示范区"
]
data_li1
=
[]
data_li2
=
[]
data_li3
=
[]
data_li4
=
[]
data_li5
=
[]
data_li6
=
[]
# 绩效评分---编辑服务保障部门考核绩效评分数据
@api_project.route
(
"/EditServiceDepartmentScore"
,
methods
=
[
"POST"
])
def
edit_service_department_score
():
req_dic
=
request
.
get_json
()
department_name
=
req_dic
[
'department_name'
]
department_score1
=
req_dic
[
'department_score1'
]
department_score2
=
req_dic
[
'department_score2'
]
department_score3
=
req_dic
[
'department_score3'
]
department_score4
=
req_dic
[
'department_score4'
]
try
:
department_obj
=
ScoreServiceDepartment
.
query
.
filter_by
(
department_name
=
department_name
)
.
first
()
time
=
datetime
.
now
()
.
strftime
(
"
%
Y-
%
m-
%
d
%
H:
%
M"
)
if
department_obj
:
department_obj
.
department_name
=
department_name
department_obj
.
department_score1
=
department_score1
department_obj
.
department_score2
=
department_score2
department_obj
.
department_score3
=
department_score3
department_obj
.
department_score4
=
department_score4
department_obj
.
time
=
time
db
.
session
.
commit
()
return
jsonify
(
code
=
RET
.
OK
,
msg
=
'提交成功!'
)
else
:
department_obj
=
ScoreServiceDepartment
(
department_name
=
department_name
,
department_score1
=
department_score1
,
department_score2
=
department_score2
,
department_score3
=
department_score3
,
department_score4
=
department_score4
,
time
=
time
)
db
.
session
.
add
(
department_obj
)
db
.
session
.
commit
()
return
jsonify
(
code
=
RET
.
OK
,
msg
=
'提交成功!'
)
except
Exception
as
e
:
current_app
.
logger
.
error
(
e
)
db
.
session
.
rollback
()
return
jsonify
(
code
=
RET
.
DBERR
,
msg
=
'数据查询错误!'
)
# 一。项目签约完成率(签约项目完成率:完成率(%):签约金额(亿元)/ 年度目标(亿元))
for
district
in
district_li
:
project_obj_list
=
ProjectManagement
.
query
.
filter
(
ProjectManagement
.
sign_time
.
like
(
'
%
{}
%
'
.
format
(
str
(
current_year
))),
ProjectManagement
.
district
.
like
(
'
%
{}
%
'
.
format
(
str
(
district
)))
)
.
all
()
if
not
project_obj_list
:
investment_volume
=
0
else
:
investment_volume
=
sum
([
project_obj
.
investment_volume
for
project_obj
in
project_obj_list
])
# 年度目标
jc_obj
=
JcTarget
.
query
.
filter
(
JcTarget
.
district_name
==
district
,
JcTarget
.
year
.
like
(
'
%
{}
%
'
.
format
(
str
(
current_year
)))
)
.
first
()
if
not
jc_obj
:
year_target
=
0
else
:
year_target
=
jc_obj
.
money_sign
# 绩效评分---获取输入框数据
@api_project.route
(
"/GetInputData"
,
methods
=
[
"POST"
])
def
get_input_data
():
req_dic
=
request
.
get_json
()
flag
=
req_dic
[
'flag'
]
name
=
req_dic
[
'name'
]
data
=
''
try
:
# 获取专班信息
if
flag
==
1
:
project_obj
=
ProjectClass
.
query
.
filter_by
(
class_name
=
name
)
.
first
()
if
not
project_obj
:
return
jsonify
(
code
=
RET
.
NODATA
,
msg
=
'无此专班信息!请核实。'
)
data
=
{
"class_name"
:
name
,
"class_score1"
:
project_obj
.
class_score1
,
"class_score2"
:
project_obj
.
class_score2
,
"class_score3"
:
project_obj
.
class_score3
,
"class_score4"
:
project_obj
.
class_score4
,
"time"
:
project_obj
.
time
"district"
:
district
,
"rate"
:
investment_volume
/
year_target
if
year_target
and
year_target
!=
0
else
0
}
# 获取对县(市、区)、开发区考核信息
elif
flag
==
2
:
district_obj
=
ScoreDistrict
.
query
.
filter_by
(
district_name
=
name
)
.
first
()
if
not
district_obj
:
return
jsonify
(
code
=
RET
.
NODATA
,
msg
=
'无此县区信息!请核实。'
)
data_li1
.
append
(
data
)
continue
# 项目签约情况得分=完成率(%)*赋分(15 上传后获取)如果小于赋分(15 上传后获取),
# 则输出完成率(%)*赋分(15 上传后获取)的结果,否则输出赋分(15)
grade_li1
=
[]
for
data
in
data_li1
:
grade
=
data
[
"rate"
]
*
15
if
grade
<
15
:
grade_li1
.
append
({
"district"
:
data
[
"district"
],
"grade"
:
grade
})
else
:
grade_li1
.
append
({
"district"
:
data
[
"district"
],
"grade"
:
15
})
# 二。项目开工率(开工率进度:当年签约当年开工个数/签约个数)
for
district
in
district_li
:
# 签约项目个数
sign_num
=
ProjectManagement
.
query
.
filter
(
ProjectManagement
.
sign_time
.
like
(
'
%
{}
%
'
.
format
(
str
(
current_year
))),
ProjectManagement
.
district
.
like
(
'
%
{}
%
'
.
format
(
str
(
district
)))
)
.
count
()
# 年度目标
start_num
=
ProjectManagement
.
query
.
filter
(
ProjectManagement
.
start_time
.
like
(
'
%
{}
%
'
.
format
(
str
(
current_year
))),
ProjectManagement
.
district
.
like
(
'
%
{}
%
'
.
format
(
str
(
district
)))
)
.
count
()
data
=
{
"district_name"
:
name
,
"district_score1"
:
district_obj
.
district_score1
,
"district_score2"
:
district_obj
.
district_score2
,
"district_score3"
:
district_obj
.
district_score3
,
"district_score4"
:
district_obj
.
district_score4
,
"district_score5"
:
district_obj
.
district_score5
,
"district_score6"
:
district_obj
.
district_score6
,
"district_score7"
:
district_obj
.
district_score7
,
"district_score8"
:
district_obj
.
district_score8
,
"time"
:
district_obj
.
time
,
"district"
:
district
,
"rate"
:
start_num
/
sign_num
if
sign_num
and
sign_num
!=
0
else
0
}
# 获取市直有关单位和群团组织考核信息 ScoreUnit
elif
flag
==
3
:
unit_obj
=
ScoreUnit
.
query
.
filter_by
(
unit_name
=
name
)
.
first
()
if
not
unit_obj
:
return
jsonify
(
code
=
RET
.
NODATA
,
msg
=
'无此市值单位信息!请核实。'
)
data_li2
.
append
(
data
)
continue
# 项目开工率情况得分=如果开工率进度小于0.4,则输出开工率进度*赋分(5分)/0.4,否则输出赋分(5分);
grade_li2
=
[]
for
data
in
data_li2
:
grade
=
data
[
"rate"
]
if
grade
<
0.4
:
grade_li2
.
append
({
"district"
:
data
[
"district"
],
"grade"
:
grade
*
5
/
0.4
})
else
:
grade_li2
.
append
({
"district"
:
data
[
"district"
],
"grade"
:
5
})
# 三。新开工项目计划投资额完成率得分=(完成率(%):新开工项目计划投资额(亿元)/ 年度目标(亿元))
for
district
in
district_li
:
project_obj_list
=
ProjectManagement
.
query
.
filter
(
ProjectManagement
.
start_time
.
like
(
'
%
{}
%
'
.
format
(
str
(
current_year
))),
ProjectManagement
.
district
.
like
(
'
%
{}
%
'
.
format
(
str
(
district
)))
)
.
all
()
if
not
project_obj_list
:
investment_volume
=
0
else
:
investment_volume
=
sum
([
project_obj
.
investment_volume
for
project_obj
in
project_obj_list
])
# 年度目标
jc_obj
=
JcTarget
.
query
.
filter
(
JcTarget
.
district_name
==
district
,
JcTarget
.
year
.
like
(
'
%
{}
%
'
.
format
(
str
(
current_year
)))
)
.
first
()
if
not
jc_obj
:
year_target
=
0
else
:
year_target
=
jc_obj
.
money_plan_invest
data
=
{
"unit_name"
:
name
,
"unit_score1"
:
unit_obj
.
unit_score1
,
"unit_score2"
:
unit_obj
.
unit_score2
,
"unit_score3"
:
unit_obj
.
unit_score3
,
"unit_score4"
:
unit_obj
.
unit_score4
,
"unit_score5"
:
unit_obj
.
unit_score5
,
"time"
:
unit_obj
.
time
,
"district"
:
district
,
"rate"
:
investment_volume
/
year_target
if
year_target
and
year_target
!=
0
else
0
}
# 获取驻外办事机构信息
elif
flag
==
4
:
offices_obj
=
ScoreOverseasOffices
.
query
.
filter_by
(
offices_name
=
name
)
.
first
()
if
not
offices_obj
:
return
jsonify
(
code
=
RET
.
NODATA
,
msg
=
'无此市值单位信息!请核实。'
)
data_li3
.
append
(
data
)
continue
# return jsonify(code=RET.OK, data=data_li, msg="新开工项目计划投资额完成率获取成功")
# 新开工固定资产投资项目计划投资额完成情况=如果完成率(%)小于1,
# 则输出完成率(%)*赋分(25 上传后获取)的结果,否则输出赋分(25);
grade_li3
=
[]
for
data
in
data_li3
:
grade
=
data
[
"rate"
]
if
grade
<
1
:
grade_li3
.
append
({
"district"
:
data
[
"district"
],
"grade"
:
grade
*
25
})
else
:
grade_li3
.
append
({
"district"
:
data
[
"district"
],
"grade"
:
25
})
# 四。固定资产投资项目到位资金完成率(完成率(%):固定资产投资项目资金到位额(亿元)/ 年度目标(亿元))
for
district
in
district_li
:
project_obj
=
MoneyArrive
.
query
.
filter
(
MoneyArrive
.
data_time
.
like
(
'
%
{}
%
'
.
format
(
str
(
current_year
))),
MoneyArrive
.
district_name
.
like
(
'
%
{}
%
'
.
format
(
str
(
district
)))
)
.
first
()
if
not
project_obj
:
arrive_money
=
0
else
:
arrive_money
=
project_obj
.
arrive_money
# 年度目标
jc_obj
=
JcTarget
.
query
.
filter
(
JcTarget
.
district_name
==
district
,
JcTarget
.
year
.
like
(
'
%
{}
%
'
.
format
(
str
(
current_year
)))
)
.
first
()
if
not
jc_obj
:
year_target
=
0
else
:
year_target
=
jc_obj
.
money_arrive_target1
data
=
{
"offices_name"
:
name
,
"offices_score1"
:
offices_obj
.
offices_score1
,
"offices_score2"
:
offices_obj
.
offices_score2
,
"offices_score3"
:
offices_obj
.
offices_score3
,
"time"
:
offices_obj
.
time
,
"district"
:
district
,
"rate"
:
arrive_money
/
year_target
if
year_target
and
year_target
!=
0
else
0
}
# 获取服务保障等任务的职能部门
elif
flag
==
5
:
department_obj
=
ScoreServiceDepartment
.
query
.
filter_by
(
department_name
=
name
)
.
first
()
if
not
department_obj
:
return
jsonify
(
code
=
RET
.
NODATA
,
msg
=
'无此市值单位信息!请核实。'
)
data_li4
.
append
(
data
)
continue
# return jsonify(code=RET.OK, data=data_li, msg="固定资产投资项目到位资金完成率获取成功")
# 固定资产投资项目资金到位情况得分=如果完成率(%)小于1,
# 则输出完成率(%)*赋分(25 上传后获取)的结果,否则输出赋分(25);
grade_li4
=
[]
for
data
in
data_li4
:
grade
=
data
[
"rate"
]
if
grade
<
1
:
grade_li4
.
append
({
"district"
:
data
[
"district"
],
"grade"
:
grade
*
25
})
else
:
grade_li4
.
append
({
"district"
:
data
[
"district"
],
"grade"
:
25
})
# 五。非固定资产投资项目到位资金完成率(完成率(%):非固定资产投资项目资金到位额(亿元)/ 年度目标(亿元))
for
district
in
district_li
:
project_obj_list
=
ProjectManagement
.
query
.
filter
(
ProjectManagement
.
is_fixed_investment
==
'否'
,
ProjectManagement
.
sign_time
.
like
(
'
%
{}
%
'
.
format
(
str
(
current_year
))),
ProjectManagement
.
district
.
like
(
'
%
{}
%
'
.
format
(
str
(
district
)))
)
.
all
()
if
not
project_obj_list
:
investment_volume
=
0
else
:
investment_volume
=
sum
([
project_obj
.
investment_year
for
project_obj
in
project_obj_list
])
# 年度目标
jc_obj
=
JcTarget
.
query
.
filter
(
JcTarget
.
district_name
==
district
,
JcTarget
.
year
.
like
(
'
%
{}
%
'
.
format
(
str
(
current_year
)))
)
.
first
()
if
not
jc_obj
:
year_target
=
0
else
:
year_target
=
jc_obj
.
money_arrive_target0
data
=
{
"department_name"
:
name
,
"department_score1"
:
department_obj
.
department_score1
,
"department_score2"
:
department_obj
.
department_score2
,
"department_score3"
:
department_obj
.
department_score3
,
"department_score4"
:
department_obj
.
department_score4
,
"time"
:
department_obj
.
time
,
"district"
:
district
,
"rate"
:
investment_volume
/
year_target
if
year_target
and
year_target
!=
0
else
0
}
return
jsonify
(
code
=
RET
.
OK
,
data
=
data
,
msg
=
'数据获取成功!'
)
data_li5
.
append
(
data
)
continue
# return jsonify(code=RET.OK, data=data_li, msg="固定资产投资项目到位资金完成率获取成功")
# 综合得分
# 项目签约情况得分
# 得分(满分15分):完成率( % )*赋分(15
# 上传后获取)如果小于赋分(15
# 上传后获取),则输出完成率( % )*赋分(15
# 上传后获取)的结果,否则输出赋分(15)
pass
# 非固定资产投资项目资金到位情况得分=如果完成率(%)小于1,
# 则输出完成率(%)*赋分(5 上传后获取)的结果,否则输出赋分(5);
grade_li5
=
[]
for
data
in
data_li5
:
grade
=
data
[
"rate"
]
if
grade
<
1
:
grade_li5
.
append
({
"district"
:
data
[
"district"
],
"grade"
:
grade
*
5
})
else
:
grade_li5
.
append
({
"district"
:
data
[
"district"
],
"grade"
:
5
})
# 六。综合得分
for
district
in
district_li
:
# 签约情况得分
for
grade_dic
in
grade_li1
:
if
grade_dic
[
"district"
]
==
district
:
grade1
=
grade_dic
[
"grade"
]
# 项目开工率情况得分
for
grade_dic
in
grade_li2
:
if
grade_dic
[
"district"
]
==
district
:
grade2
=
grade_dic
[
"grade"
]
# 新开工得分
for
grade_dic
in
grade_li3
:
if
grade_dic
[
"district"
]
==
district
:
grade4
=
grade_dic
[
"grade"
]
# 固定资产得分
for
grade_dic
in
grade_li4
:
if
grade_dic
[
"district"
]
==
district
:
grade4
=
grade_dic
[
"grade"
]
# 非固定资产得分
for
grade_dic
in
grade_li5
:
if
grade_dic
[
"district"
]
==
district
:
grade5
=
grade_dic
[
"grade"
]
total_grade
=
grade1
+
grade2
+
grade4
+
grade4
+
grade5
data_li6
.
append
({
"district"
:
district
,
"total_grade"
:
total_grade
})
continue
return
jsonify
(
code
=
RET
.
OK
,
data
=
{
"data_li1"
:
data_li1
,
"data_li2"
:
data_li2
,
"data_li3"
:
data_li3
,
"data_li4"
:
data_li4
,
"data_li5"
:
data_li5
,
"data_li6"
:
data_li6
},
msg
=
"数据查询成功"
)
except
Exception
as
e
:
current_app
.
logger
.
error
(
e
)
return
jsonify
(
code
=
RET
.
DBERR
,
msg
=
'数据查询错误!'
)
return
jsonify
(
code
=
RET
.
DBERR
,
msg
=
"数据查询错误!"
)
"""
绩效排名
"""
"""
项目分析
"""
#
绩效排名
@api_
project.route
(
"/ScoreRank
"
,
methods
=
[
"POST"
])
def
score_rank
():
#
项目来源区域分布饼状图
@api_
manage.route
(
"/ArealDistribution
"
,
methods
=
[
"POST"
])
def
areal_distribution
():
req_dic
=
request
.
get_json
()
flag
=
req_dic
[
'flag'
]
# 1项目专班,2区县,3市直部门,4驻外办,5服务保障部门
score_list
=
''
district
=
req_dic
[
'district'
]
try
:
if
flag
==
1
:
score_list
=
[]
class_obj_list
=
ProjectClass
.
query
.
all
()
if
not
class_obj_list
:
return
jsonify
(
code
=
RET
.
NODATA
,
msg
=
'暂无数据!'
)
for
class_obj
in
class_obj_list
:
if
not
class_obj
.
class_name
:
continue
score_dic
=
{
'class_name'
:
class_obj
.
class_name
,
'class_score1'
:
class_obj
.
class_score1
,
'class_score2'
:
class_obj
.
class_score2
,
'class_score3'
:
class_obj
.
class_score3
,
'class_score4'
:
class_obj
.
class_score4
,
'total_score'
:
class_obj
.
total_score
if
class_obj
.
total_score
else
0
}
score_list
.
append
(
score_dic
)
score_list
.
sort
(
key
=
lambda
s
:
s
[
"total_score"
],
reverse
=
True
)
if
flag
==
2
:
district_obj_list
=
ScoreDistrict
.
query
.
all
()
if
not
district_obj_list
:
return
jsonify
(
code
=
RET
.
NODATA
,
msg
=
'暂无数据!'
)
score_list
=
[{
'district_name'
:
district_obj
.
district_name
,
'district_score1'
:
district_obj
.
district_score1
,
'district_score2'
:
district_obj
.
district_score2
,
'district_score3'
:
district_obj
.
district_score3
,
'district_score4'
:
district_obj
.
district_score4
,
'district_score5'
:
district_obj
.
district_score5
,
'district_score6'
:
district_obj
.
district_score6
,
'district_score7'
:
district_obj
.
district_score7
,
'district_score8'
:
district_obj
.
district_score8
,
"total_district_score"
:
district_obj
.
district_score1
+
district_obj
.
district_score2
+
district_obj
.
district_score3
+
district_obj
.
district_score4
+
district_obj
.
district_score5
+
district_obj
.
district_score6
+
district_obj
.
district_score7
+
district_obj
.
district_score8
}
for
district_obj
in
district_obj_list
]
print
(
score_list
)
score_list
.
sort
(
key
=
lambda
s
:
s
[
"total_district_score"
],
reverse
=
True
)
# 3市直部门
if
flag
==
3
:
unit_obj_list
=
ScoreUnit
.
query
.
all
()
if
not
unit_obj_list
:
return
jsonify
(
code
=
RET
.
NODATA
,
msg
=
'暂无数据!'
)
score_list
=
[{
'unit_name'
:
unit_obj
.
unit_name
,
'unit_score1'
:
unit_obj
.
unit_score1
,
'unit_score2'
:
unit_obj
.
unit_score2
,
'unit_score3'
:
unit_obj
.
unit_score3
,
'unit_score4'
:
unit_obj
.
unit_score4
,
'unit_score5'
:
unit_obj
.
unit_score5
,
"total_unit_score"
:
unit_obj
.
unit_score1
+
unit_obj
.
unit_score2
+
unit_obj
.
unit_score3
+
unit_obj
.
unit_score4
+
unit_obj
.
unit_score5
}
for
unit_obj
in
unit_obj_list
]
score_list
.
sort
(
key
=
lambda
s
:
s
[
"total_unit_score"
],
reverse
=
True
)
# 4驻外办
if
flag
==
4
:
offices_obj_list
=
ScoreOverseasOffices
.
query
.
all
()
if
not
offices_obj_list
:
return
jsonify
(
code
=
RET
.
NODATA
,
msg
=
'暂无数据!'
)
score_list
=
[{
'offices_name'
:
offices_obj
.
offices_name
,
'offices_score1'
:
offices_obj
.
offices_score1
,
'offices_score2'
:
offices_obj
.
offices_score2
,
'offices_score3'
:
offices_obj
.
offices_score3
,
"total_offices_score"
:
offices_obj
.
offices_score1
+
offices_obj
.
offices_score2
+
offices_obj
.
offices_score3
}
for
offices_obj
in
offices_obj_list
]
score_list
.
sort
(
key
=
lambda
s
:
s
[
"total_offices_score"
],
reverse
=
True
)
project_obj_list
=
ProjectManagement
.
query
.
filter
(
ProjectManagement
.
district
==
district
)
num1
=
0
# 京津冀
num2
=
0
# 长三角
num3
=
0
# 珠三角
num4
=
0
# 中原经济区
num5
=
0
# 其他
for
project_obj
in
project_obj_list
:
if
project_obj
.
project_source
in
[
"北京"
,
"天津"
,
"河北"
]:
num1
+=
1
elif
project_obj
.
project_source
in
[
"上海"
,
"江苏"
,
"浙江"
]:
num2
+=
1
elif
project_obj
.
project_source
in
[
"广东"
,
"香港"
,
"澳门"
]:
num3
+=
1
elif
project_obj
.
project_source
in
[
"河南"
,
"天津"
,
"河北"
,
"长治"
,
"晋城"
,
"运城"
,
"聊城"
,
"菏泽"
,
"泰安"
,
"宿州"
,
"淮北"
,
"阜阳"
,
"亳州"
,
"蚌埠"
,
"淮南"
,
"邢台"
,
"邯郸"
,]:
num4
+=
1
else
:
num5
+=
1
total_num
=
sum
([
num1
,
num2
,
num3
,
num4
,
num5
])
data
=
{
"data1"
:
str
(
round
(
num1
/
total_num
,
2
))
+
'
%
'
,
"data2"
:
str
(
round
(
num2
/
total_num
,
2
))
+
'
%
'
,
"data3"
:
str
(
round
(
num3
/
total_num
,
2
))
+
'
%
'
,
"data4"
:
str
(
round
(
num4
/
total_num
,
2
))
+
'
%
'
,
"data5"
:
str
(
round
(
num5
/
total_num
,
2
))
+
'
%
'
,
}
return
jsonify
(
code
=
RET
.
OK
,
data
=
data
,
msg
=
'数据查询成功'
)
except
Exception
as
e
:
current_app
.
logger
.
error
(
e
)
return
jsonify
(
code
=
RET
.
DBERR
,
msg
=
"数据查询错误!"
)
# 5服务保障部门
if
flag
==
5
:
department_obj_list
=
ScoreServiceDepartment
.
query
.
all
()
if
not
department_obj_list
:
return
jsonify
(
code
=
RET
.
NODATA
,
msg
=
'暂无数据!'
)
score_list
=
[{
'department_name'
:
department_obj
.
department_name
,
'department_score1'
:
department_obj
.
department_score1
,
'department_score2'
:
department_obj
.
department_score2
,
'department_score3'
:
department_obj
.
department_score3
,
'department_score4'
:
department_obj
.
department_score4
,
"total_department_score"
:
department_obj
.
department_score1
+
department_obj
.
department_score2
+
department_obj
.
department_score3
+
department_obj
.
department_score4
}
for
department_obj
in
department_obj_list
]
score_list
.
sort
(
key
=
lambda
s
:
s
[
"total_department_score"
],
reverse
=
True
)
return
jsonify
(
code
=
RET
.
OK
,
data
=
score_list
,
msg
=
'提交成功!'
)
# 项目来源区域分布项目列表
@api_manage.route
(
"/ArealProject"
,
methods
=
[
"POST"
])
def
areal_project
():
req_dic
=
request
.
get_json
()
district
=
req_dic
[
'district'
]
project_source
=
req_dic
[
'project_source'
]
try
:
project_obj
=
ProjectManagement
.
query
.
filter
(
ProjectManagement
.
district
==
district
,
)
if
project_source
==
'京津冀'
:
project_obj
=
ProjectManagement
.
filter
(
or_
(
ProjectManagement
.
province
.
like
(
'
%
北京
%
'
),
ProjectManagement
.
province
.
like
(
'
%
天津
%
'
),
ProjectManagement
.
province
.
like
(
'
%
河北
%
'
)
))
elif
project_source
==
'长三角'
:
project_obj
=
ProjectManagement
.
filter
(
or_
(
ProjectManagement
.
province
.
like
(
'
%
江苏
%
'
),
ProjectManagement
.
province
.
like
(
'
%
浙江
%
'
),
ProjectManagement
.
province
.
like
(
'
%
上海
%
'
)
))
elif
project_source
==
'珠三角'
:
project_obj
=
ProjectManagement
.
filter
(
or_
(
ProjectManagement
.
province
.
like
(
'
%
广东
%
'
),
ProjectManagement
.
province
.
like
(
'
%
香港
%
'
),
ProjectManagement
.
province
.
like
(
'
%
澳门
%
'
)
))
elif
project_source
==
'中原经济区'
:
project_obj
=
ProjectManagement
.
filter
(
or_
(
ProjectManagement
.
province
.
like
(
'
%
河南
%
'
),
ProjectManagement
.
province
.
like
(
'
%
天津
%
'
),
ProjectManagement
.
province
.
like
(
'
%
河北
%
'
),
ProjectManagement
.
province
.
like
(
'
%
长治
%
'
),
ProjectManagement
.
province
.
like
(
'
%
晋城
%
'
),
ProjectManagement
.
province
.
like
(
'
%
运城
%
'
),
ProjectManagement
.
province
.
like
(
'
%
聊城
%
'
),
ProjectManagement
.
province
.
like
(
'
%
菏泽
%
'
),
ProjectManagement
.
province
.
like
(
'
%
泰安
%
'
),
ProjectManagement
.
province
.
like
(
'
%
宿州
%
'
),
ProjectManagement
.
province
.
like
(
'
%
淮北
%
'
),
ProjectManagement
.
province
.
like
(
'
%
阜阳
%
'
),
ProjectManagement
.
province
.
like
(
'
%
亳州
%
'
),
ProjectManagement
.
province
.
like
(
'
%
蚌埠
%
'
),
ProjectManagement
.
province
.
like
(
'
%
淮南
%
'
),
ProjectManagement
.
province
.
like
(
'
%
邢台
%
'
),
ProjectManagement
.
province
.
like
(
'
%
邯郸
%
'
),
))
elif
project_source
==
'其他'
:
project_obj
=
ProjectManagement
.
filter
(
and_
(
ProjectManagement
.
province
.
notlike
(
'
%
河南
%
'
),
ProjectManagement
.
province
.
notlike
(
'
%
天津
%
'
),
ProjectManagement
.
province
.
notlike
(
'
%
河北
%
'
),
ProjectManagement
.
province
.
notlike
(
'
%
长治
%
'
),
ProjectManagement
.
province
.
notlike
(
'
%
晋城
%
'
),
ProjectManagement
.
province
.
notlike
(
'
%
运城
%
'
),
ProjectManagement
.
province
.
notlike
(
'
%
聊城
%
'
),
ProjectManagement
.
province
.
notlike
(
'
%
菏泽
%
'
),
ProjectManagement
.
province
.
notlike
(
'
%
泰安
%
'
),
ProjectManagement
.
province
.
notlike
(
'
%
宿州
%
'
),
ProjectManagement
.
province
.
notlike
(
'
%
淮北
%
'
),
ProjectManagement
.
province
.
notlike
(
'
%
阜阳
%
'
),
ProjectManagement
.
province
.
notlike
(
'
%
亳州
%
'
),
ProjectManagement
.
province
.
notlike
(
'
%
蚌埠
%
'
),
ProjectManagement
.
province
.
notlike
(
'
%
淮南
%
'
),
ProjectManagement
.
province
.
notlike
(
'
%
邢台
%
'
),
ProjectManagement
.
province
.
notlike
(
'
%
邯郸
%
'
),
ProjectManagement
.
province
.
notlike
(
'
%
北京
%
'
),
ProjectManagement
.
province
.
notlike
(
'
%
天津
%
'
),
ProjectManagement
.
province
.
notlike
(
'
%
河北
%
'
),
ProjectManagement
.
province
.
notlike
(
'
%
江苏
%
'
),
ProjectManagement
.
province
.
notlike
(
'
%
浙江
%
'
),
ProjectManagement
.
province
.
notlike
(
'
%
上海
%
'
),
ProjectManagement
.
province
.
notlike
(
'
%
广东
%
'
),
ProjectManagement
.
province
.
notlike
(
'
%
香港
%
'
),
ProjectManagement
.
province
.
notlike
(
'
%
澳门
%
'
)
))
else
:
return
jsonify
(
code
=
RET
.
PARAMERR
,
msg
=
"参数错误!"
)
project_obj_list
=
project_obj
.
all
()
pass
except
Exception
as
e
:
current_app
.
logger
.
error
(
e
)
return
jsonify
(
code
=
RET
.
DBERR
,
msg
=
'数据查询错误!'
)
return
jsonify
(
code
=
RET
.
DBERR
,
msg
=
"数据查询错误!"
)
apps/models.py
View file @
f9f5e843
...
...
@@ -1235,15 +1235,15 @@ class ShanxiTarget(db.Model):
district_name
=
db
.
Column
(
db
.
String
(
30
),
comment
=
'区县名称'
)
# 签约项目情况
sign_money
=
db
.
Column
(
db
.
Float
,
comment
=
'签约金额'
)
sign_target_money
=
db
.
Column
(
db
.
Float
,
comment
=
'目标金额'
)
sign_target_money
=
db
.
Column
(
db
.
Float
,
comment
=
'目标金额
(年度目标)
'
)
sign_finish_rate
=
db
.
Column
(
db
.
Float
,
comment
=
'完成率'
)
# 新开工固定资产投资项目计划投资完成情况
plan_invest_money
=
db
.
Column
(
db
.
Float
,
comment
=
'计划投资额'
)
plan_target_money
=
db
.
Column
(
db
.
Float
,
comment
=
'目标计划投资额'
)
plan_target_money
=
db
.
Column
(
db
.
Float
,
comment
=
'目标计划投资额
(年度目标)
'
)
plan_finish_rate
=
db
.
Column
(
db
.
Float
,
comment
=
'计划投资额完成率'
)
# 固定资产投资项目资金到位情况
arrive_money
=
db
.
Column
(
db
.
Float
,
comment
=
'资金到位'
)
arrive_target_money
=
db
.
Column
(
db
.
Float
,
comment
=
'目标资金到位'
)
arrive_target_money
=
db
.
Column
(
db
.
Float
,
comment
=
'目标资金到位
(年度目标)
'
)
arrive_finish_rate
=
db
.
Column
(
db
.
Float
,
comment
=
'计划投资额完成率'
)
...
...
@@ -1259,21 +1259,33 @@ class JcTarget(db.Model):
upload_unit
=
db
.
Column
(
db
.
String
(
30
),
comment
=
'上传部门'
)
upload_people
=
db
.
Column
(
db
.
String
(
30
),
comment
=
'上传人'
)
grade_sign
=
db
.
Column
(
db
.
Float
,
comment
=
'签约项目
金额
'
)
grade_start
=
db
.
Column
(
db
.
Float
,
comment
=
'项目开工率'
)
grade_plan_invest
=
db
.
Column
(
db
.
Float
,
comment
=
'新开工固定资产投资项目计划投资
额
'
)
grade_arrive_target1
=
db
.
Column
(
db
.
Float
,
comment
=
'固定资产投资项目资金到位
额
'
)
grade_arrive_target0
=
db
.
Column
(
db
.
Float
,
comment
=
'非固定资产投资项目资金到位
额
'
)
grade_sign
=
db
.
Column
(
db
.
Float
,
comment
=
'签约项目
情况赋分15
'
)
grade_start
=
db
.
Column
(
db
.
Float
,
comment
=
'项目开工率
赋分5
'
)
grade_plan_invest
=
db
.
Column
(
db
.
Float
,
comment
=
'新开工固定资产投资项目计划投资
赋分25
'
)
grade_arrive_target1
=
db
.
Column
(
db
.
Float
,
comment
=
'固定资产投资项目资金到位
赋分25
'
)
grade_arrive_target0
=
db
.
Column
(
db
.
Float
,
comment
=
'非固定资产投资项目资金到位
赋分5
'
)
district_name
=
db
.
Column
(
db
.
String
(
30
),
comment
=
'区县名称'
)
money_sign
=
db
.
Column
(
db
.
Float
,
comment
=
'签约项目金额'
)
rate_start
=
db
.
Column
(
db
.
Float
,
comment
=
'项目开工率'
)
money_plan_invest
=
db
.
Column
(
db
.
Float
,
comment
=
'新开工固定资产投资项目计划投资额'
)
money_arrive_target1
=
db
.
Column
(
db
.
Float
,
comment
=
'固定资产投资项目资金到位额'
)
money_arrive_target0
=
db
.
Column
(
db
.
Float
,
comment
=
'非固定资产投资项目资金到位额'
)
money_sign
=
db
.
Column
(
db
.
Float
,
comment
=
'签约项目金额
(年度目标)
'
)
rate_start
=
db
.
Column
(
db
.
Float
,
comment
=
'项目开工率
(年度目标)
'
)
money_plan_invest
=
db
.
Column
(
db
.
Float
,
comment
=
'新开工固定资产投资项目计划投资额
(年度目标)
'
)
money_arrive_target1
=
db
.
Column
(
db
.
Float
,
comment
=
'固定资产投资项目资金到位额
(年度目标)
'
)
money_arrive_target0
=
db
.
Column
(
db
.
Float
,
comment
=
'非固定资产投资项目资金到位额
(年度目标)
'
)
# 项目化管理-固定资产投资项目资金到位表
class
MoneyArrive
(
db
.
Model
):
__tablename_
=
"money_arrive"
__table_args__
=
({
'comment'
:
'项目化管理-固定资产投资项目资金到位表'
})
# 添加表注释
id
=
db
.
Column
(
db
.
Integer
,
primary_key
=
True
,
autoincrement
=
True
,
comment
=
'主键id'
)
is_delete
=
db
.
Column
(
db
.
Integer
,
comment
=
'逻辑删除'
)
data_time
=
db
.
Column
(
db
.
String
(
30
),
comment
=
'数据年份'
)
upload_time
=
db
.
Column
(
db
.
String
(
30
),
comment
=
'上传日期'
)
upload_unit
=
db
.
Column
(
db
.
String
(
30
),
comment
=
'上传部门'
)
upload_people
=
db
.
Column
(
db
.
String
(
30
),
comment
=
'上传人'
)
district_name
=
db
.
Column
(
db
.
String
(
30
),
comment
=
'区县名称'
)
arrive_money
=
db
.
Column
(
db
.
Float
,
comment
=
'固定资产投资项目资金到位额('
)
...
...
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