Commit 2f07ed92 by dong

fix20221207

parent 522f2340
......@@ -1568,6 +1568,79 @@ class CarrierFactory(db.Model):
# transportation = db.Column(db.String(255), comment='交通设施(多个,列表形式,顿号分隔)')
# 载体资源库-产业地图-各载体类型面积数据表
class CarrierArea(db.Model):
__tablename_ = "carrier_area"
__table_args__ = ({'comment': '载体资源库-产业地图-各载体类型面积数据表'}) # 添加表注释
id = db.Column(db.Integer, primary_key=True, autoincrement=True, comment='主键id')
district_name = db.Column(db.String(20), comment='区域名称')
lng = db.Column(db.String(50), comment='经度')
lat = db.Column(db.String(50), comment='维度')
build_area = db.Column(db.String(20), comment='楼宇当前总面积(㎡)')
build_current_empty_area = db.Column(db.String(20), comment='楼宇当前闲置面积(㎡)')
build_last_empty_area = db.Column(db.String(20), comment='楼宇去年闲置面积(㎡)')
factory_area = db.Column(db.String(20), comment='厂房当前总面积(㎡)')
factory_current_empty_area = db.Column(db.String(20), comment='厂房当前闲置面积(㎡)')
factory_last_empty_area = db.Column(db.String(20), comment='厂房去年闲置面积(㎡)')
plan_land_store_area = db.Column(db.String(20), comment='计划土地储备面积(亩)')
plan_land_supply_area = db.Column(db.String(20), comment='计划土地供应面积(亩)')
plan_land_stock_area = db.Column(db.String(20), comment='计划土地存量面积(亩)')
land_area = db.Column(db.String(20), comment='土地当前总面积(亩)')
land_current_empty_area = db.Column(db.String(20), comment='土地当前闲置面积(亩)')
land_last_empty_area = db.Column(db.String(20), comment='土地去年闲置面积(亩)')
# 载体资源库-产业地图-水电气热能源数据表
class CarrierEnergy(db.Model):
__tablename_ = "carrier_energy"
__table_args__ = ({'comment': '载体资源库-产业地图-水电气热能源数据表'}) # 添加表注释
id = db.Column(db.Integer, primary_key=True, autoincrement=True, comment='主键id')
district_name = db.Column(db.String(20), comment='区域名称')
electric_one = db.Column(db.String(50), comment='居民用电(一档)(元/度)')
electric_two = db.Column(db.String(50), comment='居民用电(二档)(元/度)')
electric_three = db.Column(db.String(20), comment='居民用电(三档)(元/度)')
business_electric_feng = db.Column(db.String(20), comment='商业用电(峰段)(元/度)')
business_electric_ping = db.Column(db.String(20), comment='商业用电(平段)(元/度)')
business_electric_gu = db.Column(db.String(20), comment='商业用电(谷段)(元/度)')
industrial_electric_feng = db.Column(db.String(20), comment='工业电价(峰段)(元/度)')
industrial_electric_ping = db.Column(db.String(20), comment='工业电价(平段)(元/度)')
industrial_electric_gu = db.Column(db.String(20), comment='工业电价(谷段)(元/度)')
life_water_one = db.Column(db.String(20), comment='居民用水(一档)(元/吨)')
life_water_two = db.Column(db.String(20), comment='居民用水(二档)(元/吨)')
life_water_three = db.Column(db.String(20), comment='居民用水(三档)(元/吨)')
business_water = db.Column(db.String(20), comment='商业用水(元/吨)')
industrial_water = db.Column(db.String(20), comment='工业用水(元/吨)')
special_water = db.Column(db.String(20), comment='特种用水(元/吨)')
life_gas_one = db.Column(db.String(20), comment='居民用气(一档)(元/m³)')
life_gas_two = db.Column(db.String(20), comment='居民用气(二档)(元/m³)')
life_gas_three = db.Column(db.String(20), comment='居民用气(三档)(元/m³)')
# 载体资源库-产业地图-各区县闲置环比按月份区分显示图数据表
class CarrierAreaData(db.Model):
__tablename_ = "carrier_rate_data"
__table_args__ = ({'comment': '载体资源库-产业地图-各区县各载体闲置面积数据表'}) # 添加表注释
id = db.Column(db.Integer, primary_key=True, autoincrement=True, comment='主键id')
district_name = db.Column(db.String(20), comment='区域名称')
land_year = db.Column(db.String(20), comment='土地全年闲置面积')
land_one = db.Column(db.String(20), comment='土地第一季度闲置面积')
land_two = db.Column(db.String(20), comment='土地第二季度闲置面积')
land_three = db.Column(db.String(20), comment='土地第三季度闲置面积')
land_four = db.Column(db.String(20), comment='土地第四季度闲置面积')
factory_year = db.Column(db.String(20), comment='厂房全年闲置面积')
factory_one = db.Column(db.String(20), comment='厂房第一季度闲置面积')
factory_two = db.Column(db.String(20), comment='厂房第二季度闲置面积')
factory_three = db.Column(db.String(20), comment='厂房第三季度闲置面积')
factory_four = db.Column(db.String(20), comment='厂房第四季度闲置面积')
build_year = db.Column(db.String(20), comment='楼宇全年闲置面积')
build_one = db.Column(db.String(20), comment='楼宇第一季度闲置面积')
build_two = db.Column(db.String(20), comment='楼宇第二季度闲置面积')
build_three = db.Column(db.String(20), comment='楼宇第三季度闲置面积')
build_four = db.Column(db.String(20), comment='楼宇第四季度闲置面积')
# 记录操作日志得数据表
class OperationLog(db.Model):
__tablename_ = "operation_log"
......
......@@ -33,6 +33,53 @@ def create_token(api_user):
return token
def verify_identity(token, action_name):
try:
user = verify_token(token)
user_id = user.id # 用户id
except Exception as e:
current_app.logger.error(e)
return jsonify(code=RET.SESSIONERR, msg="token过期,请重新登录!")
# 查出做此操作的用户名
user_obj = User.query.get(user_id)
# name = user_obj.name # 用户名
# real_name = user_obj.real_name # 用户名
mobile = user_obj.mobile
operation_mobile = user_obj.mobile
role_id = user_obj.role_id # 权限id
district_name = user_obj.district_name # 所属区县
unit = user_obj.unit # 所属机构
section = user_obj.section # 所属部门
belong_unit = ''
if district_name and unit and section:
belong_unit = district_name + unit + section
elif district_name and unit:
belong_unit = district_name + unit
elif district_name and section:
belong_unit = district_name + section
elif district_name:
belong_unit = district_name
elif unit:
belong_unit = unit
elif section:
belong_unit = section
print(mobile)
# if real_name:
user_name = user_obj.real_name # 真实姓名
# elif name and real_name:
# user_name = name + ': ' + real_name
# elif name:
# user_name = name
# elif real_name:
# user_name = real_name
# else:
# user_name = ''
return section, user_name, operation_mobile, user_id, role_id, belong_unit
def verify_token(token):
'''
校验token
......
......@@ -135,63 +135,6 @@ def industry_chain():
return jsonify(code=RET.OK, msg="获取成功", data=result)
# 点击产业联动显示企业
@api_atlas.route('/industry/enterprise', methods=['POST'])
# @login_required
def industry_enterprise():
'''骨干企业数据'''
req_dict = request.get_json()
inid = req_dict.get("inid") # 行业id
industry_level = req_dict.get("industry_level") # 行业等级,(父行个为"1",子行业为"2")
product = req_dict.get("product")
page = req_dict.get("page") # 分页页码
perpage = req_dict.get("perpage") # 分页大小
# sorts = req_dict.get("sorts") # 排序 sorts "1"按时间降序 ,“2”按热度降序
# 校验参数完整性
if not all([industry_level, page, perpage]):
return jsonify(code=RET.PARAMERR, msg="参数不完整")
try:
if industry_level == 1:
company = Company.query.filter_by(f_type=inid, city="晋城市")
else:
company = Company.query.filter_by(c_type=inid, city="晋城市")
if product:
company = Company.query.filter(Company.c_name.like("%{}%".format(product)))
size = company.count()
companys = company.order_by(Company.hots.desc()).paginate(page, perpage).items # 企业热度倒序
df = [{"id": i.id,
"company_name": i.company_name,
"district": i.district,
"build_date": (i.build_date).strftime("%Y-%m-%d") if i.build_date else '',
"legal": i.legal,
"capital_nums": i.capital_nums,
"entype": i.entype,
"address": i.address,
"telephone": i.telephone,
"high_new": '高新技术企业' if i.high_new == '1' else '',
"tbe": '科技型中小企业' if i.tbe == '1' else '',
"quoted_company": '上市企业' if i.quoted_company == '1' else '',
"zjtg": '专精特新企业' if i.zjtg == '1' else '',
"unicorn": '独角兽企业' if i.unicorn == '1' else '',
"dengl": '瞪羚企业' if i.dengl == '1' else '',
"isfive": '五百强企业' if i.isfive == '1' else '',
"scale": '规模以上企业' if i.scale == '1' else '',
"hosts": '企业热度' if i.hots else ''
} for i in companys]
df.sort(key=lambda s: s["hosts"], reverse=True)
data = {"size": size, "df": df}
return jsonify(code=RET.OK, msg="获取成功", data=data)
except Exception as e:
current_app.logger.error(e)
return jsonify(code=RET.DBERR, msg="数据库查询错误")
# 点击产业创新资源联动显示 innovation resource
@api_atlas.route('/innovate/resource', methods=['POST'])
def industry_resource():
......@@ -273,15 +216,18 @@ def industry_resource():
def get_data(name, industry_level, select_flag, page, perpage):
try:
if select_flag in [1, 2]: # 当选择行政区/园区时
if select_flag in [1, 2, 7]: # 当选择行政区/园区时
induzone = ''
if select_flag == 1 and industry_level == 1: # 当选择的是父产业的行政区时
induzone = Induzone.query.filter(Induzone.cate.like('行政区'), Induzone.navigator.like("%{}%".format(name)))
elif select_flag == 1 and industry_level == 2: # 当选择的是子产业的行政区时
induzone = Induzone.query.filter(Induzone.cate.like('行政区'), Induzone.navigat.like("%{}%".format(name)))
# elif select_flag == 1 and industry_level == 2: # 当选择的是子产业的行政区时
# induzone = Induzone.query.filter(Induzone.cate.like('行政区'), Induzone.navigat.like("%{}%".format(name)))
elif select_flag == 2 and industry_level == 1: # 当选择的是父产业的园区时
induzone = Induzone.query.filter(Induzone.cate.like('产业园区'), Induzone.navigator.like("%{}%".format(name)))
elif select_flag == 2 and industry_level == 2: # 当选择的是子产业的园区时
induzone = Induzone.query.filter(Induzone.cate.like('产业园区'), Induzone.navigat.like("%{}%".format(name)))
# elif select_flag == 2 and industry_level == 2: # 当选择的是子产业的园区时
# induzone = Induzone.query.filter(Induzone.cate.like('产业园区'), Induzone.navigat.like("%{}%".format(name)))
elif select_flag == 7 and industry_level == 1: # 当选择的是开发区时
induzone = Induzone.query.filter(Induzone.cate.like('开发区'), Induzone.navigat.like("%{}%".format(name)))
size = induzone.count() # 分页总数
induzone = induzone.paginate(page, perpage).items
......@@ -300,9 +246,10 @@ def get_data(name, industry_level, select_flag, page, perpage):
"size": size}
return admin_data
if select_flag == 2:
if select_flag in [2, 7]:
# 封装园区数据
garden_data = {"garden": [{"id": i.id,
"image": i.image,
"name": i.name, # 园区名称
"region": i.region, # 所属地区
"phone": i.phone, # 联系电话
......@@ -388,7 +335,8 @@ def industry_zaiti():
req_dict = request.get_json()
inid = req_dict.get("inid") # 行业id
industry_level = req_dict.get("industry_level") # 行业等级,(父行业高端设备等五个为"1",子行业为"2")
select_flag = req_dict.get("select_flag") # 1为行政区,2为园区,3为产业载体,4为土地,5为楼宇,6为厂房
select_flag = req_dict.get("select_flag") # 1为行政区,2为园区,3为产业载体,
# 4为土地,5为楼宇,6为厂房,7为开发区
page = req_dict.get("page") # 分页页码
perpage = req_dict.get("perpage") # 分页大小
......@@ -420,8 +368,6 @@ def industry_policy():
policy_year = req_dict.get("policy_year") # 政策年份
policy_name = req_dict.get("policy_name") # 政策名称
# 校验参数完整性
if not all([page, perpage]):
return jsonify(code=RET.PARAMERR, msg="参数不完整")
......@@ -443,7 +389,7 @@ def industry_policy():
size = indu_policy.count() # 分页总数
# indu_policy = indu_policy.
indu_policy = indu_policy.order_by(InduPolicy.pubdate.desc()).paginate(page, perpage).items
if policy_level == 2: # 省级
elif policy_level == 2: # 省级
indu_policy = InduPolicy.query.filter(
InduPolicy.navigator.like("%{}%".format(name)),
InduPolicy.level == "省级",
......@@ -453,7 +399,7 @@ def industry_policy():
size = indu_policy.count() # 分页总数
# indu_policy = indu_policy.
indu_policy = indu_policy.order_by(InduPolicy.pubdate.desc()).paginate(page, perpage).items
if policy_level == 3: # 市级
elif policy_level == 3: # 市级
indu_policy = InduPolicy.query.filter(
InduPolicy.navigator.like("%{}%".format(name)),
InduPolicy.level == "市级",
......@@ -463,7 +409,7 @@ def industry_policy():
size = indu_policy.count() # 分页总数
# indu_policy = indu_policy.
indu_policy = indu_policy.order_by(InduPolicy.pubdate.desc()).paginate(page, perpage).items
if policy_level == 4: # 区县
elif policy_level == 4: # 区县
indu_policy = InduPolicy.query.filter(
InduPolicy.navigator.like("%{}%".format(name)),
InduPolicy.level == "区县",
......@@ -473,7 +419,7 @@ def industry_policy():
size = indu_policy.count() # 分页总数
# indu_policy = indu_policy.
indu_policy = indu_policy.order_by(InduPolicy.pubdate.desc()).paginate(page, perpage).items
if policy_level == 5: # 开发区
elif policy_level == 5: # 开发区
indu_policy = InduPolicy.query.filter(
InduPolicy.navigator.like("%{}%".format(name)),
InduPolicy.level == "开发区",
......@@ -483,6 +429,18 @@ def industry_policy():
size = indu_policy.count() # 分页总数
# indu_policy = indu_policy.
indu_policy = indu_policy.order_by(InduPolicy.pubdate.desc()).paginate(page, perpage).items
else:
indu_policy = InduPolicy.query.filter(
InduPolicy.navigator.like("%{}%".format(name)),
# InduPolicy.level == "国家级",
InduPolicy.org == policy_type if policy_type == '国务院' else text(''),
InduPolicy.year == policy_year if policy_year else text(''),
InduPolicy.name.like('%{}%'.format(policy_name))
)
size = indu_policy.count() # 分页总数
# indu_policy = indu_policy.
indu_policy = indu_policy.order_by(InduPolicy.pubdate.desc()).paginate(page, perpage).items
if industry_level == 2:
if policy_level == 1: # 国家级
indu_policy = InduPolicy.query.filter(
......@@ -494,7 +452,7 @@ def industry_policy():
size = indu_policy.count() # 分页总数
# indu_policy = indu_policy.
indu_policy = indu_policy.order_by(InduPolicy.pubdate.desc()).paginate(page, perpage).items
if policy_level == 2: # 省级
elif policy_level == 2: # 省级
indu_policy = InduPolicy.query.filter(
InduPolicy.navigat.like("%{}%".format(name)),
InduPolicy.level == "省级",
......@@ -504,7 +462,7 @@ def industry_policy():
size = indu_policy.count() # 分页总数
# indu_policy = indu_policy.
indu_policy = indu_policy.order_by(InduPolicy.pubdate.desc()).paginate(page, perpage).items
if policy_level == 3: # 市级
elif policy_level == 3: # 市级
indu_policy = InduPolicy.query.filter(
InduPolicy.navigat.like("%{}%".format(name)),
InduPolicy.level == "市级",
......@@ -514,7 +472,7 @@ def industry_policy():
size = indu_policy.count() # 分页总数
# indu_policy = indu_policy.
indu_policy = indu_policy.order_by(InduPolicy.pubdate.desc()).paginate(page, perpage).items
if policy_level == 4: # 区县
elif policy_level == 4: # 区县
indu_policy = InduPolicy.query.filter(
InduPolicy.navigat.like("%{}%".format(name)),
InduPolicy.level == "区县",
......@@ -524,7 +482,7 @@ def industry_policy():
size = indu_policy.count() # 分页总数
# indu_policy = indu_policy.
indu_policy = indu_policy.order_by(InduPolicy.pubdate.desc()).paginate(page, perpage).items
if policy_level == 5: # 开发区
elif policy_level == 5: # 开发区
indu_policy = InduPolicy.query.filter(
InduPolicy.navigat.like("%{}%".format(name)),
InduPolicy.level == "开发区",
......@@ -534,6 +492,18 @@ def industry_policy():
size = indu_policy.count() # 分页总数
# indu_policy = indu_policy.
indu_policy = indu_policy.order_by(InduPolicy.pubdate.desc()).paginate(page, perpage).items
else:
indu_policy = InduPolicy.query.filter(
InduPolicy.navigator.like("%{}%".format(name)),
# InduPolicy.level == "国家级",
InduPolicy.org == policy_type if policy_type == '国务院' else text(''),
InduPolicy.year == policy_year if policy_year else text(''),
InduPolicy.name.like('%{}%'.format(policy_name))
)
size = indu_policy.count() # 分页总数
# indu_policy = indu_policy.
indu_policy = indu_policy.order_by(InduPolicy.pubdate.desc()).paginate(page, perpage).items
except Exception as e:
current_app.logger.error(e)
return jsonify(code=RET.DBERR, msg="数据库查询错误")
......@@ -794,41 +764,115 @@ def search_enterprise():
return jsonify(code=RET.DBERR, msg='查询出错!')
# # 产业链收藏
# @api_atlas.route('/IndustryCollect', methods=['POST'])
# def industry_collect():
# req_dic = request.get_json()
# industry_name = req_dic['industry_name']
# token = request.headers['token']
# try:
# user_obj = verify_token(token)
# user_id = user_obj.id
# except Exception as e:
# current_app.logger.error(e)
# return jsonify(code=RET.SESSIONERR, msg="用户信息校验失败,请重新登陆后尝试!")
#
# if not industry_name:
# return jsonify(code=RET.NODATA, msg="产业名称不能为空!")
#
# try:
# # 获取产业的fid
# industry_obj = Industry.query.filter_by(oname=industry_name).first()
# industry_id = industry_obj.id
#
# collect_time = datetime.now().strftime("%Y-%m-%d %H:%M:%S")
# collect_obj = IndustryCollect(
# industry_id=industry_id,
# user_id=user_id,
# collect_time=collect_time,
# industry_name=industry_name
# )
# db.session.add(collect_obj)
# db.session.commit()
# return jsonify(code=RET.OK, msg="收藏成功。")
# except Exception as e:
# db.session.rollback()
# current_app.logger.error(e)
# return jsonify(code=RET.SESSIONERR, msg="收藏失败!")
# 点击产业联动显示企业
@api_atlas.route('/industry/enterprise', methods=['POST'])
# @login_required
def industry_enterprise():
'''骨干企业数据'''
req_dict = request.get_json()
inid = req_dict.get("inid") # 行业id
industry_level = req_dict.get("industry_level") # 行业等级,(父行个为"1",子行业为"2")
product = req_dict.get("product")
page = req_dict.get("page") # 分页页码
perpage = req_dict.get("per_page") # 分页大小
# sorts = req_dict.get("sorts") # 排序 sorts "1"按时间降序 ,“2”按热度降序
entype = req_dict['entype']
aptitude = req_dict['aptitude'] # 资质
company_name = req_dict['company_name']
status = req_dict['status']
# 校验参数完整性
if not all([industry_level, page, perpage]):
return jsonify(code=RET.PARAMERR, msg="参数不完整")
try:
company = Company.query.filter(
Company.c_type == inid,
Company.city == "晋城市",
Company.entype == entype if entype else text(''),
Company.company_name.like('%{}%'.format(company_name)) if company_name else text(''),
Company.status == status if status else text(''))
if industry_level == 1 and product:
company = company.filter(Company.c_name.like("%{}%".format(product)))
else:
if product:
company = company.filter(Company.product_all.like("%{}%".format(product)))
company = company.filter(
Company.high_new == '1' if aptitude == '是否高新技术企业' else text(''),
Company.tbe == '1' if aptitude == '是否科技型中小企业' else text(''),
Company.quoted_company == '1' if aptitude == '是否上市企业' else text(''),
Company.sxmon == '1' if aptitude == '是否山西民营100强' else text(''),
Company.zjtg == '1' if aptitude == '是否为山西专精特新企业' else text(''),
Company.unicorn == '1' if aptitude == '独角兽企业' else text(''),
Company.dengl == '1' if aptitude == '瞪羚' else text(''),
Company.isfive == '1' if aptitude == '是否中国500强' else text(''),
Company.scale == '1' if aptitude == '规模以上企业' else text(''),
Company.serve == '1' if aptitude == '限额以上服务业' else text(''),
)
size = company.count()
companys = company.order_by(Company.hots.desc()).paginate(page, perpage).items # 企业热度倒序
df = [{"id": i.id,
"company_name": i.company_name,
"district": i.district,
"build_date": (i.build_date).strftime("%Y-%m-%d") if i.build_date else '',
"legal": i.legal,
"capital_nums": i.capital_nums,
"entype": i.entype,
"address": i.address,
"telephone": i.telephone,
"hosts": '企业热度' if i.hots else '',
"high_new": '是否高新技术企业' if i.high_new == '1' else '',
"tbe": '是否科技型中小企业' if i.tbe == '1' else '',
"quoted_company": '是否上市企业' if i.quoted_company == '1' else '',
"sxmon": '是否山西民营100强' if i.sxmon == '1' else '',
"zjtg": '是否为山西专精特新企业' if i.zjtg == '1' else '',
"unicorn": '独角兽企业' if i.unicorn == '1' else '',
"dengl": '瞪羚' if i.dengl == '1' else '',
"isfive": '是否中国500强' if i.isfive == '1' else '',
"scale": '规模以上企业' if i.scale == '1' else '',
"serve": '限额以上服务业' if i.serve == '1' else ''
} for i in companys]
df.sort(key=lambda s: s["hosts"], reverse=True)
data = {"size": size, "df": df}
return jsonify(code=RET.OK, msg="获取成功", data=data)
except Exception as e:
current_app.logger.error(e)
return jsonify(code=RET.DBERR, msg="数据库查询错误")
# 二级行业收藏状态获取
@api_atlas.route('/industry/Inducollect', methods=['POST'])
# @login_required
def inducollect():
'''获取当前用户对二级行业的收藏状态'''
try:
token = request.headers["token"]
user = verify_token(token)
user_id = user.id # 用户id
except Exception as e:
current_app.logger.error(e)
return jsonify(code=RET.SESSIONERR, msg="token过期,请重新登录!")
req_dic = request.get_json()
id = req_dic['id']
try:
user = User.query.get(user_id) # 获取关注列表
industrys = user.industry
if industrys:
indu_ids = [indu.nid for indu in user.industry]
else:
indu_ids = []
if int(id) in indu_ids:
return jsonify(code=RET.OK, msg="查询成功", collect="1")
else:
return jsonify(code=RET.OK, msg="查询成功", collect="2")
except Exception as e:
current_app.logger.error(e)
return jsonify(code=RET.DBERR, msg="数据库查询错误")
# 行业业收藏与取消
@api_atlas.route('/industry/collect', methods=['POST'])
......
......@@ -4,4 +4,6 @@ from flask import Blueprint
api_address = Blueprint("api_address", __name__)
from . import view
from . import map_view
from . import fill_data
from sqlalchemy import text
from apps.models import CarrierFactory, CarrierBuild, CarrierLand
class Common(object):
@staticmethod
def get_total_land_area(time1, time2, district_name, land_nature, upload_time):
area_obj_list = CarrierLand.query.filter(
CarrierLand.audit_status == 1,
CarrierLand.upload_time > time1 if time1 else text(''),
CarrierLand.upload_time < time2 if time2 else text(''),
CarrierLand.land_nature == land_nature if land_nature else text(''),
CarrierLand.district_name == district_name if district_name else text(''),
CarrierLand.upload_time > upload_time if upload_time else text(''),
).all()
return area_obj_list
@staticmethod
def get_total_factory_area(time1, time2, district_name):
area_obj_list = CarrierFactory.query.filter(
CarrierFactory.upload_time > time1 if time1 else text(''),
CarrierFactory.upload_time < time2 if time2 else text(''),
CarrierFactory.audit_status == 1,
CarrierFactory.district_name == district_name if district_name else text(''),
).all()
return area_obj_list
@staticmethod
def get_empty_factory_area(time1, time2, upload_time, district_name):
empty_area_obj_list = CarrierFactory.query.filter(
CarrierFactory.upload_time > time1 if time1 else text(''),
CarrierFactory.upload_time < time2 if time2 else text(''),
CarrierFactory.audit_status == 1,
CarrierFactory.district_name == district_name if district_name else text(''),
CarrierFactory.upload_time > upload_time if upload_time else text('')
).all()
return empty_area_obj_list
@staticmethod
def get_total_build_area(time1, time2, district_name):
area_obj_list = CarrierBuild.query.filter(
CarrierBuild.upload_time > time1 if time1 else text(''),
CarrierBuild.upload_time < time2 if time2 else text(''),
CarrierBuild.audit_status == 1,
CarrierBuild.district_name == district_name if district_name else text(''),
).all()
return area_obj_list
@staticmethod
def get_empty_build_area(time1, time2, upload_time, district_name):
empty_area_obj_list = CarrierBuild.query.filter(
CarrierBuild.upload_time > time1 if time1 else text(''),
CarrierBuild.upload_time < time2 if time2 else text(''),
CarrierBuild.audit_status == 1,
CarrierBuild.district_name == district_name if district_name else text(''),
CarrierBuild.upload_time > upload_time if upload_time else text('')
).all()
return empty_area_obj_list
This source diff could not be displayed because it is too large. You can view the blob instead.
import re
import requests
from dateutil.relativedelta import relativedelta
from flask import request, current_app, jsonify
from apps.models import *
from apps.utils.response_code import RET
import datetime
from apps.view_choose import api_address
from apps.view_choose.common import Common
"""产业地图页面"""
def get_district_name(token, industry_name):
try:
user = verify_token(token)
user_id = user.id # 用户id
# 查出做此操作的用户名
user_obj = User.query.get(user_id)
district_name1 = user_obj.district_name # 所属区县
if district_name1 == '太原市':
return industry_name
else:
return district_name1
except Exception as e:
current_app.logger.error(e)
return jsonify(code=RET.SESSIONERR, msg="token过期,请重新登录!")
# 展示中间右半部分载体面积
@api_address.route("/ShowArea", methods=["POST"])
def show_area():
req_dic = request.get_json()
district_name = req_dic['district_name']
token = request.headers['token']
district_name = get_district_name(token, district_name)
area_data = []
# 今年的1月1号
current_year = datetime.datetime.now().strftime('%Y-01-01 00:00:00')
# 今年今天的前一天凌晨
# current_day = (datetime.datetime.now() - relativedelta(days=1)).strftime('%Y-%m-%d 00:00:00')
# current_day = datetime.datetime.now().strftime('%Y-%m-%d 00:00:00')
current_day = str(datetime.datetime.now())
# 去年的1月1号
last_year = (datetime.datetime.now() - relativedelta(years=1)).strftime('%Y-01-01 00:00:00')
# 去年今天的前一天凌晨
# last_year_day = (datetime.datetime.now() - relativedelta(days=1) - relativedelta(years=1)).strftime(
# last_year_day = (datetime.datetime.now() - relativedelta(years=1)).strftime('%Y-%m-%d 00:00:00')
last_year_day = str(datetime.datetime.now() - relativedelta(years=1))
com = Common()
try:
# 获取土地总面积
area_obj_list = com.get_total_land_area('', '', district_name, '', '')
total_area = sum([float(area_obj.total_area if area_obj.total_area else 0) for area_obj in area_obj_list])
print(total_area)
# 获取工业用地面积
gong_area_obj_list = com.get_total_land_area('', '', district_name, '工业用地', '')
gong_total_area = round(sum([float(area_obj.total_area if area_obj.total_area else 0) for area_obj in gong_area_obj_list]), 2)
print(gong_total_area)
# 获取商业用地面积
shang_area_obj_list = com.get_total_land_area('', '', district_name, '商业用地', '')
shang_total_area = round(sum([float(area_obj.total_area if area_obj.total_area else 0) for area_obj in shang_area_obj_list]), 2)
print(shang_total_area)
# 其他用地
other_area = round((total_area - gong_total_area - shang_total_area), 2)
area_dic = {"industrial": gong_total_area, "business": shang_total_area, "other": other_area}
print(area_dic)
area_data.append(area_dic)
except Exception as e:
current_app.logger.error(e)
return jsonify(code=RET.DBERR, msg='土地数据查询错误!')
try:
# 获取今年厂房总面积
current_area_obj_list = com.get_total_factory_area(current_year, current_day, district_name)
current_total_area = round(sum([float(area_obj.factory_area if area_obj.factory_area else 0) for area_obj in current_area_obj_list]), 2)
print(current_total_area)
# 获取去年厂房总面积
last_area_obj_list = com.get_total_factory_area(last_year, last_year_day, district_name)
last_total_area = round(sum([float(area_obj.factory_area if area_obj.factory_area else 0) for area_obj in last_area_obj_list]), 2)
print(last_total_area)
# 计算同比
if last_total_area != 0:
total_area_rate = round(((current_total_area - last_total_area) / last_total_area) * 100, 2)
else:
total_area_rate = 0
# 获取当年当期总闲置厂房面积
current_empty_area_obj_list = com.get_empty_factory_area(current_year, current_day, '', district_name)
factory_current_empty_area = round(
sum([float(area_obj.empty_area if area_obj.empty_area else 0) for area_obj in current_empty_area_obj_list]), 2)
factory_current_total_area = round(
sum([float(area_obj.factory_area if area_obj.factory_area else 0) for area_obj in current_empty_area_obj_list]), 2)
print(factory_current_empty_area)
# 获取去年当期总闲置厂房面积
last_empty_area_obj_list = com.get_empty_factory_area(last_year, last_year_day, '', district_name)
factory_last_empty_area = round(sum([float(area_obj.empty_area if area_obj.empty_area else 0) for area_obj in last_empty_area_obj_list]), 2)
factory_last_total_area = round(sum([float(area_obj.factory_area if area_obj.factory_area else 0) for area_obj in last_empty_area_obj_list]), 2)
print(factory_last_empty_area)
# 计算总闲置面积同比
if factory_last_empty_area != 0:
factory_empty_rate = round(((factory_current_empty_area - factory_last_empty_area) / factory_last_empty_area) * 100, 2)
else:
factory_empty_rate = 0
# 计算今年总闲置率
if current_total_area != 0:
total_empty_rate = round((factory_current_empty_area / current_total_area) * 100, 2)
else:
total_empty_rate = 0
# 今年的闲置率
if factory_current_total_area != 0:
current_factory_empty_rate = round((factory_current_empty_area / factory_current_total_area) * 100, 2)
else:
current_factory_empty_rate = 0
# 去年的闲置率
if factory_last_total_area != 0:
last_factory_empty_rate = round((factory_last_empty_area / factory_last_total_area) * 100, 2)
else:
last_factory_empty_rate = 0
# 计算闲置率的同比
if last_factory_empty_rate != 0:
empty_rate = round(((current_factory_empty_rate - last_factory_empty_rate) / last_factory_empty_rate) * 100, 2)
else:
empty_rate = 0
area_data.append({
# 厂房总建筑面积
"factory_total_area": current_total_area,
"factory_total_area_rate": total_area_rate,
# 厂房总闲置面积
"factory_empty_area": factory_current_empty_area,
"factory_empty_rate": factory_empty_rate,
# 闲置率
"current_factory_empty_rate": total_empty_rate,
"empty_rate": empty_rate
})
except Exception as e:
current_app.logger.error(e)
return jsonify(code=RET.DBERR, msg='厂房数据查询错误!')
try:
# 获取今年楼宇总面积
com = Common()
current_area_obj_list = com.get_total_build_area(current_year, current_day, district_name)
current_total_area = round(sum([float(area_obj.build_area if area_obj.build_area else 0) for area_obj in current_area_obj_list]), 2)
print(current_total_area)
# 获取去年厂房总面积
last_area_obj_list = com.get_total_build_area(last_year, last_year_day, district_name)
last_total_area = round(sum([float(area_obj.build_area if area_obj.build_area else 0) for area_obj in last_area_obj_list]), 2)
print(last_total_area)
# 计算同比
if last_total_area != 0:
total_area_rate = round(((current_total_area - last_total_area) / last_total_area) * 100, 2)
else:
total_area_rate = 0
# 获取当年当期总闲置厂房面积
current_empty_area_obj_list = com.get_empty_build_area(current_year, current_day, '', district_name)
build_current_empty_area = round(
sum([float(area_obj.empty_area if area_obj.empty_area else 0) for area_obj in current_empty_area_obj_list]), 2)
build_current_total_area = round(
sum([float(area_obj.total_area if area_obj.total_area else 0) for area_obj in current_empty_area_obj_list]), 2)
print(build_current_empty_area)
# 获取去年当期总闲置厂房面积
last_empty_area_obj_list = com.get_empty_build_area(last_year, last_year_day, '', district_name)
build_last_empty_area = round(sum([float(area_obj.empty_area if area_obj.empty_area else 0) for area_obj in last_empty_area_obj_list]), 2)
build_last_total_area = round(sum([float(area_obj.total_area if area_obj.total_area else 0) for area_obj in last_empty_area_obj_list]), 2)
print(build_last_empty_area)
if build_last_empty_area != 0:
build_empty_rate = round(((build_current_empty_area - build_last_empty_area) / build_last_empty_area) * 100, 2)
else:
build_empty_rate = 0
# 计算今年总闲置率
if current_total_area != 0:
total_empty_rate = (round((build_current_empty_area / current_total_area) * 100, 2))
else:
total_empty_rate = 0
# 今年的闲置率
if build_current_total_area != 0:
current_build_empty_rate = round((build_current_empty_area / build_current_total_area) * 100, 2)
else:
current_build_empty_rate = 0
# 去年的闲置率
if build_last_total_area != 0:
last_build_empty_rate = round((build_last_empty_area / build_last_total_area) * 100, 2)
else:
last_build_empty_rate = 0
# 计算楼宇闲置率同比
if last_build_empty_rate != 0:
build_rate = round(((current_build_empty_rate - last_build_empty_rate) / last_build_empty_rate) * 100, 2)
else:
build_rate = 0
area_data.append({
# 楼宇总建筑面积
"build_total_area": current_total_area,
"total_area_rate": total_area_rate,
# 楼宇总闲置面积
"build_empty_area": build_current_empty_area,
"build_empty_rate": build_empty_rate,
# 闲置率
"current_build_empty_rate": total_empty_rate,
"build_rate": build_rate
})
except Exception as e:
current_app.logger.error(e)
return jsonify(code=RET.DBERR, msg='楼宇数据查询错误!')
return jsonify(code=RET.OK, data=area_data, msg='数据查询成功!')
# 展示右边部分水电热暖气数据
@api_address.route("/ShowCarrierEnergy", methods=["GET"])
def carrier_energy():
try:
energy_obj = CarrierEnergy.query.get(1)
data = {
"electric_data": {"electric_one": energy_obj.electric_one,
"electric_two": energy_obj.electric_two,
"electric_three": energy_obj.electric_three,
"business_electric_feng": energy_obj.business_electric_feng,
"business_electric_ping": energy_obj.business_electric_ping,
"business_electric_gu": energy_obj.business_electric_gu,
"industrial_electric_feng": energy_obj.industrial_electric_feng,
"industrial_electric_ping": energy_obj.industrial_electric_ping,
"industrial_electric_gu": energy_obj.industrial_electric_gu},
"water_data": {"life_water_one": energy_obj.life_water_one,
"life_water_two": energy_obj.life_water_two,
"life_water_three": energy_obj.life_water_three,
"business_water": energy_obj.business_water,
"industrial_water": energy_obj.industrial_water,
"special_water": energy_obj.special_water},
"gas_data": {"life_gas_one": energy_obj.life_gas_one,
"life_gas_two": energy_obj.life_gas_two,
"life_gas_three": energy_obj.life_gas_three}
}
return jsonify(code=RET.OK, data=data, msg='数据查询成功!')
except Exception as e:
current_app.logger.error(e)
return jsonify(code=RET.DBERR, msg='数据查询错误!')
# 柱状图数据接口
@api_address.route("/ShowCarrierRate", methods=["POST"])
def month_rate():
req_dic = request.get_json()
district_name = req_dic['district_name']
token = request.headers['token']
district_name = get_district_name(token, district_name)
com = Common()
data_list = []
try:
# 当年产业用地面积
# upload_time = '2022-01-01 00:00:00'
upload_time = ''
if district_name == '太原市':
district_name_list = ["小店区", "迎泽区", "杏花岭区", "尖草坪区",
"万柏林区", "晋源区", "古交市", "清徐县", "阳曲县",
"娄烦县", "中北高新区", "清徐开发区",
"阳曲示范区", "西山示范区"]
for district_name in district_name_list:
land_area_obj_list = com.get_total_land_area('', '', district_name, '', upload_time)
land_total_area = sum([float(land_area_obj.total_area if land_area_obj.total_area else 0) for land_area_obj in land_area_obj_list])
# 闲置楼宇面积
build_area_obj_list = com.get_empty_build_area('', '', upload_time, district_name)
build_empty_area = sum([float(build_area.empty_area if build_area.empty_area else 0) for build_area in build_area_obj_list])
# 闲置厂房面积
factory_area_obj_list = com.get_empty_factory_area('', '', upload_time, district_name)
factory_empty_area = sum([float(factory_area.empty_area if factory_area.empty_area else 0) for factory_area in factory_area_obj_list])
data = {"district_name": district_name,
"land_total_area": land_total_area,
"build_empty_area": build_empty_area,
"factory_empty_area": factory_empty_area}
data_list.append(data)
return jsonify(code=RET.OK, data=data_list, msg='数据查询成功!')
else:
# 每年的第一季度
time_one = datetime.datetime.now().strftime('%Y-01-01 00:00:00')
time_two = datetime.datetime.now().strftime('%Y-04-01 00:00:00')
# 每年的第二季度
time_three = datetime.datetime.now().strftime('%Y-04-01 00:00:00')
time_four = datetime.datetime.now().strftime('%Y-07-01 00:00:00')
# 每年的第三季度
time_five = datetime.datetime.now().strftime('%Y-07-01 00:00:00')
time_six = datetime.datetime.now().strftime('%Y-10-01 00:00:00')
# 每年的第四季度
time_seven = datetime.datetime.now().strftime('%Y-10-01 00:00:00')
# 获取第一季度的产业用地/闲置厂房/闲置楼宇面积数据
one_land_area_obj_list = com.get_total_land_area(time_one, time_two, district_name, '', '')
one_land_total_area = sum([float(area_obj.total_area if area_obj.total_area else 0) for area_obj in one_land_area_obj_list])
one_build_area_obj_list = com.get_empty_build_area(time_one, time_two, '', district_name)
one_build_total_area = sum([float(area_obj.empty_area if area_obj.empty_area else 0) for area_obj in one_build_area_obj_list])
one_factory_area_obj_list = com.get_empty_factory_area(time_one, time_two, '', district_name)
one_factory_total_area = sum([float(area_obj.empty_area if area_obj.empty_area else 0) for area_obj in one_factory_area_obj_list])
data = {"quarter": "第一季度",
"land_total_area": one_land_total_area,
"build_total_area": one_build_total_area,
"factory_total_area": one_factory_total_area
}
data_list.append(data)
# 获取第二季度的产业用地/闲置厂房/闲置楼宇面积数据
two_land_area_obj_list = com.get_total_land_area(time_three, time_four, district_name, '', '')
two_total_area = sum([float(area_obj.total_area if area_obj.total_area else 0) for area_obj in two_land_area_obj_list])
two_build_area_obj_list = com.get_empty_build_area(time_three, time_four, '', district_name)
two_build_total_area = sum([float(area_obj.empty_area if area_obj.empty_area else 0) for area_obj in two_build_area_obj_list])
two_factory_area_obj_list = com.get_empty_factory_area(time_three, time_four, '', district_name)
two_factory_total_area = sum([float(area_obj.empty_area if area_obj.empty_area else 0) for area_obj in two_factory_area_obj_list])
data = {"quarter": "第二季度",
"land_total_area": two_total_area,
"build_total_area": two_build_total_area,
"factory_total_area": two_factory_total_area
}
data_list.append(data)
# 获取第三季度的产业用地/闲置厂房/闲置楼宇面积数据
three_land_area_obj_list = com.get_total_land_area(time_five, time_six, district_name, '', '')
three_total_area = sum([float(area_obj.total_area if area_obj.total_area else 0) for area_obj in three_land_area_obj_list])
three_build_area_obj_list = com.get_empty_build_area(time_five, time_six, '', district_name)
three_build_total_area = sum([float(area_obj.empty_area if area_obj.empty_area else 0) for area_obj in three_build_area_obj_list])
three_factory_area_obj_list = com.get_empty_factory_area(time_five, time_six, '', district_name)
three_factory_total_area = sum([float(area_obj.empty_area if area_obj.empty_area else 0) for area_obj in three_factory_area_obj_list])
data = {"quarter": "第三季度",
"land_total_area": three_total_area,
"build_total_area": three_build_total_area,
"factory_total_area": three_factory_total_area
}
data_list.append(data)
# 获取第四季度的产业用地/闲置厂房/闲置楼宇面积数据
four_land_area_obj_list = com.get_total_land_area(time_seven, time_one, district_name, '', '')
four_total_area = sum([float(area_obj.total_area if area_obj.total_area else 0) for area_obj in four_land_area_obj_list])
four_build_area_obj_list = com.get_empty_build_area(time_seven, time_one, '', district_name)
four_build_total_area = sum([float(area_obj.empty_area if area_obj.empty_area else 0) for area_obj in four_build_area_obj_list])
four_factory_area_obj_list = com.get_empty_factory_area(time_seven, time_one, '', district_name)
four_factory_total_area = sum([float(area_obj.empty_area if area_obj.empty_area else 0) for area_obj in four_factory_area_obj_list])
data = {"quarter": "第四季度",
"land_total_area": four_total_area,
"build_total_area": four_build_total_area,
"factory_total_area": four_factory_total_area
}
data_list.append(data)
return jsonify(code=RET.OK, data=data_list, msg='数据查询成功!')
except Exception as e:
current_app.logger.error(e)
return jsonify(code=RET.DBERR, msg='数据查询错误!')
# 获取贷款市场报价利率
@api_address.route("/GetLoansRate", methods=["GET"])
def get_loans_rate():
try:
url = 'http://www.cmbchina.com/CmbWebPubInfo/lpr.aspx?chnl=cdrate'
html = requests.get(url).text
table_content_list = re.findall(r'var allData=(.*)', html)
for table_content in table_content_list:
table_content = table_content.split(';')[0]
table_content = table_content.replace("null", "'null'")
table_content = eval(table_content)
time_list = [i[0] for i in table_content]
y1 = [i[1][0] for i in table_content]
y5 = [i[1][1] for i in table_content]
data = {"time": time_list, "y1": y1, "y5": y5}
return jsonify(code=RET.OK, data=data, msg=' 数据获取成功! ')
except Exception as e:
current_app.logger.error(e)
return jsonify(code=RET.DBERR, msg='数据请求错误!')
......@@ -140,332 +140,3 @@ def downlist(): # 一级二级行业分类
return jsonify(code=RET.DBERR, msg="数据库错误")
return jsonify(code=RET.OK, msg="查找成功", data=data)
\ No newline at end of file
"""以下为202212月改版后需求"""
# 搜索行政区公共方法
def global_region(key_words, district_name, page, per_page):
try:
if key_words:
carrier_obj = Induzone.query.filter(
and_(
Induzone.region.like('%{}%'.format(district_name)) if district_name else text(''),
# Induzone.navigat.like('%{}%'.format(industry_name)) if industry_name else text(''),
Induzone.id.in_([1, 2, 3, 4, 5, 6, 7, 8, 9, 10])
)).filter(
or_(
Induzone.region.like("%" + key_words + "%"),
Induzone.cluster.like("%" + key_words + "%"),
Induzone.navigat.like("%" + key_words + "%"),
Induzone.cate.like("%" + key_words + "%")
))
else:
carrier_obj = Induzone.query.filter(
and_(
Induzone.region.like('%{}%'.format(district_name)) if district_name else text(''),
# Induzone.navigat.like('%{}%'.format(industry_name)) if industry_name else text(''),
Induzone.id.in_([1, 2, 3, 4, 5, 6, 7, 8, 9, 10])
))
# region_obj_list = carrier_obj.order_by(Induzone.upload_time.desc()).paginate(page, per_page).items
region_obj_list = carrier_obj.paginate(page, per_page).items
# region_obj_list = carrier_obj.all()
carrier_size = len(region_obj_list)
if region_obj_list:
data_list = [{
"id": region_obj.id,
"carrier_type": '行政区',
"region_name": region_obj.name,
"cover_region_area": region_obj.area,
"gdp": region_obj.gdp,
"detail_address": region_obj.address, # 审核信息
"industry_name": region_obj.navigat,
"district_name": region_obj.region,
"lng": region_obj.lng,
"lat": region_obj.lat
} for region_obj in region_obj_list]
data = {"code": RET.OK, "data": {"data_list": data_list, "size": carrier_size, "msg": "行政区 数据获取成功!"}}
return data
else:
data = {"code": RET.DATAERR, "msg": "没有符合搜索条件的 行政区 数据!"}
return data
except Exception as e:
db.session.rollback()
current_app.logger.error(e)
data = {"code": RET.DBERR, "msg": "行政区 查询数据库错误!"}
return data
# 厂房公共方法
def global_land(key_words, district_name, land_name, land_nature, industry_name, page, per_page):
try:
if key_words:
carrier_obj = CarrierLand.query.filter(
and_(CarrierLand.land_name.like('%{}%'.format(land_name)) if land_name else text(''),
CarrierLand.district_name.like('%{}%'.format(district_name)) if district_name else text(''),
CarrierLand.land_nature.like('%{}%'.format(land_nature)) if land_nature else text(''),
CarrierLand.industry_name.like('%{}%'.format(industry_name)) if industry_name else text(''),
CarrierLand.audit_status == 1
)).filter(
or_(CarrierLand.industry_name.like("%" + key_words + "%"),
CarrierLand.district_name.like("%" + key_words + "%"),
CarrierLand.land_name.like("%" + key_words + "%")
))
else:
carrier_obj = CarrierLand.query.filter(
and_(CarrierLand.land_name.like('%{}%'.format(land_name)) if land_name else text(''),
CarrierLand.district_name == district_name if district_name else text(''),
CarrierLand.land_nature == land_nature if land_nature else text(''),
CarrierLand.industry_name.like('%{}%'.format(industry_name)) if industry_name else text(''),
CarrierLand.audit_status == 1
))
land_obj_list = carrier_obj.order_by(CarrierLand.upload_time.desc()).paginate(page, per_page).items
carrier_size = len(land_obj_list)
if land_obj_list:
data_list = [{
"id": land_obj.id,
"carrier_type": "土地",
"land_name": land_obj.land_name,
"land_nature": land_obj.land_nature,
"total_area": land_obj.total_area,
"jing_area": land_obj.jing_area, # 审核信息
"district_name": land_obj.district_name,
"industry_name": land_obj.industry_name,
"lng": land_obj.lng,
"lat": land_obj.lat
} for land_obj in land_obj_list]
data = {"code": RET.OK, "data": {"data_list": data_list, "size": carrier_size, "msg": "土地 数据获取成功!"}}
return data
else:
data = {"code": RET.DATAERR, "msg": "没有符合搜索条件的 土地 数据!"}
return data
except Exception as e:
db.session.rollback()
current_app.logger.error(e)
data = {"code": RET.DBERR, "msg": "土地 查询数据库错误!"}
return data
# 楼宇公共方法
def global_factory(key_words, district_name, factory_name, industry_name, page, per_page):
try:
if key_words:
carrier_obj = CarrierFactory.query.filter(
and_(CarrierFactory.factory_name.like('%{}%'.format(factory_name)) if factory_name else text(''),
CarrierFactory.district_name.like('%{}%'.format(district_name)) if district_name else text(''),
CarrierFactory.attract_status.like('%{}%'.format(industry_name)) if industry_name else text(''),
CarrierFactory.audit_status == 1
)).filter(
or_(CarrierFactory.attract_status.like("%" + key_words + "%"),
CarrierFactory.district_name.like("%" + key_words + "%"),
CarrierFactory.factory_name.like("%" + key_words + "%")
))
carrier_size = carrier_obj.count()
else:
carrier_obj = CarrierFactory.query.filter(
and_(CarrierFactory.factory_name.like('%{}%'.format(factory_name)) if factory_name else text(''),
CarrierFactory.district_name == district_name if district_name else text(''),
CarrierFactory.attract_status.like('%{}%'.format(industry_name)) if industry_name else text(''),
CarrierFactory.audit_status == 1
))
carrier_size = carrier_obj.count()
factory_obj_list = carrier_obj.order_by(CarrierFactory.upload_time.desc()).paginate(page, per_page).items
if factory_obj_list:
data_list = [{
"id": factory_obj.id,
"carrier_type": "标准厂房",
"factory_name": factory_obj.factory_name,
"factory_area": factory_obj.factory_area,
"district_name": factory_obj.district_name, # 审核信息
"detail_address": factory_obj.detail_address,
"industry_name": factory_obj.industry_name,
"is_standard": factory_obj.is_standard,
"attract_status": factory_obj.attract_status,
"lng": factory_obj.lng,
"lat": factory_obj.lat
} for factory_obj in factory_obj_list]
data = {"code": RET.OK, "data": {"data_list": data_list, "size": carrier_size, "msg": "厂房 数据获取成功!"}}
return data
else:
data = {"code": RET.DATAERR, "msg": "没有符合搜索条件的 厂房 数据!"}
return data
except Exception as e:
db.session.rollback()
current_app.logger.error(e)
data = {"code": RET.DBERR, "msg": "厂房 查询数据库错误!"}
return data
# 土地公共方法
def global_build(key_words, district_name, build_name, industry_name, build_type, page, per_page):
try:
if key_words:
carrier_obj = CarrierBuild.query.filter(
and_(CarrierBuild.build_name.like('%{}%'.format(build_name)) if build_name else text(''),
CarrierBuild.district_name.like('%{}%'.format(district_name)) if district_name else text(''),
CarrierBuild.build_type.like('%{}%'.format(build_type)) if build_type else text(''),
CarrierBuild.attract_status.like('%{}%'.format(industry_name)) if industry_name else text(''),
CarrierBuild.audit_status == 1
)).filter(
or_(CarrierBuild.attract_status.like("%" + key_words + "%"),
CarrierBuild.district_name.like("%" + key_words + "%"),
CarrierBuild.build_name.like("%" + key_words + "%"),
CarrierBuild.build_type.like("%" + key_words + "%")
))
else:
carrier_obj = CarrierBuild.query.filter(
and_(CarrierBuild.build_name.like('%{}%'.format(build_name)) if build_name else text(''),
CarrierBuild.district_name.like('%{}%'.format(district_name)) if district_name else text(''),
CarrierBuild.build_type.like('%{}%'.format(build_type)) if build_type else text(''),
CarrierBuild.attract_status.like('%{}%'.format(industry_name)) if industry_name else text(''),
CarrierBuild.audit_status == 1
))
build_obj_list = carrier_obj.order_by(CarrierBuild.upload_time.desc()).paginate(page, per_page).items
carrier_size = len(build_obj_list)
if build_obj_list:
data_list = [{
"id": build_obj.id,
"carrier_type": "商业楼宇",
"district_name": build_obj.district_name,
"build_name": build_obj.build_name,
"detail_address": build_obj.detail_address, # 审核信息
"industry_name": build_obj.industry_name,
"layer_num": build_obj.layer_num,
"build_type": build_obj.build_type,
"attract_status": build_obj.attract_status,
"lng": build_obj.lng,
"lat": build_obj.lat
} for build_obj in build_obj_list]
data = {"code": RET.OK, "data": {"data_list": data_list, "size": carrier_size, "msg": "楼宇 数据获取成功!"}}
return data
else:
data = {"code": RET.DATAERR, "msg": "没有符合搜索条件的 楼宇 数据!"}
return data
except Exception as e:
db.session.rollback()
current_app.logger.error(e)
data = {"code": RET.DBERR, "msg": "楼宇 查询数据库错误!"}
return data
def get_district_name(token, industry_name):
try:
user = verify_token(token)
user_id = user.id # 用户id
# 查出做此操作的用户名
user_obj = User.query.get(user_id)
district_name1 = user_obj.district_name # 所属区县
if district_name1 == '太原市':
return industry_name
else:
return district_name1
except Exception as e:
current_app.logger.error(e)
return jsonify(code=RET.SESSIONERR, msg="token过期,请重新登录!")
# 土地条件搜索功能
@api_address.route("/SearchLand", methods=["POST"])
def search_land():
req_dict = request.get_json()
key_words = req_dict['key_words']
district_name = req_dict['district_name']
land_name = req_dict['land_name']
land_nature = req_dict['land_nature']
industry_name = req_dict['industry_name']
# total_area_id = req_dict['total_area_id']
# transfer_year_id = req_dict['transfer_year_id']
page = req_dict.get("page") # 页码
per_page = int(req_dict.get("per_page")) # 每页大小
token = request.headers['token']
district_name = get_district_name(token, district_name)
data = global_land(key_words, district_name, land_name, land_nature, industry_name, page, per_page)
return jsonify(data)
# 厂房条件搜索功能
@api_address.route("/SearchFactory", methods=["POST"])
def search_factory():
req_dict = request.get_json()
key_words = req_dict['key_words'] # 关键字
district_name = req_dict['district_name'] # 区域名称
factory_name = req_dict['factory_name'] # 厂房名称
industry_name = req_dict['industry_name'] # 产业类型
page = req_dict.get("page") # 页码
per_page = int(req_dict.get("per_page")) # 每页大小
token = request.headers['token']
district_name = get_district_name(token, district_name)
data = global_factory(key_words, district_name, factory_name, industry_name, page, per_page)
return jsonify(data)
# 楼宇条件搜索功能
@api_address.route("/SearchBuild", methods=["POST"])
def search_build():
req_dict = request.get_json()
key_words = req_dict['key_words'] # 关键字
district_name = req_dict['district_name'] # 区域名称
build_name = req_dict['build_name'] # 楼宇名称
industry_name = req_dict['industry_name'] # 产业类型(名称)
build_type = req_dict['build_type'] # 楼宇类型id(商铺/写字楼)
page = req_dict.get("page") # 页码
per_page = int(req_dict.get("per_page")) # 每页大小
token = request.headers['token']
district_name = get_district_name(token, district_name)
data = global_build(key_words, district_name, build_name, industry_name, build_type, page, per_page)
return jsonify(data)
# 全部搜索功能
@api_address.route("/SearchAll", methods=["POST"])
def search_all():
req_dict = request.get_json()
key_words = req_dict['key_words'] # 关键字
carrier_type_id = req_dict['carrier_type_id'] # 载体类型id(1:园区;2:土地;3:楼宇;4:厂房。)
district_name = req_dict['district_name'] # 区域名称
industry_name = req_dict['industry_name'] # 产业类型名称
page = req_dict.get("page") # 页码
per_page = int(req_dict.get("per_page")) # 每页大小
token = request.headers['token']
district_name = get_district_name(token, district_name)
data_list = []
if carrier_type_id == 0:
# 行政区
if not industry_name:
region_data = global_region(key_words, district_name,
page, per_page)
data_list.append(region_data)
# 土地
land_data = global_land(key_words, district_name, '', '', industry_name, page, per_page)
data_list.append(land_data)
# 厂房
factory_data = global_factory(key_words, district_name, '', industry_name, page, per_page)
data_list.append(factory_data)
# 楼宇
build_data = global_build(key_words, district_name, '', industry_name, '', page, per_page)
data_list.append(build_data)
return jsonify(code=RET.OK, data=data_list, msg='全部数据查询成功!')
if carrier_type_id == 1: # 土地
data = global_land(key_words, district_name, '', '', industry_name, page, per_page)
return jsonify(data)
if carrier_type_id == 2: # 厂房
data = global_factory(key_words, district_name, '', industry_name, page, per_page)
return jsonify(data)
if carrier_type_id == 3: # 楼宇
data = global_build(key_words, district_name, '', industry_name, '', page, per_page)
return jsonify(data)
else:
data = {"code": RET.PARAMERR, "msg": '参数错误!'}
return jsonify(data)
......@@ -15,30 +15,48 @@ from apps import db, constants, redis_store
# 获取左上角经济指标数据
def get_jjzb(district):
def get_jjzb(district, year):
'''经济指标数据'''
# years = [2021] # 指定数据的年份,与数据库中数据对齐
year1 = datetime.now().year - 1
year2 = datetime.now().year
years = ''
if year == year1:
years = str(year) + '年'
if year == year2:
month = datetime.now().month
years = str(year) + '年1-' + str(month) + '月'
try:
if not district or district == '晋城市':
datas = City.query.filter_by(area='晋城市').first()
datas = City.query.filter_by(area='晋城市', year=year).first()
else:
datas = City.query.filter_by(area=district).first()
datas = City.query.filter_by(area=district, year=year).first()
df_dic = ''
if datas:
df_dic = {"GDP": '%.2f亿元' % (datas.GDP / 10000) if datas.GDP else "-亿元", # 地区生产总值
"addscale": '%.2f' % datas.addscale + "%" if datas.addscale else "-%", # 规上工业增加值增速
"investment": '%.2f亿元' % (datas.investment / 10000) if datas.investment else "-亿元", # 固定资产投资
"retail": '%.2f亿元' % (datas.retail / 10000) if datas.retail else "-亿元", # 社会消费品零售额
"in_out": '%.2f亿元' % (datas.in_out / 10000) if datas.in_out else "-亿元", # 进出口总额
# "public_in": '%.2f亿元' % (datas.public_in / 10000) if datas.public_in else "-亿元", # 一般公共预算收入
"public": '%.2f亿元' % (datas.public / 10000) if datas.public else "-亿元", # 一般公共预算支出
"people_out": '%.2f元' % datas.people_out if datas.people_out else "-元", # 居民人均可支配收入
"people_per": '%.2f' % datas.people_per if datas.people_per else "-",
"question": datas.question
"question": datas.question,
"year": years
} # 居民消费价格指数
else:
df_dic = {"GDP": '', # 地区生产总值
"addscale": '', # 规上工业增加值增速
"investment": '', # 固定资产投资
"retail": '', # 社会消费品零售额
"in_out": '', # 进出口总额
"public": '', # 一般公共预算支出
"people_out": '', # 居民人均可支配收入
"people_per": '',
"question": '',
"year": years
} # 居民消费价格指数
# print(df_dic)
# return jsonify(code=RET.OK, msg="查找成功", data=df)
return df_dic
# return df
except Exception as e:
current_app.logger.error(e)
return jsonify(code=RET.DBERR, msg="数据库错误")
......@@ -102,22 +120,22 @@ def menu():
zjtg_sjxjr = company.filter_by(zjtg_sjxjr="1").count() # 省级专精特新小巨人企业
table_dic = {
# "t_c5": t_c5, # 500强企业
"ssqy": ssqy, # 上市企业
"gmys": gmys, # 规模以上企业
"zjtx": zjtx, # 专精特新企业
"gxjs": gxjs, # 高新技术企业
"kjzx": kjzx, # 科技型中小企业
# "dengl": dengl, # 瞪羚企业
# "dujs": dujs, # 独角兽企业
"tbe_sjmy": tbe_sjmy, # 省级民营科技企业
"zjtg_gjjxjr": zjtg_gjjxjr, # 国家级专精特新小巨人企业
"zjtg_sjxjr": zjtg_sjxjr # 省级专精特新小巨人企业
}
# 2. 左上角获取经济指标数据
jjzb_data = get_jjzb(district)
year = datetime.now().year - 1
jjzb_data = get_jjzb(district, year)
year = datetime.now().year
jjzb_data1 = get_jjzb(district, year)
# 3. 产业结构分布饼状图数据统计
count_all = company.count()
if count_all == 0:
......@@ -155,6 +173,7 @@ def menu():
data = {
"jjzb_dic": jjzb_data, # 左上角经济指标数据
"jjzb_dic1": jjzb_data1, # 左上角经济指标数据
"table_dic": table_dic, # 左上角企业数据统计
"industry_dic": indu_dic # 产业结构分布饼状图数据
}
......
......@@ -164,44 +164,104 @@ def enterprise():
太原市企业列表
:return:
'''
req_dict = request.get_json()
inid = req_dict.get("inid") # 行业id
page = req_dict.get("page") # 分页页码
perpage = req_dict.get("perpage") # 分页大小
province = req_dict.get("province")
city = req_dict.get("city")
district = req_dict.get("district")
product = req_dict.get("product") # 产业产品选择
if not all([page, perpage]):
return jsonify(code=RET.PARAMERR, msg="参数不完整")
# req_dict = request.get_json()
# inid = req_dict.get("inid") # 行业id
# page = req_dict.get("page") # 分页页码
# perpage = req_dict.get("perpage") # 分页大小
# province = req_dict.get("province")
# city = req_dict.get("city")
# district = req_dict.get("district")
# product = req_dict.get("product") # 产业产品选择
#
# if not all([page, perpage]):
# return jsonify(code=RET.PARAMERR, msg="参数不完整")
#
# try:
# if inid: # 子行业分类
# enterprise = Enterprise.query.filter_by(c_type=inid)
# else:
# enterprise = Enterprise.query.filter_by()
# # 区域选择
# if province:
# enterprise = enterprise.filter_by(province=province)
# if city:
# enterprise = enterprise.filter_by(city=city)
# if district:
# enterprise = enterprise.filter_by(district=district)
# if product:
# enterprise = enterprise.filter(Enterprise.product_all.like("%{}%".format(product)))
# size = enterprise.count()
# enterprise = enterprise.order_by(Enterprise.hots.desc()).paginate(page, perpage).items # 企业热度倒序
#
# df = [{"id": i.id,
# "company_name": i.company_name,
# "hots": i.hots,
# "aptitude": ['是否高新技术企业' if i.high_new == '1' else
# '是否科技型中小企业' if i.tbe == '1' else
# '是否上市企业' if i.quoted_company == '1' else
# '是否山西民营100强' if i.sxmon == '1' else
# '是否为山西专精特新企业' if i.zjtg == '1' else
# '独角兽企业' if i.unicorn == '1' else
# '瞪羚' if i.dengl == '1' else
# '是否中国500强' if i.isfive == '1' else
# '规模以上企业' if i.scale == '1' else
# '限额以上服务业' if i.serve == '1' else '']
# } for i in enterprise]
# data = {"size": size, "df": df}
# except Exception as e:
# current_app.logger.error(e)
# return jsonify(code=RET.DBERR, msg="数据库查询错误")
#
# return jsonify(code=RET.OK, msg="获取成功", data=data)
req_dic = request.get_json()
entype = req_dic['entype']
aptitude = req_dic['aptitude'] # 资质
company_name = req_dic['company_name']
status = req_dic['status']
page = req_dic['page']
per_page = req_dic['per_page']
try:
if inid: # 子行业分类
enterprise = Enterprise.query.filter_by(c_type=inid)
else:
enterprise = Enterprise.query.filter_by()
# 区域选择
if province:
enterprise = enterprise.filter_by(province=province)
if city:
enterprise = enterprise.filter_by(city=city)
if district:
enterprise = enterprise.filter_by(district=district)
if product:
enterprise = enterprise.filter(Enterprise.product_all.like("%{}%".format(product)))
size = enterprise.count()
enterprise = enterprise.order_by(Enterprise.hots.desc()).paginate(page, perpage).items # 企业热度倒序
enterprise_obj = Enterprise.query.filter(or_(
Enterprise.entype == entype,
Enterprise.company_name.like('%{}%'.format(company_name)),
Enterprise.status == status,
Enterprise.high_new == '1' if aptitude == '是否高新技术企业' else text(''),
Enterprise.tbe == '1' if aptitude == '是否科技型中小企业' else text(''),
Enterprise.quoted_company == '1' if aptitude == '是否上市企业' else text(''),
Enterprise.sxmon == '1' if aptitude == '是否山西民营100强' else text(''),
Enterprise.zjtg == '1' if aptitude == '是否为山西专精特新企业' else text(''),
Enterprise.unicorn == '1' if aptitude == '独角兽企业' else text(''),
Enterprise.dengl == '1' if aptitude == '瞪羚' else text(''),
Enterprise.isfive == '1' if aptitude == '是否中国500强' else text(''),
Enterprise.scale == '1' if aptitude == '规模以上企业' else text(''),
Enterprise.serve == '1' if aptitude == '限额以上服务业' else text(''),
))
size = enterprise_obj.count()
df = [{"id": i.id,
"company_name": i.company_name,
"hots": i.hots} for i in enterprise]
data = {"size": size, "df": df}
enterprise_obj_list = enterprise_obj.paginate(page, per_page).items
data = [{
"id": enterprise_obj.id,
"enterprise_name": enterprise_obj.enterprise_name,
"district": enterprise_obj.district,
"entype": enterprise_obj.entype,
"aptitude": ["是否高新技术企业" if enterprise_obj.high_new == '1' else
"是否科技型中小企业" if enterprise_obj.tbe == '1' else
"是否上市企业" if enterprise_obj.quoted_company == '1' else
"是否山西民营100强" if enterprise_obj.sxmon == '1' else
"是否为山西专精特新企业" if enterprise_obj.zjtg == '1' else
"独角兽企业" if enterprise_obj.unicorn == '1' else
"瞪羚" if enterprise_obj.dengl == '1' else
"是否中国500强" if enterprise_obj.isfive == '1' else
"规模以上企业" if enterprise_obj.scale == '1' else
"限额以上服务业" if enterprise_obj.serve == '1' else '']
} for enterprise_obj in enterprise_obj_list]
data = {"size": size, "df": data}
return jsonify(code=RET.OK, data=data, msg='查询成功。')
except Exception as e:
current_app.logger.error(e)
return jsonify(code=RET.DBERR, msg="数据库查询错误")
return jsonify(code=RET.OK, msg="获取成功", data=data)
return jsonify(code=RET.DBERR, msg='查询出错!')
# 招商地图下的散点图(至区后)
......
......@@ -1009,6 +1009,8 @@ def search_enterprise():
Enterprise.scale == '1' if aptitude == '规模以上企业' else text(''),
Enterprise.serve == '1' if aptitude == '限额以上服务业' else text(''),
))
size = enterprise_obj.count()
enterprise_obj_list = enterprise_obj.paginate(page, per_page).items
data = [{
"id": enterprise_obj.id,
......@@ -1026,6 +1028,8 @@ def search_enterprise():
"规模以上企业" if enterprise_obj.scale == '1' else
"限额以上服务业" if enterprise_obj.serve == '1' else '']
} for enterprise_obj in enterprise_obj_list]
data = {"size": size, "df": data}
return jsonify(code=RET.OK, data=data, msg='查询成功。')
except Exception as e:
current_app.logger.error(e)
......
......@@ -835,53 +835,6 @@ def fix_user_info():
return jsonify(code=RET.OK, msg="修改成功")
# 用户中心-收藏界面获取收藏的产业
# @api_user.route("/GetCollectIndustry", methods=["GET"])
# @login_required
# def get_collect_industry():
# token = request.headers["token"]
# try:
# user = verify_token(token)
# user_id = user.id
# except:
# return jsonify(code=RET.SESSIONERR, msg='个人信息校验失败,请重新登录!')
#
# try:
# industry_obj_li = IndustryCollect.query.filter(IndustryCollect.user_id == user_id).all()
# data = [{
# "industry_id": industry_obj.id,
# "industry_name": industry_obj.industry_name
# } for industry_obj in industry_obj_li]
# return jsonify(code=RET.OK, data=data, msg="获取成功")
# except Exception as e:
# current_app.logger.error(e)
# return jsonify(code=RET.DBERR, msg="数据库错误")
# # 用户中心-取消收藏
# @api_user.route("/CancelCollectIndustry", methods=["POST"])
# @login_required
# def cancel_collect_industry():
# token = request.headers["token"]
# try:
# user = verify_token(token)
# user_id = user.id
# except:
# return jsonify(code=RET.SESSIONERR, msg='个人信息校验失败,请重新登录!')
# req_dict = request.get_json()
# industry_name = req_dict['industry_name']
#
# try:
# collect_obj = IndustryCollect.query.filter_by(industry_name=industry_name).first()
# db.session.delete(collect_obj)
# db.session.commit()
# return jsonify(code=RET.OK, msg="取消收藏成功。")
# except Exception as e:
# db.session.rollback() # 回滚数据库
# current_app.logger.error(e)
# return jsonify(code=RET.DBERR, msg="数据库错误")
# 查看收藏-收藏的企业和行业
@api_user.route("/GetCollect", methods=["POST"])
@login_required
......
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