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
77e60885
Commit
77e60885
authored
Nov 29, 2022
by
dong
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
fix20221127
parent
a24451db
Show whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
603 additions
and
186 deletions
+603
-186
apps/inves_manage/__init__.py
+1
-0
apps/inves_manage/project_manager.py
+59
-28
apps/inves_manage/siku_view.py
+3
-3
apps/inves_manage/statistic_analysis_view.py
+539
-155
apps/models.py
+1
-0
No files found.
apps/inves_manage/__init__.py
View file @
77e60885
...
...
@@ -5,5 +5,6 @@ api_manage = Blueprint("api_manage", __name__)
from
.
import
view
from
.
import
siku_view
from
.
import
project_manager
from
.
import
statistic_analysis_view
"招商资源管理"
apps/inves_manage/project_manager.py
View file @
77e60885
...
...
@@ -700,9 +700,9 @@ def download_project_template1():
if
flag
==
1
:
project_template
=
"http://39.100.39.50:8008/aaa_statics/template_file/山西省各市完成情况表.xlsx"
if
flag
==
2
:
project_template
=
"http://39.100.39.50:8008/aaa_statics/template_file/晋城市及县区年度目标表.xls"
project_template
=
"http://39.100.39.50:8008/aaa_statics/template_file/晋城市及县区年度目标表.xls
x
"
if
flag
==
3
:
project_template
=
"http://39.100.39.50:8008/aaa_statics/template_file/晋城市及县区固投到位资金完成情况.xls"
project_template
=
"http://39.100.39.50:8008/aaa_statics/template_file/晋城市及县区固投到位资金完成情况.xls
x
"
return
jsonify
(
code
=
RET
.
OK
,
data
=
project_template
,
msg
=
"模板下载成功!"
)
...
...
@@ -824,6 +824,10 @@ def upload_shanxi_data():
@api_manage.route
(
"/ShanxiDataList"
,
methods
=
[
"POST"
])
def
shanxi_data_list
():
token
=
request
.
headers
[
'token'
]
req_dic
=
request
.
get_json
()
page
=
req_dic
[
'page'
]
per_page
=
req_dic
[
'per_page'
]
try
:
user_obj
=
verify_token
(
token
)
user_name
=
user_obj
.
real_name
...
...
@@ -850,14 +854,19 @@ def shanxi_data_list():
"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
=
'获取成功!'
)
data_size
=
len
(
data_li
)
start
=
(
page
-
1
)
*
per_page
end
=
page
*
per_page
data_li
=
data_li
[
start
:
end
]
return
jsonify
(
code
=
RET
.
OK
,
data
=
{
"data_li"
:
data_li
,
"data_size"
:
data_size
},
msg
=
'获取成功!'
)
except
Exception
as
e
:
db
.
session
.
rollback
()
current_app
.
logger
.
error
(
e
)
return
jsonify
(
code
=
RET
.
DBERR
,
msg
=
"查询数据库错误!"
)
# 新增/编辑山西指标
上传页
数据
# 新增/编辑山西指标数据
@api_manage.route
(
"/AddEditShanxiData"
,
methods
=
[
"POST"
])
def
add_shanxi_data
():
token
=
request
.
headers
[
'token'
]
...
...
@@ -884,6 +893,8 @@ def add_shanxi_data():
arrive_money
=
data
[
'arrive_money'
]
# 资金到位
arrive_target_money
=
data
[
'arrive_target_money'
]
# 目标资金到位
arrive_finish_rate
=
data
[
'arrive_finish_rate'
]
# 计划投资额完成率
add_num
=
0
update_num
=
0
try
:
target_obj
=
ShanxiTarget
.
query
.
filter_by
(
district_name
=
district_name
,
data_time
=
data_time
,
is_delete
=
0
)
.
first
()
if
target_obj
:
# 更新
...
...
@@ -902,6 +913,7 @@ def add_shanxi_data():
target_obj
.
arrive_target_money
=
arrive_target_money
target_obj
.
arrive_finish_rate
=
arrive_finish_rate
db
.
session
.
commit
()
update_num
+=
1
else
:
target_obj
=
ShanxiTarget
(
is_delete
=
0
,
...
...
@@ -922,13 +934,14 @@ def add_shanxi_data():
)
db
.
session
.
add
(
target_obj
)
db
.
session
.
commit
()
add_num
+=
1
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
=
'
新增
成功!'
)
return
jsonify
(
code
=
RET
.
OK
,
msg
=
'
保存
成功!'
)
# 详情数据列表(某周期山西各地市指标数据列表展示)
...
...
@@ -937,8 +950,6 @@ def shanxi_data_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
=
"进行操作时用户信息校验失败,请重新登陆后尝试!"
)
...
...
@@ -947,6 +958,7 @@ def shanxi_data_detail():
try
:
target_obj_li
=
ShanxiTarget
.
query
.
filter_by
(
data_time
=
data_time
,
is_delete
=
0
)
.
all
()
data
=
[{
"id"
:
target_obj
.
id
,
"data_time"
:
target_obj
.
data_time
,
"upload_time"
:
target_obj
.
upload_time
,
"upload_unit"
:
target_obj
.
upload_unit
,
...
...
@@ -1090,7 +1102,7 @@ def upload_jc_data():
return
jsonify
(
code
=
RET
.
SESSIONERR
,
msg
=
"进行操作时用户信息校验失败,请重新登陆后尝试!"
)
# 上传的文件
file
=
request
.
files
[
'file'
]
year
=
request
.
f
iles
[
'year'
]
# 年份,如'2022年'
year
=
request
.
f
orm
[
'year'
]
# 年份,如'2022年'
print
(
file
.
filename
)
# 打印文件名
upload_time
=
datetime
.
now
()
.
strftime
(
"
%
Y-
%
m-
%
d
%
H:
%
M:
%
S"
)
...
...
@@ -1195,7 +1207,6 @@ def add_jc_data():
data_list
=
req_dic
[
"data_list"
]
upload_time
=
datetime
.
now
()
.
strftime
(
"
%
Y-
%
m-
%
d
%
H:
%
M:
%
S"
)
# current_year = str(datetime.now().year) + '年'
for
data
in
data_list
:
year
=
data
[
'year'
]
# 所属年份
district_name
=
data
[
'district_name'
]
# 区县名称
...
...
@@ -1237,7 +1248,7 @@ def add_jc_data():
db
.
session
.
rollback
()
current_app
.
logger
.
error
(
e
)
return
jsonify
(
code
=
RET
.
DBERR
,
msg
=
"数据库异常,新增失败!"
)
return
jsonify
(
code
=
RET
.
OK
,
msg
=
'
新增
成功!'
)
return
jsonify
(
code
=
RET
.
OK
,
msg
=
'
保存
成功!'
)
# 概览数据列表(晋城指标上传页数据列表展示)
...
...
@@ -1253,6 +1264,8 @@ def jc_data_list():
return
jsonify
(
code
=
RET
.
SESSIONERR
,
msg
=
"进行操作时用户信息校验失败,请重新登陆后尝试!"
)
req_dic
=
request
.
get_json
()
year
=
req_dic
[
'year'
]
page
=
req_dic
[
"page"
]
per_page
=
req_dic
[
"per_page"
]
current_year
=
datetime
.
now
()
.
year
try
:
target_obj_list
=
JcTarget
.
query
.
filter
(
...
...
@@ -1263,6 +1276,7 @@ def jc_data_list():
# 收集上传周期
data_li
=
[]
data_size
=
''
for
year
in
list
(
year_set
):
target_obj
=
JcTarget
.
query
.
filter_by
(
year
=
year
,
is_delete
=
0
)
.
first
()
data
=
{
"year"
:
target_obj
.
year
,
...
...
@@ -1271,7 +1285,12 @@ def jc_data_list():
"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
=
'获取成功!'
)
data_size
=
len
(
data_li
)
start
=
(
page
-
1
)
*
per_page
end
=
page
*
per_page
data_li
=
data_li
[
start
:
end
]
return
jsonify
(
code
=
RET
.
OK
,
data
=
{
"data_li"
:
data_li
,
"data_size"
:
data_size
},
msg
=
'获取成功!'
)
except
Exception
as
e
:
db
.
session
.
rollback
()
current_app
.
logger
.
error
(
e
)
...
...
@@ -1294,6 +1313,7 @@ def jc_data_detail():
try
:
target_obj_li
=
JcTarget
.
query
.
filter_by
(
year
=
year
,
is_delete
=
0
)
.
all
()
data
=
[{
"id"
:
target_obj
.
id
,
"year"
:
target_obj
.
year
,
"upload_time"
:
target_obj
.
upload_time
,
"upload_unit"
:
target_obj
.
upload_unit
,
...
...
@@ -1417,7 +1437,7 @@ def download_jc_data():
"""固定资产投资项目资金到位"""
# 上传
山西省地市指标
# 上传
固定资产投资项目资金到位
@api_manage.route
(
"/UploadMoneyArrive"
,
methods
=
[
"POST"
])
def
upload_money_arrive
():
token
=
request
.
headers
[
'token'
]
...
...
@@ -1455,7 +1475,7 @@ def upload_money_arrive():
msg
=
"表格内无有效数据!请尝试 <清空浏览器缓存> 后下载最新模板,根据模板提示信息编辑数据后再次上传。(注:第三行为首行有效数据不能为空、第一行和第二行无法读取。)"
)
try
:
district_name
=
row_content
[
0
]
# 区县名称
arrive_money
=
ro
w_content
[
1
]
# 到位金额
arrive_money
=
ro
und
(
row_content
[
1
],
2
)
# 到位金额
except
Exception
as
e
:
# 表示操作失败,回滚数据库操作
current_app
.
logger
.
error
(
e
)
...
...
@@ -1479,7 +1499,7 @@ def upload_money_arrive():
continue
else
:
# 写入数据库
target_obj
=
ShanxiTarget
(
target_obj
=
MoneyArrive
(
file_name
=
data_time
+
'固投资金到位情况'
,
is_delete
=
0
,
data_time
=
data_time
,
...
...
@@ -1506,7 +1526,7 @@ def upload_money_arrive():
return
jsonify
(
code
=
RET
.
DATAERR
,
msg
=
'无新数据上传。'
)
# 概览数据列表(
山西指标上传页数据列表展示
)
# 概览数据列表(
固定资产投资项目资金到位
)
@api_manage.route
(
"/MoneyArriveList"
,
methods
=
[
"POST"
])
def
money_arrive_list
():
token
=
request
.
headers
[
'token'
]
...
...
@@ -1519,6 +1539,8 @@ def money_arrive_list():
return
jsonify
(
code
=
RET
.
SESSIONERR
,
msg
=
"进行操作时用户信息校验失败,请重新登陆后尝试!"
)
req_dic
=
request
.
get_json
()
year
=
req_dic
[
'year'
]
page
=
req_dic
[
"page"
]
per_page
=
req_dic
[
"per_page"
]
current_year
=
datetime
.
now
()
.
year
try
:
target_obj_list
=
MoneyArrive
.
query
.
filter
(
...
...
@@ -1528,6 +1550,7 @@ def money_arrive_list():
# 收集上传周期
data_li
=
[]
data_size
=
''
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
,
...
...
@@ -1536,14 +1559,20 @@ def money_arrive_list():
"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
=
'获取成功!'
)
data_size
=
len
(
data_li
)
start
=
(
page
-
1
)
*
per_page
end
=
page
*
per_page
data_li
=
data_li
[
start
:
end
]
return
jsonify
(
code
=
RET
.
OK
,
data
=
{
"data_li"
:
data_li
,
"data_size"
:
data_size
},
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'
]
...
...
@@ -1557,30 +1586,31 @@ def add_edit_money_arrive():
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'
]
# 签约金额
money_arrive
=
float
(
data
[
'money_arrive'
])
# 签约金额
try
:
target_obj
=
MoneyArrive
.
query
.
filter_by
(
district_name
=
district_name
,
data_time
=
data_time
,
is_
s
elete
=
0
)
.
first
()
target_obj
=
MoneyArrive
.
query
.
filter_by
(
district_name
=
district_name
,
data_time
=
data_time
,
is_
d
elete
=
0
)
.
first
()
if
target_obj
:
# 更新
target_obj
.
data_time
=
data_time
# target_obj.file_name = 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
target_obj
.
arrive_money
=
money_arrive
db
.
session
.
commit
()
else
:
target_obj
=
MoneyArrive
(
is_delete
=
0
,
data_time
=
data_time
,
file_name
=
data_time
+
"固投资金到位情况"
,
upload_time
=
upload_time
,
upload_unit
=
user_unity
,
upload_people
=
user_name
,
district_name
=
district_name
,
money_arrive
=
money_arrive
,
arrive_money
=
money_arrive
,
)
db
.
session
.
add
(
target_obj
)
db
.
session
.
commit
()
...
...
@@ -1593,7 +1623,7 @@ def add_edit_money_arrive():
return
jsonify
(
code
=
RET
.
OK
,
msg
=
'新增成功!'
)
# 详情数据列表(某周期
山西各地市指标数据
列表展示)
# 详情数据列表(某周期
固定资产投资项目资金到位
列表展示)
@api_manage.route
(
"/MoneyArriveDetail"
,
methods
=
[
"POST"
])
def
arrive_money_detail
():
token
=
request
.
headers
[
'token'
]
...
...
@@ -1609,12 +1639,13 @@ def arrive_money_detail():
try
:
target_obj_li
=
MoneyArrive
.
query
.
filter_by
(
data_time
=
data_time
,
is_delete
=
0
)
.
all
()
data
=
[{
"id"
:
target_obj
.
id
,
"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
,
"money_arrive"
:
target_obj
.
arrive_money
,
}
for
target_obj
in
target_obj_li
]
return
jsonify
(
code
=
RET
.
OK
,
data
=
data
,
msg
=
"获取成功!"
)
except
Exception
as
e
:
...
...
@@ -1624,7 +1655,7 @@ def arrive_money_detail():
return
jsonify
(
code
=
RET
.
DBERR
,
msg
=
"数据库异常"
)
# 下载数据详情
# 下载数据详情
(固定资产投资项目资金到位)
@api_manage.route
(
"/DownloadMoneyArrive"
,
methods
=
[
"POST"
])
def
download_money_arrive
():
token
=
request
.
headers
[
'token'
]
...
...
@@ -1649,8 +1680,8 @@ def download_money_arrive():
data_list
=
[]
district_name
=
target_obj
.
district_name
data_list
.
append
(
district_name
)
# 区县名称
money_arrive
=
target_obj
.
money_arrive
data_list
.
append
(
money_arrive
)
# 签约金额
arrive_money
=
target_obj
.
arrive_money
data_list
.
append
(
arrive_money
)
# 签约金额
target_data_list
.
append
(
data_list
)
except
Exception
as
e
:
current_app
.
logger
.
error
(
e
)
...
...
@@ -1685,7 +1716,7 @@ def download_money_arrive():
return
jsonify
(
code
=
RET
.
DBERR
,
msg
=
"批量导出操作失败!"
)
# 删除某时间周期的数据
# 删除某时间周期的数据
(固定资产投资项目资金到位)
@api_manage.route
(
"/DeleteMoneyArrive"
,
methods
=
[
"POST"
])
def
delete_money_arrive
():
token
=
request
.
headers
[
'token'
]
...
...
apps/inves_manage/siku_view.py
View file @
77e60885
...
...
@@ -597,9 +597,9 @@ def add_project():
other_source
=
req_dic
[
'other_source'
]
remark
=
req_dic
[
'remark'
]
if
not
all
([
project_name
,
investor_name
,
investor_district
,
project_type
,
investment_volume
,
project_info
,
thread_people
,
thread_people_unity
,
thread_people_mobile
,
thread_progress
,
investment_volume1
,
project_info1
,
stop_reason
,
thread_source
,
cooperation_way
,
other_source
,
remark
]):
investment_volume
,
thread_people
,
thread_people_unity
,
thread_people_mobile
,
thread_progress
,
investment_volume1
,
thread_source
,
cooperation_way
,
remark
]):
return
jsonify
(
code
=
RET
.
NODATA
,
msg
=
'无有效数据!'
)
upload_time
=
datetime
.
now
()
.
strftime
(
"
%
Y/
%
m/
%
d"
)
...
...
apps/inves_manage/statistic_analysis_view.py
View file @
77e60885
...
...
@@ -44,7 +44,7 @@ def statistic_shanxi_data():
"district_name"
:
target_obj
.
district_name
,
"sign_money"
:
str
(
target_obj
.
sign_money
/
10000
)
+
'亿'
,
"sign_target_money"
:
str
(
target_obj
.
sign_target_money
/
10000
)
+
'亿'
,
"sign_finish_rate"
:
str
(
target_obj
.
sign_finish_rate
/
100
00
)
+
'
%
'
,
"sign_finish_rate"
:
str
(
target_obj
.
sign_finish_rate
/
100
)
+
'
%
'
,
}
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
)
...
...
@@ -73,24 +73,10 @@ def statistic_shanxi_data():
return
jsonify
(
code
=
RET
.
DBERR
,
msg
=
"查询数据库错误!"
)
# 晋城市数据统计
@api_manage.route
(
"/StatisticJcData"
,
methods
=
[
"POST"
])
def
statistic_jc_data
():
req_dic
=
request
.
get_json
()
flag
=
req_dic
[
'flag'
]
current_year
=
datetime
.
now
()
.
year
district_li
=
[
"全市"
,
"城区"
,
"泽州县"
,
"高平市"
,
"阳城县"
,
"陵川县"
,
"沁水县"
,
"晋城经济技术开发区"
,
"高平经济技术开发区"
,
"阳城经济技术开发区"
,
"沁水经济技术开发区"
,
"陵川生态文化旅游示范区"
]
# 项目签约完成率
def
get_data1
(
district_li
,
current_year
):
data_li1
=
[]
data_li2
=
[]
data_li3
=
[]
data_li4
=
[]
data_li5
=
[]
data_li6
=
[]
try
:
# 一。项目签约完成率(签约项目完成率:完成率(%):签约金额(亿元)/ 年度目标(亿元))
for
district
in
district_li
:
project_obj_list
=
ProjectManagement
.
query
.
filter
(
ProjectManagement
.
sign_time
.
like
(
'
%
{}
%
'
.
format
(
str
(
current_year
))),
...
...
@@ -112,21 +98,21 @@ def statistic_jc_data():
data
=
{
"district"
:
district
,
"rate"
:
investment_volume
/
year_target
if
year_target
and
year_target
!=
0
else
0
"rate"
:
round
(
investment_volume
/
year_target
,
2
)
*
100
if
year_target
and
year_target
!=
0
else
0
}
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
})
except
Exception
as
e
:
current_app
.
logger
.
error
(
e
)
print
(
'项目签约完成率计算出错'
,
e
)
return
'error'
return
data_li1
# 二。项目开工率(开工率进度:当年签约当年开工个数/签约个数)
# 项目开工率
def
get_data2
(
district_li
,
current_year
):
data_li2
=
[]
try
:
for
district
in
district_li
:
# 签约项目个数
sign_num
=
ProjectManagement
.
query
.
filter
(
...
...
@@ -141,20 +127,21 @@ def statistic_jc_data():
data
=
{
"district"
:
district
,
"rate"
:
start_num
/
sign_num
if
sign_num
and
sign_num
!=
0
else
0
"rate"
:
round
(
start_num
/
sign_num
,
2
)
*
100
if
sign_num
and
sign_num
!=
0
else
0
}
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
})
except
Exception
as
e
:
current_app
.
logger
.
error
(
e
)
print
(
'项目开工率计算出错'
,
e
)
return
'error'
return
data_li2
# 三。新开工项目计划投资额完成率得分=(完成率(%):新开工项目计划投资额(亿元)/ 年度目标(亿元))
# 新开工项目计划投资额完成率
def
get_data3
(
district_li
,
current_year
):
data_li3
=
[]
try
:
for
district
in
district_li
:
project_obj_list
=
ProjectManagement
.
query
.
filter
(
ProjectManagement
.
start_time
.
like
(
'
%
{}
%
'
.
format
(
str
(
current_year
))),
...
...
@@ -176,22 +163,21 @@ def statistic_jc_data():
data
=
{
"district"
:
district
,
"rate"
:
investment_volume
/
year_target
if
year_target
and
year_target
!=
0
else
0
"rate"
:
round
(
investment_volume
/
year_target
,
2
)
*
100
if
year_target
and
year_target
!=
0
else
0
}
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
})
except
Exception
as
e
:
current_app
.
logger
.
error
(
e
)
print
(
'新开工项目计划投资额完成率计算出错'
,
e
)
return
'error'
return
data_li3
# 四。固定资产投资项目到位资金完成率(完成率(%):固定资产投资项目资金到位额(亿元)/ 年度目标(亿元))
# 固定资产投资项目到位资金完成率
def
get_data4
(
district_li
,
current_year
):
data_li4
=
[]
try
:
for
district
in
district_li
:
project_obj
=
MoneyArrive
.
query
.
filter
(
MoneyArrive
.
data_time
.
like
(
'
%
{}
%
'
.
format
(
str
(
current_year
))),
...
...
@@ -213,22 +199,21 @@ def statistic_jc_data():
data
=
{
"district"
:
district
,
"rate"
:
arrive_money
/
year_target
if
year_target
and
year_target
!=
0
else
0
"rate"
:
round
(
arrive_money
/
year_target
,
2
)
*
100
if
year_target
and
year_target
!=
0
else
0
}
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
})
except
Exception
as
e
:
current_app
.
logger
.
error
(
e
)
print
(
'固定资产投资项目到位资金完成率计算出错'
,
e
)
return
'error'
return
data_li4
# 五。非固定资产投资项目到位资金完成率(完成率(%):非固定资产投资项目资金到位额(亿元)/ 年度目标(亿元))
# 非固定资产投资项目到位资金完成率
def
get_data5
(
district_li
,
current_year
):
data_li5
=
[]
try
:
for
district
in
district_li
:
project_obj_list
=
ProjectManagement
.
query
.
filter
(
ProjectManagement
.
is_fixed_investment
==
'否'
,
...
...
@@ -250,10 +235,56 @@ def statistic_jc_data():
year_target
=
jc_obj
.
money_arrive_target0
data
=
{
"district"
:
district
,
"rate"
:
investment_volume
/
year_target
if
year_target
and
year_target
!=
0
else
0
"rate"
:
round
(
investment_volume
/
year_target
,
2
)
*
100
if
year_target
and
year_target
!=
0
else
0
}
data_li5
.
append
(
data
)
continue
except
Exception
as
e
:
current_app
.
logger
.
error
(
e
)
print
(
'非固定资产投资项目到位资金完成率计算出错'
,
e
)
return
'error'
return
data_li5
# 综合得分
def
get_data6
(
district_li
,
current_year
):
data_li1
,
data_li2
,
data_li3
,
data_li4
,
data_li5
=
get_data_li
(
district_li
,
current_year
)
data_li6
=
[]
# 项目签约情况得分=完成率(%)*赋分(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
})
# 项目开工率情况得分=如果开工率进度小于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
})
# 新开工固定资产投资项目计划投资额完成情况得分=如果完成率(%)小于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
})
# 固定资产投资项目资金到位情况得分=如果完成率(%)小于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
})
# 非固定资产投资项目资金到位情况得分=如果完成率(%)小于1,
# 则输出完成率(%)*赋分(5 上传后获取)的结果,否则输出赋分(5);
grade_li5
=
[]
...
...
@@ -263,8 +294,11 @@ def statistic_jc_data():
grade_li5
.
append
({
"district"
:
data
[
"district"
],
"grade"
:
grade
*
5
})
else
:
grade_li5
.
append
({
"district"
:
data
[
"district"
],
"grade"
:
5
})
# 六。综合得分
grade1
=
0
grade2
=
0
grade3
=
0
grade4
=
0
grade5
=
0
for
district
in
district_li
:
# 签约情况得分
for
grade_dic
in
grade_li1
:
...
...
@@ -277,7 +311,7 @@ def statistic_jc_data():
# 新开工得分
for
grade_dic
in
grade_li3
:
if
grade_dic
[
"district"
]
==
district
:
grade4
=
grade_dic
[
"grade"
]
grade3
=
grade_dic
[
"grade"
]
# 固定资产得分
for
grade_dic
in
grade_li4
:
if
grade_dic
[
"district"
]
==
district
:
...
...
@@ -286,9 +320,54 @@ def statistic_jc_data():
for
grade_dic
in
grade_li5
:
if
grade_dic
[
"district"
]
==
district
:
grade5
=
grade_dic
[
"grade"
]
total_grade
=
grade1
+
grade2
+
grade4
+
grade4
+
grade5
total_grade
=
grade1
+
grade2
+
grade3
+
grade4
+
grade5
data_li6
.
append
({
"district"
:
district
,
"total_grade"
:
total_grade
})
continue
return
data_li6
def
get_data_li
(
district_li
,
current_year
):
# 一。项目签约完成率(签约项目完成率:完成率(%):签约金额(亿元)/ 年度目标(亿元))
data_li1
=
get_data1
(
district_li
,
current_year
)
if
data_li1
==
'error'
:
return
jsonify
(
code
=
RET
.
DBERR
,
msg
=
'项目签约完成率计算出错'
)
# 二。项目开工率(开工率进度:当年签约当年开工个数/签约个数)
data_li2
=
get_data2
(
district_li
,
current_year
)
if
data_li2
==
'error'
:
return
jsonify
(
code
=
RET
.
DBERR
,
msg
=
'项目开工率计算出错'
)
# 三。新开工项目计划投资额完成率(完成率(%):新开工项目计划投资额(亿元)/ 年度目标(亿元))
data_li3
=
get_data3
(
district_li
,
current_year
)
if
data_li3
==
'error'
:
return
jsonify
(
code
=
RET
.
DBERR
,
msg
=
'新开工项目计划投资额完成率计算出错'
)
# 四。固定资产投资项目到位资金完成率(完成率(%):固定资产投资项目资金到位额(亿元)/ 年度目标(亿元))
data_li4
=
get_data2
(
district_li
,
current_year
)
if
data_li4
==
'error'
:
return
jsonify
(
code
=
RET
.
DBERR
,
msg
=
'固定资产投资项目到位资金完成率计算出错'
)
# 五。非固定资产投资项目到位资金完成率(完成率(%):非固定资产投资项目资金到位额(亿元)/ 年度目标(亿元))
data_li5
=
get_data5
(
district_li
,
current_year
)
if
data_li5
==
'error'
:
return
jsonify
(
code
=
RET
.
DBERR
,
msg
=
'非固定资产投资项目到位资金完成率计算出错'
)
return
data_li1
,
data_li2
,
data_li3
,
data_li4
,
data_li5
# 晋城市数据统计
@api_manage.route
(
"/StatisticJcData"
,
methods
=
[
"POST"
])
def
statistic_jc_data
():
# req_dic = request.get_json()
current_year
=
datetime
.
now
()
.
year
district_li
=
[
""
,
"城区"
,
"泽州县"
,
"高平市"
,
"阳城县"
,
"陵川县"
,
"沁水县"
,
"晋城经济技术开发区"
,
"高平经济技术开发区"
,
"阳城经济技术开发区"
,
"沁水经济技术开发区"
,
"陵川生态文化旅游示范区"
]
try
:
data_li1
,
data_li2
,
data_li3
,
data_li4
,
data_li5
=
get_data_li
(
district_li
,
current_year
)
# 六。综合得分
data_li6
=
get_data6
(
district_li
,
current_year
)
return
jsonify
(
code
=
RET
.
OK
,
data
=
{
"data_li1"
:
data_li1
,
"data_li2"
:
data_li2
,
"data_li3"
:
data_li3
,
"data_li4"
:
data_li4
,
...
...
@@ -299,6 +378,283 @@ def statistic_jc_data():
return
jsonify
(
code
=
RET
.
DBERR
,
msg
=
"数据查询错误!"
)
# 区县指标完成表导出
@api_manage.route
(
"/ExportJcData1"
,
methods
=
[
"POST"
])
def
export_jc_data1
():
req_dic
=
request
.
get_json
()
district
=
req_dic
[
'district'
]
current_year
=
datetime
.
now
()
.
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/'
# 项目路径
district_li
=
[
"全市"
,
"城区"
,
"泽州县"
,
"高平市"
,
"阳城县"
,
"陵川县"
,
"沁水县"
,
"晋城经济技术开发区"
]
# data_li1, data_li2, data_li3, data_li4, data_li5 = get_data_li(district_li, current_year)
# 六。综合得分
data_li6
=
get_data6
(
district_li
,
current_year
)
target_data_list
=
[]
data_list
=
[]
for
district
in
district_li
:
# 县(市、区)、开发区
data_list
.
append
(
district
)
# 签约个数
sign_num
=
ProjectManagement
.
query
.
filter
(
ProjectManagement
.
sign_time
.
like
(
'
%
{}
%
'
.
format
(
str
(
current_year
))),
ProjectManagement
.
district
.
like
(
'
%
{}
%
'
.
format
(
str
(
district
)))
)
.
count
()
data_list
.
append
(
sign_num
)
# 签约金额(亿元)
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
:
sign_money
=
0
else
:
sign_money
=
sum
([
project_obj
.
investment_volume
for
project_obj
in
project_obj_list
])
data_list
.
append
(
sign_money
)
# 签约年度目标(亿元)
jc_obj
=
JcTarget
.
query
.
filter
(
JcTarget
.
year
.
like
(
'
%
{}
%
'
.
format
(
str
(
current_year
))),
JcTarget
.
district_name
.
like
(
'
%
{}
%
'
.
format
(
str
(
district
))))
.
first
()
sign_target
=
0
if
jc_obj
:
sign_target
=
jc_obj
.
money_sign
data_list
.
append
(
sign_target
)
# 签约完成率
sign_rate
=
sign_money
/
sign_target
if
sign_target
and
sign_target
!=
0
else
0
data_list
.
append
(
sign_rate
)
# 签约得分(15分)
grade
=
sign_rate
*
15
if
grade
<
15
:
sign_grade
=
grade
else
:
sign_grade
=
15
data_list
.
append
(
sign_grade
)
# 当年开工个数
start_num
=
ProjectManagement
.
query
.
filter
(
ProjectManagement
.
start_time
.
like
(
'
%
{}
%
'
.
format
(
str
(
current_year
))),
ProjectManagement
.
district
.
like
(
'
%
{}
%
'
.
format
(
str
(
district
)))
)
.
count
()
data_list
.
append
(
start_num
)
# 开工率进度(40 %)
start_rate
=
start_num
/
sign_num
if
sign_num
and
sign_num
!=
0
else
0
data_list
.
append
(
start_rate
)
# 开工得分(5分)
if
start_rate
<
0.4
:
start_grade
=
start_rate
*
5
/
0.4
else
:
start_grade
=
5
data_list
.
append
(
start_grade
)
# 新开工项目计划投资额(亿元)
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
:
new_start_money
=
0
else
:
new_start_money
=
sum
([
project_obj
.
investment_volume
for
project_obj
in
project_obj_list
])
data_list
.
append
(
new_start_money
)
# 新开工年度目标
jc_obj
=
JcTarget
.
query
.
filter
(
JcTarget
.
district_name
==
district
,
JcTarget
.
year
.
like
(
'
%
{}
%
'
.
format
(
str
(
current_year
)))
)
.
first
()
if
not
jc_obj
:
new_start_target
=
0
else
:
new_start_target
=
jc_obj
.
money_plan_invest
data_list
.
append
(
new_start_target
)
# 新开工完成率
new_start_rate
=
new_start_money
/
new_start_target
if
new_start_target
and
new_start_target
!=
0
else
0
data_list
.
append
(
new_start_rate
)
# 新开工得分
for
grade_dic
in
data_li6
:
if
grade_dic
[
'district'
]
==
district
:
new_start_rate
=
grade_dic
[
'total_grade'
]
if
new_start_rate
<
1
:
new_start_grade
=
new_start_rate
*
25
else
:
new_start_grade
=
25
data_list
.
append
(
new_start_grade
)
# 固定资产投资项目资金到位额(亿元)
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
:
gutou1_money
=
0
else
:
gutou1_money
=
project_obj
.
arrive_money
data_list
.
append
(
gutou1_money
)
# 年度目标
jc_obj
=
JcTarget
.
query
.
filter
(
JcTarget
.
district_name
==
district
,
JcTarget
.
year
.
like
(
'
%
{}
%
'
.
format
(
str
(
current_year
)))
)
.
first
()
if
not
jc_obj
:
gutou1_target
=
0
else
:
gutou1_target
=
jc_obj
.
money_arrive_target1
data_list
.
append
(
gutou1_target
)
# 完成率
gutou1_rate
=
gutou1_money
/
gutou1_target
if
gutou1_target
and
gutou1_target
!=
0
else
0
data_list
.
append
(
gutou1_target
)
# 得分(25分)
if
gutou1_rate
<
1
:
gutou1_grade
=
gutou1_rate
*
25
else
:
gutou1_grade
=
25
data_list
.
append
(
gutou1_grade
)
# 非固定资产投资项目资金到位额(亿元)
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
:
gutou0_money
=
0
else
:
gutou0_money
=
sum
([
project_obj
.
investment_year
for
project_obj
in
project_obj_list
])
data_list
.
append
(
gutou0_money
)
# 年度目标
jc_obj
=
JcTarget
.
query
.
filter
(
JcTarget
.
district_name
==
district
,
JcTarget
.
year
.
like
(
'
%
{}
%
'
.
format
(
str
(
current_year
)))
)
.
first
()
if
not
jc_obj
:
gutou0_target
=
0
else
:
gutou0_target
=
jc_obj
.
money_arrive_target0
data_list
.
append
(
gutou0_target
)
# 完成率
gutou0_rate
=
gutou0_money
/
gutou0_target
if
gutou0_target
and
gutou0_target
!=
0
else
0
data_list
.
append
(
gutou0_rate
)
# 得分(5分)
if
gutou0_rate
<
1
:
gutou0_grade
=
gutou0_rate
*
5
else
:
gutou0_grade
=
5
data_list
.
append
(
gutou0_grade
)
# 指标得分(75分)
target_grade
=
0
for
grade_dic
in
data_li6
:
if
grade_dic
[
'district'
]
==
district
:
target_grade
=
grade_dic
[
'total_grade'
]
data_list
.
append
(
target_grade
)
target_data_list
.
append
(
data_list
)
try
:
sheet_name_titles
=
{
"sheet1"
:
[
"县(市、区)、开发区"
,
"签约个数"
,
"签约金额(亿元)"
,
"年度目标(亿元)"
,
"完成率"
,
"得分(15分)"
,
"当年签约当年开工个数"
,
"开工率进度(40
%
)"
,
"得分(5分)"
,
"新开工项目计划投资额(亿元)"
,
"年度目标(亿元)"
,
"完成率"
,
"得分(25分)"
,
"固定资产投资项目资金到位额(亿元)"
,
"年度目标(亿元)"
,
"完成率"
,
"得分(25分)"
,
"非固定资产投资项目资金到位额(亿元)"
,
"年度目标(亿元)"
,
"完成率"
,
"得分(5分)"
,
"指标得分(75分)"
]}
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
(
"/ExportJcData2"
,
methods
=
[
"POST"
])
def
export_jc_data2
():
req_dic
=
request
.
get_json
()
district
=
req_dic
[
'district'
]
current_year
=
datetime
.
now
()
.
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/'
# 项目路径
district_li
=
[
"全市"
,
"城区"
,
"泽州县"
,
"高平市"
,
"阳城县"
,
"陵川县"
,
"沁水县"
,
"晋城经济技术开发区"
]
target_data_list
=
[]
data_list
=
[]
for
district
in
district_li
:
# 县(市、区)、开发区
data_list
.
append
(
district
)
data_list
.
append
(
target_grade
)
target_data_list
.
append
(
data_list
)
try
:
sheet_name_titles
=
{
"sheet1"
:
[
"县(市、区)、开发区"
,
"签约个数"
,
"签约金额(亿元)"
,
"属地签约任务(亿元)"
,
"完成属地目标任务占比"
,
"新开工项目"
,
"计划投资额(亿元)"
,
"属地投资任务(亿元)"
,
"完成属地目标任务占比"
,
"当年签约当年开工个数"
,
"开工率年度目标(40
%
)"
,
"开工率排名"
,
"属地投资任务(亿元)"
,
"完成属地目标任务占比"
,
"开工率目标(40
%
)"
,
"开工率排名"
]}
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
=
"批量导出操作失败!"
)
"""项目分析"""
...
...
@@ -307,7 +663,7 @@ def statistic_jc_data():
def
project_graph
():
req_dic
=
request
.
get_json
()
district
=
req_dic
[
'district'
]
flag
=
req_dic
[
'flag'
]
flag
=
req_dic
[
'flag'
]
# 1项目来源区域分布,2项目投资额区间分布,3项目产业分布,4项目行业类型分布
current_year
=
datetime
.
now
()
.
year
try
:
project_obj
=
ProjectManagement
.
query
.
filter
(
...
...
@@ -322,26 +678,51 @@ def project_graph():
num3
=
0
# 珠三角
num4
=
0
# 中原经济区
num5
=
0
# 其他
for
project_obj
in
project_obj
.
all
():
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
=
project_obj
.
count
()
num1
=
project_obj
.
filter
(
or_
(
ProjectManagement
.
project_source
.
like
(
'
%
北京
%
'
),
ProjectManagement
.
project_source
.
like
(
'
%
天津
%
'
),
ProjectManagement
.
project_source
.
like
(
'
%
河北
%
'
)
))
.
count
()
num2
=
project_obj
.
filter
(
or_
(
ProjectManagement
.
project_source
.
like
(
'
%
江苏
%
'
),
ProjectManagement
.
project_source
.
like
(
'
%
浙江
%
'
),
ProjectManagement
.
project_source
.
like
(
'
%
上海
%
'
)
))
.
count
()
num3
=
project_obj
.
filter
(
or_
(
ProjectManagement
.
project_source
.
like
(
'
%
广东
%
'
),
ProjectManagement
.
project_source
.
like
(
'
%
香港
%
'
),
ProjectManagement
.
project_source
.
like
(
'
%
澳门
%
'
)
))
.
count
()
num4
=
project_obj
.
filter
(
or_
(
ProjectManagement
.
project_source
.
like
(
'
%
河南
%
'
),
# ProjectManagement.project_source.like('%天津%'),
# ProjectManagement.project_source.like('%河北%'),
ProjectManagement
.
project_source
.
like
(
'
%
长治
%
'
),
ProjectManagement
.
project_source
.
like
(
'
%
晋城
%
'
),
ProjectManagement
.
project_source
.
like
(
'
%
运城
%
'
),
ProjectManagement
.
project_source
.
like
(
'
%
聊城
%
'
),
ProjectManagement
.
project_source
.
like
(
'
%
菏泽
%
'
),
ProjectManagement
.
project_source
.
like
(
'
%
泰安
%
'
),
ProjectManagement
.
project_source
.
like
(
'
%
宿州
%
'
),
ProjectManagement
.
project_source
.
like
(
'
%
淮北
%
'
),
ProjectManagement
.
project_source
.
like
(
'
%
阜阳
%
'
),
ProjectManagement
.
project_source
.
like
(
'
%
亳州
%
'
),
ProjectManagement
.
project_source
.
like
(
'
%
蚌埠
%
'
),
ProjectManagement
.
project_source
.
like
(
'
%
淮南
%
'
),
ProjectManagement
.
project_source
.
like
(
'
%
邢台
%
'
),
ProjectManagement
.
project_source
.
like
(
'
%
邯郸
%
'
)
))
.
count
()
num5
=
total_num
-
sum
([
num1
,
num2
,
num3
,
num4
])
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
))
+
'
%
'
,
"data1"
:
str
(
round
(
num1
/
total_num
,
2
)
*
100
)
+
'
%
'
,
"data2"
:
str
(
round
(
num2
/
total_num
,
2
)
*
100
)
+
'
%
'
,
"data3"
:
str
(
round
(
num3
/
total_num
,
2
)
*
100
)
+
'
%
'
,
"data4"
:
str
(
round
(
num4
/
total_num
,
2
)
*
100
)
+
'
%
'
,
"data5"
:
str
(
round
(
num5
/
total_num
,
2
)
*
100
)
+
'
%
'
,
}
if
flag
==
2
:
el
if
flag
==
2
:
project_count1
=
project_obj
.
filter
(
ProjectManagement
.
investment_volume
>
0
,
ProjectManagement
.
investment_volume
<=
0.5
*
10000
...
...
@@ -373,7 +754,7 @@ def project_graph():
"project_count5"
:
project_count5
,
"project_count6"
:
project_count6
}
if
flag
==
3
:
# 项目产业分布
el
if
flag
==
3
:
# 项目产业分布
# 第一产业
project_count1
=
project_obj
.
filter
(
ProjectManagement
.
industry_level
==
'第一产业'
)
.
count
()
# 第二产业
...
...
@@ -383,16 +764,18 @@ def project_graph():
project_count3
=
project_obj
.
filter
(
ProjectManagement
.
industry_level
==
'第三产业'
)
.
count
()
total_num
=
project_count1
+
project_count2
+
project_count3
if
total_num
==
0
:
return
jsonify
(
code
=
RET
.
NODATA
,
msg
=
'产业类型无数据!'
)
data
=
{
"project_count1"
:
str
(
round
(
project_count1
/
total_num
,
2
))
+
'
%
'
,
"project_count2"
:
str
(
round
(
project_count2
/
total_num
,
2
))
+
'
%
'
,
"project_count3"
:
str
(
round
(
project_count3
/
total_num
,
2
))
+
'
%
'
"project_count1"
:
str
(
round
(
project_count1
/
total_num
*
100
,
2
))
+
'
%
'
,
"project_count2"
:
str
(
round
(
project_count2
/
total_num
*
100
,
2
))
+
'
%
'
,
"project_count3"
:
str
(
round
(
project_count3
/
total_num
*
100
,
2
))
+
'
%
'
}
if
flag
==
4
:
el
if
flag
==
4
:
industry_list
=
[]
for
project_obj
in
project_obj
.
all
():
if
project_obj
.
industry
not
in
industry_list
:
industry_list
.
append
(
project_obj
.
industry
)
for
project_obj
_obj
in
project_obj
.
all
():
if
project_obj
_obj
.
industry
not
in
industry_list
:
industry_list
.
append
(
project_obj
_obj
.
industry
)
continue
else
:
continue
...
...
@@ -402,6 +785,8 @@ def project_graph():
data_dic
=
{
"industry"
:
industry
,
"project_count"
:
project_count
}
data
.
append
(
data_dic
)
continue
else
:
return
jsonify
(
code
=
RET
.
PARAMERR
,
msg
=
"参数错误!"
)
return
jsonify
(
code
=
RET
.
OK
,
data
=
data
,
msg
=
'数据查询成功'
)
except
Exception
as
e
:
...
...
@@ -413,14 +798,13 @@ def project_graph():
@api_manage.route
(
"/ArealProject"
,
methods
=
[
"POST"
])
def
areal_project
():
req_dic
=
request
.
get_json
()
district
=
req_dic
[
'district'
]
project_source
=
req_dic
[
'project_source'
]
investment_volume
=
req_dic
[
'investment_volume'
]
industry_level
=
req_dic
[
'industry_level'
]
industry_name
=
req_dic
[
'industry_name'
]
flag
=
req_dic
[
'flag'
]
district
=
req_dic
[
'district'
]
# 全局
project_source
=
req_dic
[
'project_source'
]
# 用于1项目来源区域分布
investment_volume
=
req_dic
[
'investment_volume'
]
# 用于2项目投资额区间分布
industry_level
=
req_dic
[
'industry_level'
]
# 用于3项目产业分布
industry_name
=
req_dic
[
'industry_name'
]
# 用于4项目行业类型分布
flag
=
req_dic
[
'flag'
]
# 1项目来源区域分布,2项目投资额区间分布,3项目产业分布,4项目行业类型分布
page
=
req_dic
[
'page'
]
per_page
=
req_dic
[
'per_page'
]
current_year
=
datetime
.
now
()
.
year
...
...
@@ -434,71 +818,71 @@ def areal_project():
if
flag
==
1
:
# 项目来源区域分布项目列表
if
project_source
==
'京津冀'
:
project_obj
=
project_obj
.
filter
(
or_
(
ProjectManagement
.
pro
vin
ce
.
like
(
'
%
北京
%
'
),
ProjectManagement
.
pro
vin
ce
.
like
(
'
%
天津
%
'
),
ProjectManagement
.
pro
vin
ce
.
like
(
'
%
河北
%
'
)
ProjectManagement
.
pro
ject_sour
ce
.
like
(
'
%
北京
%
'
),
ProjectManagement
.
pro
ject_sour
ce
.
like
(
'
%
天津
%
'
),
ProjectManagement
.
pro
ject_sour
ce
.
like
(
'
%
河北
%
'
)
))
elif
project_source
==
'长三角'
:
project_obj
=
project_obj
.
filter
(
or_
(
ProjectManagement
.
pro
vin
ce
.
like
(
'
%
江苏
%
'
),
ProjectManagement
.
pro
vin
ce
.
like
(
'
%
浙江
%
'
),
ProjectManagement
.
pro
vin
ce
.
like
(
'
%
上海
%
'
)
ProjectManagement
.
pro
ject_sour
ce
.
like
(
'
%
江苏
%
'
),
ProjectManagement
.
pro
ject_sour
ce
.
like
(
'
%
浙江
%
'
),
ProjectManagement
.
pro
ject_sour
ce
.
like
(
'
%
上海
%
'
)
))
elif
project_source
==
'珠三角'
:
project_obj
=
project_obj
.
filter
(
or_
(
ProjectManagement
.
pro
vin
ce
.
like
(
'
%
广东
%
'
),
ProjectManagement
.
pro
vin
ce
.
like
(
'
%
香港
%
'
),
ProjectManagement
.
pro
vin
ce
.
like
(
'
%
澳门
%
'
)
ProjectManagement
.
pro
ject_sour
ce
.
like
(
'
%
广东
%
'
),
ProjectManagement
.
pro
ject_sour
ce
.
like
(
'
%
香港
%
'
),
ProjectManagement
.
pro
ject_sour
ce
.
like
(
'
%
澳门
%
'
)
))
elif
project_source
==
'中原经济区'
:
project_obj
=
project_obj
.
filter
(
or_
(
ProjectManagement
.
pro
vin
ce
.
like
(
'
%
河南
%
'
),
ProjectManagement
.
pro
vin
ce
.
like
(
'
%
天津
%
'
),
ProjectManagement
.
pro
vin
ce
.
like
(
'
%
河北
%
'
),
ProjectManagement
.
pro
vin
ce
.
like
(
'
%
长治
%
'
),
ProjectManagement
.
pro
vin
ce
.
like
(
'
%
晋城
%
'
),
ProjectManagement
.
pro
vin
ce
.
like
(
'
%
运城
%
'
),
ProjectManagement
.
pro
vin
ce
.
like
(
'
%
聊城
%
'
),
ProjectManagement
.
pro
vin
ce
.
like
(
'
%
菏泽
%
'
),
ProjectManagement
.
pro
vin
ce
.
like
(
'
%
泰安
%
'
),
ProjectManagement
.
pro
vin
ce
.
like
(
'
%
宿州
%
'
),
ProjectManagement
.
pro
vin
ce
.
like
(
'
%
淮北
%
'
),
ProjectManagement
.
pro
vin
ce
.
like
(
'
%
阜阳
%
'
),
ProjectManagement
.
pro
vin
ce
.
like
(
'
%
亳州
%
'
),
ProjectManagement
.
pro
vin
ce
.
like
(
'
%
蚌埠
%
'
),
ProjectManagement
.
pro
vin
ce
.
like
(
'
%
淮南
%
'
),
ProjectManagement
.
pro
vin
ce
.
like
(
'
%
邢台
%
'
),
ProjectManagement
.
pro
vin
ce
.
like
(
'
%
邯郸
%
'
),
ProjectManagement
.
pro
ject_sour
ce
.
like
(
'
%
河南
%
'
),
ProjectManagement
.
pro
ject_sour
ce
.
like
(
'
%
天津
%
'
),
ProjectManagement
.
pro
ject_sour
ce
.
like
(
'
%
河北
%
'
),
ProjectManagement
.
pro
ject_sour
ce
.
like
(
'
%
长治
%
'
),
ProjectManagement
.
pro
ject_sour
ce
.
like
(
'
%
晋城
%
'
),
ProjectManagement
.
pro
ject_sour
ce
.
like
(
'
%
运城
%
'
),
ProjectManagement
.
pro
ject_sour
ce
.
like
(
'
%
聊城
%
'
),
ProjectManagement
.
pro
ject_sour
ce
.
like
(
'
%
菏泽
%
'
),
ProjectManagement
.
pro
ject_sour
ce
.
like
(
'
%
泰安
%
'
),
ProjectManagement
.
pro
ject_sour
ce
.
like
(
'
%
宿州
%
'
),
ProjectManagement
.
pro
ject_sour
ce
.
like
(
'
%
淮北
%
'
),
ProjectManagement
.
pro
ject_sour
ce
.
like
(
'
%
阜阳
%
'
),
ProjectManagement
.
pro
ject_sour
ce
.
like
(
'
%
亳州
%
'
),
ProjectManagement
.
pro
ject_sour
ce
.
like
(
'
%
蚌埠
%
'
),
ProjectManagement
.
pro
ject_sour
ce
.
like
(
'
%
淮南
%
'
),
ProjectManagement
.
pro
ject_sour
ce
.
like
(
'
%
邢台
%
'
),
ProjectManagement
.
pro
ject_sour
ce
.
like
(
'
%
邯郸
%
'
),
))
elif
project_source
==
'其他'
:
project_obj
=
project_obj
.
filter
(
and_
(
ProjectManagement
.
pro
vin
ce
.
notlike
(
'
%
河南
%
'
),
ProjectManagement
.
provin
ce
.
notlike
(
'
%
天津
%
'
),
ProjectManagement
.
provin
ce
.
notlike
(
'
%
河北
%
'
),
ProjectManagement
.
pro
vin
ce
.
notlike
(
'
%
长治
%
'
),
ProjectManagement
.
pro
vin
ce
.
notlike
(
'
%
晋城
%
'
),
ProjectManagement
.
pro
vin
ce
.
notlike
(
'
%
运城
%
'
),
ProjectManagement
.
pro
vin
ce
.
notlike
(
'
%
聊城
%
'
),
ProjectManagement
.
pro
vin
ce
.
notlike
(
'
%
菏泽
%
'
),
ProjectManagement
.
pro
vin
ce
.
notlike
(
'
%
泰安
%
'
),
ProjectManagement
.
pro
vin
ce
.
notlike
(
'
%
宿州
%
'
),
ProjectManagement
.
pro
vin
ce
.
notlike
(
'
%
淮北
%
'
),
ProjectManagement
.
pro
vin
ce
.
notlike
(
'
%
阜阳
%
'
),
ProjectManagement
.
pro
vin
ce
.
notlike
(
'
%
亳州
%
'
),
ProjectManagement
.
pro
vin
ce
.
notlike
(
'
%
蚌埠
%
'
),
ProjectManagement
.
pro
vin
ce
.
notlike
(
'
%
淮南
%
'
),
ProjectManagement
.
pro
vin
ce
.
notlike
(
'
%
邢台
%
'
),
ProjectManagement
.
pro
vin
ce
.
notlike
(
'
%
邯郸
%
'
),
ProjectManagement
.
pro
vin
ce
.
notlike
(
'
%
北京
%
'
),
ProjectManagement
.
pro
vin
ce
.
notlike
(
'
%
天津
%
'
),
ProjectManagement
.
pro
vin
ce
.
notlike
(
'
%
河北
%
'
),
ProjectManagement
.
pro
vin
ce
.
notlike
(
'
%
江苏
%
'
),
ProjectManagement
.
pro
vin
ce
.
notlike
(
'
%
浙江
%
'
),
ProjectManagement
.
pro
vin
ce
.
notlike
(
'
%
上海
%
'
),
ProjectManagement
.
pro
vin
ce
.
notlike
(
'
%
广东
%
'
),
ProjectManagement
.
pro
vin
ce
.
notlike
(
'
%
香港
%
'
),
ProjectManagement
.
pro
vin
ce
.
notlike
(
'
%
澳门
%
'
)
ProjectManagement
.
pro
ject_sour
ce
.
notlike
(
'
%
河南
%
'
),
# ProjectManagement.project_sour
ce.notlike('%天津%'),
# ProjectManagement.project_sour
ce.notlike('%河北%'),
ProjectManagement
.
pro
ject_sour
ce
.
notlike
(
'
%
长治
%
'
),
ProjectManagement
.
pro
ject_sour
ce
.
notlike
(
'
%
晋城
%
'
),
ProjectManagement
.
pro
ject_sour
ce
.
notlike
(
'
%
运城
%
'
),
ProjectManagement
.
pro
ject_sour
ce
.
notlike
(
'
%
聊城
%
'
),
ProjectManagement
.
pro
ject_sour
ce
.
notlike
(
'
%
菏泽
%
'
),
ProjectManagement
.
pro
ject_sour
ce
.
notlike
(
'
%
泰安
%
'
),
ProjectManagement
.
pro
ject_sour
ce
.
notlike
(
'
%
宿州
%
'
),
ProjectManagement
.
pro
ject_sour
ce
.
notlike
(
'
%
淮北
%
'
),
ProjectManagement
.
pro
ject_sour
ce
.
notlike
(
'
%
阜阳
%
'
),
ProjectManagement
.
pro
ject_sour
ce
.
notlike
(
'
%
亳州
%
'
),
ProjectManagement
.
pro
ject_sour
ce
.
notlike
(
'
%
蚌埠
%
'
),
ProjectManagement
.
pro
ject_sour
ce
.
notlike
(
'
%
淮南
%
'
),
ProjectManagement
.
pro
ject_sour
ce
.
notlike
(
'
%
邢台
%
'
),
ProjectManagement
.
pro
ject_sour
ce
.
notlike
(
'
%
邯郸
%
'
),
ProjectManagement
.
pro
ject_sour
ce
.
notlike
(
'
%
北京
%
'
),
ProjectManagement
.
pro
ject_sour
ce
.
notlike
(
'
%
天津
%
'
),
ProjectManagement
.
pro
ject_sour
ce
.
notlike
(
'
%
河北
%
'
),
ProjectManagement
.
pro
ject_sour
ce
.
notlike
(
'
%
江苏
%
'
),
ProjectManagement
.
pro
ject_sour
ce
.
notlike
(
'
%
浙江
%
'
),
ProjectManagement
.
pro
ject_sour
ce
.
notlike
(
'
%
上海
%
'
),
ProjectManagement
.
pro
ject_sour
ce
.
notlike
(
'
%
广东
%
'
),
ProjectManagement
.
pro
ject_sour
ce
.
notlike
(
'
%
香港
%
'
),
ProjectManagement
.
pro
ject_sour
ce
.
notlike
(
'
%
澳门
%
'
)
))
else
:
return
jsonify
(
code
=
RET
.
PARAMERR
,
msg
=
"参数错误!"
)
...
...
@@ -523,7 +907,7 @@ def areal_project():
"id"
:
project_obj
.
id
,
"project_name"
:
project_obj
.
project_name
,
"investor_district"
:
project_obj
.
investor_district
,
"industry"
:
project_obj
.
industry
+
'-'
+
project_obj
.
industry2
,
"industry"
:
project_obj
.
industry
+
'-'
if
project_obj
.
industry
else
''
+
project_obj
.
industry2
if
project_obj
.
industry
else
''
,
"project_type"
:
""
,
"investment_volume"
:
project_obj
.
investment_volume
}
for
project_obj
in
project_obj_list
]
...
...
apps/models.py
View file @
77e60885
...
...
@@ -1281,6 +1281,7 @@ class MoneyArrive(db.Model):
__table_args__
=
({
'comment'
:
'项目化管理-固定资产投资项目资金到位表'
})
# 添加表注释
id
=
db
.
Column
(
db
.
Integer
,
primary_key
=
True
,
autoincrement
=
True
,
comment
=
'主键id'
)
is_delete
=
db
.
Column
(
db
.
Integer
,
comment
=
'逻辑删除'
)
file_name
=
db
.
Column
(
db
.
String
(
30
),
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
=
'上传部门'
)
...
...
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