Commit 8b5eaa94 by dong

fix20230202

parent 7e5c46cb
......@@ -27,38 +27,40 @@ from apps.inves_manage.siku_view import get_num, upload_daily_picture
# 项目签约完成率
def get_data1(district_li, current_year):
def get_data1(data_time, district_li, current_year):
data_li1 = []
# 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])
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.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()
if not data_time:
project_obj_list = ProjectManagement.query.filter(
ProjectManagement.is_delete == 0,
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.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:
......@@ -66,7 +68,7 @@ def get_data1(district_li, current_year):
# 年度目标
jc_obj = JcTarget.query.filter(
JcTarget.district_name == district if district != '全市' else text(''),
JcTarget.year.like('%{}%'.format(str(current_year))),
JcTarget.year.like('%{}%'.format(str(data_time[0])) if data_time else str(current_year)),
JcTarget.is_delete == 0
).first()
if not jc_obj:
......@@ -91,48 +93,53 @@ def get_data1(district_li, current_year):
# 项目开工率
def get_data2(district_li, current_year):
def get_data2(data_time, district_li, current_year):
data_li2 = []
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')
# 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])
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:
# 签约项目个数
# 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_time,
# ProjectManagement.sign_time >= now_time1,
# 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_time,
# ProjectManagement.start_time >= now_time1,
# ProjectManagement.district.like('%{}%'.format(str(district))) if district != '全市' else text('')
# ).count()
sign_num = ProjectManagement.query.filter(
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.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_time,
ProjectManagement.start_time >= now_time1,
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.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 = {
......@@ -152,13 +159,32 @@ def get_data2(district_li, current_year):
# 新开工项目计划投资额完成率
def get_data3(district_li, current_year):
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.like('%{}%'.format(str(current_year))),
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 now_time4,
ProjectManagement.start_time >= now_time3,
ProjectManagement.district.like('%{}%'.format(str(district))) if district != '全市' else text('')
).all()
if not project_obj_list:
......@@ -168,7 +194,7 @@ def get_data3(district_li, current_year):
# 年度目标
jc_obj = JcTarget.query.filter(
JcTarget.district_name == district if district != '全市' else text(''),
JcTarget.year.like('%{}%'.format(str(current_year))),
JcTarget.year.like('%{}%'.format(str(data_time[0])) if data_time else str(current_year)),
JcTarget.is_delete == 0
).first()
if not jc_obj:
......@@ -193,12 +219,13 @@ def get_data3(district_li, current_year):
# 固定资产投资项目到位资金完成率
def get_data4(district_li, current_year):
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(str(current_year))),
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()
......@@ -209,7 +236,7 @@ def get_data4(district_li, current_year):
# 年度目标
jc_obj = JcTarget.query.filter(
JcTarget.district_name == district if district != '全市' else text(''),
JcTarget.year.like('%{}%'.format(str(current_year))),
JcTarget.year.like('%{}%'.format(data_time[0]) if data_time else str(current_year)),
JcTarget.is_delete == 0
).first()
if not jc_obj:
......@@ -217,12 +244,6 @@ def get_data4(district_li, current_year):
else:
year_target = jc_obj.money_arrive_target1
# data = {
# "name": district,
# "data": round(arrive_money / 10000, 2),
# "target": year_target,
# "value": round(arrive_money / 10000 / year_target * 100, 2) if year_target and year_target != 0 else 0
# }
data = {
"name": district,
"data": arrive_money,
......@@ -240,14 +261,37 @@ def get_data4(district_li, current_year):
# 非固定资产投资项目到位资金完成率
def get_data5(district_li, current_year):
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.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 now_time4,
ProjectManagement.sign_time >= now_time3,
ProjectManagement.district.like('%{}%'.format(str(district))) if district != '全市' else text('')
).all()
if not project_obj_list:
......@@ -257,7 +301,7 @@ def get_data5(district_li, current_year):
# 年度目标
jc_obj = JcTarget.query.filter(
JcTarget.district_name == district if district != '全市' else text(''),
JcTarget.year.like('%{}%'.format(str(current_year))),
JcTarget.year.like('%{}%'.format(data_time[0]) if data_time else str(current_year)),
JcTarget.is_delete == 0
).first()
if not jc_obj:
......@@ -360,35 +404,29 @@ def get_data6(district_li, data_li1, data_li2, data_li3, data_li4, data_li5):
return data_li6
# def get_data_li(district_li, current_year, data_time):
def get_data_li(district_li, current_year):
def get_data_li(data_time, district_li, current_year):
# 一。项目签约完成率(签约项目完成率:完成率(%):签约金额(亿元)/ 年度目标(亿元))
# data_li1 = get_data1(district_li, current_year, data_time)
data_li1 = get_data1(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(district_li, current_year, data_time)
data_li2 = get_data2(district_li, current_year)
data_li2 = get_data2(data_time, district_li, current_year)
if data_li2 == 'error':
return jsonify(code=RET.DBERR, msg='项目开工率计算出错')
# 三。新开工项目计划投资额完成率(完成率(%):新开工项目计划投资额(亿元)/ 年度目标(亿元))
# data_li3 = get_data3(district_li, current_year, data_time)
data_li3 = get_data3(district_li, current_year)
data_li3 = get_data3(data_time, district_li, current_year)
if data_li3 == 'error':
return jsonify(code=RET.DBERR, msg='新开工项目计划投资额完成率计算出错')
# 四。固定资产投资项目到位资金完成率(完成率(%):固定资产投资项目资金到位额(亿元)/ 年度目标(亿元))
# data_li4 = get_data4(district_li, current_year, data_time)
data_li4 = get_data4(district_li, current_year)
data_li4 = get_data4(data_time, district_li, current_year)
if data_li4 == 'error':
return jsonify(code=RET.DBERR, msg='固定资产投资项目到位资金完成率计算出错')
# 五。非固定资产投资项目到位资金完成率(完成率(%):非固定资产投资项目资金到位额(亿元)/ 年度目标(亿元))
# data_li5 = get_data5(district_li, current_year, data_time)
data_li5 = get_data5(district_li, current_year)
data_li5 = get_data5(data_time, district_li, current_year)
if data_li5 == 'error':
return jsonify(code=RET.DBERR, msg='非固定资产投资项目到位资金完成率计算出错')
......@@ -400,19 +438,19 @@ def get_data_li(district_li, current_year):
def statistic_shanxi_data():
req_dic = request.get_json()
flag = req_dic['flag'] # 1项目签约金额完成情况, 2新开工项目计划投资额完成情况, 3固定资产投资项目资金到位完成情况
# data_time = req_dic['data_time'] # ["2022", "07", "18"]
# data_time = data_time[0] + '年' + data_time[1] + '-' + data_time[2] + '月'
data_time = req_dic['data_time'] # "2022年01-09月"
try:
# 获取最新的时间周期
if not data_time:
# 获取最新时间周期的数据
data_obj = ShanxiTarget.query.order_by(sqlalchemy.desc(ShanxiTarget.id)).first()
data_time = data_obj.data_time
# if not data_time1:
# # 获取最新时间周期的数据
# target_obj_li = ShanxiTarget.query.filter_by(data_time=data_time1, is_delete=0).all()
# else:
# # 获取所选时间周期条件的数据
# target_obj_li = ShanxiTarget.query.filter_by(data_time=data_time, is_delete=0).all()
data_time1 = data_obj.data_time
target_obj_li = ShanxiTarget.query.filter_by(data_time=data_time1, is_delete=0).all()
else:
# 获取所选时间周期条件的数据
target_obj_li = ShanxiTarget.query.filter_by(data_time=data_time, is_delete=0).all()
# target_obj_li = ShanxiTarget.query.filter_by(data_time=data_time, is_delete=0).all()
data1 = ''
data2 = ''
......@@ -449,7 +487,13 @@ def statistic_shanxi_data():
} 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="获取成功!")
if not data_time:
# now_time = datetime.now().strftime('%Y-%m-01 00:00:00')
now_time = (datetime.now() - relativedelta(years=1)).strftime('%Y-%m-%d')
now_time = now_time.split('-')
data_time = now_time[0] + '年' + now_time[1] + '月' + now_time[2] + '号-至今'
return jsonify(code=RET.OK, data={"data1": data1, "data2": data2, "time": data_time}, msg="获取成功!")
return jsonify(code=RET.OK, data={"data1": data1, "data2": data2, "time": data_time}, msg="获取成功!")
except Exception as e:
db.session.rollback()
current_app.logger.error(e)
......@@ -459,23 +503,30 @@ def statistic_shanxi_data():
# 晋城市数据统计
@api_manage.route("/StatisticJcData", methods=["POST"])
def statistic_jc_data():
# req_dic = request.get_json()
# data_time = req_dic['data_time'] # [2022, 01, 12]
req_dic = request.get_json()
data_time = req_dic['data_time'] # ["2022", "01", "12"]
# current_year = datetime.now().year
current_year = 2022
current_year = datetime.now().year
# current_year = 2022
district_li = ["全市", "城区", "泽州县", "高平市", "阳城县", "陵川县",
"沁水县", "晋城经济技术开发区"]
try:
# data_li1, data_li2, data_li3, data_li4, data_li5 = get_data_li(district_li, current_year, data_time)
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(data_time, district_li, current_year)
# 六。综合得分
data_li6 = get_data6(district_li, data_li1, data_li2, data_li3, data_li4, data_li5)
if not data_time:
# now_time = datetime.now().strftime('%Y-%m-01 00:00:00')
now_time = (datetime.now() - relativedelta(years=1)).strftime('%Y-%m-%d')
now_time = now_time.split('-')
data_time = now_time[0] + '年' + now_time[1] + '月' + now_time[2] + '号-至今'
return jsonify(code=RET.OK,
data={"data_li1": data_li1, "data_li2": data_li2,
"data_li3": data_li3, "data_li4": data_li4,
"data_li5": data_li5, "data_li6": data_li6},
data_time=data_time,
msg="数据查询成功")
except Exception as e:
current_app.logger.error(e)
......@@ -887,16 +938,39 @@ def project_graph():
req_dic = request.get_json()
district = req_dic['district']
flag = req_dic['flag'] # 1项目来源区域分布,2项目投资额区间分布,3项目产业分布,4项目行业类型分布
project_source = req_dic['project_source'] # 用于1项目来源区域分布
industry_name = req_dic['industry_name'] # 用于4项目行业类型分布
data_time = req_dic['data_time'] # "2022年01-09月"
current_year = datetime.now().year
# current_year = 2022
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])
# current_year = datetime.now().year
current_year = 2022
try:
if not data_time:
project_obj = ProjectManagement.query.filter(
ProjectManagement.district == district if district else text(''),
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.is_delete == 0
)
else:
project_obj = ProjectManagement.query.filter(
ProjectManagement.district == district if district else text(''),
# ProjectManagement.sign_time.like('%{}%'.format(str(current_year))),
ProjectManagement.sign_time < now_time4 if now_time4 else now_time4,
ProjectManagement.sign_time >= now_time3,
ProjectManagement.is_delete == 0
)
if not project_obj.all():
......
......@@ -358,7 +358,8 @@ def search_all():
return jsonify(code=RET.PARAMERR, msg="选择选址偏好时,必须选择所属行业!")
industry_id = ''
if industry_name:
industry_id = IndustryChain.query.filter_by(industry_name=industry_name).first()
# industry_id = IndustryChain.query.filter_by(industry_name=industry_name).first()
industry_id = IndustryChain.query.filter(IndustryChain.industry_name.like("%{}%".format(industry_name))).first()
if not district_name:
district_name = get_district_name(token)
......
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