Commit 210ba33f by dong

fix20230306

parent 8efa5529
...@@ -27,70 +27,57 @@ from apps.inves_manage.siku_view import get_num, upload_daily_picture ...@@ -27,70 +27,57 @@ from apps.inves_manage.siku_view import get_num, upload_daily_picture
# 获取项目中的最大月份 # 获取项目中的最大月份
def get_max_month(): # def get_max_month():
try: # try:
project_obj_list = ProjectManagement.query.all() # project_obj_list = ProjectManagement.query.all()
month_list = [] # month_list = []
year = datetime.now().year # year = datetime.now().year
for project_obj in project_obj_list: # for project_obj in project_obj_list:
if project_obj.sign_time and str(year) in project_obj.sign_time: # if project_obj.sign_time and str(year) in project_obj.sign_time:
month_list.append(project_obj.sign_time.split('-')[1]) # month_list.append(project_obj.sign_time.split('-')[1])
max_month = max(set(month_list)) + 1 # max_month = max(set(month_list)) + 1
return max_month # return max_month
except Exception as e: # except Exception as e:
return 'error' # return 'error'
# 项目签约完成率 # 项目签约完成率
def get_data1(data_time, district_li, current_year): def get_data1(data_time, district_li, current_year):
data_li1 = []
now_time3 = ''
now_time4 = ''
max_month = get_max_month()
now_time = datetime.now().strftime('%Y-{}-01 00:00:00'.format(max_month))
now_time1 = (datetime.now() - relativedelta(years=1)).strftime('%Y-01-01 00:00:00')
if data_time:
if data_time[0] and data_time[1]:
now_time3 = ('{}-{}-01 00:00:00').format(data_time[0], data_time[1])
if data_time[2]:
now_time4 = ('{}-{}-01 00:00:00').format(data_time[0], data_time[2])
try: try:
data_li1 = []
for district in district_li: for district in district_li:
# 先查询最新的年度目标是哪一年的 if not data_time:
# 获取晋城年度目标表中的最新数据看看是哪一年的
jc_obj_list = JcTarget.query.filter( jc_obj_list = JcTarget.query.filter(
JcTarget.district_name == district if district != '全市' else text(''), JcTarget.district_name == district if district != '全市' else text(''),
JcTarget.is_delete == 0 JcTarget.is_delete == 0
).all() ).all()
# 获取最大年份 year_list = []
year_li = []
for jc_obj in jc_obj_list: for jc_obj in jc_obj_list:
year = jc_obj.year.split('年')[0] year_list.append(int(jc_obj.year.split('年')[0]))
year_li.append(int(year)) max_year = max(set(year_list))
max_year = max(set(year_li)) now_time = '{}-01-01 00:00:00'.format(max_year)
now_time1 = '{}-01-01 00:00:00'.format(max_year + 1)
if not data_time:
project_obj_list = ProjectManagement.query.filter( project_obj_list = ProjectManagement.query.filter(
ProjectManagement.is_delete == 0, ProjectManagement.is_delete == 0,
ProjectManagement.sign_time < now_time, ProjectManagement.sign_time < now_time1,
ProjectManagement.sign_time >= now_time1, ProjectManagement.sign_time >= now_time,
ProjectManagement.district.like('%{}%'.format(str(district))) if district != '全市' else text('') ProjectManagement.district.like('%{}%'.format(str(district))) if district != '全市' else text('')
).all() ).all()
else: else:
if data_time[0] and data_time[1]:
now_time3 = ('{}-{}-01 00:00:00').format(data_time[0], data_time[1])
if data_time[2]:
now_time4 = ('{}-{}-01 00:00:00').format(data_time[0], data_time[2])
project_obj_list = ProjectManagement.query.filter( project_obj_list = ProjectManagement.query.filter(
ProjectManagement.is_delete == 0, ProjectManagement.is_delete == 0,
ProjectManagement.sign_time < now_time4 if now_time4 else text(''), ProjectManagement.sign_time < now_time4 if now_time4 else text(''),
ProjectManagement.sign_time >= now_time3, ProjectManagement.sign_time >= now_time3,
ProjectManagement.district.like('%{}%'.format(str(district))) if district != '全市' else text('') ProjectManagement.district.like('%{}%'.format(str(district))) if district != '全市' else text('')
).all() ).all()
# project_obj_list = ProjectManagement.query.filter(
# ProjectManagement.is_delete == 0, # 计算比率
# ProjectManagement.sign_time.like('%{}%'.format(str(current_year))),
# ProjectManagement.district.like('%{}%'.format(str(district))) if district != '全市' else text('')
# ).all()
if not project_obj_list: if not project_obj_list:
investment_volume = 0 investment_volume = 0
else: else:
...@@ -99,8 +86,8 @@ def get_data1(data_time, district_li, current_year): ...@@ -99,8 +86,8 @@ def get_data1(data_time, district_li, current_year):
# 年度目标 # 年度目标
jc_obj = JcTarget.query.filter( jc_obj = JcTarget.query.filter(
JcTarget.district_name == district if district != '全市' else text(''), JcTarget.district_name == district if district != '全市' else text(''),
# JcTarget.year.like('%{}%'.format(str(data_time[0])) if data_time else str(current_year)), JcTarget.year.like('%{}%'.format(str(data_time[0])) if data_time else str(max_year)),
JcTarget.year.like('%{}%'.format(str(data_time[0]))) if data_time else text(''), # JcTarget.year.like('%{}%'.format(str(data_time[0]))) if data_time else text(''),
JcTarget.is_delete == 0 JcTarget.is_delete == 0
).first() ).first()
if not jc_obj: if not jc_obj:
...@@ -116,21 +103,444 @@ def get_data1(data_time, district_li, current_year): ...@@ -116,21 +103,444 @@ def get_data1(data_time, district_li, current_year):
} }
data_li1.append(data) data_li1.append(data)
continue continue
data_li1 = sorted(data_li1, key=lambda x: x['value'], reverse=False)
return data_li1
except Exception as e: except Exception as e:
current_app.logger.error(e) current_app.logger.error(e)
print('项目签约完成率计算出错', e) print('项目签约完成率计算出错', e)
return 'error' return 'error'
data_li1 = sorted(data_li1, key=lambda x: x['value'], reverse=False)
return data_li1
""""""
# def get_data1(data_time, district_li, current_year):
# data_li1 = []
# now_time3 = ''
# now_time4 = ''
# # max_month = get_max_month()
# # now_time = datetime.now().strftime('%Y-{}-01 00:00:00'.format(max_month))
# now_time = datetime.now().strftime('%Y-%m-01 00:00:00')
# now_time1 = (datetime.now() - relativedelta(years=1)).strftime('%Y-01-01 00:00:00')
#
# if data_time:
# if data_time[0] and data_time[1]:
# now_time3 = ('{}-{}-01 00:00:00').format(data_time[0], data_time[1])
# if data_time[2]:
# now_time4 = ('{}-{}-01 00:00:00').format(data_time[0], data_time[2])
#
# try:
# for district in district_li:
# # # 先查询最新的年度目标是哪一年的
# # jc_obj_list = JcTarget.query.filter(
# # JcTarget.district_name == district if district != '全市' else text(''),
# # JcTarget.is_delete == 0
# # ).all()
# # # 获取最大年份
# # year_li = []
# # for jc_obj in jc_obj_list:
# # year = jc_obj.year.split('年')[0]
# # year_li.append(int(year))
# # max_year = max(set(year_li))
# if not data_time:
# project_obj_list = ProjectManagement.query.filter(
# ProjectManagement.is_delete == 0,
# ProjectManagement.sign_time < now_time,
# ProjectManagement.sign_time >= now_time1,
# ProjectManagement.district.like('%{}%'.format(str(district))) if district != '全市' else text('')
# ).all()
# else:
# project_obj_list = ProjectManagement.query.filter(
# ProjectManagement.is_delete == 0,
# ProjectManagement.sign_time < now_time4 if now_time4 else text(''),
# ProjectManagement.sign_time >= now_time3,
# ProjectManagement.district.like('%{}%'.format(str(district))) if district != '全市' else text('')
# ).all()
# # project_obj_list = ProjectManagement.query.filter(
# # ProjectManagement.is_delete == 0,
# # ProjectManagement.sign_time.like('%{}%'.format(str(current_year))),
# # ProjectManagement.district.like('%{}%'.format(str(district))) if district != '全市' else text('')
# # ).all()
# if not project_obj_list:
# investment_volume = 0
# else:
# investment_volume = sum([project_obj.investment_volume for project_obj in project_obj_list])
#
# # 年度目标
# jc_obj = JcTarget.query.filter(
# JcTarget.district_name == district if district != '全市' else text(''),
# JcTarget.year.like('%{}%'.format(str(data_time[0])) if data_time else str(current_year)),
# # JcTarget.year.like('%{}%'.format(str(data_time[0]))) if data_time else text(''),
# JcTarget.is_delete == 0
# ).first()
# if not jc_obj:
# year_target = 0
# else:
# year_target = jc_obj.money_sign
#
# data = {
# "name": district,
# "data": round(investment_volume / 10000, 2),
# "target": year_target,
# "value": round(investment_volume / 10000 / year_target * 100, 2) if year_target and year_target != 0 else 0
# }
# data_li1.append(data)
# continue
# except Exception as e:
# current_app.logger.error(e)
# print('项目签约完成率计算出错', e)
# return 'error'
# data_li1 = sorted(data_li1, key=lambda x: x['value'], reverse=False)
# return data_li1
# 项目开工率 # 项目开工率
# def get_data2(data_time, district_li, current_year):
# data_li2 = []
# now_time3 = ''
# now_time4 = ''
# now_time = datetime.now().strftime('%Y-01-01 00:00:00')
# now_time1 = (datetime.now() + relativedelta(years=1)).strftime('%Y-01-01 00:00:00')
#
# if data_time:
# if data_time[0] and data_time[1]:
# now_time3 = ('{}-{}-01 00:00:00').format(data_time[0], data_time[1])
# if data_time[2]:
# now_time4 = ('{}-{}-01 00:00:00').format(data_time[0], data_time[2])
#
# try:
# for district in district_li:
# if not data_time:
# # 签约项目个数
# sign_num = ProjectManagement.query.filter(
# ProjectManagement.is_delete == 0,
# # ProjectManagement.sign_time.like('%{}%'.format(str(current_year))),
# ProjectManagement.sign_time < now_time1,
# ProjectManagement.sign_time >= now_time,
# ProjectManagement.district.like('%{}%'.format(str(district))) if district != '全市' else text('')
# ).count()
# # 开工项目数
# start_num = ProjectManagement.query.filter(
# ProjectManagement.is_delete == 0,
# # ProjectManagement.start_time.like('%{}%'.format(str(current_year))),
# ProjectManagement.start_time < now_time1,
# ProjectManagement.start_time >= now_time,
# ProjectManagement.district.like('%{}%'.format(str(district))) if district != '全市' else text('')
# ).count()
# else:
# # 签约项目数
# sign_num = ProjectManagement.query.filter(
# ProjectManagement.is_delete == 0,
# # ProjectManagement.sign_time.like('%{}%'.format(str(current_year))),
# ProjectManagement.start_time < now_time4 if now_time4 else text(""),
# ProjectManagement.start_time >= now_time3,
# ProjectManagement.district.like('%{}%'.format(str(district))) if district != '全市' else text('')
# ).count()
# # 开工项目数
# start_num = ProjectManagement.query.filter(
# ProjectManagement.is_delete == 0,
# # ProjectManagement.start_time.like('%{}%'.format(str(current_year))),
# ProjectManagement.start_time < now_time4 if now_time4 else text(""),
# ProjectManagement.start_time >= now_time3,
# ProjectManagement.district.like('%{}%'.format(str(district))) if district != '全市' else text('')
# ).count()
# data = {
# "name": district,
# "data": start_num,
# "target": sign_num,
# "value": round(start_num / sign_num * 100, 2) if sign_num and sign_num != 0 else 0
# }
# data_li2.append(data)
# continue
# except Exception as e:
# current_app.logger.error(e)
# print('项目开工率计算出错', e)
# return 'error'
# data_li2 = sorted(data_li2, key=lambda x: x['value'], reverse=False)
# return data_li2
#
#
# # 新开工项目计划投资额完成率
# def get_data3(data_time, district_li, current_year):
# data_li3 = []
# now_time3 = ''
# now_time4 = ''
# now_time = datetime.now().strftime('%Y-%m-01 00:00:00')
# now_time1 = (datetime.now() - relativedelta(years=1)).strftime('%Y-%m-01 00:00:00')
#
# if data_time:
# if data_time[0] and data_time[1]:
# now_time3 = ('{}-{}-01 00:00:00').format(data_time[0], data_time[1])
# if data_time[2]:
# now_time4 = ('{}-{}-01 00:00:00').format(data_time[0], data_time[2])
# try:
# for district in district_li:
# if not data_time:
# project_obj_list = ProjectManagement.query.filter(
# ProjectManagement.is_delete == 0,
# ProjectManagement.start_time < now_time,
# ProjectManagement.start_time >= now_time1,
# ProjectManagement.district.like('%{}%'.format(str(district))) if district != '全市' else text('')
# ).all()
# else:
# project_obj_list = ProjectManagement.query.filter(
# ProjectManagement.is_delete == 0,
# ProjectManagement.start_time < now_time4 if now_time4 else text(""),
# ProjectManagement.start_time >= now_time3,
# # ProjectManagement.start_time == now_time3 if now_time4 else text(""),
# ProjectManagement.district.like('%{}%'.format(str(district))) if district != '全市' else text('')
# ).all()
# if not project_obj_list:
# investment_volume = 0
# else:
# investment_volume = sum([project_obj.investment_volume for project_obj in project_obj_list])
# # 年度目标
# jc_obj = JcTarget.query.filter(
# JcTarget.district_name == district if district != '全市' else text(''),
# JcTarget.year.like('%{}%'.format(str(data_time[0])) if data_time else str(current_year)),
# JcTarget.is_delete == 0
# ).first()
# if not jc_obj:
# year_target = 0
# else:
# year_target = jc_obj.money_plan_invest
#
# data = {
# "name": district,
# "data": round(investment_volume / 10000, 2),
# "target": year_target,
# "value": round(investment_volume / 10000 / year_target * 100, 2) if year_target and year_target != 0 else 0
# }
# data_li3.append(data)
# continue
# except Exception as e:
# current_app.logger.error(e)
# print('新开工项目计划投资额完成率计算出错', e)
# return 'error'
# data_li3 = sorted(data_li3, key=lambda x: x['value'], reverse=False)
# return data_li3
#
#
# # 固定资产投资项目到位资金完成率
# def get_data4(data_time, district_li, current_year):
# data_li4 = []
#
# try:
# for district in district_li:
# project_obj = MoneyArrive.query.filter(
# MoneyArrive.data_time.like('%{}%'.format(data_time[0]) if data_time else str(current_year)),
# MoneyArrive.is_delete == 0,
# MoneyArrive.district_name.like('%{}%'.format(str(district))) if district != '全市' else text('')
# ).first()
# if not project_obj:
# arrive_money = 0
# else:
# arrive_money = project_obj.arrive_money
# # 年度目标
# jc_obj = JcTarget.query.filter(
# JcTarget.district_name == district if district != '全市' else text(''),
# JcTarget.year.like('%{}%'.format(data_time[0]) if data_time else str(current_year)),
# JcTarget.is_delete == 0
# ).first()
# if not jc_obj:
# year_target = 0
# else:
# year_target = jc_obj.money_arrive_target1
#
# data = {
# "name": district,
# "data": arrive_money,
# "target": year_target,
# "value": round(arrive_money / year_target * 100, 2) if year_target and year_target != 0 else 0
# }
# data_li4.append(data)
# continue
# except Exception as e:
# current_app.logger.error(e)
# print('固定资产投资项目到位资金完成率计算出错', e)
# return 'error'
# data_li4 = sorted(data_li4, key=lambda x: x['value'], reverse=False)
# return data_li4
#
#
# # 非固定资产投资项目到位资金完成率
# def get_data5(data_time, district_li, current_year):
# data_li5 = []
# now_time3 = ''
# now_time4 = ''
# now_time = datetime.now().strftime('%Y-%m-01 00:00:00')
# now_time1 = (datetime.now() - relativedelta(years=1)).strftime('%Y-%m-01 00:00:00')
#
# if data_time:
# if data_time[0] and data_time[1]:
# now_time3 = ('{}-{}-01 00:00:00').format(data_time[0], data_time[1])
# if data_time[2]:
# now_time4 = ('{}-{}-01 00:00:00').format(data_time[0], data_time[2])
#
# try:
# for district in district_li:
# if not data_time:
# project_obj_list = ProjectManagement.query.filter(
# ProjectManagement.is_delete == 0,
# ProjectManagement.is_fixed_investment == '否',
# # ProjectManagement.sign_time.like('%{}%'.format(str(current_year))),
# ProjectManagement.sign_time < now_time,
# ProjectManagement.sign_time >= now_time1,
# ProjectManagement.district.like('%{}%'.format(str(district))) if district != '全市' else text('')
# ).all()
# else:
# project_obj_list = ProjectManagement.query.filter(
# ProjectManagement.is_delete == 0,
# ProjectManagement.is_fixed_investment == '否',
# # ProjectManagement.sign_time.like('%{}%'.format(str(current_year))),
# ProjectManagement.sign_time < now_time4 if now_time4 else text(""),
# ProjectManagement.sign_time >= now_time3,
# ProjectManagement.district.like('%{}%'.format(str(district))) if district != '全市' else text('')
# ).all()
# if not project_obj_list:
# investment_volume = 0
# else:
# investment_volume = sum([float(project_obj.investment_year) for project_obj in project_obj_list])
# # 年度目标
# jc_obj = JcTarget.query.filter(
# JcTarget.district_name == district if district != '全市' else text(''),
# JcTarget.year.like('%{}%'.format(data_time[0]) if data_time else str(current_year)),
# JcTarget.is_delete == 0
# ).first()
# if not jc_obj:
# year_target = 0
# else:
# year_target = jc_obj.money_arrive_target0
# data = {
# "name": district,
# "data": round(investment_volume / 10000, 2),
# "target": year_target,
# "value": round(investment_volume / 10000 / year_target * 100, 2) if year_target and year_target != 0 else 0
# }
# data_li5.append(data)
# continue
# except Exception as e:
# current_app.logger.error(e)
# print('非固定资产投资项目到位资金完成率计算出错', e)
# return 'error'
# data_li5 = sorted(data_li5, key=lambda x: x['value'], reverse=False)
# return data_li5
#
#
# # 综合得分
# def get_data6(district_li, data_li1, data_li2, data_li3, data_li4, data_li5):
# # 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["value"] * 15
# if grade < 15:
# grade_li1.append({"name": data["name"], "grade": grade})
# else:
# grade_li1.append({"name": data["name"], "grade": 15})
# # 项目开工率情况得分=如果开工率进度小于0.4,则输出开工率进度*赋分(5分)/0.4,否则输出赋分(5分);
# grade_li2 = []
# for data in data_li2:
# grade = data["value"]
# if grade < 0.4:
# grade_li2.append({"name": data["name"], "grade": grade * 5 / 0.4})
# else:
# grade_li2.append({"name": data["name"], "grade": 5})
# # 新开工固定资产投资项目计划投资额完成情况得分=如果完成率(%)小于1,
# # 则输出完成率(%)*赋分(25 上传后获取)的结果,否则输出赋分(25);
# grade_li3 = []
# for data in data_li3:
# grade = data["value"]
# if grade < 1:
# grade_li3.append({"name": data["name"], "grade": grade * 25})
# else:
# grade_li3.append({"name": data["name"], "grade": 25})
# # 固定资产投资项目资金到位情况得分=如果完成率(%)小于1,
# # 则输出完成率(%)*赋分(25 上传后获取)的结果,否则输出赋分(25);
# grade_li4 = []
# for data in data_li4:
# grade = data["value"]
# if grade < 1:
# grade_li4.append({"name": data["name"], "grade": grade * 25})
# else:
# grade_li4.append({"name": data["name"], "grade": 25})
# # 非固定资产投资项目资金到位情况得分=如果完成率(%)小于1,
# # 则输出完成率(%)*赋分(5 上传后获取)的结果,否则输出赋分(5);
# grade_li5 = []
# for data in data_li5:
# grade = data["value"]
# if grade < 1:
# grade_li5.append({"name": data["name"], "grade": grade * 5})
# else:
# grade_li5.append({"name": data["name"], "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["name"] == district:
# grade1 = grade_dic["grade"]
# # 项目开工率情况得分
# for grade_dic in grade_li2:
# if grade_dic["name"] == district:
# grade2 = grade_dic["grade"]
# # 新开工得分
# for grade_dic in grade_li3:
# if grade_dic["name"] == district:
# grade3 = grade_dic["grade"]
# # 固定资产得分
# for grade_dic in grade_li4:
# if grade_dic["name"] == district:
# grade4 = grade_dic["grade"]
# # 非固定资产得分
# for grade_dic in grade_li5:
# if grade_dic["name"] == district:
# grade5 = grade_dic["grade"]
# total_grade = grade1 + grade2 + grade3 + grade4 + grade5
# data_li6.append({"name": district, "value": total_grade})
# data_li6 = sorted(data_li6, key=lambda x: x['value'], reverse=False)
# return data_li6
#
#
# def get_data_li(data_time, district_li, current_year):
# # 一。项目签约完成率(签约项目完成率:完成率(%):签约金额(亿元)/ 年度目标(亿元))
# data_li1 = get_data1(data_time, district_li, current_year)
# if data_li1 == 'error':
# return jsonify(code=RET.DBERR, msg='项目签约完成率计算出错')
#
# # 二。项目开工率(开工率进度:当年签约当年开工个数/签约个数)
# data_li2 = get_data2(data_time, district_li, current_year)
# if data_li2 == 'error':
# return jsonify(code=RET.DBERR, msg='项目开工率计算出错')
#
# # 三。新开工项目计划投资额完成率(完成率(%):新开工项目计划投资额(亿元)/ 年度目标(亿元))
# data_li3 = get_data3(data_time, district_li, current_year)
# if data_li3 == 'error':
# return jsonify(code=RET.DBERR, msg='新开工项目计划投资额完成率计算出错')
#
# # 四。固定资产投资项目到位资金完成率(完成率(%):固定资产投资项目资金到位额(亿元)/ 年度目标(亿元))
# data_li4 = get_data4(data_time, district_li, current_year)
# if data_li4 == 'error':
# return jsonify(code=RET.DBERR, msg='固定资产投资项目到位资金完成率计算出错')
#
# # 五。非固定资产投资项目到位资金完成率(完成率(%):非固定资产投资项目资金到位额(亿元)/ 年度目标(亿元))
# data_li5 = get_data5(data_time, 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
""""""
def get_data2(data_time, district_li, current_year): def get_data2(data_time, district_li, current_year):
data_li2 = [] data_li2 = []
now_time3 = '' now_time3 = ''
now_time4 = '' now_time4 = ''
now_time = datetime.now().strftime('%Y-%m-01 00:00:00') now_time = datetime.now().strftime('%Y-01-01 00:00:00')
now_time1 = (datetime.now() - relativedelta(years=1)).strftime('%Y-%m-01 00:00:00') now_time1 = (datetime.now() + relativedelta(years=1)).strftime('%Y-01-01 00:00:00')
if data_time: if data_time:
if data_time[0] and data_time[1]: if data_time[0] and data_time[1]:
...@@ -145,16 +555,16 @@ def get_data2(data_time, district_li, current_year): ...@@ -145,16 +555,16 @@ def get_data2(data_time, district_li, current_year):
sign_num = ProjectManagement.query.filter( sign_num = ProjectManagement.query.filter(
ProjectManagement.is_delete == 0, ProjectManagement.is_delete == 0,
# ProjectManagement.sign_time.like('%{}%'.format(str(current_year))), # ProjectManagement.sign_time.like('%{}%'.format(str(current_year))),
ProjectManagement.sign_time < now_time, ProjectManagement.sign_time < now_time1,
ProjectManagement.sign_time >= now_time1, ProjectManagement.sign_time >= now_time,
ProjectManagement.district.like('%{}%'.format(str(district))) if district != '全市' else text('') ProjectManagement.district.like('%{}%'.format(str(district))) if district != '全市' else text('')
).count() ).count()
# 开工项目数 # 开工项目数
start_num = ProjectManagement.query.filter( start_num = ProjectManagement.query.filter(
ProjectManagement.is_delete == 0, ProjectManagement.is_delete == 0,
# ProjectManagement.start_time.like('%{}%'.format(str(current_year))), # ProjectManagement.start_time.like('%{}%'.format(str(current_year))),
ProjectManagement.start_time < now_time, ProjectManagement.start_time < now_time1,
ProjectManagement.start_time >= now_time1, ProjectManagement.start_time >= now_time,
ProjectManagement.district.like('%{}%'.format(str(district))) if district != '全市' else text('') ProjectManagement.district.like('%{}%'.format(str(district))) if district != '全市' else text('')
).count() ).count()
else: else:
...@@ -193,26 +603,32 @@ def get_data2(data_time, district_li, current_year): ...@@ -193,26 +603,32 @@ def get_data2(data_time, district_li, current_year):
# 新开工项目计划投资额完成率 # 新开工项目计划投资额完成率
def get_data3(data_time, district_li, current_year): def get_data3(data_time, district_li, current_year):
data_li3 = [] data_li3 = []
now_time3 = '' max_year = ''
now_time4 = ''
now_time = datetime.now().strftime('%Y-%m-01 00:00:00')
now_time1 = (datetime.now() - relativedelta(years=1)).strftime('%Y-%m-01 00:00:00')
if data_time:
if data_time[0] and data_time[1]:
now_time3 = ('{}-{}-01 00:00:00').format(data_time[0], data_time[1])
if data_time[2]:
now_time4 = ('{}-{}-01 00:00:00').format(data_time[0], data_time[2])
try: try:
for district in district_li: for district in district_li:
if not data_time: if not data_time:
# 获取晋城年度目标表中的最新数据看看是哪一年的
jc_obj_list = JcTarget.query.filter(
JcTarget.district_name == district if district != '全市' else text(''),
JcTarget.is_delete == 0
).all()
year_list = []
for jc_obj in jc_obj_list:
year_list.append(int(jc_obj.year.split('年')[0]))
max_year = max(set(year_list))
now_time = '{}-01-01 00:00:00'.format(max_year)
now_time1 = '{}-01-01 00:00:00'.format(max_year + 1)
project_obj_list = ProjectManagement.query.filter( project_obj_list = ProjectManagement.query.filter(
ProjectManagement.is_delete == 0, ProjectManagement.is_delete == 0,
ProjectManagement.start_time < now_time, ProjectManagement.start_time < now_time1,
ProjectManagement.start_time >= now_time1, ProjectManagement.start_time >= now_time,
ProjectManagement.district.like('%{}%'.format(str(district))) if district != '全市' else text('') ProjectManagement.district.like('%{}%'.format(str(district))) if district != '全市' else text('')
).all() ).all()
else: else:
if data_time[0] and data_time[1]:
now_time3 = ('{}-{}-01 00:00:00').format(data_time[0], data_time[1])
if data_time[2]:
now_time4 = ('{}-{}-01 00:00:00').format(data_time[0], data_time[2])
project_obj_list = ProjectManagement.query.filter( project_obj_list = ProjectManagement.query.filter(
ProjectManagement.is_delete == 0, ProjectManagement.is_delete == 0,
ProjectManagement.start_time < now_time4 if now_time4 else text(""), ProjectManagement.start_time < now_time4 if now_time4 else text(""),
...@@ -227,7 +643,7 @@ def get_data3(data_time, district_li, current_year): ...@@ -227,7 +643,7 @@ def get_data3(data_time, district_li, current_year):
# 年度目标 # 年度目标
jc_obj = JcTarget.query.filter( jc_obj = JcTarget.query.filter(
JcTarget.district_name == district if district != '全市' else text(''), JcTarget.district_name == district if district != '全市' else text(''),
JcTarget.year.like('%{}%'.format(str(data_time[0])) if data_time else str(current_year)), JcTarget.year.like('%{}%'.format(str(data_time[0])) if data_time else str(max_year)),
JcTarget.is_delete == 0 JcTarget.is_delete == 0
).first() ).first()
if not jc_obj: if not jc_obj:
...@@ -257,8 +673,18 @@ def get_data4(data_time, district_li, current_year): ...@@ -257,8 +673,18 @@ def get_data4(data_time, district_li, current_year):
try: try:
for district in district_li: for district in district_li:
# 获取晋城年度目标表中的最新数据看看是哪一年的
jc_obj_list = JcTarget.query.filter(
JcTarget.district_name == district if district != '全市' else text(''),
JcTarget.is_delete == 0
).all()
year_list = []
for jc_obj in jc_obj_list:
year_list.append(int(jc_obj.year.split('年')[0]))
max_year = max(set(year_list))
project_obj = MoneyArrive.query.filter( project_obj = MoneyArrive.query.filter(
MoneyArrive.data_time.like('%{}%'.format(data_time[0]) if data_time else str(current_year)), MoneyArrive.data_time.like('%{}%'.format(data_time[0]) if data_time else str(max_year)),
MoneyArrive.is_delete == 0, MoneyArrive.is_delete == 0,
MoneyArrive.district_name.like('%{}%'.format(str(district))) if district != '全市' else text('') MoneyArrive.district_name.like('%{}%'.format(str(district))) if district != '全市' else text('')
).first() ).first()
...@@ -269,7 +695,7 @@ def get_data4(data_time, district_li, current_year): ...@@ -269,7 +695,7 @@ def get_data4(data_time, district_li, current_year):
# 年度目标 # 年度目标
jc_obj = JcTarget.query.filter( jc_obj = JcTarget.query.filter(
JcTarget.district_name == district if district != '全市' else text(''), JcTarget.district_name == district if district != '全市' else text(''),
JcTarget.year.like('%{}%'.format(data_time[0]) if data_time else str(current_year)), JcTarget.year.like('%{}%'.format(data_time[0]) if data_time else str(max_year)),
JcTarget.is_delete == 0 JcTarget.is_delete == 0
).first() ).first()
if not jc_obj: if not jc_obj:
...@@ -296,29 +722,38 @@ def get_data4(data_time, district_li, current_year): ...@@ -296,29 +722,38 @@ def get_data4(data_time, district_li, current_year):
# 非固定资产投资项目到位资金完成率 # 非固定资产投资项目到位资金完成率
def get_data5(data_time, district_li, current_year): def get_data5(data_time, district_li, current_year):
data_li5 = [] data_li5 = []
now_time3 = ''
now_time4 = ''
now_time = datetime.now().strftime('%Y-%m-01 00:00:00')
now_time1 = (datetime.now() - relativedelta(years=1)).strftime('%Y-%m-01 00:00:00')
if data_time:
if data_time[0] and data_time[1]:
now_time3 = ('{}-{}-01 00:00:00').format(data_time[0], data_time[1])
if data_time[2]:
now_time4 = ('{}-{}-01 00:00:00').format(data_time[0], data_time[2])
try: try:
for district in district_li: for district in district_li:
if not data_time: if not data_time:
# 获取晋城年度目标表中的最新数据看看是哪一年的
jc_obj_list = JcTarget.query.filter(
JcTarget.district_name == district if district != '全市' else text(''),
JcTarget.is_delete == 0
).all()
year_list = []
for jc_obj in jc_obj_list:
year_list.append(int(jc_obj.year.split('年')[0]))
max_year = max(set(year_list))
now_time = '{}-01-01 00:00:00'.format(max_year)
now_time1 = '{}-01-01 00:00:00'.format(max_year + 1)
project_obj_list = ProjectManagement.query.filter( project_obj_list = ProjectManagement.query.filter(
ProjectManagement.is_delete == 0, ProjectManagement.is_delete == 0,
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.sign_time < now_time, ProjectManagement.sign_time < now_time1,
ProjectManagement.sign_time >= now_time1, ProjectManagement.sign_time >= now_time,
ProjectManagement.district.like('%{}%'.format(str(district))) if district != '全市' else text('') ProjectManagement.district.like('%{}%'.format(str(district))) if district != '全市' else text('')
).all() ).all()
else: else:
if data_time[0] and data_time[1]:
now_time3 = ('{}-{}-01 00:00:00').format(data_time[0], data_time[1])
if data_time[2]:
now_time4 = ('{}-{}-01 00:00:00').format(data_time[0], data_time[2])
project_obj_list = ProjectManagement.query.filter( project_obj_list = ProjectManagement.query.filter(
ProjectManagement.is_delete == 0, ProjectManagement.is_delete == 0,
ProjectManagement.is_fixed_investment == '否', ProjectManagement.is_fixed_investment == '否',
...@@ -334,7 +769,7 @@ def get_data5(data_time, district_li, current_year): ...@@ -334,7 +769,7 @@ def get_data5(data_time, district_li, current_year):
# 年度目标 # 年度目标
jc_obj = JcTarget.query.filter( jc_obj = JcTarget.query.filter(
JcTarget.district_name == district if district != '全市' else text(''), JcTarget.district_name == district if district != '全市' else text(''),
JcTarget.year.like('%{}%'.format(data_time[0]) if data_time else str(current_year)), JcTarget.year.like('%{}%'.format(data_time[0]) if data_time else str(max_year)),
JcTarget.is_delete == 0 JcTarget.is_delete == 0
).first() ).first()
if not jc_obj: if not jc_obj:
...@@ -535,14 +970,25 @@ def statistic_jc_data(): ...@@ -535,14 +970,25 @@ def statistic_jc_data():
district_li = ["全市", "城区", "泽州县", "高平市", "阳城县", "陵川县", district_li = ["全市", "城区", "泽州县", "高平市", "阳城县", "陵川县",
"沁水县", "晋城经济技术开发区"] "沁水县", "晋城经济技术开发区"]
try: try:
# 获取晋城年度目标表中的最新数据看看是哪一年的
jc_obj_list = JcTarget.query.filter(
# JcTarget.district_name == district if district != '全市' else text(''),
JcTarget.is_delete == 0
).all()
year_list = []
for jc_obj in jc_obj_list:
year_list.append(int(jc_obj.year.split('年')[0]))
max_year = max(set(year_list))
data_li1, data_li2, data_li3, data_li4, data_li5 = get_data_li(data_time, district_li, current_year) data_li1, data_li2, data_li3, data_li4, data_li5 = get_data_li(data_time, district_li, current_year)
# 六。综合得分 # 六。综合得分
data_li6 = get_data6(district_li, data_li1, data_li2, data_li3, data_li4, data_li5) data_li6 = get_data6(district_li, data_li1, data_li2, data_li3, data_li4, data_li5)
if not data_time: if not data_time:
now_time = (datetime.now() - relativedelta(years=1)).strftime('%Y-%m-%d') # now_time = (datetime.now() - relativedelta(years=1)).strftime('%Y-%m-%d')
now_time = now_time.split('-') # now_time = now_time.split('-')
data_time1 = now_time[0] + '年' + now_time[1] + '月' + now_time[2] + '号-至今' # data_time1 = now_time[0] + '年' + now_time[1] + '月' + now_time[2] + '号-至今'
data_time1 = str(max_year) + '年'
elif not data_time[2]: elif not data_time[2]:
data_time1 = data_time[0] + '年' + data_time[1] + '月' # ["2022", "01", ""] data_time1 = data_time[0] + '年' + data_time[1] + '月' # ["2022", "01", ""]
else: else:
......
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