Commit 7de7c5c4 by dong

fix20221130

parent 77e60885
...@@ -26,53 +26,6 @@ from apps.inves_manage.siku_view import get_num, upload_daily_picture ...@@ -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): def get_data1(district_li, current_year):
data_li1 = [] data_li1 = []
...@@ -80,7 +33,7 @@ def get_data1(district_li, current_year): ...@@ -80,7 +33,7 @@ def get_data1(district_li, current_year):
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))),
ProjectManagement.district.like('%{}%'.format(str(district))) ProjectManagement.district.like('%{}%'.format(str(district))) if district != '全市' else text('')
).all() ).all()
if not project_obj_list: if not project_obj_list:
investment_volume = 0 investment_volume = 0
...@@ -88,7 +41,7 @@ def get_data1(district_li, current_year): ...@@ -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]) investment_volume = sum([project_obj.investment_volume for project_obj in project_obj_list])
# 年度目标 # 年度目标
jc_obj = JcTarget.query.filter( jc_obj = JcTarget.query.filter(
JcTarget.district_name == district, JcTarget.district_name == district if district != '全市' else text(''),
JcTarget.year.like('%{}%'.format(str(current_year))) JcTarget.year.like('%{}%'.format(str(current_year)))
).first() ).first()
if not jc_obj: if not jc_obj:
...@@ -97,8 +50,8 @@ def get_data1(district_li, current_year): ...@@ -97,8 +50,8 @@ def get_data1(district_li, current_year):
year_target = jc_obj.money_sign year_target = jc_obj.money_sign
data = { data = {
"district": district, "name": district,
"rate": round(investment_volume / year_target, 2) * 100 if year_target and year_target != 0 else 0 "value": round(investment_volume / year_target * 100, 2) if year_target and year_target != 0 else 0
} }
data_li1.append(data) data_li1.append(data)
continue continue
...@@ -117,17 +70,17 @@ def get_data2(district_li, current_year): ...@@ -117,17 +70,17 @@ def get_data2(district_li, current_year):
# 签约项目个数 # 签约项目个数
sign_num = ProjectManagement.query.filter( sign_num = ProjectManagement.query.filter(
ProjectManagement.sign_time.like('%{}%'.format(str(current_year))), 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() ).count()
# 年度目标 # 年度目标
start_num = ProjectManagement.query.filter( start_num = ProjectManagement.query.filter(
ProjectManagement.start_time.like('%{}%'.format(str(current_year))), 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() ).count()
data = { data = {
"district": district, "name": district,
"rate": round(start_num / sign_num, 2) * 100 if sign_num and sign_num != 0 else 0 "value": round(start_num / sign_num * 100, 2) if sign_num and sign_num != 0 else 0
} }
data_li2.append(data) data_li2.append(data)
continue continue
...@@ -145,7 +98,7 @@ def get_data3(district_li, current_year): ...@@ -145,7 +98,7 @@ def get_data3(district_li, current_year):
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))),
ProjectManagement.district.like('%{}%'.format(str(district))) ProjectManagement.district.like('%{}%'.format(str(district))) if district != '全市' else text('')
).all() ).all()
if not project_obj_list: if not project_obj_list:
investment_volume = 0 investment_volume = 0
...@@ -153,7 +106,7 @@ def get_data3(district_li, current_year): ...@@ -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]) investment_volume = sum([project_obj.investment_volume for project_obj in project_obj_list])
# 年度目标 # 年度目标
jc_obj = JcTarget.query.filter( jc_obj = JcTarget.query.filter(
JcTarget.district_name == district, JcTarget.district_name == district if district != '全市' else text(''),
JcTarget.year.like('%{}%'.format(str(current_year))) JcTarget.year.like('%{}%'.format(str(current_year)))
).first() ).first()
if not jc_obj: if not jc_obj:
...@@ -162,8 +115,8 @@ def get_data3(district_li, current_year): ...@@ -162,8 +115,8 @@ def get_data3(district_li, current_year):
year_target = jc_obj.money_plan_invest year_target = jc_obj.money_plan_invest
data = { data = {
"district": district, "name": district,
"rate": round(investment_volume / year_target, 2) * 100 if year_target and year_target != 0 else 0 "value": round(investment_volume / year_target * 100, 2) if year_target and year_target != 0 else 0
} }
data_li3.append(data) data_li3.append(data)
continue continue
...@@ -181,7 +134,7 @@ def get_data4(district_li, current_year): ...@@ -181,7 +134,7 @@ def get_data4(district_li, current_year):
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))),
MoneyArrive.district_name.like('%{}%'.format(str(district))) MoneyArrive.district_name.like('%{}%'.format(str(district))) if district != '全市' else text('')
).first() ).first()
if not project_obj: if not project_obj:
arrive_money = 0 arrive_money = 0
...@@ -189,7 +142,7 @@ def get_data4(district_li, current_year): ...@@ -189,7 +142,7 @@ def get_data4(district_li, current_year):
arrive_money = project_obj.arrive_money arrive_money = project_obj.arrive_money
# 年度目标 # 年度目标
jc_obj = JcTarget.query.filter( jc_obj = JcTarget.query.filter(
JcTarget.district_name == district, JcTarget.district_name == district if district != '全市' else text(''),
JcTarget.year.like('%{}%'.format(str(current_year))) JcTarget.year.like('%{}%'.format(str(current_year)))
).first() ).first()
if not jc_obj: if not jc_obj:
...@@ -198,8 +151,8 @@ def get_data4(district_li, current_year): ...@@ -198,8 +151,8 @@ def get_data4(district_li, current_year):
year_target = jc_obj.money_arrive_target1 year_target = jc_obj.money_arrive_target1
data = { data = {
"district": district, "name": district,
"rate": round(arrive_money / year_target, 2) * 100 if year_target and year_target != 0 else 0 "value": round(arrive_money / year_target * 100, 2) if year_target and year_target != 0 else 0
} }
data_li4.append(data) data_li4.append(data)
continue continue
...@@ -218,7 +171,7 @@ def get_data5(district_li, current_year): ...@@ -218,7 +171,7 @@ def get_data5(district_li, current_year):
project_obj_list = ProjectManagement.query.filter( project_obj_list = ProjectManagement.query.filter(
ProjectManagement.is_fixed_investment == '否', ProjectManagement.is_fixed_investment == '否',
ProjectManagement.sign_time.like('%{}%'.format(str(current_year))), 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() ).all()
if not project_obj_list: if not project_obj_list:
investment_volume = 0 investment_volume = 0
...@@ -226,7 +179,7 @@ def get_data5(district_li, current_year): ...@@ -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]) investment_volume = sum([project_obj.investment_year for project_obj in project_obj_list])
# 年度目标 # 年度目标
jc_obj = JcTarget.query.filter( jc_obj = JcTarget.query.filter(
JcTarget.district_name == district, JcTarget.district_name == district if district != '全市' else text(''),
JcTarget.year.like('%{}%'.format(str(current_year))) JcTarget.year.like('%{}%'.format(str(current_year)))
).first() ).first()
if not jc_obj: if not jc_obj:
...@@ -234,8 +187,8 @@ def get_data5(district_li, current_year): ...@@ -234,8 +187,8 @@ def get_data5(district_li, current_year):
else: else:
year_target = jc_obj.money_arrive_target0 year_target = jc_obj.money_arrive_target0
data = { data = {
"district": district, "name": district,
"rate": round(investment_volume / year_target, 2) * 100 if year_target and year_target != 0 else 0 "value": round(investment_volume / year_target * 100, 2) if year_target and year_target != 0 else 0
} }
data_li5.append(data) data_li5.append(data)
continue continue
...@@ -254,46 +207,46 @@ def get_data6(district_li, current_year): ...@@ -254,46 +207,46 @@ def get_data6(district_li, current_year):
# 则输出完成率(%)*赋分(15 上传后获取)的结果,否则输出赋分(15) # 则输出完成率(%)*赋分(15 上传后获取)的结果,否则输出赋分(15)
grade_li1 = [] grade_li1 = []
for data in data_li1: for data in data_li1:
grade = data["rate"] * 15 grade = data["value"] * 15
if grade < 15: if grade < 15:
grade_li1.append({"district": data["district"], "grade": grade}) grade_li1.append({"name": data["name"], "grade": grade})
else: else:
grade_li1.append({"district": data["district"], "grade": 15}) grade_li1.append({"name": data["name"], "grade": 15})
# 项目开工率情况得分=如果开工率进度小于0.4,则输出开工率进度*赋分(5分)/0.4,否则输出赋分(5分); # 项目开工率情况得分=如果开工率进度小于0.4,则输出开工率进度*赋分(5分)/0.4,否则输出赋分(5分);
grade_li2 = [] grade_li2 = []
for data in data_li2: for data in data_li2:
grade = data["rate"] grade = data["value"]
if grade < 0.4: 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: else:
grade_li2.append({"district": data["district"], "grade": 5}) grade_li2.append({"name": data["name"], "grade": 5})
# 新开工固定资产投资项目计划投资额完成情况得分=如果完成率(%)小于1, # 新开工固定资产投资项目计划投资额完成情况得分=如果完成率(%)小于1,
# 则输出完成率(%)*赋分(25 上传后获取)的结果,否则输出赋分(25); # 则输出完成率(%)*赋分(25 上传后获取)的结果,否则输出赋分(25);
grade_li3 = [] grade_li3 = []
for data in data_li3: for data in data_li3:
grade = data["rate"] grade = data["value"]
if grade < 1: if grade < 1:
grade_li3.append({"district": data["district"], "grade": grade * 25}) grade_li3.append({"name": data["name"], "grade": grade * 25})
else: else:
grade_li3.append({"district": data["district"], "grade": 25}) grade_li3.append({"name": data["name"], "grade": 25})
# 固定资产投资项目资金到位情况得分=如果完成率(%)小于1, # 固定资产投资项目资金到位情况得分=如果完成率(%)小于1,
# 则输出完成率(%)*赋分(25 上传后获取)的结果,否则输出赋分(25); # 则输出完成率(%)*赋分(25 上传后获取)的结果,否则输出赋分(25);
grade_li4 = [] grade_li4 = []
for data in data_li4: for data in data_li4:
grade = data["rate"] grade = data["value"]
if grade < 1: if grade < 1:
grade_li4.append({"district": data["district"], "grade": grade * 25}) grade_li4.append({"name": data["name"], "grade": grade * 25})
else: else:
grade_li4.append({"district": data["district"], "grade": 25}) grade_li4.append({"name": data["name"], "grade": 25})
# 非固定资产投资项目资金到位情况得分=如果完成率(%)小于1, # 非固定资产投资项目资金到位情况得分=如果完成率(%)小于1,
# 则输出完成率(%)*赋分(5 上传后获取)的结果,否则输出赋分(5); # 则输出完成率(%)*赋分(5 上传后获取)的结果,否则输出赋分(5);
grade_li5 = [] grade_li5 = []
for data in data_li5: for data in data_li5:
grade = data["rate"] grade = data["value"]
if grade < 1: if grade < 1:
grade_li5.append({"district": data["district"], "grade": grade * 5}) grade_li5.append({"name": data["name"], "grade": grade * 5})
else: else:
grade_li5.append({"district": data["district"], "grade": 5}) grade_li5.append({"name": data["name"], "grade": 5})
grade1 = 0 grade1 = 0
grade2 = 0 grade2 = 0
grade3 = 0 grade3 = 0
...@@ -302,26 +255,26 @@ def get_data6(district_li, current_year): ...@@ -302,26 +255,26 @@ def get_data6(district_li, current_year):
for district in district_li: for district in district_li:
# 签约情况得分 # 签约情况得分
for grade_dic in grade_li1: for grade_dic in grade_li1:
if grade_dic["district"] == district: if grade_dic["name"] == district:
grade1 = grade_dic["grade"] grade1 = grade_dic["grade"]
# 项目开工率情况得分 # 项目开工率情况得分
for grade_dic in grade_li2: for grade_dic in grade_li2:
if grade_dic["district"] == district: if grade_dic["name"] == district:
grade2 = grade_dic["grade"] grade2 = grade_dic["grade"]
# 新开工得分 # 新开工得分
for grade_dic in grade_li3: for grade_dic in grade_li3:
if grade_dic["district"] == district: if grade_dic["name"] == district:
grade3 = grade_dic["grade"] grade3 = grade_dic["grade"]
# 固定资产得分 # 固定资产得分
for grade_dic in grade_li4: for grade_dic in grade_li4:
if grade_dic["district"] == district: if grade_dic["name"] == district:
grade4 = grade_dic["grade"] grade4 = grade_dic["grade"]
# 非固定资产得分 # 非固定资产得分
for grade_dic in grade_li5: for grade_dic in grade_li5:
if grade_dic["district"] == district: if grade_dic["name"] == district:
grade5 = grade_dic["grade"] grade5 = grade_dic["grade"]
total_grade = grade1 + grade2 + grade3 + grade4 + grade5 total_grade = grade1 + grade2 + grade3 + grade4 + grade5
data_li6.append({"district": district, "total_grade": total_grade}) data_li6.append({"name": district, "value": total_grade})
return data_li6 return data_li6
...@@ -354,15 +307,60 @@ def get_data_li(district_li, current_year): ...@@ -354,15 +307,60 @@ def get_data_li(district_li, current_year):
return data_li1, data_li2, data_li3, data_li4, data_li5 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"]) @api_manage.route("/StatisticJcData", methods=["POST"])
def statistic_jc_data(): def statistic_jc_data():
# req_dic = request.get_json() # req_dic = request.get_json()
current_year = datetime.now().year current_year = datetime.now().year
district_li = ["", "城区", "泽州县", "高平市", "阳城县", "陵川县", district_li = ["全市", "城区", "泽州县", "高平市", "阳城县", "陵川县",
"沁水县", "晋城经济技术开发区", "高平经济技术开发区", "沁水县", "晋城经济技术开发区"]
"阳城经济技术开发区", "沁水经济技术开发区",
"陵川生态文化旅游示范区"]
try: try:
data_li1, data_li2, data_li3, data_li4, data_li5 = get_data_li(district_li, current_year) data_li1, data_li2, data_li3, data_li4, data_li5 = get_data_li(district_li, current_year)
...@@ -378,194 +376,234 @@ def statistic_jc_data(): ...@@ -378,194 +376,234 @@ def statistic_jc_data():
return jsonify(code=RET.DBERR, msg="数据查询错误!") return jsonify(code=RET.DBERR, msg="数据查询错误!")
# 区县指标完成表导出 # 区县/开发区指标完成表导出
@api_manage.route("/ExportJcData1", methods=["POST"]) @api_manage.route("/ExportJcData", methods=["POST"])
def export_jc_data1(): def export_jc_data():
req_dic = request.get_json() 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 current_year = datetime.now().year
path = './apps/statics/project_file/' path = './apps/statics/project_file/'
# pro_path = 'http://39.100.39.50:8008/aaa_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/' # 项目路径 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 = ["全市", "城区", "泽州县", "高平市", "阳城县", "陵川县", 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) data_li6 = get_data6(district_li, current_year)
target_data_list = [] target_data_list = []
data_list = [] try:
for district in district_li: for district in district_li:
# 县(市、区)、开发区 data_list = []
data_list.append(district) # 县(市、区)、开发区
data_list.append(district)
# 签约个数
sign_num = ProjectManagement.query.filter( # 签约个数
ProjectManagement.sign_time.like('%{}%'.format(str(current_year))), sign_num = ProjectManagement.query.filter(
ProjectManagement.district.like('%{}%'.format(str(district))) ProjectManagement.sign_time.like('%{}%'.format(str(current_year1))),
).count() ProjectManagement.sign_time.like('%{}%'.format(str(current_year2))),
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)
# 新开工完成率 ProjectManagement.district.like('%{}%'.format(str(district))) if district != '全市' else text('')
new_start_rate = new_start_money / new_start_target if new_start_target and new_start_target != 0 else 0 ).count()
data_list.append(new_start_rate) data_list.append(sign_num)
# 新开工得分 # 签约金额(亿元)
for grade_dic in data_li6: project_obj_list = ProjectManagement.query.filter(
if grade_dic['district'] == district: ProjectManagement.sign_time.like('%{}%'.format(str(current_year1))),
new_start_rate = grade_dic['total_grade'] ProjectManagement.sign_time.like('%{}%'.format(str(current_year2))),
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)
# 完成率 ProjectManagement.district.like('%{}%'.format(str(district))) if district != '全市' else text('')
gutou1_rate = gutou1_money / gutou1_target if gutou1_target and gutou1_target != 0 else 0 ).all()
data_list.append(gutou1_target) 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))) if district != '全市' else text('')).first()
sign_target = 0
if jc_obj:
sign_target = jc_obj.money_sign
data_list.append(sign_target)
# 签约完成率
sign_rate = round(sign_money / sign_target, 2) 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)
# 得分(25分) # 当年开工个数
if gutou1_rate < 1: start_num = ProjectManagement.query.filter(
gutou1_grade = gutou1_rate * 25 ProjectManagement.start_time.like('%{}%'.format(str(current_year1))),
else: ProjectManagement.sign_time.like('%{}%'.format(str(current_year2))),
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)
# 完成率 ProjectManagement.district.like('%{}%'.format(str(district))) if district != '全市' else text('')
gutou0_rate = gutou0_money / gutou0_target if gutou0_target and gutou0_target != 0 else 0 ).count()
data_list.append(gutou0_rate) data_list.append(start_num)
# 得分(5分) # 开工率进度(40 %)
if gutou0_rate < 1: start_rate = round(start_num / sign_num, 2) if sign_num and sign_num != 0 else 0
gutou0_grade = gutou0_rate * 5 data_list.append(start_rate)
else:
gutou0_grade = 5 # 开工得分(5分)
data_list.append(gutou0_grade) if start_rate < 0.4:
start_grade = round(start_rate * 5 / 0.4, 2)
# 指标得分(75分) else:
target_grade = 0 start_grade = 5
for grade_dic in data_li6: data_list.append(start_grade)
if grade_dic['district'] == district:
target_grade = grade_dic['total_grade'] # 新开工项目计划投资额(亿元)
data_list.append(target_grade) project_obj_list = ProjectManagement.query.filter(
target_data_list.append(data_list) 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
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 if district != '全市' else text(''),
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 = 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['name'] == district:
new_start_rate = grade_dic['value']
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 == data_time,
MoneyArrive.district_name.like('%{}%'.format(str(district))) if district != '全市' else text('')
).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 if district != '全市' else text(''),
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 = round(gutou1_money / gutou1_target, 2) 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_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
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 = round(gutou0_money / gutou0_target, 2) 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['name'] == district:
target_grade = grade_dic['value']
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: try:
sheet_name_titles = { sheet_name_titles = {
"sheet1": ["县(市、区)、开发区", "签约个数", "签约金额(亿元)", "年度目标(亿元)", "sheet1": ["县(市、区)、开发区", "签约个数", "签约金额(亿元)", "年度目标(亿元)",
...@@ -592,42 +630,107 @@ def export_jc_data1(): ...@@ -592,42 +630,107 @@ def export_jc_data1():
for j in range(cols): for j in range(cols):
sheet.write(i + 1, j, target_data_list[i][j]) sheet.write(i + 1, j, target_data_list[i][j])
time_stamp = '{0:%Y%m%d%H%M%S}'.format(datetime.now()) 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) 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: except Exception as e:
current_app.logger.error(e) current_app.logger.error(e)
return jsonify(code=RET.DBERR, msg="批量导出操作失败!") return 'error'
# 开发区指标完成表导出 # 开发区指标完成表导出
@api_manage.route("/ExportJcData2", methods=["POST"]) def export_jc_data2(data_time, path, pro_path):
def export_jc_data2(): district_li = ["晋城经济技术开发区(一区四园)", "高平经济技术开发区",
req_dic = request.get_json() "阳城经济技术开发区", "沁水经济技术开发区", "陵川生态文化旅游示范区", "汇 总"]
district = req_dic['district'] # 2022年1-11月
current_year = datetime.now().year current_year = data_time.split('年')[0]
current_month = data_time.split('年')[1].split('月')[0]
path = './apps/statics/project_file/' current_month1 = current_month.split('-')[0]
# pro_path = 'http://39.100.39.50:8008/aaa_statics/project_file/' # 项目路径 current_month2 = current_month.split('-')[1]
pro_path = 'http://192.168.1.4:5000/statics/project_file/' # 项目路径
district_li = ["全市", "城区", "泽州县", "高平市", "阳城县", "陵川县", current_year1 = current_year + '/' + current_month1
"沁水县", "晋城经济技术开发区"] current_year2 = current_year + '/' + current_month2
target_data_list = [] 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: 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))),
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 = { sheet_name_titles = {
"sheet1": ["县(市、区)、开发区", "签约个数", "签约金额(亿元)", "属地签约任务(亿元)", "sheet1": ["县(市、区)、开发区", "签约个数", "签约金额(亿元)", "属地签约任务(亿元)",
"完成属地目标任务占比", "新开工项目", "计划投资额(亿元)", "属地投资任务(亿元)", "完成属地目标任务占比", "新开工项目计划投资额(亿元)", "属地投资任务(亿元)",
"完成属地目标任务占比", "当年签约当年开工个数", "开工率年度目标(40 %)", "完成属地目标任务占比", "当年签约当年开工个数", "开工率年度目标(40 %)",
"开工率排名", "属地投资任务(亿元)", "完成属地目标任务占比", "开工率目标(40%)",
"开工率排名" "开工率排名"
]} ]}
excel = xlwt.Workbook(encoding='utf-8') excel = xlwt.Workbook(encoding='utf-8')
...@@ -647,12 +750,12 @@ def export_jc_data2(): ...@@ -647,12 +750,12 @@ def export_jc_data2():
for j in range(cols): for j in range(cols):
sheet.write(i + 1, j, target_data_list[i][j]) sheet.write(i + 1, j, target_data_list[i][j])
time_stamp = '{0:%Y%m%d%H%M%S}'.format(datetime.now()) 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) 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: except Exception as e:
current_app.logger.error(e) current_app.logger.error(e)
return jsonify(code=RET.DBERR, msg="批量导出操作失败!") return 'error'
"""项目分析""" """项目分析"""
...@@ -715,13 +818,13 @@ def project_graph(): ...@@ -715,13 +818,13 @@ def project_graph():
)).count() )).count()
num5 = total_num - sum([num1, num2, num3, num4]) 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) * 100) + '%', {"name": "京津冀", "value": round(num1 / total_num * 100, 2)},
"data2": str(round(num2 / total_num, 2) * 100) + '%', {"name": "长三角", "value": round(num2 / total_num * 100, 2)},
"data3": str(round(num3 / total_num, 2) * 100) + '%', {"name": "珠三角", "value": round(num3 / total_num * 100, 2)},
"data4": str(round(num4 / total_num, 2) * 100) + '%', {"name": "中原经济区", "value": round(num4 / total_num * 100, 2)},
"data5": str(round(num5 / total_num, 2) * 100) + '%', {"name": "其他", "value": round(num5 / total_num * 100, 2)}
} ]
elif flag == 2: elif flag == 2:
project_count1 = project_obj.filter( project_count1 = project_obj.filter(
ProjectManagement.investment_volume > 0, ProjectManagement.investment_volume > 0,
...@@ -746,14 +849,14 @@ def project_graph(): ...@@ -746,14 +849,14 @@ def project_graph():
project_count6 = project_obj.filter( project_count6 = project_obj.filter(
ProjectManagement.investment_volume > 20 * 10000, ProjectManagement.investment_volume > 20 * 10000,
).count() ).count()
data = { data = [
"project_count1": project_count1, {"name": "0-0.5亿", "value": project_count1},
"project_count2": project_count2, {"name": "0.5-1亿", "value": project_count2},
"project_count3": project_count3, {"name": "1-5亿", "value": project_count3},
"project_count4": project_count4, {"name": "5-10亿", "value": project_count4},
"project_count5": project_count5, {"name": "10-20亿", "value": project_count5},
"project_count6": project_count6 {"name": "20亿以上", "value": project_count6},
} ]
elif flag == 3: # 项目产业分布 elif flag == 3: # 项目产业分布
# 第一产业 # 第一产业
project_count1 = project_obj.filter(ProjectManagement.industry_level == '第一产业').count() project_count1 = project_obj.filter(ProjectManagement.industry_level == '第一产业').count()
...@@ -766,11 +869,11 @@ def project_graph(): ...@@ -766,11 +869,11 @@ def project_graph():
total_num = project_count1 + project_count2 + project_count3 total_num = project_count1 + project_count2 + project_count3
if total_num == 0: if total_num == 0:
return jsonify(code=RET.NODATA, msg='产业类型无数据!') return jsonify(code=RET.NODATA, msg='产业类型无数据!')
data = { data = [
"project_count1": str(round(project_count1 / total_num * 100, 2)) + '%', {"name": "第一产业", "value": round(project_count1 / total_num * 100, 2)},
"project_count2": str(round(project_count2 / total_num * 100, 2)) + '%', {"name": "第二产业", "value": round(project_count2 / total_num * 100, 2)},
"project_count3": str(round(project_count3 / total_num * 100, 2)) + '%' {"name": "第三产业", "value": round(project_count3 / total_num * 100, 2)},
} ]
elif flag == 4: elif flag == 4:
industry_list = [] industry_list = []
for project_obj_obj in project_obj.all(): for project_obj_obj in project_obj.all():
...@@ -782,7 +885,7 @@ def project_graph(): ...@@ -782,7 +885,7 @@ def project_graph():
data = [] data = []
for industry in industry_list: for industry in industry_list:
project_count = project_obj.filter(ProjectManagement.industry == industry).count() 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) data.append(data_dic)
continue continue
else: else:
...@@ -885,18 +988,23 @@ def areal_project(): ...@@ -885,18 +988,23 @@ def areal_project():
ProjectManagement.project_source.notlike('%澳门%') ProjectManagement.project_source.notlike('%澳门%')
)) ))
else: else:
return jsonify(code=RET.PARAMERR, msg="参数错误!") pass
if flag == 2: # 项目投资额区间分布项目列表 elif flag == 2: # 项目投资额区间分布项目列表
project_obj = project_obj.filter( if investment_volume:
ProjectManagement.investment_volume > investment_volume[0] if investment_volume[0] else text(''), project_obj = project_obj.filter(
ProjectManagement.investment_volume <= investment_volume[1] if investment_volume[1] else text('')) 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: # 项目产业分布项目列表
project_obj = project_obj.filter(ProjectManagement.industry_level == industry_level) if industry_level:
project_obj = project_obj.filter(ProjectManagement.industry_level == industry_level)
if flag == 4: # 项目行业类型分布项目列表 elif flag == 4: # 项目行业类型分布项目列表
project_obj = project_obj.filter(ProjectManagement.industry == industry_name) if industry_name:
project_obj = project_obj.filter(ProjectManagement.industry == industry_name)
else:
pass
if not project_obj.all(): if not project_obj.all():
return jsonify(code=RET.NODATA, msg='没有符合条件的数据!') return jsonify(code=RET.NODATA, msg='没有符合条件的数据!')
......
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