编写信息录入接口
This commit is contained in:
parent
ab8fbfe9e7
commit
1406c1e1a9
|
@ -18,6 +18,7 @@
|
|||
<option value="$MODULE_DIR$/Mods" />
|
||||
<option value="$MODULE_DIR$/ThirdPartyApi" />
|
||||
<option value="$MODULE_DIR$/Utils" />
|
||||
<option value="$MODULE_DIR$/DataLoad" />
|
||||
</list>
|
||||
</option>
|
||||
</component>
|
||||
|
|
|
@ -41,4 +41,4 @@ port = 8003
|
|||
token = 32737167-cb63-4ce9-9397-d66169488f51
|
||||
|
||||
[yujingtong]
|
||||
token = ""
|
||||
token = 92229502BD4C4B3E934607D4C1C5E711
|
|
@ -1,5 +1,5 @@
|
|||
from fastapi import HTTPException
|
||||
from sqlalchemy.orm import Session
|
||||
|
||||
from Context.common import yujingtong_api
|
||||
from Mods.RegionalEconomies.Mods.AreaDebt.Models import AreaDebt
|
||||
from Mods.RegionalEconomies.Mods.AreaDepositsAndLoans.Models import AreaDepositsAndLoans
|
||||
|
@ -13,24 +13,121 @@ from Mods.RegionalEconomies.Mods.AreaRealEstate.Models import AreaRealEstate
|
|||
|
||||
|
||||
def area_economic_data_load(db: Session, area_id: int, year: int):
|
||||
year = str(year)
|
||||
area_economic_res = yujingtong_api.get_area_economic(area_id, year)
|
||||
AreaDepositsAndLoans
|
||||
AreaImportAndExport
|
||||
AreaIndustry
|
||||
AreaInvest
|
||||
AreaLivelihood
|
||||
AreaRealEstate
|
||||
AreaGdp
|
||||
if not area_economic_res:
|
||||
raise HTTPException(detail="未查询到该区域数据", status_code=403)
|
||||
###
|
||||
new_area_deposits_and_loans = AreaDepositsAndLoans()
|
||||
new_area_deposits_and_loans.area_id = area_id
|
||||
new_area_deposits_and_loans.count_value = year
|
||||
new_area_deposits_and_loans.deposit = area_economic_res.SAV_DEP_BAL
|
||||
new_area_deposits_and_loans.loan = area_economic_res.LOAN_BAL
|
||||
db.add(new_area_deposits_and_loans)
|
||||
###
|
||||
new_area_import_and_export = AreaImportAndExport()
|
||||
new_area_import_and_export.area_id = area_id
|
||||
new_area_import_and_export.count_value = year
|
||||
new_area_import_and_export.import_and_export_volume = area_economic_res.TOT_IPT_AND_EXP
|
||||
new_area_import_and_export.export_volume = area_economic_res.TOT_EPT
|
||||
new_area_import_and_export.import_volume = area_economic_res.TOT_IPT
|
||||
db.add(new_area_deposits_and_loans)
|
||||
###
|
||||
new_area_industry = AreaIndustry()
|
||||
new_area_industry.area_id = area_id
|
||||
new_area_industry.count_value = year
|
||||
new_area_industry.primary_industry = area_economic_res.PRI_IND
|
||||
new_area_industry.secondary_industry = area_economic_res.SEC_IND
|
||||
new_area_industry.tertiary_Industry = area_economic_res.TER_IND
|
||||
new_area_industry.industrial_added_value = area_economic_res.GRO_VAL_IND_INC
|
||||
new_area_industry.industrial_output = area_economic_res.GRO_VAL_IND
|
||||
new_area_industry.industrial_output_growth_rate = area_economic_res.GRO_VAL_IND_RATE
|
||||
db.add(new_area_industry)
|
||||
##
|
||||
new_area_livelihood = AreaLivelihood()
|
||||
new_area_livelihood.area_id = area_id
|
||||
new_area_livelihood.count_value = year
|
||||
new_area_livelihood.population = area_economic_res.PERM_RESI
|
||||
new_area_livelihood.consumer_goods_retail_sales = area_economic_res.TOT_RT_SALES_OF_CONS
|
||||
new_area_livelihood.consumer_goods_retail_sales_growth_rate = area_economic_res.TOT_RT_SALES_OF_CONS_RATE
|
||||
new_area_livelihood.per_capita_disposable_income_of_urban_residents = area_economic_res.PER_CPT_DPSB_INC_IN_UB
|
||||
db.add(new_area_livelihood)
|
||||
##
|
||||
new_area_real_estate = AreaRealEstate()
|
||||
new_area_real_estate.area_id = area_id
|
||||
new_area_real_estate.count_value = year
|
||||
new_area_real_estate.second_hand_housing_average_price = area_economic_res.AVE_PRI_OF_SEC_HAND_HOUSE
|
||||
new_area_real_estate.residential_land_floor_price = area_economic_res.FLO_PRI_OF_RES_LAND
|
||||
new_area_real_estate.new_house_sales_price = area_economic_res.SAL_PRI_OF_NEW_BUIL
|
||||
db.add(new_area_real_estate)
|
||||
###
|
||||
new_area_gdp = AreaGdp()
|
||||
new_area_gdp.area_id = area_id
|
||||
new_area_gdp.count_value = year
|
||||
new_area_gdp.GDP = area_economic_res.GDP
|
||||
new_area_gdp.GDP_growth_rate = area_economic_res.GDP_GRO_ANL
|
||||
new_area_gdp.GDP_per_capita = area_economic_res.PER_CPT_GDP
|
||||
db.add(new_area_gdp)
|
||||
###
|
||||
new_area_invest = AreaInvest()
|
||||
new_area_invest.area_id = area_id
|
||||
new_area_invest.count_value = year
|
||||
new_area_invest.fixed_asset_investment = area_economic_res.FIXED_AST_IVM
|
||||
new_area_invest.fixed_asset_investment_growth_rate = area_economic_res.FIXED_AST_IVM_RATE
|
||||
new_area_invest.real_estate_investment = area_economic_res.INV_REAL_EST
|
||||
db.add(new_area_invest)
|
||||
db.commit()
|
||||
|
||||
|
||||
def area_finance_data_load(db: Session, area_id: int, year: int):
|
||||
year = str(year)
|
||||
# 区域财政
|
||||
area_finance_res = yujingtong_api.get_area_finance(area_id, year)
|
||||
AreaFiscalRevenue
|
||||
if not area_finance_res:
|
||||
raise HTTPException(detail="未查询到该区域数据", status_code=403)
|
||||
new_item = AreaFiscalRevenue()
|
||||
new_item.area_id = area_id
|
||||
new_item.count_value = year
|
||||
new_item.general_public_budget_income = area_finance_res.RVN_IN_GEN_PUB_BGT
|
||||
new_item.general_public_budget_expenditure = area_finance_res.EXPD_IN_GOV_GEN_PUB_BGT
|
||||
new_item.transfer_income = area_finance_res.TRAN_INC
|
||||
new_item.transfer_expenditure = area_finance_res.TRAN_EXP
|
||||
# new_item.fiscal_revenue=area_finance_res.
|
||||
new_item.general_bond_income = area_finance_res.GEN_BON_REV
|
||||
new_item.general_bond_principal_repayment_expenditure = area_finance_res.GEN_BON_REP_EXP
|
||||
new_item.special_bonds_income = area_finance_res.SPE_BOND_INC
|
||||
new_item.principal_repayment_expenditure_of_special_bonds = area_finance_res.SPE_BOND_REP_EXP
|
||||
new_item.tax_revenue = area_finance_res.TAX_RVN
|
||||
new_item.transfer_payment_income = area_finance_res.TRAN_INC
|
||||
# new_item.fiscal_expenditure=
|
||||
new_item.government_fund_income = area_finance_res.RVN_INTO_GOV_MNGD_FD
|
||||
new_item.land_transfer_income = area_finance_res.LAND_TRAN_INC
|
||||
new_item.government_fund_expenditure = area_finance_res.EXP_INTO_GOV_MNGD_FD
|
||||
new_item.state_owned_capital_operation_income = area_finance_res.BGT_RVN_FROM_STAT_CPT_OPR
|
||||
new_item.state_owned_capital_operation_expenditure = area_finance_res.EXP_FROM_STAT_CPT_OPR
|
||||
db.add(new_item)
|
||||
db.commit()
|
||||
|
||||
|
||||
def area_debt_data_load(db: Session, area_id: int, year: int):
|
||||
year = str(year)
|
||||
# 区域债务
|
||||
area_debt_res = yujingtong_api.get_area_debt(area_id, year)
|
||||
|
||||
pass
|
||||
if not area_debt_res:
|
||||
raise HTTPException(detail="未查询到该区域数据", status_code=403)
|
||||
item = AreaDebt()
|
||||
item.area_id = area_id
|
||||
item.count_value = year
|
||||
item.local_government_debt_balance = area_debt_res.OTS_DT_OF_GOV
|
||||
item.local_government_debt_limit = area_debt_res.CEIL_DT_OF_GOV
|
||||
item.fiscal_self_sufficiency_rate = area_debt_res.FSL_SELF_FNCG
|
||||
item.general_debt_balance = area_debt_res.GEN_OTS_DT
|
||||
item.special_debt_balance = area_debt_res.SPE_OTS_DT
|
||||
item.general_debt_limit = area_debt_res.GEN_CEIL_DT
|
||||
item.special_debt_limit = area_debt_res.SPE_CEIL_DT
|
||||
item.debt_ratio = area_debt_res.GOV_DT_TO_GDP_RT
|
||||
item.broad_sense_debt_ratio = area_debt_res.GOV_AND_FNC_PLTF_DT_TO_GDP_RT
|
||||
item.debt_to_asset_ratio = area_debt_res.GOV_DT_TO_RVN_RT
|
||||
item.broad_sense_debt_to_asset_ratio = area_debt_res.GOV_AND_FNC_PLTF_DT_TO_RVN_RT
|
||||
db.add(item)
|
||||
db.commit()
|
||||
|
|
|
@ -7,7 +7,7 @@ class AreaRealEstateInfo(BaseModel):
|
|||
id: Optional[int]
|
||||
area_id: Optional[str]
|
||||
count_type: Optional[str]
|
||||
count_value: Optional[int]
|
||||
count_value: Optional[str]
|
||||
second_hand_housing_average_price: Optional[int]
|
||||
residential_land_floor_price: Optional[int]
|
||||
new_house_sales_price: Optional[int]
|
||||
|
@ -16,7 +16,7 @@ class AreaRealEstateInfo(BaseModel):
|
|||
class AreaRealEstateAddInfo(BaseModel):
|
||||
area_id: str
|
||||
count_type: Optional[str]
|
||||
count_value: Optional[int]
|
||||
count_value: Optional[str]
|
||||
second_hand_housing_average_price: Optional[int]
|
||||
residential_land_floor_price: Optional[int]
|
||||
new_house_sales_price: Optional[int]
|
||||
|
|
|
@ -13,6 +13,24 @@ def make_query_url(params_dict):
|
|||
return "&".join(str_list)
|
||||
|
||||
|
||||
error_code_dic = {
|
||||
0: "请求成功",
|
||||
300000: "无数据",
|
||||
300001: "请求失败",
|
||||
300002: "账号失效",
|
||||
300003: "账号过期",
|
||||
300004: "访问频率过快",
|
||||
300005: "无权限访问此api",
|
||||
300006: "余额不足",
|
||||
300007: "剩余次数不足",
|
||||
300008: "缺少必要参数",
|
||||
300009: "账号信息有误",
|
||||
300010: "URL不存在",
|
||||
300011: "此IP无权限访问此api",
|
||||
300012: "报告生成中",
|
||||
}
|
||||
|
||||
|
||||
class TianyanchaConfig:
|
||||
# 公司工商信息接口
|
||||
company_base_info_url = "http://open.api.tianyancha.com/services/open/ic/baseinfo/normal"
|
||||
|
@ -63,6 +81,8 @@ class TianyanchaApi:
|
|||
"data": data['result']
|
||||
})
|
||||
return JsDict(data['result'])
|
||||
else:
|
||||
raise Exception(error_code_dic[data['error_code']])
|
||||
|
||||
def get_list(self, api_url, keyword):
|
||||
"""
|
||||
|
|
|
@ -1,9 +1,34 @@
|
|||
from typing import List
|
||||
|
||||
import requests as rq
|
||||
from . import Schemas
|
||||
from Utils.DataUtils import JsDict
|
||||
from Utils.MongoUtils import MongoConnect
|
||||
|
||||
error_code_dic = {
|
||||
0: "查询成功",
|
||||
1001: "无权限访问此数据接口",
|
||||
1002: "URL不存在",
|
||||
1003: "token异常",
|
||||
1004: "返回数据为空",
|
||||
1005: "参数设置错误或缺少参数,请重新设置",
|
||||
1006: "此数据接口剩余流量不足",
|
||||
1007: "请求数据的条目超过上限",
|
||||
1008: "请求超过系统限制",
|
||||
1009: "接口正在维护中",
|
||||
1010: "接口已下线停用",
|
||||
1011: "访问频率过快",
|
||||
1012: "请求超时",
|
||||
1013: "网络超时",
|
||||
1014: "网络错误",
|
||||
1015: "服务器拒绝请求",
|
||||
1016: "数据接收失败",
|
||||
1017: "错误的应答",
|
||||
1018: "操作系统原因",
|
||||
1019: "后台服务器不存在",
|
||||
1020: "后台服务器不可用",
|
||||
1099: "系统未知错误,请联系技术客服"
|
||||
}
|
||||
|
||||
|
||||
class YujingtongConfig:
|
||||
# 公司股东信息获取接口
|
||||
|
@ -60,6 +85,7 @@ class YujingtongApi:
|
|||
self.token = token
|
||||
self.mongo_connect = mongo_connect
|
||||
self.mongo_db_name = mongo_db_name
|
||||
self.rq = rq
|
||||
|
||||
def get_list(self, api_url, keyword):
|
||||
"""
|
||||
|
@ -75,7 +101,7 @@ class YujingtongApi:
|
|||
skip += size
|
||||
data = self.get_data_core(url)
|
||||
if data:
|
||||
temp_list = [JsDict(item) for item in data]
|
||||
temp_list = data['data']
|
||||
item_list.extend(temp_list)
|
||||
if len(temp_list) < size:
|
||||
break
|
||||
|
@ -91,18 +117,22 @@ class YujingtongApi:
|
|||
if self.mongo_connect:
|
||||
item = self.mongo_connect.db[self.mongo_db_name].find_one({"url": full_url})
|
||||
if item:
|
||||
return JsDict(item['data'])
|
||||
headers = {'Authorization': self.token}
|
||||
res = self.rq.get(full_url, headers=headers)
|
||||
data_value = item['data']
|
||||
return JsDict(data_value)
|
||||
headers = {'token': self.token}
|
||||
res = self.rq.get(full_url + f"&token={self.token}", headers=headers)
|
||||
data = res.json()
|
||||
if data['returncode'] == 0:
|
||||
main_rating_data = data['data']['data']
|
||||
data_value = data['data']
|
||||
if self.mongo_connect:
|
||||
self.mongo_connect.db[self.mongo_db_name].insert_one({
|
||||
"url": full_url,
|
||||
"data": data
|
||||
"data": data_value
|
||||
})
|
||||
return JsDict(main_rating_data)
|
||||
return JsDict(data_value)
|
||||
else:
|
||||
# print(full_url,error_code_dic[data['returncode']])
|
||||
raise Exception(error_code_dic[data['returncode']])
|
||||
|
||||
def get_company_share_holder(self, keyword) -> List[Schemas.ShareHolderItemInfo]:
|
||||
"""
|
||||
|
|
Loading…
Reference in New Issue