Commit 7de7c5c4 by dong

fix20221130

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