urban-investment-research/DataLoad/ApiDataToModel.py

217 lines
7.9 KiB
Python

# 数据录入
from datetime import datetime
from typing import List
from sqlalchemy.orm import Session
from Mods.BasicInformation.Mods.CompanyIndexMain.Models import CompanyIndexMain
from Mods.BasicInformation.Mods.CompanyBaseInfo.Models import CompanyBaseInfo
from Mods.BasicInformation.Mods.CompanyControl.Models import CompanyControl
from Mods.BasicInformation.Mods.CompanyShareholder.Models import CompanyShareholder
from Mods.OtherInformation.Mods.CompanyBankLease.Models import CompanyBankLease
from Mods.OtherInformation.Mods.CompanyCreditRating.Models import CompanyCreditRating
from Mods.OtherInformation.Mods.CompanyGuarantee.Models import CompanyGuarantee
from Mods.OtherInformation.Mods.CompanyJudicialDocument.Models import CompanyJudicialDocument
from Mods.OtherInformation.Mods.CompanyOtherLease.Models import CompanyOtherLease
from Mods.OtherInformation.Mods.CompanyRentalLease.Models import CompanyRentalLease
from Mods.OtherInformation.Mods.CompanyTrustLease.Models import CompanyTrustLease
from ThirdPartyApi.Tianyancha import Schemas as TianyanchaSchemas
from ThirdPartyApi.Yujingtong import Schemas as YujingtongSchemas
def delete_company_all_info(db: Session, company_id):
"""
删除一个公司的所有信息
"""
will_del_mods = [
CompanyIndexMain,
CompanyBaseInfo,
CompanyControl,
CompanyControl,
CompanyShareholder,
CompanyBankLease,
CompanyCreditRating,
CompanyGuarantee,
CompanyJudicialDocument,
CompanyOtherLease,
CompanyRentalLease,
CompanyTrustLease,
TianyanchaSchemas,
YujingtongSchemas
]
for mod in will_del_mods:
db.query(mod).filter_by(company_id=company_id).delete()
db.commit()
def date_value_to_date(date_value,value_type="str"):
if date_value:
if value_type == "str":
if "-" in date_value:
return datetime.strptime(date_value, '%Y-%m-%d').date()
else:
return datetime.strptime(date_value, '%Y%m%d').date()
if value_type == "int":
return datetime.fromtimestamp(date_value/1000).date()
def get_company_id(db: Session, company_name):
company = db.query(CompanyIndexMain).filter_by(company_name=company_name).first()
if not company:
raise Exception("公司名称未录入数据库")
return company.company_id
def tianyancha_api_to_company_base_info(res: TianyanchaSchemas.CompanyBaseInfoRes, company_id):
new_item = CompanyBaseInfo()
new_item.company_id = company_id
new_item.legal_person = res.legalPersonName
new_item.reg_capital = res.regCapital
# new_item.paid_capital =
new_item.estiblish_date = date_value_to_date(res.estiblishTime,'int')
new_item.approved_date = date_value_to_date(res.approvedTime,'int')
# new_item.license_duration=
new_item.reg_location = res.regLocation
new_item.credit_code = res.creditCode
new_item.social_staff_num = res.socialStaffNum
new_item.business_scope = res.businessScope
new_item.reg_status=res.regStatus
return new_item
def tianyancha_api_to_company_control(res: TianyanchaSchemas.ActualControlItemInfo, company_id):
new_item = CompanyControl()
new_item.company_id = company_id
new_item.name = res.name
new_item.type = "" if res.type == 1 else "公司"
return new_item
def yujingtong_api_to_company_shareholder_list(res: List[YujingtongSchemas.ShareHolderItemInfo], company_id):
new_item_list = []
for item in res:
new_item = CompanyShareholder()
new_item.company_id = company_id
new_item.name = item.ShareholderName
new_item.type = item.ShareholderType
new_item.amount = item.ShouldCapi/10000
new_item.number = item.ShareholdeCode
new_item.percent = float(item.ShareholdingRatio)
new_item.reg_date = date_value_to_date(item.ContributionTime)
new_item_list.append(new_item)
return new_item_list
def yujingtong_api_to_company_bank_lease_list(res: List[YujingtongSchemas.BankLoanItemInfo], company_id):
new_item_list = []
for item in res:
new_item = CompanyBankLease()
new_item.company_id = company_id
new_item.amount = float(item.Amount)
new_item.third_name = item.BankName
new_item.start_date = date_value_to_date(item.Begindate)
new_item.end_date = date_value_to_date(item.Enddate)
new_item.coupon = item.Rate
new_item_list.append(new_item)
# new_item.method
# new_item.status
# new_item.remark
return new_item_list
def yujingtong_api_to_company_credit_rating(res: YujingtongSchemas.MainRatingDataInfo, company_id):
new_item = CompanyCreditRating()
new_item.company_id = company_id
new_item.result = res.thisRaiting
new_item.rate_date = date_value_to_date(res.rantingDate)
new_item.publish_date = date_value_to_date(res.declaredate)
new_item.outlook = res.raitingOutlook
new_item.rate_agency = res.raitingOrgName
return new_item
def yujingtong_api_to_company_guarantee(res: List[YujingtongSchemas.GuaranteeDetailsItemInfo], company_id):
new_item_list = []
for item in res:
new_item = CompanyGuarantee()
new_item.company_id = company_id
new_item.third_name = item.SecuredName
# new_item.type =res.
new_item.amount = item.GuaranteeAmount
new_item.duration = item.GuaranteePeriod
new_item.method = item.GuaranteeMode
new_item.status = item.GuaranteeStatus
new_item_list.append(new_item)
# new_item.remark
return new_item_list
def yujingtong_api_to_company_judicial_document(res: List[YujingtongSchemas.JudgementDocItemInfo], company_id):
new_item_list = []
for item in res:
new_item = CompanyJudicialDocument()
new_item.company_id = company_id
new_item.doc_type = item.DocType
new_item.case_date = date_value_to_date(item.JudgeDate)
new_item.title = item.Title
new_item.code = item.CaseNo
new_item.type = item.DocType
new_item.reason = item.CaseReason
new_item.amount = item.CaseAmount
# new_item.identity=item.
new_item.result = item.JudgmentResult
new_item.court = item.Court
new_item.publish_date = item.PublishDate
new_item_list.append(new_item)
return new_item_list
def yujingtong_api_to_company_other_lease(res: List[YujingtongSchemas.OtherFinancingItemInfo], company_id):
new_item_list = []
for item in res:
new_item = CompanyOtherLease()
new_item.company_id = company_id
new_item.type = item.Type
new_item.third_name = item.InvestorName
new_item.amount = item.Amount
new_item.duration = item.Timelimit
new_item.coupon = item.Rate
# new_item.method =
# new_item.status =
# new_item.remark =
return new_item_list
def yujingtong_api_to_company_rental_lease(res: List[YujingtongSchemas.LeasingFinancingItemInfo], company_id):
new_item_list = []
for item in res:
new_item = CompanyRentalLease()
new_item.company_id = company_id
new_item.amount = item.Amount
new_item.start_date = date_value_to_date(item.Begindate)
new_item.end_date = date_value_to_date(item.Enddate)
new_item.coupon = item.Rate
# new_item.method =
new_item.status = item.RegisterType
# new_item.remark =
return new_item_list
def yujingtong_api_to_company_trust_lease(res: List[YujingtongSchemas.TrustFinancingItemInfo], company_id):
new_item_list = []
for item in res:
new_item = CompanyTrustLease()
new_item.company_id = company_id
new_item.third_name = item.TrustcompanyName
new_item.amount = item.Amount
new_item.start_date = date_value_to_date(item.Begindate)
new_item.end_date = date_value_to_date(item.Enddate)
new_item.coupon = item.Rate
# new_item.method =
# new_item.status =
# new_item.remark =
return new_item_list