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
012ac2b0
Commit
012ac2b0
authored
Nov 21, 2022
by
dong
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
fix20221121
parent
6d1656bf
Show whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
806 additions
and
5 deletions
+806
-5
apps/inves_manage/statistic_analysis_view.py
+724
-0
apps/inves_manage/view.py
+23
-4
apps/models.py
+59
-1
No files found.
apps/inves_manage/statistic_analysis_view.py
0 → 100644
View file @
012ac2b0
import
oss2
import
requests
import
xlrd
import
xlwt
from
flask
import
current_app
,
jsonify
,
request
from
sqlalchemy
import
and_
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.util
import
verify_identity
"""统计分析"""
# 统计分析
@api_project.route
(
"/StatisticAnalysis"
,
methods
=
[
"POST"
])
def
statistic_analysis
():
req_dic
=
request
.
get_json
()
flag
=
req_dic
[
'flag'
]
district
=
req_dic
[
'district'
]
data_dic
=
{}
try
:
# 行业分布
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投产项目
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
=
'数据获取成功!'
)
# 企业投资额度统计
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
=
'获取成功!'
)
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
=
'数据查询错误!'
)
# 绩效评分---编辑驻外办事机构考核
@api_project.route
(
"/EditOverseasScore"
,
methods
=
[
"POST"
])
def
edit_overseas_score
():
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
=
'数据查询错误!'
)
# 绩效评分---编辑服务保障部门考核绩效评分数据
@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
=
'数据查询错误!'
)
# 绩效评分---获取输入框数据
@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
}
# 获取对县(市、区)、开发区考核信息
elif
flag
==
2
:
district_obj
=
ScoreDistrict
.
query
.
filter_by
(
district_name
=
name
)
.
first
()
if
not
district_obj
:
return
jsonify
(
code
=
RET
.
NODATA
,
msg
=
'无此县区信息!请核实。'
)
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
,
}
# 获取市直有关单位和群团组织考核信息 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
=
{
"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
,
}
# 获取驻外办事机构信息
elif
flag
==
4
:
offices_obj
=
ScoreOverseasOffices
.
query
.
filter_by
(
offices_name
=
name
)
.
first
()
if
not
offices_obj
:
return
jsonify
(
code
=
RET
.
NODATA
,
msg
=
'无此市值单位信息!请核实。'
)
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
,
}
# 获取服务保障等任务的职能部门
elif
flag
==
5
:
department_obj
=
ScoreServiceDepartment
.
query
.
filter_by
(
department_name
=
name
)
.
first
()
if
not
department_obj
:
return
jsonify
(
code
=
RET
.
NODATA
,
msg
=
'无此市值单位信息!请核实。'
)
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
,
}
return
jsonify
(
code
=
RET
.
OK
,
data
=
data
,
msg
=
'数据获取成功!'
)
except
Exception
as
e
:
current_app
.
logger
.
error
(
e
)
return
jsonify
(
code
=
RET
.
DBERR
,
msg
=
'数据查询错误!'
)
"""绩效排名"""
# 绩效排名
@api_project.route
(
"/ScoreRank"
,
methods
=
[
"POST"
])
def
score_rank
():
req_dic
=
request
.
get_json
()
flag
=
req_dic
[
'flag'
]
# 1项目专班,2区县,3市直部门,4驻外办,5服务保障部门
score_list
=
''
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
)
# 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
=
'提交成功!'
)
except
Exception
as
e
:
current_app
.
logger
.
error
(
e
)
return
jsonify
(
code
=
RET
.
DBERR
,
msg
=
'数据查询错误!'
)
apps/inves_manage/view.py
View file @
012ac2b0
...
@@ -1222,7 +1222,7 @@ def check_project_detail():
...
@@ -1222,7 +1222,7 @@ def check_project_detail():
"Party_B_name"
:
project_obj
.
Party_B_name
,
# 签约乙方名称
"Party_B_name"
:
project_obj
.
Party_B_name
,
# 签约乙方名称
"Party_B_people"
:
project_obj
.
Party_B_people
,
# 签约乙方联系人
"Party_B_people"
:
project_obj
.
Party_B_people
,
# 签约乙方联系人
"Party_B_mobile"
:
project_obj
.
Party_B_mobile
,
# 签约乙方联系方式
"Party_B_mobile"
:
project_obj
.
Party_B_mobile
,
# 签约乙方联系方式
"sign_time"
:
project_obj
.
sign_time
.
strftime
(
"
%
Y-
%
m-
%
d"
),
# 签约时间
"sign_time"
:
project_obj
.
sign_time
.
strftime
(
"
%
Y-
%
m-
%
d"
)
if
project_obj
.
sign_time
else
''
,
# 签约时间
"project_to_area1"
:
project_obj
.
project_to_area1
,
# 落地区域
"project_to_area1"
:
project_obj
.
project_to_area1
,
# 落地区域
"sign_style"
:
project_obj
.
sign_style
,
# 签约方式
"sign_style"
:
project_obj
.
sign_style
,
# 签约方式
"sign_explain"
:
project_obj
.
sign_explain
,
# 其他签约说明
"sign_explain"
:
project_obj
.
sign_explain
,
# 其他签约说明
...
@@ -1250,10 +1250,10 @@ def check_project_detail():
...
@@ -1250,10 +1250,10 @@ def check_project_detail():
"project_people_mobile"
:
project_obj
.
project_people_mobile
,
# 项目方联系方式
"project_people_mobile"
:
project_obj
.
project_people_mobile
,
# 项目方联系方式
"attract_name"
:
project_obj
.
attract_name
,
# 引资方名称
"attract_name"
:
project_obj
.
attract_name
,
# 引资方名称
"progress_condition"
:
project_obj
.
progress_condition
,
# 项目推进情况
"progress_condition"
:
project_obj
.
progress_condition
,
# 项目推进情况
"sign_time"
:
project_obj
.
sign_time
,
# 签约时间
"sign_time"
:
project_obj
.
sign_time
.
strftime
(
"
%
Y-
%
m-
%
d"
)
if
project_obj
.
sign_time
else
''
,
# 签约时间
"investment"
:
project_obj
.
investment
.
strftime
(
"
%
Y-
%
m-
%
d"
)
,
# 到位资金
"investment"
:
project_obj
.
investment
,
# 到位资金
"project_to_area1"
:
project_obj
.
project_to_area1
,
# 落地区域
"project_to_area1"
:
project_obj
.
project_to_area1
,
# 落地区域
"start_time"
:
project_obj
.
start_time
.
strftime
(
"
%
Y-
%
m-
%
d"
),
# 开工时间
"start_time"
:
project_obj
.
start_time
.
strftime
(
"
%
Y-
%
m-
%
d"
)
if
project_obj
.
start_time
else
''
,
# 开工时间
"remark"
:
project_obj
.
remark
,
# 备注
"remark"
:
project_obj
.
remark
,
# 备注
}
}
# 项目进展
# 项目进展
...
@@ -1955,8 +1955,27 @@ def batch_export_project4():
...
@@ -1955,8 +1955,27 @@ def batch_export_project4():
return
jsonify
(
code
=
RET
.
DBERR
,
msg
=
"批量导出操作失败!"
)
return
jsonify
(
code
=
RET
.
DBERR
,
msg
=
"批量导出操作失败!"
)
# 获取项目动态
@api_manage.route
(
"/GetProjectLog"
,
methods
=
[
"POST"
])
def
get_project_log
():
req_dic
=
request
.
get_json
()
project_id
=
req_dic
[
'project_id'
]
page
=
req_dic
[
'page'
]
per_page
=
req_dic
[
'per_page'
]
try
:
log_obj_list
=
ProjectDynamicLog
.
query
.
filter
(
ProjectDynamicLog
.
project_id
==
project_id
)
log_obj_list
=
log_obj_list
.
order_by
(
ProjectDynamicLog
.
time
.
desc
())
.
paginate
(
page
,
per_page
)
.
items
data
=
[{
"id"
:
log_obj
.
id
,
"item"
:
log_obj
.
operation_people
+
log_obj
.
item
,
"time"
:
log_obj
.
time
,
}
for
log_obj
in
log_obj_list
]
return
jsonify
(
code
=
RET
.
OK
,
data
=
data
,
msg
=
'项目动态信息获取成功!'
)
except
Exception
as
e
:
current_app
.
logger
.
error
(
e
)
return
jsonify
(
code
=
RET
.
DBERR
,
msg
=
"项目动态信息获取失败!"
)
...
...
apps/models.py
View file @
012ac2b0
...
@@ -1097,7 +1097,7 @@ class SikuProject(db.Model):
...
@@ -1097,7 +1097,7 @@ class SikuProject(db.Model):
sign_time
=
db
.
Column
(
db
.
DateTime
,
comment
=
'签约时间'
)
sign_time
=
db
.
Column
(
db
.
DateTime
,
comment
=
'签约时间'
)
sign_year
=
db
.
Column
(
db
.
Integer
,
comment
=
'签约年份'
)
sign_year
=
db
.
Column
(
db
.
Integer
,
comment
=
'签约年份'
)
sign_style
=
db
.
Column
(
db
.
String
(
20
),
comment
=
'签约方式'
)
sign_style
=
db
.
Column
(
db
.
String
(
20
),
comment
=
'签约方式'
)
sign_explain
=
db
.
Column
(
db
.
String
(
255
),
comment
=
'
其他签约
说明'
)
sign_explain
=
db
.
Column
(
db
.
String
(
255
),
comment
=
'
签约方式
说明'
)
# 开工库
# 开工库
investment
=
db
.
Column
(
db
.
String
(
20
),
comment
=
'到位资金'
)
investment
=
db
.
Column
(
db
.
String
(
20
),
comment
=
'到位资金'
)
...
@@ -1157,3 +1157,61 @@ class ProjectDynamicLog(db.Model):
...
@@ -1157,3 +1157,61 @@ class ProjectDynamicLog(db.Model):
operation_people
=
db
.
Column
(
db
.
String
(
30
),
comment
=
'操作人'
)
operation_people
=
db
.
Column
(
db
.
String
(
30
),
comment
=
'操作人'
)
item
=
db
.
Column
(
db
.
String
(
255
),
comment
=
'动态'
)
item
=
db
.
Column
(
db
.
String
(
255
),
comment
=
'动态'
)
time
=
db
.
Column
(
db
.
String
(
30
),
comment
=
'时间'
)
time
=
db
.
Column
(
db
.
String
(
30
),
comment
=
'时间'
)
"""项目管理"""
# 项目管理-台账信息表
class
ProjectManagement
(
db
.
Model
):
__tablename_
=
"project_management"
__table_args__
=
({
'comment'
:
'项目化管理-项目信息表'
})
# 添加表注释
# 基本信息
id
=
db
.
Column
(
db
.
Integer
,
primary_key
=
True
,
autoincrement
=
True
,
comment
=
'主键id'
)
project_stalker
=
db
.
Column
(
db
.
String
(
30
),
comment
=
'项目跟踪'
)
project_name
=
db
.
Column
(
db
.
String
(
30
),
comment
=
'项目名称'
)
district
=
db
.
Column
(
db
.
String
(
20
),
comment
=
'项目所在地'
)
development_area
=
db
.
Column
(
db
.
String
(
20
),
comment
=
'开发区'
)
attract_name
=
db
.
Column
(
db
.
String
(
30
),
comment
=
'引资方名称'
)
investor_name
=
db
.
Column
(
db
.
String
(
30
),
comment
=
'投资方名称'
)
investor_district
=
db
.
Column
(
db
.
String
(
30
),
comment
=
'投资方所在地'
)
industry
=
db
.
Column
(
db
.
String
(
20
),
comment
=
'所属行业'
)
investment_volume
=
db
.
Column
(
db
.
Float
,
comment
=
'总投资额(万元)'
)
construction_content
=
db
.
Column
(
db
.
String
(
30
),
comment
=
'建设内容'
)
project_address
=
db
.
Column
(
db
.
String
(
20
),
comment
=
'项目选址'
)
project_progress
=
db
.
Column
(
db
.
String
(
30
),
comment
=
'项目进展'
)
project_problem
=
db
.
Column
(
db
.
String
(
255
),
comment
=
'难点情况'
)
project_year
=
db
.
Column
(
db
.
Integer
,
comment
=
'项目年份'
)
upload_unity
=
db
.
Column
(
db
.
String
(
20
),
comment
=
'上传部门'
)
upload_people
=
db
.
Column
(
db
.
String
(
20
),
comment
=
'上传人'
)
upload_time
=
db
.
Column
(
db
.
DateTime
,
comment
=
'上传时间'
)
project_num
=
db
.
Column
(
db
.
String
(
30
),
comment
=
'项目编号'
)
project_source
=
db
.
Column
(
db
.
String
(
20
),
comment
=
'项目来源'
)
project_unity
=
db
.
Column
(
db
.
String
(
20
),
comment
=
'项目申报单位'
)
is_development_project
=
db
.
Column
(
db
.
String
(
20
),
comment
=
'是否属于开发区项目'
)
sign_time
=
db
.
Column
(
db
.
DateTime
,
comment
=
'签约时间'
)
start_time
=
db
.
Column
(
db
.
DateTime
,
comment
=
'开工时间'
)
end_time
=
db
.
Column
(
db
.
DateTime
,
comment
=
'竣工时间'
)
investor_rank
=
db
.
Column
(
db
.
String
(
30
),
comment
=
'投资方排名'
)
is_transf_project
=
db
.
Column
(
db
.
String
(
30
),
comment
=
'是否转型项目'
)
country
=
db
.
Column
(
db
.
String
(
30
),
comment
=
'投资方国别'
)
provence
=
db
.
Column
(
db
.
String
(
30
),
comment
=
'投资方省份'
)
city
=
db
.
Column
(
db
.
String
(
30
),
comment
=
'投资方市'
)
job_num
=
db
.
Column
(
db
.
Integer
,
comment
=
'带动就业岗位(个)'
)
new_value
=
db
.
Column
(
db
.
Float
,
comment
=
'新增产值(亿元)'
)
revenue
=
db
.
Column
(
db
.
Float
,
comment
=
'贡献税收(亿元)'
)
use_land
=
db
.
Column
(
db
.
String
(
30
),
comment
=
'项目用地情况(亩)'
)
new_land
=
db
.
Column
(
db
.
String
(
30
),
comment
=
'其中新增用地(亩)'
)
construction_nature
=
db
.
Column
(
db
.
String
(
30
),
comment
=
'建设性质(亩)'
)
is_fixed_investment
=
db
.
Column
(
db
.
String
(
30
),
comment
=
'固定资产投资项目'
)
investment_year
=
db
.
Column
(
db
.
String
(
20
),
comment
=
'资金到位本年累计(万元)'
)
investment_history
=
db
.
Column
(
db
.
String
(
20
),
comment
=
'资金到位历史累计(万元)'
)
cooperation_way
=
db
.
Column
(
db
.
String
(
20
),
comment
=
'合作方式'
)
set_project_status
=
db
.
Column
(
db
.
String
(
20
),
comment
=
'项目立项状态'
)
investor_people
=
db
.
Column
(
db
.
String
(
30
),
comment
=
'投资方联系人'
)
investor_mobile
=
db
.
Column
(
db
.
String
(
30
),
comment
=
'投资方电话'
)
investor_address
=
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