2022-06-02 16:54:52 +08:00
|
|
|
import json
|
2022-06-07 13:30:13 +08:00
|
|
|
import os
|
|
|
|
import re
|
2022-06-09 09:35:47 +08:00
|
|
|
import time
|
2022-05-25 02:58:06 +08:00
|
|
|
|
2022-06-07 13:30:13 +08:00
|
|
|
import pandas as pd
|
2022-06-02 16:54:52 +08:00
|
|
|
import requests
|
|
|
|
import xlrd
|
|
|
|
import cpca
|
|
|
|
from DBHelper.MongoHelperInstance import DB_GUA, DB_TYC
|
2022-06-10 17:00:02 +08:00
|
|
|
from Modules.Company.CompanyObject import BasicBusinessInfo, FinancialData, GuaranteeInfo, BankCredit
|
2022-06-09 09:35:47 +08:00
|
|
|
from Modules.Company.CompanyUtils import CompanyUtils, ExcelSheetParser, ExcelParserUtil
|
2022-06-07 13:30:13 +08:00
|
|
|
from Modules.Company.static.province_map import p_map
|
2022-06-13 17:07:04 +08:00
|
|
|
from Modules.ETL.GuaranteeDataJob import RiskInfoDataJob, BusinessInfoDataJob
|
2022-06-09 11:22:56 +08:00
|
|
|
from Utils.CommonUtil import get_attr
|
2022-05-25 17:12:15 +08:00
|
|
|
from Utils.ObjUtil import SpecObject
|
2022-05-25 02:58:06 +08:00
|
|
|
|
|
|
|
|
2022-05-25 17:12:15 +08:00
|
|
|
class BasicBusinessInfoImpl(object):
|
2022-05-25 14:41:58 +08:00
|
|
|
|
2022-05-26 14:35:09 +08:00
|
|
|
@staticmethod
|
|
|
|
def parse_excel_and_create_company(file):
|
|
|
|
"""解析excel模板数据 创建公司信息"""
|
2022-05-25 14:41:58 +08:00
|
|
|
|
2022-05-27 14:45:15 +08:00
|
|
|
new_cid = CompanyUtils.make_new_cid()
|
2022-06-09 09:35:47 +08:00
|
|
|
work_book = xlrd.open_workbook(file_contents=file.read())
|
2022-05-25 14:41:58 +08:00
|
|
|
|
2022-05-25 17:12:15 +08:00
|
|
|
basic_business_info = BasicBusinessInfo()
|
2022-05-26 03:39:35 +08:00
|
|
|
financial_data_list = list()
|
2022-06-02 16:54:52 +08:00
|
|
|
guarantee_info_list = list()
|
2022-06-09 09:35:47 +08:00
|
|
|
bank_credit_info_list = list()
|
|
|
|
|
|
|
|
company_info = ExcelSheetParser(sheet=work_book.sheet_by_name('企业信息')).parse_sheet1()
|
|
|
|
balance_sheet = ExcelSheetParser(sheet=work_book.sheet_by_name('资产负债表')).parse_sheet2()
|
|
|
|
income_sheet = ExcelSheetParser(sheet=work_book.sheet_by_name('利润表')).parse_sheet3()
|
|
|
|
appendix_sheet = ExcelSheetParser(sheet=work_book.sheet_by_name('补充数据表')).parse_sheet4()
|
|
|
|
guarantee_info = ExcelSheetParser(sheet=work_book.sheet_by_name('担保信息')).parse_sheet5()
|
|
|
|
compensation_info = ExcelSheetParser(sheet=work_book.sheet_by_name('代偿信息')).parse_sheet6()
|
|
|
|
bank_credit = ExcelSheetParser(sheet=work_book.sheet_by_name('银行授信')).parse_sheet7()
|
2022-06-13 17:07:04 +08:00
|
|
|
report_date = [balance_['报告期'] for balance_ in balance_sheet]
|
2022-06-09 09:35:47 +08:00
|
|
|
|
|
|
|
def basic_data():
|
|
|
|
"""工商信息"""
|
|
|
|
|
|
|
|
def get_basic(name):
|
|
|
|
# 获取tyc工商信息
|
|
|
|
def basic_info_api():
|
|
|
|
"""工商信息接口"""
|
|
|
|
url = "http://api.fecribd.com/api/tyc/basic_info"
|
|
|
|
headers = {'token': 'uzdq51N4!I0%HY4sCaQ!aeCSIDIVIdAM'}
|
|
|
|
parameter = {"企业名称": name}
|
|
|
|
res = requests.post(url=url, headers=headers, data=json.dumps(parameter))
|
|
|
|
return res
|
|
|
|
|
|
|
|
record = DB_TYC.find_single_data(
|
|
|
|
'公司背景',
|
|
|
|
'基本信息',
|
|
|
|
{"企业名称": name},
|
|
|
|
['企业名称', '基本信息']
|
|
|
|
)
|
|
|
|
if not record:
|
|
|
|
res_ = basic_info_api()
|
|
|
|
if res_.status_code == 200:
|
|
|
|
record = DB_TYC.find_single_data(
|
|
|
|
'公司背景',
|
|
|
|
'基本信息',
|
|
|
|
{"企业名称": name},
|
|
|
|
['企业名称', '基本信息']
|
|
|
|
)
|
|
|
|
return record
|
|
|
|
|
|
|
|
def get_shareholders(name):
|
|
|
|
# 获取tyc股东信息
|
|
|
|
def basic_info_api():
|
|
|
|
"""工商信息接口"""
|
|
|
|
url = "http://api.fecribd.com/api/tyc/shareholders_info"
|
|
|
|
headers = {'token': 'uzdq51N4!I0%HY4sCaQ!aeCSIDIVIdAM'}
|
|
|
|
parameter = {"企业名称": name}
|
|
|
|
res = requests.post(url=url, headers=headers, data=json.dumps(parameter))
|
|
|
|
return res
|
|
|
|
|
|
|
|
share_list = list()
|
|
|
|
if '上市' in basic_info['基本信息']['companyOrgType']:
|
|
|
|
shareholder_info = DB_TYC.find_single_data(
|
2022-06-02 16:54:52 +08:00
|
|
|
'公司背景',
|
2022-06-09 09:35:47 +08:00
|
|
|
'十大股东',
|
2022-06-02 16:54:52 +08:00
|
|
|
{"企业名称": name},
|
2022-06-09 09:35:47 +08:00
|
|
|
['十大股东']
|
2022-06-02 16:54:52 +08:00
|
|
|
)
|
2022-06-09 09:35:47 +08:00
|
|
|
if not shareholder_info:
|
2022-06-05 22:01:47 +08:00
|
|
|
res_ = basic_info_api()
|
|
|
|
if res_.status_code == 200:
|
2022-06-09 09:35:47 +08:00
|
|
|
shareholder_info = DB_TYC.find_single_data(
|
2022-06-02 16:54:52 +08:00
|
|
|
'公司背景',
|
2022-06-09 09:35:47 +08:00
|
|
|
'十大股东',
|
2022-06-02 16:54:52 +08:00
|
|
|
{"企业名称": name},
|
2022-06-09 09:35:47 +08:00
|
|
|
['十大股东']
|
2022-06-02 16:54:52 +08:00
|
|
|
)
|
2022-06-09 09:35:47 +08:00
|
|
|
# 遍历数据修改格式
|
|
|
|
if shareholder_info['十大股东']:
|
|
|
|
for share in shareholder_info['十大股东']['holderList']:
|
|
|
|
share_dict = dict()
|
|
|
|
share_dict['股东名称'] = share['name']
|
|
|
|
share_dict['持股比例'] = share['proportion']
|
|
|
|
share_dict['股东性质'] = '-'
|
|
|
|
share_dict['持股数量(股)'] = share['holdingNum']
|
|
|
|
share_list.append(share_dict)
|
|
|
|
else:
|
|
|
|
shareholder_info = DB_TYC.find_single_data(
|
2022-06-05 22:01:47 +08:00
|
|
|
'公司背景',
|
2022-06-09 09:35:47 +08:00
|
|
|
'企业股东',
|
2022-06-05 22:01:47 +08:00
|
|
|
{"企业名称": name},
|
2022-06-09 09:35:47 +08:00
|
|
|
['企业股东']
|
2022-06-05 22:01:47 +08:00
|
|
|
)
|
2022-06-09 09:35:47 +08:00
|
|
|
if not shareholder_info:
|
|
|
|
res_ = basic_info_api()
|
|
|
|
if res_.status_code == 200:
|
|
|
|
shareholder_info = DB_TYC.find_single_data(
|
|
|
|
'公司背景',
|
|
|
|
'企业股东',
|
|
|
|
{"企业名称": name},
|
|
|
|
['企业股东']
|
|
|
|
)
|
|
|
|
# 遍历数据修改格式
|
|
|
|
for share in shareholder_info['企业股东']['result']:
|
|
|
|
share_dict = dict()
|
|
|
|
share_dict['股东名称'] = share['name']
|
|
|
|
share_dict['持股比例'] = share['capital'][0]['percent']
|
|
|
|
share_dict['股东性质'] = '-'
|
|
|
|
share_dict['持股数量(股)'] = share['capital'][0]['amomon']
|
|
|
|
share_list.append(share_dict)
|
|
|
|
return share_list
|
|
|
|
|
|
|
|
def get_main_staff(name):
|
|
|
|
# 获取tyc主要人员
|
|
|
|
def main_staff_api():
|
|
|
|
"""工商信息接口"""
|
|
|
|
url = "http://api.fecribd.com/api/tyc/main_staff"
|
|
|
|
headers = {'token': 'uzdq51N4!I0%HY4sCaQ!aeCSIDIVIdAM'}
|
|
|
|
parameter = {"企业名称": name}
|
|
|
|
res = requests.post(url=url, headers=headers, data=json.dumps(parameter))
|
|
|
|
return res
|
|
|
|
|
|
|
|
record = DB_TYC.find_single_data(
|
|
|
|
'公司背景',
|
|
|
|
'主要人员',
|
|
|
|
{"企业名称": name},
|
|
|
|
['企业名称', '主要人员']
|
|
|
|
)
|
|
|
|
if not record:
|
|
|
|
res_ = main_staff_api()
|
|
|
|
if res_.status_code == 200:
|
|
|
|
record = DB_TYC.find_single_data(
|
2022-06-05 22:01:47 +08:00
|
|
|
'公司背景',
|
2022-06-09 09:35:47 +08:00
|
|
|
'主要人员',
|
2022-06-05 22:01:47 +08:00
|
|
|
{"企业名称": name},
|
2022-06-09 09:35:47 +08:00
|
|
|
['企业名称', '主要人员']
|
2022-06-05 22:01:47 +08:00
|
|
|
)
|
2022-06-09 09:35:47 +08:00
|
|
|
return_list = list()
|
|
|
|
for r in record['主要人员']['result']:
|
|
|
|
return_dict = dict()
|
|
|
|
return_dict['姓名'] = r['name']
|
|
|
|
return_dict['职务'] = r['typeJoin'][0]
|
|
|
|
return_dict['学历'] = None
|
|
|
|
return_dict['出生日期'] = None
|
|
|
|
return_dict['政治面貌'] = None
|
|
|
|
return_dict['行业经验'] = None
|
|
|
|
return_list.append(return_dict)
|
|
|
|
return return_list
|
|
|
|
|
|
|
|
def get_education(data):
|
|
|
|
"""学历信息"""
|
|
|
|
return_dict = dict()
|
|
|
|
return_dict['研究生'] = int(data['研究生'])
|
|
|
|
return_dict['本科'] = int(data['本科'])
|
|
|
|
return_dict['大专及以下'] = int(data['大专及以下'])
|
|
|
|
return return_dict
|
|
|
|
|
|
|
|
basic_info = get_basic(company_info['企业名称'])
|
|
|
|
tyc_shareholders = get_shareholders(company_info['企业名称'])
|
|
|
|
tyc_staff = get_main_staff(company_info['企业名称'])
|
|
|
|
employee_education = get_education(company_info)
|
|
|
|
|
|
|
|
basic_business_info.cid = new_cid
|
|
|
|
basic_business_info.shareholder_information = list()
|
|
|
|
basic_business_info.executive_information = list()
|
|
|
|
|
|
|
|
company_info['企业简称'] = basic_info['基本信息']['alias']
|
|
|
|
company_info['企业类型'] = basic_info['基本信息']['companyOrgType']
|
|
|
|
company_info['统一社会信用代码'] = basic_info['基本信息']['creditCode']
|
|
|
|
company_info['组织代码'] = basic_info['基本信息']['orgNumber']
|
2022-06-10 17:00:02 +08:00
|
|
|
tuptime_newest = time.localtime(basic_info['基本信息']['estiblishTime'] / 1000)
|
2022-06-09 09:35:47 +08:00
|
|
|
company_info['成立日期'] = time.strftime("%Y-%m-%d", tuptime_newest)
|
|
|
|
company_info['经营范围'] = basic_info['基本信息']['businessScope']
|
|
|
|
company_info['所在省份'] = [v for k, v in p_map.items() if k == basic_info['基本信息']['base']][0]
|
|
|
|
company_info['所在城市'] = basic_info['基本信息']['city']
|
|
|
|
company_info['注册地址'] = basic_info['基本信息']['regLocation']
|
|
|
|
company_info['通信地址'] = basic_info['基本信息']['regLocation']
|
|
|
|
company_info['法定代表人'] = basic_info['基本信息']['legalPersonName']
|
|
|
|
company_info['企业性质'] = '国有企业' if '国企' in basic_info['基本信息']['tags'] else '民营企业'
|
|
|
|
company_info['从业人员总数'] = sum(employee_education.values())
|
|
|
|
company_info['参保人数'] = int(company_info['参保人数'])
|
|
|
|
|
|
|
|
for item in tyc_shareholders:
|
|
|
|
shareholder = SpecObject.set_specify_instance(
|
|
|
|
instance=BasicBusinessInfo.ShareholderInformation,
|
|
|
|
data=item
|
|
|
|
)
|
|
|
|
basic_business_info.shareholder_information.append(shareholder)
|
2022-05-25 17:12:15 +08:00
|
|
|
|
2022-06-09 09:35:47 +08:00
|
|
|
for item in tyc_staff:
|
|
|
|
executive = SpecObject.set_specify_instance(
|
|
|
|
instance=BasicBusinessInfo.ExecutiveInformation,
|
|
|
|
data=item
|
2022-06-07 13:30:13 +08:00
|
|
|
)
|
2022-06-09 09:35:47 +08:00
|
|
|
basic_business_info.executive_information.append(executive)
|
2022-06-07 13:30:13 +08:00
|
|
|
|
2022-06-09 09:35:47 +08:00
|
|
|
basic_business_info.employee_education = SpecObject.set_specify_instance(
|
|
|
|
instance=BasicBusinessInfo.EmployeeEducation,
|
|
|
|
data=employee_education
|
|
|
|
)
|
|
|
|
company_info.pop('研究生')
|
|
|
|
company_info.pop('本科')
|
|
|
|
company_info.pop('大专及以下')
|
|
|
|
basic_business_info.set_instance(data=company_info)
|
|
|
|
|
|
|
|
def financial_data():
|
|
|
|
"""财务数据"""
|
|
|
|
financial = FinancialData()
|
2022-06-13 09:44:52 +08:00
|
|
|
period = [ExcelParserUtil.trans_date_fmt_2(item['报告期'])[:4] for item in appendix_sheet]
|
2022-06-09 09:35:47 +08:00
|
|
|
|
|
|
|
def balance_script(data):
|
|
|
|
"""资产负债表"""
|
|
|
|
fb = financial.BalanceSheet()
|
|
|
|
data.pop('报告期')
|
|
|
|
fb.current_assets = SpecObject.set_specify_instance(
|
|
|
|
instance=fb.CurrentAssets,
|
|
|
|
data=data['流动资产']
|
|
|
|
)
|
|
|
|
fb.total_assets = data['非流动资产']['资产总计']
|
|
|
|
data['非流动资产'].pop('资产总计')
|
|
|
|
fb.non_current_assets = SpecObject.set_specify_instance(
|
|
|
|
instance=fb.NonCurrentAssets,
|
|
|
|
data=data['非流动资产']
|
|
|
|
)
|
|
|
|
fb.current_liabilities = SpecObject.set_specify_instance(
|
|
|
|
instance=fb.CurrentLiabilities,
|
|
|
|
data=data['流动负债']
|
|
|
|
)
|
|
|
|
fb.total_assets = data['非流动负债']['负债合计']
|
|
|
|
data['非流动负债'].pop('负债合计')
|
|
|
|
fb.non_current_liabilities = SpecObject.set_specify_instance(
|
|
|
|
instance=fb.NonCurrentLiabilities,
|
|
|
|
data=data['非流动负债']
|
|
|
|
)
|
|
|
|
fb.owner_equity = SpecObject.set_specify_instance(
|
|
|
|
instance=fb.OwnerEquity,
|
|
|
|
data=data['所有者权益']
|
|
|
|
)
|
|
|
|
return fb
|
|
|
|
|
|
|
|
def income_script(data):
|
|
|
|
"""利润表"""
|
|
|
|
data.pop('报告期')
|
|
|
|
fi = SpecObject.set_specify_instance(
|
|
|
|
instance=financial.IncomeSheet,
|
|
|
|
data=data
|
|
|
|
)
|
|
|
|
return fi
|
|
|
|
|
|
|
|
def appendix_script(data):
|
|
|
|
"""补充数据表"""
|
2022-06-10 17:00:02 +08:00
|
|
|
year = ExcelParserUtil.trans_date_fmt_2(data['报告期'])[:4]
|
|
|
|
|
|
|
|
def parameter_01():
|
|
|
|
"""当期代偿金额"""
|
|
|
|
if compensation_info:
|
|
|
|
amount = 0
|
|
|
|
for item in compensation_info:
|
|
|
|
if ExcelParserUtil.trans_date_fmt_2(item['代偿日期'])[:4] == year:
|
2022-06-13 17:07:04 +08:00
|
|
|
amount += item['代偿金额(万元)']
|
2022-06-10 17:00:02 +08:00
|
|
|
else:
|
|
|
|
amount = None
|
|
|
|
else:
|
|
|
|
amount = None
|
|
|
|
return amount
|
|
|
|
|
|
|
|
def parameter_02():
|
|
|
|
"""当期代偿回收金额"""
|
|
|
|
if compensation_info:
|
|
|
|
amount = 0
|
|
|
|
for item in compensation_info:
|
|
|
|
if ExcelParserUtil.trans_date_fmt_2(item['代偿日期'])[:4] == year:
|
2022-06-13 17:07:04 +08:00
|
|
|
amount += item['代偿回收金额(万元)']
|
2022-06-10 17:00:02 +08:00
|
|
|
else:
|
|
|
|
amount = None
|
|
|
|
else:
|
|
|
|
amount = None
|
|
|
|
return amount
|
|
|
|
|
|
|
|
def parameter_03():
|
|
|
|
"""当期解除担保责任余额"""
|
|
|
|
if guarantee_info:
|
|
|
|
amount = 0
|
|
|
|
for item in guarantee_info:
|
|
|
|
if ExcelParserUtil.trans_date_fmt_2(item['担保开始日期'])[:4] == year:
|
2022-06-13 17:07:04 +08:00
|
|
|
amount += item['解除金额(万元)']
|
2022-06-10 17:00:02 +08:00
|
|
|
else:
|
|
|
|
amount = None
|
|
|
|
else:
|
|
|
|
amount = None
|
|
|
|
return amount
|
|
|
|
|
|
|
|
def parameter_04():
|
|
|
|
"""近三年累计代偿金额"""
|
|
|
|
if year == period[0]:
|
|
|
|
period_ = period[:3]
|
|
|
|
elif year == period[1]:
|
|
|
|
period_ = period[1:4]
|
|
|
|
else:
|
|
|
|
period_ = None
|
|
|
|
|
|
|
|
if period_ and compensation_info:
|
|
|
|
amount = 0
|
|
|
|
for _item in compensation_info:
|
|
|
|
if ExcelParserUtil.trans_date_fmt_2(_item['代偿日期'])[:4] in period_:
|
2022-06-13 17:07:04 +08:00
|
|
|
amount += _item['代偿金额(万元)']
|
2022-06-10 17:00:02 +08:00
|
|
|
else:
|
|
|
|
amount = None
|
|
|
|
|
|
|
|
return amount
|
|
|
|
|
|
|
|
def parameter_05():
|
|
|
|
"""近三年累计代偿回收金额"""
|
|
|
|
if year == period[0]:
|
|
|
|
period_ = period[:3]
|
|
|
|
elif year == period[1]:
|
|
|
|
period_ = period[1:4]
|
|
|
|
else:
|
|
|
|
period_ = None
|
|
|
|
|
|
|
|
if period_ and compensation_info:
|
|
|
|
amount = 0
|
|
|
|
for _item in compensation_info:
|
|
|
|
if ExcelParserUtil.trans_date_fmt_2(_item['代偿日期'])[:4] in period_:
|
2022-06-13 17:07:04 +08:00
|
|
|
amount += _item['代偿回收金额(万元)']
|
2022-06-10 17:00:02 +08:00
|
|
|
else:
|
|
|
|
amount = None
|
|
|
|
|
|
|
|
return amount
|
|
|
|
|
|
|
|
def parameter_06():
|
|
|
|
"""近三年累计解除担保责任金额"""
|
|
|
|
if year == period[0]:
|
|
|
|
period_ = period[:3]
|
|
|
|
elif year == period[1]:
|
|
|
|
period_ = period[1:4]
|
|
|
|
else:
|
|
|
|
period_ = None
|
|
|
|
|
|
|
|
if period_ and guarantee_info:
|
|
|
|
amount = 0
|
|
|
|
for _item in guarantee_info:
|
|
|
|
if ExcelParserUtil.trans_date_fmt_2(_item['担保开始日期'])[:4] in period_:
|
2022-06-13 17:07:04 +08:00
|
|
|
amount += _item['解除金额(万元)']
|
2022-06-10 17:00:02 +08:00
|
|
|
else:
|
|
|
|
amount = None
|
|
|
|
|
|
|
|
return amount
|
|
|
|
|
|
|
|
def parameter_07():
|
|
|
|
"""最大单一行业融资担保责任余额"""
|
|
|
|
if guarantee_info:
|
|
|
|
industry = {ind['行业']: 0 for ind in guarantee_info}
|
|
|
|
for item in guarantee_info:
|
|
|
|
if ExcelParserUtil.trans_date_fmt_2(item['担保开始日期'])[:4] == year:
|
2022-06-13 17:07:04 +08:00
|
|
|
industry[item['行业']] += item['责任担保余额(万元)']
|
2022-06-10 17:00:02 +08:00
|
|
|
amount = max(industry.values())
|
|
|
|
else:
|
|
|
|
amount = None
|
|
|
|
return amount
|
|
|
|
|
|
|
|
def parameter_08():
|
|
|
|
"""当期新增融资担保责任余额"""
|
|
|
|
if year == period[0]:
|
|
|
|
period_ = period[:2]
|
|
|
|
elif year == period[1]:
|
|
|
|
period_ = period[1:3]
|
|
|
|
elif year == period[2]:
|
|
|
|
period_ = period[2:4]
|
|
|
|
else:
|
|
|
|
period_ = None
|
|
|
|
|
|
|
|
if period_ and guarantee_info:
|
|
|
|
this_year = 0
|
|
|
|
last_year = 0
|
|
|
|
for _item in guarantee_info:
|
|
|
|
if ExcelParserUtil.trans_date_fmt_2(_item['担保开始日期'])[:4] == period_[0]:
|
2022-06-13 17:07:04 +08:00
|
|
|
this_year += _item['责任担保余额(万元)']
|
2022-06-10 17:00:02 +08:00
|
|
|
elif ExcelParserUtil.trans_date_fmt_2(_item['担保开始日期'])[:4] == period_[1]:
|
2022-06-13 17:07:04 +08:00
|
|
|
last_year += _item['责任担保余额(万元)']
|
2022-06-10 17:00:02 +08:00
|
|
|
amount = this_year - last_year
|
|
|
|
else:
|
|
|
|
amount = None
|
|
|
|
|
|
|
|
return amount
|
|
|
|
|
|
|
|
def parameter_09():
|
|
|
|
"""融资担保责任余额"""
|
|
|
|
if guarantee_info:
|
|
|
|
amount = 0
|
|
|
|
for item in guarantee_info:
|
|
|
|
if ExcelParserUtil.trans_date_fmt_2(item['担保开始日期'])[:4] == year and item['担保类型'] == '融资担保':
|
2022-06-13 17:07:04 +08:00
|
|
|
amount += item['责任担保余额(万元)']
|
2022-06-10 17:00:02 +08:00
|
|
|
else:
|
|
|
|
amount = None
|
|
|
|
else:
|
|
|
|
amount = None
|
|
|
|
return amount
|
|
|
|
|
|
|
|
def parameter_10():
|
|
|
|
"""前五大被担保企业融资担保责任余额"""
|
|
|
|
if guarantee_info:
|
|
|
|
amount_list = []
|
|
|
|
amount = 0
|
|
|
|
for item in guarantee_info:
|
|
|
|
if ExcelParserUtil.trans_date_fmt_2(item['担保开始日期'])[:4] == year and item['担保类型'] == '融资担保':
|
2022-06-13 17:07:04 +08:00
|
|
|
amount_list.append(item['责任担保余额(万元)'])
|
2022-06-10 17:00:02 +08:00
|
|
|
else:
|
|
|
|
amount = None
|
|
|
|
if amount_list:
|
2022-06-13 09:44:52 +08:00
|
|
|
length = len(amount_list)
|
2022-06-13 17:07:04 +08:00
|
|
|
amount_list.sort(reverse=True)
|
|
|
|
five_amount = amount_list[:length]
|
2022-06-10 17:00:02 +08:00
|
|
|
amount = sum(five_amount)
|
|
|
|
else:
|
|
|
|
amount = 0
|
|
|
|
return amount
|
|
|
|
|
|
|
|
def parameter_11():
|
|
|
|
"""最大被担保企业融资担保责任余额"""
|
|
|
|
if guarantee_info:
|
|
|
|
amount_list = []
|
|
|
|
amount = 0
|
|
|
|
for item in guarantee_info:
|
|
|
|
if ExcelParserUtil.trans_date_fmt_2(item['担保开始日期'])[:4] == year and item['担保类型'] == '融资担保':
|
2022-06-13 17:07:04 +08:00
|
|
|
amount_list.append(item['责任担保余额(万元)'])
|
2022-06-10 17:00:02 +08:00
|
|
|
else:
|
|
|
|
amount = None
|
|
|
|
if amount_list:
|
|
|
|
amount = max(amount_list)
|
|
|
|
else:
|
|
|
|
amount = 0
|
|
|
|
return amount
|
|
|
|
|
|
|
|
def parameter_12():
|
|
|
|
"""担保在保余额"""
|
|
|
|
if guarantee_info:
|
|
|
|
amount = 0
|
|
|
|
for item in guarantee_info:
|
|
|
|
if ExcelParserUtil.trans_date_fmt_2(item['担保开始日期'])[:4] == year:
|
2022-06-13 17:07:04 +08:00
|
|
|
amount += item['担保余额(万元)']
|
2022-06-10 17:00:02 +08:00
|
|
|
else:
|
|
|
|
amount = None
|
|
|
|
else:
|
|
|
|
amount = None
|
|
|
|
return amount
|
|
|
|
|
|
|
|
data['当期代偿金额'] = parameter_01()
|
|
|
|
data['当期代偿回收金额'] = parameter_02()
|
|
|
|
data['当期解除担保责任余额'] = parameter_03()
|
|
|
|
data['近三年累计代偿金额'] = parameter_04()
|
|
|
|
data['近三年累计代偿回收金额'] = parameter_05()
|
|
|
|
data['近三年累计解除担保责任金额'] = parameter_06()
|
|
|
|
data['最大单一行业融资担保责任余额'] = parameter_07()
|
|
|
|
data['当期新增融资担保责任余额'] = parameter_08()
|
|
|
|
data['融资担保责任余额'] = parameter_09()
|
|
|
|
data['前五大被担保企业融资担保责任余额'] = parameter_10()
|
|
|
|
data['最大被担保企业融资担保责任余额'] = parameter_11()
|
|
|
|
data['担保在保余额'] = parameter_12()
|
|
|
|
|
2022-06-09 09:35:47 +08:00
|
|
|
data.pop('报告期')
|
|
|
|
fa = SpecObject.set_specify_instance(
|
|
|
|
instance=financial.AppendixSheet,
|
|
|
|
data=data
|
|
|
|
)
|
|
|
|
return fa
|
|
|
|
|
|
|
|
for num in range(len(balance_sheet)):
|
|
|
|
financial.cid = new_cid
|
|
|
|
financial.company_name = company_info['企业名称']
|
|
|
|
financial.report_period = ExcelParserUtil.trans_date_fmt_2(balance_sheet[num]['报告期'])
|
|
|
|
financial.balance_sheet = balance_script(balance_sheet[num])
|
|
|
|
financial.income_sheet = income_script(income_sheet[num])
|
|
|
|
financial.appendix_sheet = appendix_script(appendix_sheet[num])
|
|
|
|
financial_data_list.append(financial)
|
|
|
|
|
|
|
|
def guarantee_data():
|
|
|
|
"""担保数据"""
|
|
|
|
for info in guarantee_info:
|
|
|
|
gid = CompanyUtils.make_new_cid()
|
2022-06-09 11:22:56 +08:00
|
|
|
gua_info = GuaranteeInfo()
|
|
|
|
gua_info.cid = new_cid
|
|
|
|
gua_info.guarantee_id = gid
|
|
|
|
gua_info.project_name = info['项目名称']
|
|
|
|
gua_info.warrantee = info['被担保人']
|
|
|
|
gua_info.guarantee_type = info['担保类型']
|
|
|
|
gua_info.guarantee_method = info['担保方式']
|
2022-06-13 09:39:34 +08:00
|
|
|
gua_info.guarantee_balance = info['担保余额(万元)']
|
|
|
|
gua_info.release_amount = info['解除金额(万元)']
|
|
|
|
gua_info.liability_guarantee_balance = info['责任担保余额(万元)']
|
2022-06-09 11:22:56 +08:00
|
|
|
gua_info.guarantee_start_date = ExcelParserUtil.trans_date_fmt_2(info['担保开始日期'])
|
|
|
|
gua_info.guarantee_end_date = ExcelParserUtil.trans_date_fmt_2(info['担保结束日期'])
|
|
|
|
gua_info.province = info['省份']
|
|
|
|
gua_info.city = info['地级市']
|
|
|
|
gua_info.industry = info['行业']
|
|
|
|
gua_info.remark = info['备注']
|
|
|
|
gua_info.compensation_info = list()
|
2022-06-09 09:35:47 +08:00
|
|
|
|
|
|
|
for compensation in compensation_info:
|
|
|
|
if compensation['项目名称'] == info['项目名称']:
|
2022-06-09 11:22:56 +08:00
|
|
|
ci = gua_info.CompensationInfo()
|
2022-06-09 09:35:47 +08:00
|
|
|
ci.compensation_id = gid
|
|
|
|
ci.project_name = compensation['项目名称']
|
2022-06-10 17:01:47 +08:00
|
|
|
ci.compensation_amount = compensation['代偿金额(万元)']
|
|
|
|
ci.compensation_recovery_amount = compensation['代偿回收金额(万元)']
|
2022-06-09 09:35:47 +08:00
|
|
|
ci.compensation_date = ExcelParserUtil.trans_date_fmt_2(compensation['代偿日期'])
|
2022-06-09 11:22:56 +08:00
|
|
|
gua_info.compensation_info.append(ci)
|
2022-06-09 09:35:47 +08:00
|
|
|
|
2022-06-09 11:22:56 +08:00
|
|
|
guarantee_info_list.append(gua_info)
|
2022-06-09 09:35:47 +08:00
|
|
|
|
|
|
|
def bank_data():
|
|
|
|
"""银行授信"""
|
|
|
|
for item in bank_credit:
|
|
|
|
bc = BankCredit()
|
|
|
|
bc.cid = new_cid
|
|
|
|
bc.company_name = company_info['企业名称']
|
|
|
|
bc.bank_name = item['银行名称']
|
|
|
|
bc.report_period = ExcelParserUtil.trans_date_fmt_2(item['报告期'])
|
|
|
|
bc.credit_line = item['授信额度']
|
|
|
|
bc.usage_quota = item['使用额度']
|
|
|
|
bank_credit_info_list.append(bc)
|
|
|
|
|
2022-06-09 11:22:56 +08:00
|
|
|
def risk_info():
|
2022-06-13 17:07:04 +08:00
|
|
|
"""风险信息"""
|
|
|
|
for item in report_date:
|
2022-06-10 17:00:02 +08:00
|
|
|
data_job = RiskInfoDataJob()
|
|
|
|
data_job.company_name = get_attr(company_info, ["企业名称"])
|
|
|
|
data_job.cid = new_cid
|
2022-06-13 17:07:04 +08:00
|
|
|
data_job.report_date = ExcelParserUtil.trans_date_fmt_2(item)
|
2022-06-10 17:00:02 +08:00
|
|
|
data_job.drag()
|
2022-06-09 11:22:56 +08:00
|
|
|
|
2022-06-09 09:35:47 +08:00
|
|
|
def _main_():
|
|
|
|
basic_data()
|
|
|
|
guarantee_data()
|
2022-06-09 11:22:56 +08:00
|
|
|
financial_data()
|
2022-06-09 09:35:47 +08:00
|
|
|
bank_data()
|
2022-06-10 17:00:02 +08:00
|
|
|
risk_info()
|
2022-06-09 09:35:47 +08:00
|
|
|
|
|
|
|
_main_()
|
2022-05-26 03:39:35 +08:00
|
|
|
|
|
|
|
DB_GUA.insert_single_data(
|
|
|
|
"企业数据",
|
|
|
|
"工商信息",
|
|
|
|
basic_business_info.fields_toggle()
|
|
|
|
)
|
|
|
|
|
2022-06-09 11:22:56 +08:00
|
|
|
if financial_data_list:
|
|
|
|
DB_GUA.insert_many_data(
|
|
|
|
"企业数据",
|
|
|
|
"财务数据",
|
|
|
|
[item.fields_toggle() for item in financial_data_list]
|
|
|
|
)
|
2022-05-26 14:35:09 +08:00
|
|
|
|
2022-06-07 13:30:13 +08:00
|
|
|
if guarantee_info_list:
|
|
|
|
DB_GUA.insert_many_data(
|
|
|
|
"企业数据",
|
|
|
|
"担保数据",
|
|
|
|
[item.fields_toggle() for item in guarantee_info_list]
|
|
|
|
)
|
|
|
|
|
2022-06-09 09:35:47 +08:00
|
|
|
if bank_credit_info_list:
|
2022-06-07 13:30:13 +08:00
|
|
|
DB_GUA.insert_many_data(
|
2022-06-09 09:35:47 +08:00
|
|
|
"企业数据",
|
|
|
|
"银行授信",
|
|
|
|
[item.fields_toggle() for item in bank_credit_info_list]
|
2022-06-07 13:30:13 +08:00
|
|
|
)
|
2022-06-09 17:04:44 +08:00
|
|
|
|
2022-06-13 17:07:04 +08:00
|
|
|
def guarantee_business_info():
|
|
|
|
"""经营信息"""
|
|
|
|
business_job = BusinessInfoDataJob()
|
|
|
|
business_job.company_name = get_attr(company_info, ["企业名称"])
|
|
|
|
business_job.cid = new_cid
|
|
|
|
business_job.create()
|
2022-06-14 17:02:00 +08:00
|
|
|
|
|
|
|
guarantee_business_info()
|