编写信息录入接口

This commit is contained in:
wcq 2023-03-30 16:49:46 +08:00
parent ab8fbfe9e7
commit 1406c1e1a9
6 changed files with 170 additions and 22 deletions

View File

@ -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>

View File

@ -41,4 +41,4 @@ port = 8003
token = 32737167-cb63-4ce9-9397-d66169488f51
[yujingtong]
token = ""
token = 92229502BD4C4B3E934607D4C1C5E711

View File

@ -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()

View File

@ -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]

View File

@ -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):
"""

View File

@ -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]:
"""