Commit 77e60885 by dong

fix20221127

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