Commit 2eb94017 by dong

fix20230112

parent f898d867
...@@ -439,7 +439,10 @@ def write_dynamic(user_name, project_id, item, time): ...@@ -439,7 +439,10 @@ def write_dynamic(user_name, project_id, item, time):
@api_manage.route("/SearchProject", methods=["POST"]) @api_manage.route("/SearchProject", methods=["POST"])
def search_project(): def search_project():
req_dic = request.get_json() req_dic = request.get_json()
# token = request.headers['token'] token = request.headers['token']
flag = req_dic['flag'] # 1为线索库,2为对接库,3为签约库,4为开工库 flag = req_dic['flag'] # 1为线索库,2为对接库,3为签约库,4为开工库
# 线索库 # 线索库
distribute_condition = req_dic['distribute_condition'] # 分发情况 distribute_condition = req_dic['distribute_condition'] # 分发情况
......
...@@ -113,6 +113,11 @@ class Enterprise(db.Model): ...@@ -113,6 +113,11 @@ class Enterprise(db.Model):
c_type = db.Column(db.Integer, index=True, doc='行业类id', comment='行业类id') # 行业类id c_type = db.Column(db.Integer, index=True, doc='行业类id', comment='行业类id') # 行业类id
f_name = db.Column(db.String(255), doc='父行业类名', comment='父行业类名') # 父行业类名 f_name = db.Column(db.String(255), doc='父行业类名', comment='父行业类名') # 父行业类名
f_type = db.Column(db.Integer, index=True, doc='父行业类id', comment='父行业类id') # 父行业类id f_type = db.Column(db.Integer, index=True, doc='父行业类id', comment='父行业类id') # 父行业类id
sxonhun = db.Column(db.String(32)) # 是否山西100强
scale = db.Column(db.String(32)) # 规模以上企业
serve = db.Column(db.String(32)) # 限额以上服务业
__table_args__ = ({'comment': '全国企业表'}) # 添加表注释 __table_args__ = ({'comment': '全国企业表'}) # 添加表注释
......
...@@ -6,4 +6,5 @@ api_address = Blueprint("api_address", __name__) ...@@ -6,4 +6,5 @@ api_address = Blueprint("api_address", __name__)
from . import view from . import view
from . import map_view from . import map_view
from . import fill_data from . import fill_data
from . import choose_view
import re
import requests
from elasticsearch import Elasticsearch
from flask import request, current_app, jsonify
from sqlalchemy import or_, and_
from apps.models import *
from apps.utils.response_code import RET
# from apps.utils.es_language import *
# from apps.view_carrier import api_carrier
from apps.util import verify_identity, verify_token
from apps.view_choose import api_address
"""选址评估页面"""
# 搜索行政区公共方法
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 == 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(''),
CarrierLand.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
)).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(''),
CarrierLand.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(''),
CarrierLand.district_name == 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(''),
CarrierLand.district_name == 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.belong_organization # 所属区县
if '晋城市' in district_name1:
return "晋城市"
else:
if '沁水' in district_name1:
return '沁水县'
if '高平' in district_name1:
return '高平市'
if '阳城' in district_name1:
return '阳城市'
if '陵川' in district_name1:
return '陵川县'
if '泽州' in district_name1:
return '泽州县'
if '城区' in district_name1:
return '城区'
if '晋城经济技' in district_name1:
return '晋城经济技术开发区'
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)
from flask import g, current_app, request, jsonify, session from flask import g, current_app, request, jsonify, session
from sqlalchemy import or_ from sqlalchemy import or_, and_
from apps.view_map import api_map from apps.view_map import api_map
from apps.util import login_required, verify_token from apps.util import login_required, verify_token
...@@ -159,64 +159,65 @@ def attract_cnums(): ...@@ -159,64 +159,65 @@ def attract_cnums():
# 全国企业列表 # 全国企业列表
@api_map.route('/AttractEnterprise', methods=['POST']) # @api_map.route('/AttractEnterprise', methods=['POST'])
# @login_required # # @login_required
def enterprise(): # def enterprise():
''' # '''
太原市企业列表 # 太原市企业列表
:return: # :return:
''' # '''
req_dict = request.get_json() # req_dict = request.get_json()
inid = req_dict.get("inid") # 行业id # inid = req_dict.get("inid") # 行业id
page = req_dict.get("page") # 分页页码 # page = req_dict.get("page") # 分页页码
perpage = req_dict.get("perpage") # 分页大小 # perpage = req_dict.get("perpage") # 分页大小
province = req_dict.get("province") # province = req_dict.get("province")
city = req_dict.get("city") # city = req_dict.get("city")
district = req_dict.get("district") # district = req_dict.get("district")
product = req_dict.get("product") # 产业产品选择 # product = req_dict.get("product") # 产业产品选择
#
if not all([page, perpage]): #
return jsonify(code=RET.PARAMERR, msg="参数不完整") # if not all([page, perpage]):
# return jsonify(code=RET.PARAMERR, msg="参数不完整")
try: #
if inid: # 子行业分类 # try:
enterprise = Enterprise.query.filter_by(c_type=inid) # if inid: # 子行业分类
else: # enterprise = Enterprise.query.filter_by(c_type=inid)
enterprise = Enterprise.query.filter_by() # else:
# 区域选择 # enterprise = Enterprise.query.filter_by()
if province: # # 区域选择
enterprise = enterprise.filter_by(province=province) # if province:
if city: # enterprise = enterprise.filter_by(province=province)
enterprise = enterprise.filter_by(city=city) # if city:
if district: # enterprise = enterprise.filter_by(city=city)
enterprise = enterprise.filter_by(district=district) # if district:
if product: # enterprise = enterprise.filter_by(district=district)
enterprise = enterprise.filter(Enterprise.product_all.like("%{}%".format(product))) # if product:
size = enterprise.count() # enterprise = enterprise.filter(Enterprise.product_all.like("%{}%".format(product)))
enterprise = enterprise.order_by(Enterprise.hots.desc()).paginate(page, perpage).items # 企业热度倒序 # size = enterprise.count()
# enterprise = enterprise.order_by(Enterprise.hots.desc()).paginate(page, perpage).items # 企业热度倒序
df = [{"id": i.id, #
"company_name": i.company_name, # df = [{"id": i.id,
"hots": i.hots, # "company_name": i.company_name,
"aptitude": ['高新技术企业' if i.high_new == '1' else # "hots": i.hots,
'科技型中小企业' if i.tbe == '1' else # "aptitude": ['高新技术企业' if i.high_new == '1' else
'上市企业' if i.quoted_company == '1' else # '科技型中小企业' if i.tbe == '1' else
'山西民营100强' if i.sxmon == '1' else # '上市企业' if i.quoted_company == '1' else
'山西专精特新企业' if i.zjtg == '1' else # '山西民营100强' if i.sxmon == '1' else
'独角兽企业' if i.unicorn == '1' else # '山西专精特新企业' if i.zjtg == '1' else
'瞪羚' if i.dengl == '1' else # '独角兽企业' if i.unicorn == '1' else
'中国500强' if i.isfive == '1' else # '瞪羚' if i.dengl == '1' else
'规模以上企业' if i.scale == '1' else # '中国500强' if i.isfive == '1' else
'限额以上服务业' if i.serve == '1' else ''] # '规模以上企业' if i.scale == '1' else
} for i in enterprise] # '限额以上服务业' if i.serve == '1' else '']
data = {"size": size, "df": df} # } for i in enterprise]
except Exception as e: # data = {"size": size, "df": df}
current_app.logger.error(e) # except Exception as e:
return jsonify(code=RET.DBERR, msg="数据库查询错误") # current_app.logger.error(e)
# return jsonify(code=RET.DBERR, msg="数据库查询错误")
return jsonify(code=RET.OK, msg="获取成功", data=data) #
# return jsonify(code=RET.OK, msg="获取成功", data=data)
""""""
# 招商地图下的散点图(至区后) # 招商地图下的散点图(至区后)
@api_map.route('/AttractSdmap', methods=['POST']) @api_map.route('/AttractSdmap', methods=['POST'])
# @login_required # @login_required
...@@ -315,4 +316,71 @@ def search_enterprise(): ...@@ -315,4 +316,71 @@ def search_enterprise():
return jsonify(code=RET.OK, data=data, msg='查询成功。') return jsonify(code=RET.OK, data=data, msg='查询成功。')
except Exception as e: except Exception as e:
current_app.logger.error(e) current_app.logger.error(e)
return jsonify(code=RET.DBERR, msg='查询出错!') return jsonify(code=RET.DBERR, msg='查询出错!')
\ No newline at end of file
# 全国企业列表
@api_map.route('/AttractEnterprise', methods=['POST'])
def attract_enterprise():
'''
太原市企业列表
:return:
'''
req_dict = request.get_json()
inid = req_dict.get("inid") # 行业id
company_name = req_dict.get("company_name") # 产业产品名称筛选
entype = req_dict.get("entype") # 企业类型id
qualificat = req_dict.get("qualificat") # 企业资质id
quoted = req_dict.get("quoted") # 上市板块(A股,1)(创业股,2)(港股,3)(新三股,4)(新四股,5)(中小板,6)
area = req_dict.get("area") # ["省","市","区"]
province = area[0]
city = area[1]
district = area[2]
page = req_dict.get("page") # 分页页码
perpage = req_dict.get("perpage") # 分页大小
if not all([page, perpage]):
return jsonify(code=RET.PARAMERR, msg="参数不完整")
try:
enterprise_obj = Enterprise.query.filter(and_(
Enterprise.entype.like('%{}%'.format(entype)) if entype else text(''),
Enterprise.company_name.like('%{}%'.format(company_name)) if company_name else text(''),
Enterprise.c_type == inid if inid else text(''),
Enterprise.public_id == quoted if quoted else text(''),
Enterprise.province == province if province else text(''),
Enterprise.city == city if city else text(''),
Enterprise.district == district if district else text(''),
Enterprise.high_new == '1' if qualificat == '高新技术企业' else text(''),
Enterprise.tbe == '1' if qualificat == '科技型中小企业' else text(''),
Enterprise.quoted_company == '1' if qualificat == '上市企业' else text(''),
Enterprise.sxonhun == '1' if qualificat == '山西100强企业' else text(''),
Enterprise.zjtg == '1' if qualificat == '山西专精特新企业' else text(''),
Enterprise.unicorn == '1' if qualificat == '独角兽企业' else text(''),
Enterprise.dengl == '1' if qualificat == '瞪羚企业' else text(''),
Enterprise.isfive == '1' if qualificat == '中国500强企业' else text(''),
Enterprise.scale == '1' if qualificat == '规模以上企业' else text(''),
Enterprise.serve == '1' if qualificat == '限额以上服务业企业' else text(''),
))
size = enterprise_obj.count()
enterprise_obj_list = enterprise_obj.paginate(page, perpage).items
df = [{"id": i.id,
"company_name": i.company_name,
"aptitude": list(filter(None, ["高新技术企业" if i.high_new == '1' else '',
"科技型中小企业" if i.tbe == '1' else '',
"上市企业" if i.quoted_company == '1' else '',
"山西民营100强" if i.sxonhun == '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_obj_list]
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)
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