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
7de7c5c4
Commit
7de7c5c4
authored
Nov 30, 2022
by
dong
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
fix20221130
parent
77e60885
Show whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
280 additions
and
172 deletions
+280
-172
apps/inves_manage/statistic_analysis_view.py
+280
-172
No files found.
apps/inves_manage/statistic_analysis_view.py
View file @
7de7c5c4
...
...
@@ -26,53 +26,6 @@ from apps.inves_manage.siku_view import get_num, upload_daily_picture
"""指标分析"""
# 山西省地市数据统计
@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
=
[{
"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
)
+
'
%
'
,
}
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
=
[{
"district_name"
:
target_obj
.
district_name
,
"plan_invest_money"
:
str
(
target_obj
.
plan_invest_money
/
10000
)
+
'亿'
,
"plan_target_money"
:
str
(
target_obj
.
plan_target_money
/
10000
)
+
'亿'
,
"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
:
data
=
[{
"district_name"
:
target_obj
.
district_name
,
"arrive_money"
:
str
(
target_obj
.
arrive_money
/
10000
)
+
'亿'
,
"arrive_target_money"
:
str
(
target_obj
.
arrive_target_money
/
10000
)
+
'亿'
,
"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
:
db
.
session
.
rollback
()
current_app
.
logger
.
error
(
e
)
return
jsonify
(
code
=
RET
.
DBERR
,
msg
=
"查询数据库错误!"
)
# 项目签约完成率
def
get_data1
(
district_li
,
current_year
):
data_li1
=
[]
...
...
@@ -80,7 +33,7 @@ def get_data1(district_li, current_year):
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
)))
ProjectManagement
.
district
.
like
(
'
%
{}
%
'
.
format
(
str
(
district
)))
if
district
!=
'全市'
else
text
(
''
)
)
.
all
()
if
not
project_obj_list
:
investment_volume
=
0
...
...
@@ -88,7 +41,7 @@ def get_data1(district_li, current_year):
investment_volume
=
sum
([
project_obj
.
investment_volume
for
project_obj
in
project_obj_list
])
# 年度目标
jc_obj
=
JcTarget
.
query
.
filter
(
JcTarget
.
district_name
==
district
,
JcTarget
.
district_name
==
district
if
district
!=
'全市'
else
text
(
''
)
,
JcTarget
.
year
.
like
(
'
%
{}
%
'
.
format
(
str
(
current_year
)))
)
.
first
()
if
not
jc_obj
:
...
...
@@ -97,8 +50,8 @@ def get_data1(district_li, current_year):
year_target
=
jc_obj
.
money_sign
data
=
{
"
district
"
:
district
,
"
rate"
:
round
(
investment_volume
/
year_target
,
2
)
*
100
if
year_target
and
year_target
!=
0
else
0
"
name
"
:
district
,
"
value"
:
round
(
investment_volume
/
year_target
*
100
,
2
)
if
year_target
and
year_target
!=
0
else
0
}
data_li1
.
append
(
data
)
continue
...
...
@@ -117,17 +70,17 @@ def get_data2(district_li, current_year):
# 签约项目个数
sign_num
=
ProjectManagement
.
query
.
filter
(
ProjectManagement
.
sign_time
.
like
(
'
%
{}
%
'
.
format
(
str
(
current_year
))),
ProjectManagement
.
district
.
like
(
'
%
{}
%
'
.
format
(
str
(
district
)))
ProjectManagement
.
district
.
like
(
'
%
{}
%
'
.
format
(
str
(
district
)))
if
district
!=
'全市'
else
text
(
''
)
)
.
count
()
# 年度目标
start_num
=
ProjectManagement
.
query
.
filter
(
ProjectManagement
.
start_time
.
like
(
'
%
{}
%
'
.
format
(
str
(
current_year
))),
ProjectManagement
.
district
.
like
(
'
%
{}
%
'
.
format
(
str
(
district
)))
ProjectManagement
.
district
.
like
(
'
%
{}
%
'
.
format
(
str
(
district
)))
if
district
!=
'全市'
else
text
(
''
)
)
.
count
()
data
=
{
"
district
"
:
district
,
"
rate"
:
round
(
start_num
/
sign_num
,
2
)
*
100
if
sign_num
and
sign_num
!=
0
else
0
"
name
"
:
district
,
"
value"
:
round
(
start_num
/
sign_num
*
100
,
2
)
if
sign_num
and
sign_num
!=
0
else
0
}
data_li2
.
append
(
data
)
continue
...
...
@@ -145,7 +98,7 @@ def get_data3(district_li, current_year):
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
)))
ProjectManagement
.
district
.
like
(
'
%
{}
%
'
.
format
(
str
(
district
)))
if
district
!=
'全市'
else
text
(
''
)
)
.
all
()
if
not
project_obj_list
:
investment_volume
=
0
...
...
@@ -153,7 +106,7 @@ def get_data3(district_li, current_year):
investment_volume
=
sum
([
project_obj
.
investment_volume
for
project_obj
in
project_obj_list
])
# 年度目标
jc_obj
=
JcTarget
.
query
.
filter
(
JcTarget
.
district_name
==
district
,
JcTarget
.
district_name
==
district
if
district
!=
'全市'
else
text
(
''
)
,
JcTarget
.
year
.
like
(
'
%
{}
%
'
.
format
(
str
(
current_year
)))
)
.
first
()
if
not
jc_obj
:
...
...
@@ -162,8 +115,8 @@ def get_data3(district_li, current_year):
year_target
=
jc_obj
.
money_plan_invest
data
=
{
"
district
"
:
district
,
"
rate"
:
round
(
investment_volume
/
year_target
,
2
)
*
100
if
year_target
and
year_target
!=
0
else
0
"
name
"
:
district
,
"
value"
:
round
(
investment_volume
/
year_target
*
100
,
2
)
if
year_target
and
year_target
!=
0
else
0
}
data_li3
.
append
(
data
)
continue
...
...
@@ -181,7 +134,7 @@ def get_data4(district_li, current_year):
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
)))
MoneyArrive
.
district_name
.
like
(
'
%
{}
%
'
.
format
(
str
(
district
)))
if
district
!=
'全市'
else
text
(
''
)
)
.
first
()
if
not
project_obj
:
arrive_money
=
0
...
...
@@ -189,7 +142,7 @@ def get_data4(district_li, current_year):
arrive_money
=
project_obj
.
arrive_money
# 年度目标
jc_obj
=
JcTarget
.
query
.
filter
(
JcTarget
.
district_name
==
district
,
JcTarget
.
district_name
==
district
if
district
!=
'全市'
else
text
(
''
)
,
JcTarget
.
year
.
like
(
'
%
{}
%
'
.
format
(
str
(
current_year
)))
)
.
first
()
if
not
jc_obj
:
...
...
@@ -198,8 +151,8 @@ def get_data4(district_li, current_year):
year_target
=
jc_obj
.
money_arrive_target1
data
=
{
"
district
"
:
district
,
"
rate"
:
round
(
arrive_money
/
year_target
,
2
)
*
100
if
year_target
and
year_target
!=
0
else
0
"
name
"
:
district
,
"
value"
:
round
(
arrive_money
/
year_target
*
100
,
2
)
if
year_target
and
year_target
!=
0
else
0
}
data_li4
.
append
(
data
)
continue
...
...
@@ -218,7 +171,7 @@ def get_data5(district_li, current_year):
project_obj_list
=
ProjectManagement
.
query
.
filter
(
ProjectManagement
.
is_fixed_investment
==
'否'
,
ProjectManagement
.
sign_time
.
like
(
'
%
{}
%
'
.
format
(
str
(
current_year
))),
ProjectManagement
.
district
.
like
(
'
%
{}
%
'
.
format
(
str
(
district
)))
ProjectManagement
.
district
.
like
(
'
%
{}
%
'
.
format
(
str
(
district
)))
if
district
!=
'全市'
else
text
(
''
)
)
.
all
()
if
not
project_obj_list
:
investment_volume
=
0
...
...
@@ -226,7 +179,7 @@ def get_data5(district_li, current_year):
investment_volume
=
sum
([
project_obj
.
investment_year
for
project_obj
in
project_obj_list
])
# 年度目标
jc_obj
=
JcTarget
.
query
.
filter
(
JcTarget
.
district_name
==
district
,
JcTarget
.
district_name
==
district
if
district
!=
'全市'
else
text
(
''
)
,
JcTarget
.
year
.
like
(
'
%
{}
%
'
.
format
(
str
(
current_year
)))
)
.
first
()
if
not
jc_obj
:
...
...
@@ -234,8 +187,8 @@ def get_data5(district_li, current_year):
else
:
year_target
=
jc_obj
.
money_arrive_target0
data
=
{
"
district
"
:
district
,
"
rate"
:
round
(
investment_volume
/
year_target
,
2
)
*
100
if
year_target
and
year_target
!=
0
else
0
"
name
"
:
district
,
"
value"
:
round
(
investment_volume
/
year_target
*
100
,
2
)
if
year_target
and
year_target
!=
0
else
0
}
data_li5
.
append
(
data
)
continue
...
...
@@ -254,46 +207,46 @@ def get_data6(district_li, current_year):
# 则输出完成率(%)*赋分(15 上传后获取)的结果,否则输出赋分(15)
grade_li1
=
[]
for
data
in
data_li1
:
grade
=
data
[
"
rat
e"
]
*
15
grade
=
data
[
"
valu
e"
]
*
15
if
grade
<
15
:
grade_li1
.
append
({
"
district"
:
data
[
"district
"
],
"grade"
:
grade
})
grade_li1
.
append
({
"
name"
:
data
[
"name
"
],
"grade"
:
grade
})
else
:
grade_li1
.
append
({
"
district"
:
data
[
"district
"
],
"grade"
:
15
})
grade_li1
.
append
({
"
name"
:
data
[
"name
"
],
"grade"
:
15
})
# 项目开工率情况得分=如果开工率进度小于0.4,则输出开工率进度*赋分(5分)/0.4,否则输出赋分(5分);
grade_li2
=
[]
for
data
in
data_li2
:
grade
=
data
[
"
rat
e"
]
grade
=
data
[
"
valu
e"
]
if
grade
<
0.4
:
grade_li2
.
append
({
"
district"
:
data
[
"district
"
],
"grade"
:
grade
*
5
/
0.4
})
grade_li2
.
append
({
"
name"
:
data
[
"name
"
],
"grade"
:
grade
*
5
/
0.4
})
else
:
grade_li2
.
append
({
"
district"
:
data
[
"district
"
],
"grade"
:
5
})
grade_li2
.
append
({
"
name"
:
data
[
"name
"
],
"grade"
:
5
})
# 新开工固定资产投资项目计划投资额完成情况得分=如果完成率(%)小于1,
# 则输出完成率(%)*赋分(25 上传后获取)的结果,否则输出赋分(25);
grade_li3
=
[]
for
data
in
data_li3
:
grade
=
data
[
"
rat
e"
]
grade
=
data
[
"
valu
e"
]
if
grade
<
1
:
grade_li3
.
append
({
"
district"
:
data
[
"district
"
],
"grade"
:
grade
*
25
})
grade_li3
.
append
({
"
name"
:
data
[
"name
"
],
"grade"
:
grade
*
25
})
else
:
grade_li3
.
append
({
"
district"
:
data
[
"district
"
],
"grade"
:
25
})
grade_li3
.
append
({
"
name"
:
data
[
"name
"
],
"grade"
:
25
})
# 固定资产投资项目资金到位情况得分=如果完成率(%)小于1,
# 则输出完成率(%)*赋分(25 上传后获取)的结果,否则输出赋分(25);
grade_li4
=
[]
for
data
in
data_li4
:
grade
=
data
[
"
rat
e"
]
grade
=
data
[
"
valu
e"
]
if
grade
<
1
:
grade_li4
.
append
({
"
district"
:
data
[
"district
"
],
"grade"
:
grade
*
25
})
grade_li4
.
append
({
"
name"
:
data
[
"name
"
],
"grade"
:
grade
*
25
})
else
:
grade_li4
.
append
({
"
district"
:
data
[
"district
"
],
"grade"
:
25
})
grade_li4
.
append
({
"
name"
:
data
[
"name
"
],
"grade"
:
25
})
# 非固定资产投资项目资金到位情况得分=如果完成率(%)小于1,
# 则输出完成率(%)*赋分(5 上传后获取)的结果,否则输出赋分(5);
grade_li5
=
[]
for
data
in
data_li5
:
grade
=
data
[
"
rat
e"
]
grade
=
data
[
"
valu
e"
]
if
grade
<
1
:
grade_li5
.
append
({
"
district"
:
data
[
"district
"
],
"grade"
:
grade
*
5
})
grade_li5
.
append
({
"
name"
:
data
[
"name
"
],
"grade"
:
grade
*
5
})
else
:
grade_li5
.
append
({
"
district"
:
data
[
"district
"
],
"grade"
:
5
})
grade_li5
.
append
({
"
name"
:
data
[
"name
"
],
"grade"
:
5
})
grade1
=
0
grade2
=
0
grade3
=
0
...
...
@@ -302,26 +255,26 @@ def get_data6(district_li, current_year):
for
district
in
district_li
:
# 签约情况得分
for
grade_dic
in
grade_li1
:
if
grade_dic
[
"
district
"
]
==
district
:
if
grade_dic
[
"
name
"
]
==
district
:
grade1
=
grade_dic
[
"grade"
]
# 项目开工率情况得分
for
grade_dic
in
grade_li2
:
if
grade_dic
[
"
district
"
]
==
district
:
if
grade_dic
[
"
name
"
]
==
district
:
grade2
=
grade_dic
[
"grade"
]
# 新开工得分
for
grade_dic
in
grade_li3
:
if
grade_dic
[
"
district
"
]
==
district
:
if
grade_dic
[
"
name
"
]
==
district
:
grade3
=
grade_dic
[
"grade"
]
# 固定资产得分
for
grade_dic
in
grade_li4
:
if
grade_dic
[
"
district
"
]
==
district
:
if
grade_dic
[
"
name
"
]
==
district
:
grade4
=
grade_dic
[
"grade"
]
# 非固定资产得分
for
grade_dic
in
grade_li5
:
if
grade_dic
[
"
district
"
]
==
district
:
if
grade_dic
[
"
name
"
]
==
district
:
grade5
=
grade_dic
[
"grade"
]
total_grade
=
grade1
+
grade2
+
grade3
+
grade4
+
grade5
data_li6
.
append
({
"
district"
:
district
,
"total_grad
e"
:
total_grade
})
data_li6
.
append
({
"
name"
:
district
,
"valu
e"
:
total_grade
})
return
data_li6
...
...
@@ -354,15 +307,60 @@ def get_data_li(district_li, current_year):
return
data_li1
,
data_li2
,
data_li3
,
data_li4
,
data_li5
# 山西省地市数据统计
@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
=
[{
"district_name"
:
target_obj
.
district_name
,
"sign_money"
:
target_obj
.
sign_money
/
10000
,
"sign_target_money"
:
target_obj
.
sign_target_money
/
10000
,
"sign_finish_rate"
:
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
)
if
flag
==
2
:
data
=
[{
"district_name"
:
target_obj
.
district_name
,
"plan_invest_money"
:
target_obj
.
plan_invest_money
/
10000
,
"plan_target_money"
:
target_obj
.
plan_target_money
/
10000
,
"plan_finish_rate"
:
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
:
data
=
[{
"district_name"
:
target_obj
.
district_name
,
"arrive_money"
:
target_obj
.
arrive_money
/
10000
,
"arrive_target_money"
:
target_obj
.
arrive_target_money
/
10000
,
"arrive_finish_rate"
:
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
:
db
.
session
.
rollback
()
current_app
.
logger
.
error
(
e
)
return
jsonify
(
code
=
RET
.
DBERR
,
msg
=
"查询数据库错误!"
)
# 晋城市数据统计
@api_manage.route
(
"/StatisticJcData"
,
methods
=
[
"POST"
])
def
statistic_jc_data
():
# req_dic = request.get_json()
current_year
=
datetime
.
now
()
.
year
district_li
=
[
""
,
"城区"
,
"泽州县"
,
"高平市"
,
"阳城县"
,
"陵川县"
,
"沁水县"
,
"晋城经济技术开发区"
,
"高平经济技术开发区"
,
"阳城经济技术开发区"
,
"沁水经济技术开发区"
,
"陵川生态文化旅游示范区"
]
district_li
=
[
"全市"
,
"城区"
,
"泽州县"
,
"高平市"
,
"阳城县"
,
"陵川县"
,
"沁水县"
,
"晋城经济技术开发区"
]
try
:
data_li1
,
data_li2
,
data_li3
,
data_li4
,
data_li5
=
get_data_li
(
district_li
,
current_year
)
...
...
@@ -378,39 +376,68 @@ def statistic_jc_data():
return
jsonify
(
code
=
RET
.
DBERR
,
msg
=
"数据查询错误!"
)
# 区县指标完成表导出
@api_manage.route
(
"/ExportJcData
1
"
,
methods
=
[
"POST"
])
def
export_jc_data
1
():
# 区县
/开发区
指标完成表导出
@api_manage.route
(
"/ExportJcData"
,
methods
=
[
"POST"
])
def
export_jc_data
():
req_dic
=
request
.
get_json
()
district
=
req_dic
[
'district'
]
flag
=
req_dic
[
'flag'
]
# 1县(市、区)、开发区指标,2开发区(示范区)指标
data_time
=
req_dic
[
'data_time'
]
# year = req_dic['year']
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/'
# 项目路径
if
flag
==
1
:
res
=
export_jc_data1
(
data_time
,
path
,
pro_path
)
if
res
==
'error'
:
return
jsonify
(
code
=
RET
.
DBERR
,
msg
=
'区县指标导出失败!'
)
return
jsonify
(
code
=
RET
.
OK
,
data
=
res
,
msg
=
'区县指标导出成功。'
)
if
flag
==
2
:
res
=
export_jc_data2
(
data_time
,
path
,
pro_path
)
if
res
==
'error'
:
return
jsonify
(
code
=
RET
.
DBERR
,
msg
=
'开发区指标导出失败!'
)
return
jsonify
(
code
=
RET
.
OK
,
data
=
res
,
msg
=
'开发区指标导出成功。'
)
# 区县指标完成表导出
def
export_jc_data1
(
data_time
,
path
,
pro_path
):
# 2022年1-11月
current_year
=
data_time
.
split
(
'年'
)[
0
]
current_month
=
data_time
.
split
(
'年'
)[
1
]
.
split
(
'月'
)[
0
]
current_month1
=
current_month
.
split
(
'-'
)[
0
]
current_month2
=
current_month
.
split
(
'-'
)[
1
]
current_year1
=
current_year
+
'/'
+
current_month1
current_year2
=
current_year
+
'/'
+
current_month2
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
=
[]
try
:
for
district
in
district_li
:
data_list
=
[]
# 县(市、区)、开发区
data_list
.
append
(
district
)
# 签约个数
sign_num
=
ProjectManagement
.
query
.
filter
(
ProjectManagement
.
sign_time
.
like
(
'
%
{}
%
'
.
format
(
str
(
current_year
))),
ProjectManagement
.
district
.
like
(
'
%
{}
%
'
.
format
(
str
(
district
)))
ProjectManagement
.
sign_time
.
like
(
'
%
{}
%
'
.
format
(
str
(
current_year1
))),
ProjectManagement
.
sign_time
.
like
(
'
%
{}
%
'
.
format
(
str
(
current_year2
))),
ProjectManagement
.
district
.
like
(
'
%
{}
%
'
.
format
(
str
(
district
)))
if
district
!=
'全市'
else
text
(
''
)
)
.
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
)))
ProjectManagement
.
sign_time
.
like
(
'
%
{}
%
'
.
format
(
str
(
current_year1
))),
ProjectManagement
.
sign_time
.
like
(
'
%
{}
%
'
.
format
(
str
(
current_year2
))),
ProjectManagement
.
district
.
like
(
'
%
{}
%
'
.
format
(
str
(
district
)))
if
district
!=
'全市'
else
text
(
''
)
)
.
all
()
if
not
project_obj_list
:
sign_money
=
0
...
...
@@ -420,14 +447,14 @@ def export_jc_data1():
# 签约年度目标(亿元)
jc_obj
=
JcTarget
.
query
.
filter
(
JcTarget
.
year
.
like
(
'
%
{}
%
'
.
format
(
str
(
current_year
))),
JcTarget
.
district_name
.
like
(
'
%
{}
%
'
.
format
(
str
(
district
))
))
.
first
()
JcTarget
.
district_name
.
like
(
'
%
{}
%
'
.
format
(
str
(
district
)))
if
district
!=
'全市'
else
text
(
''
))
.
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
sign_rate
=
round
(
sign_money
/
sign_target
,
2
)
if
sign_target
and
sign_target
!=
0
else
0
data_list
.
append
(
sign_rate
)
# 签约得分(15分)
...
...
@@ -440,26 +467,30 @@ def export_jc_data1():
# 当年开工个数
start_num
=
ProjectManagement
.
query
.
filter
(
ProjectManagement
.
start_time
.
like
(
'
%
{}
%
'
.
format
(
str
(
current_year
))),
ProjectManagement
.
district
.
like
(
'
%
{}
%
'
.
format
(
str
(
district
)))
ProjectManagement
.
start_time
.
like
(
'
%
{}
%
'
.
format
(
str
(
current_year1
))),
ProjectManagement
.
sign_time
.
like
(
'
%
{}
%
'
.
format
(
str
(
current_year2
))),
ProjectManagement
.
district
.
like
(
'
%
{}
%
'
.
format
(
str
(
district
)))
if
district
!=
'全市'
else
text
(
''
)
)
.
count
()
data_list
.
append
(
start_num
)
# 开工率进度(40 %)
start_rate
=
start_num
/
sign_num
if
sign_num
and
sign_num
!=
0
else
0
start_rate
=
round
(
start_num
/
sign_num
,
2
)
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
start_grade
=
round
(
start_rate
*
5
/
0.4
,
2
)
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
)))
ProjectManagement
.
start_time
.
like
(
'
%
{}
%
'
.
format
(
str
(
current_year1
))),
ProjectManagement
.
sign_time
.
like
(
'
%
{}
%
'
.
format
(
str
(
current_year2
))),
ProjectManagement
.
district
.
like
(
'
%
{}
%
'
.
format
(
str
(
district
)))
if
district
!=
'全市'
else
text
(
''
)
)
.
all
()
if
not
project_obj_list
:
new_start_money
=
0
...
...
@@ -469,7 +500,7 @@ def export_jc_data1():
# 新开工年度目标
jc_obj
=
JcTarget
.
query
.
filter
(
JcTarget
.
district_name
==
district
,
JcTarget
.
district_name
==
district
if
district
!=
'全市'
else
text
(
''
)
,
JcTarget
.
year
.
like
(
'
%
{}
%
'
.
format
(
str
(
current_year
)))
)
.
first
()
if
not
jc_obj
:
...
...
@@ -479,13 +510,13 @@ def export_jc_data1():
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
new_start_rate
=
round
(
new_start_money
/
new_start_target
,
2
)
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_grad
e'
]
if
grade_dic
[
'name
'
]
==
district
:
new_start_rate
=
grade_dic
[
'valu
e'
]
if
new_start_rate
<
1
:
new_start_grade
=
new_start_rate
*
25
else
:
...
...
@@ -494,8 +525,8 @@ def export_jc_data1():
# 固定资产投资项目资金到位额(亿元)
project_obj
=
MoneyArrive
.
query
.
filter
(
MoneyArrive
.
data_time
.
like
(
'
%
{}
%
'
.
format
(
str
(
current_year
)))
,
MoneyArrive
.
district_name
.
like
(
'
%
{}
%
'
.
format
(
str
(
district
))
)
MoneyArrive
.
data_time
==
data_time
,
MoneyArrive
.
district_name
.
like
(
'
%
{}
%
'
.
format
(
str
(
district
)))
if
district
!=
'全市'
else
text
(
''
)
)
.
first
()
if
not
project_obj
:
gutou1_money
=
0
...
...
@@ -505,7 +536,7 @@ def export_jc_data1():
# 年度目标
jc_obj
=
JcTarget
.
query
.
filter
(
JcTarget
.
district_name
==
district
,
JcTarget
.
district_name
==
district
if
district
!=
'全市'
else
text
(
''
)
,
JcTarget
.
year
.
like
(
'
%
{}
%
'
.
format
(
str
(
current_year
)))
)
.
first
()
if
not
jc_obj
:
...
...
@@ -515,7 +546,7 @@ def export_jc_data1():
data_list
.
append
(
gutou1_target
)
# 完成率
gutou1_rate
=
gutou1_money
/
gutou1_target
if
gutou1_target
and
gutou1_target
!=
0
else
0
gutou1_rate
=
round
(
gutou1_money
/
gutou1_target
,
2
)
if
gutou1_target
and
gutou1_target
!=
0
else
0
data_list
.
append
(
gutou1_target
)
# 得分(25分)
...
...
@@ -528,8 +559,10 @@ def export_jc_data1():
# 非固定资产投资项目资金到位额(亿元)
project_obj_list
=
ProjectManagement
.
query
.
filter
(
ProjectManagement
.
is_fixed_investment
==
'否'
,
ProjectManagement
.
sign_time
.
like
(
'
%
{}
%
'
.
format
(
str
(
current_year
))),
ProjectManagement
.
district
.
like
(
'
%
{}
%
'
.
format
(
str
(
district
)))
ProjectManagement
.
sign_time
.
like
(
'
%
{}
%
'
.
format
(
str
(
current_year1
))),
ProjectManagement
.
sign_time
.
like
(
'
%
{}
%
'
.
format
(
str
(
current_year2
))),
ProjectManagement
.
district
.
like
(
'
%
{}
%
'
.
format
(
str
(
district
)))
if
district
!=
'全市'
else
text
(
''
)
)
.
all
()
if
not
project_obj_list
:
gutou0_money
=
0
...
...
@@ -549,7 +582,7 @@ def export_jc_data1():
data_list
.
append
(
gutou0_target
)
# 完成率
gutou0_rate
=
gutou0_money
/
gutou0_target
if
gutou0_target
and
gutou0_target
!=
0
else
0
gutou0_rate
=
round
(
gutou0_money
/
gutou0_target
,
2
)
if
gutou0_target
and
gutou0_target
!=
0
else
0
data_list
.
append
(
gutou0_rate
)
# 得分(5分)
...
...
@@ -562,10 +595,15 @@ def export_jc_data1():
# 指标得分(75分)
target_grade
=
0
for
grade_dic
in
data_li6
:
if
grade_dic
[
'district
'
]
==
district
:
target_grade
=
grade_dic
[
'total_grad
e'
]
if
grade_dic
[
'name
'
]
==
district
:
target_grade
=
grade_dic
[
'valu
e'
]
data_list
.
append
(
target_grade
)
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"
:
[
"县(市、区)、开发区"
,
"签约个数"
,
"签约金额(亿元)"
,
"年度目标(亿元)"
,
...
...
@@ -592,42 +630,107 @@ def export_jc_data1():
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
)
file_name
=
"招商引资
晋城区县
指标生成表{}.xlsx"
.
format
(
time_stamp
)
excel
.
save
(
path
+
file_name
)
return
jsonify
(
code
=
RET
.
OK
,
url
=
pro_path
+
file_name
,
msg
=
"导出/下载成功!"
)
return
pro_path
+
file_name
except
Exception
as
e
:
current_app
.
logger
.
error
(
e
)
return
jsonify
(
code
=
RET
.
DBERR
,
msg
=
"批量导出操作失败!"
)
return
'error'
# 开发区指标完成表导出
@api_manage.route
(
"/ExportJcData2"
,
methods
=
[
"POST"
])
def
export_jc_data2
():
req_dic
=
request
.
get_json
()
district
=
req_dic
[
'district'
]
current_year
=
dat
etime
.
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
=
[
"全市"
,
"城区"
,
"泽州县"
,
"高平市"
,
"阳城县"
,
"陵川县"
,
"沁水县"
,
"晋城经济技术开发区"
]
def
export_jc_data2
(
data_time
,
path
,
pro_path
):
district_li
=
[
"晋城经济技术开发区(一区四园)"
,
"高平经济技术开发区"
,
"阳城经济技术开发区"
,
"沁水经济技术开发区"
,
"陵川生态文化旅游示范区"
,
"汇 总"
]
# 2022年1-11月
current_year
=
dat
a_time
.
split
(
'年'
)[
0
]
current_month
=
data_time
.
split
(
'年'
)[
1
]
.
split
(
'月'
)[
0
]
current_month1
=
current_month
.
split
(
'-'
)[
0
]
current_month2
=
current_month
.
split
(
'-'
)[
1
]
current_year1
=
current_year
+
'/'
+
current_month1
current_year2
=
current_year
+
'/'
+
current_month2
target_data_list
=
[]
data_list
=
[]
try
:
for
district
in
district_li
:
# 县(市、区)、开发区
data_list
=
[]
project_obj
=
ProjectManagement
.
query
.
filter
(
ProjectManagement
.
sign_time
.
like
(
'
%
{}
%
'
.
format
(
str
(
current_year1
))),
ProjectManagement
.
sign_time
.
like
(
'
%
{}
%
'
.
format
(
str
(
current_year2
))),
ProjectManagement
.
district
.
like
(
'
%
{}
%
'
.
format
(
str
(
district
)))
)
# 1县(市、区)、开发区
data_list
.
append
(
district
)
# 2签约个数
sign_num
=
project_obj
.
count
()
data_list
.
append
(
sign_num
)
# 3签约金额(亿元)
project_obj_list
=
project_obj
.
all
()
sign_money
=
sum
([
project_obj
.
investment_volume
/
10000
for
project_obj
in
project_obj_list
if
project_obj_list
])
data_list
.
append
(
sign_money
)
# 4属地签约任务(亿元)
target_obj
=
JcTarget
.
query
.
filter
(
JcTarget
.
district_name
==
district
,
JcTarget
.
year
==
current_year
+
'年'
)
.
first
()
if
target_obj
:
target_money
=
target_obj
.
money_sign
else
:
target_money
=
0
data_list
.
append
(
target_money
)
# 5完成属地目标任务占比
if
target_money
!=
0
:
finish_rate
=
round
(
sign_money
/
target_money
*
100
,
2
)
else
:
finish_rate
=
0
data_list
.
append
(
finish_rate
)
# 6新开工项目计划投资额(亿元)
project_obj1
=
ProjectManagement
.
query
.
filter
(
ProjectManagement
.
start_time
.
like
(
'
%
{}
%
'
.
format
(
str
(
current_year1
))),
ProjectManagement
.
start_time
.
like
(
'
%
{}
%
'
.
format
(
str
(
current_year2
))),
data_list
.
append
(
target_grade
)
ProjectManagement
.
district
.
like
(
'
%
{}
%
'
.
format
(
str
(
district
)))
)
project_obj_list1
=
project_obj1
.
all
()
start_money
=
sum
(
[
project_obj
.
investment_volume
/
10000
for
project_obj
in
project_obj_list1
if
project_obj_list1
])
data_list
.
append
(
start_money
)
# 7新开工属地投资任务(亿元)
if
target_obj
:
plan_money
=
target_obj
.
money_plan_invest
else
:
plan_money
=
0
if
not
plan_money
:
plan_money
=
0
data_list
.
append
(
plan_money
)
# 8新开工完成属地目标任务占比
if
start_money
!=
0
:
start_rate
=
round
(
start_money
/
plan_money
*
100
,
2
)
else
:
start_rate
=
0
data_list
.
append
(
start_rate
)
# 9当年签约当年开工个数
start_num
=
project_obj1
.
count
()
data_list
.
append
(
start_num
)
# 10开工率年度目标
if
target_obj
:
start_rate
=
target_obj
.
rate_start
else
:
start_rate
=
0
data_list
.
append
(
start_rate
)
# 11开工率排名
start_rank
=
''
data_list
.
append
(
start_rank
)
target_data_list
.
append
(
data_list
)
continue
except
Exception
as
e
:
current_app
.
logger
.
error
(
e
)
return
jsonify
(
code
=
RET
.
DBERR
,
msg
=
"开发区数据导出失败!"
)
try
:
sheet_name_titles
=
{
"sheet1"
:
[
"县(市、区)、开发区"
,
"签约个数"
,
"签约金额(亿元)"
,
"属地签约任务(亿元)"
,
"完成属地目标任务占比"
,
"新开工项目
"
,
"
计划投资额(亿元)"
,
"属地投资任务(亿元)"
,
"完成属地目标任务占比"
,
"新开工项目计划投资额(亿元)"
,
"属地投资任务(亿元)"
,
"完成属地目标任务占比"
,
"当年签约当年开工个数"
,
"开工率年度目标(40
%
)"
,
"开工率排名"
,
"属地投资任务(亿元)"
,
"完成属地目标任务占比"
,
"开工率目标(40
%
)"
,
"开工率排名"
]}
excel
=
xlwt
.
Workbook
(
encoding
=
'utf-8'
)
...
...
@@ -647,12 +750,12 @@ def export_jc_data2():
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
)
file_name
=
"招商引资
开发区
指标生成表{}.xlsx"
.
format
(
time_stamp
)
excel
.
save
(
path
+
file_name
)
return
jsonify
(
code
=
RET
.
OK
,
url
=
pro_path
+
file_name
,
msg
=
"导出/下载成功!"
)
return
pro_path
+
file_name
except
Exception
as
e
:
current_app
.
logger
.
error
(
e
)
return
jsonify
(
code
=
RET
.
DBERR
,
msg
=
"批量导出操作失败!"
)
return
'error'
"""项目分析"""
...
...
@@ -715,13 +818,13 @@ def project_graph():
))
.
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
)
*
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
)
+
'
%
'
,
}
data
=
[
{
"name"
:
"京津冀"
,
"value"
:
round
(
num1
/
total_num
*
100
,
2
)}
,
{
"name"
:
"长三角"
,
"value"
:
round
(
num2
/
total_num
*
100
,
2
)}
,
{
"name"
:
"珠三角"
,
"value"
:
round
(
num3
/
total_num
*
100
,
2
)}
,
{
"name"
:
"中原经济区"
,
"value"
:
round
(
num4
/
total_num
*
100
,
2
)}
,
{
"name"
:
"其他"
,
"value"
:
round
(
num5
/
total_num
*
100
,
2
)}
]
elif
flag
==
2
:
project_count1
=
project_obj
.
filter
(
ProjectManagement
.
investment_volume
>
0
,
...
...
@@ -746,14 +849,14 @@ def project_graph():
project_count6
=
project_obj
.
filter
(
ProjectManagement
.
investment_volume
>
20
*
10000
,
)
.
count
()
data
=
{
"project_count1"
:
project_count1
,
"project_count2"
:
project_count2
,
"project_count3"
:
project_count3
,
"project_count4"
:
project_count4
,
"project_count5"
:
project_count5
,
"project_count6"
:
project_count6
}
data
=
[
{
"name"
:
"0-0.5亿"
,
"value"
:
project_count1
}
,
{
"name"
:
"0.5-1亿"
,
"value"
:
project_count2
}
,
{
"name"
:
"1-5亿"
,
"value"
:
project_count3
}
,
{
"name"
:
"5-10亿"
,
"value"
:
project_count4
}
,
{
"name"
:
"10-20亿"
,
"value"
:
project_count5
}
,
{
"name"
:
"20亿以上"
,
"value"
:
project_count6
},
]
elif
flag
==
3
:
# 项目产业分布
# 第一产业
project_count1
=
project_obj
.
filter
(
ProjectManagement
.
industry_level
==
'第一产业'
)
.
count
()
...
...
@@ -766,11 +869,11 @@ def project_graph():
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
*
100
,
2
))
+
'
%
'
,
"project_count2"
:
str
(
round
(
project_count2
/
total_num
*
100
,
2
))
+
'
%
'
,
"project_count3"
:
str
(
round
(
project_count3
/
total_num
*
100
,
2
))
+
'
%
'
}
data
=
[
{
"name"
:
"第一产业"
,
"value"
:
round
(
project_count1
/
total_num
*
100
,
2
)}
,
{
"name"
:
"第二产业"
,
"value"
:
round
(
project_count2
/
total_num
*
100
,
2
)}
,
{
"name"
:
"第三产业"
,
"value"
:
round
(
project_count3
/
total_num
*
100
,
2
)},
]
elif
flag
==
4
:
industry_list
=
[]
for
project_obj_obj
in
project_obj
.
all
():
...
...
@@ -782,7 +885,7 @@ def project_graph():
data
=
[]
for
industry
in
industry_list
:
project_count
=
project_obj
.
filter
(
ProjectManagement
.
industry
==
industry
)
.
count
()
data_dic
=
{
"
industry"
:
industry
,
"project_count
"
:
project_count
}
data_dic
=
{
"
name"
:
industry
,
"value
"
:
project_count
}
data
.
append
(
data_dic
)
continue
else
:
...
...
@@ -885,18 +988,23 @@ def areal_project():
ProjectManagement
.
project_source
.
notlike
(
'
%
澳门
%
'
)
))
else
:
return
jsonify
(
code
=
RET
.
PARAMERR
,
msg
=
"参数错误!"
)
pass
if
flag
==
2
:
# 项目投资额区间分布项目列表
elif
flag
==
2
:
# 项目投资额区间分布项目列表
if
investment_volume
:
project_obj
=
project_obj
.
filter
(
ProjectManagement
.
investment_volume
>
investment_volume
[
0
]
if
investment_volume
[
0
]
else
text
(
''
),
ProjectManagement
.
investment_volume
<=
investment_volume
[
1
]
if
investment_volume
[
1
]
else
text
(
''
))
if
flag
==
3
:
# 项目产业分布项目列表
elif
flag
==
3
:
# 项目产业分布项目列表
if
industry_level
:
project_obj
=
project_obj
.
filter
(
ProjectManagement
.
industry_level
==
industry_level
)
if
flag
==
4
:
# 项目行业类型分布项目列表
elif
flag
==
4
:
# 项目行业类型分布项目列表
if
industry_name
:
project_obj
=
project_obj
.
filter
(
ProjectManagement
.
industry
==
industry_name
)
else
:
pass
if
not
project_obj
.
all
():
return
jsonify
(
code
=
RET
.
NODATA
,
msg
=
'没有符合条件的数据!'
)
...
...
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