2022-05-25 14:41:58 +08:00
|
|
|
import xlrd
|
2022-05-25 02:58:06 +08:00
|
|
|
|
2022-05-26 03:39:35 +08:00
|
|
|
from DBHelper.MongoHelperInstance import DB_GUA
|
2022-05-26 14:35:09 +08:00
|
|
|
from Modules.Company.CompanyObject import BasicBusinessInfo, FinancialData, CustomerInfo, RegionalDistribution, \
|
|
|
|
IndustryDistribution, GuaranteedBalanceDistribution
|
2022-05-27 14:45:15 +08:00
|
|
|
from Modules.Company.CompanyUtils import CompanyUtils, ExcelSheetParser
|
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-05-25 14:41:58 +08:00
|
|
|
work_book = xlrd.open_workbook(file_contents=file.read())
|
|
|
|
|
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-05-26 14:35:09 +08:00
|
|
|
customer_info_list = list()
|
|
|
|
region_distribution_list = list()
|
|
|
|
industry_distribution_list = list()
|
|
|
|
guarantee_distribution_list = list()
|
2022-05-25 17:12:15 +08:00
|
|
|
|
2022-05-25 14:41:58 +08:00
|
|
|
for sheet in work_book.sheets():
|
|
|
|
|
|
|
|
if sheet.name == '企业信息':
|
|
|
|
data = ExcelSheetParser(sheet=sheet).parse_sheet1()
|
2022-05-26 03:39:35 +08:00
|
|
|
basic_business_info.cid = new_cid
|
|
|
|
basic_business_info.set_instance(data=data)
|
2022-05-25 16:12:53 +08:00
|
|
|
|
2022-05-25 17:12:15 +08:00
|
|
|
elif sheet.name == '高管股东信息':
|
|
|
|
executives, shareholders = ExcelSheetParser(sheet=sheet).parse_sheet2()
|
|
|
|
|
|
|
|
basic_business_info.shareholder_information = list()
|
|
|
|
basic_business_info.executive_information = list()
|
|
|
|
|
|
|
|
for item in executives:
|
2022-05-26 03:39:35 +08:00
|
|
|
executive = SpecObject.set_specify_instance(
|
2022-05-25 17:12:15 +08:00
|
|
|
instance=BasicBusinessInfo.ExecutiveInformation,
|
|
|
|
data=item
|
|
|
|
)
|
|
|
|
basic_business_info.executive_information.append(executive)
|
|
|
|
|
|
|
|
for item in shareholders:
|
2022-05-26 03:39:35 +08:00
|
|
|
shareholder = SpecObject.set_specify_instance(
|
2022-05-25 17:12:15 +08:00
|
|
|
instance=BasicBusinessInfo.ShareholderInformation,
|
|
|
|
data=item
|
|
|
|
)
|
|
|
|
basic_business_info.shareholder_information.append(shareholder)
|
|
|
|
|
2022-05-26 03:39:35 +08:00
|
|
|
elif sheet.name == '经营情况':
|
|
|
|
items = ExcelSheetParser(sheet=sheet).parse_sheet3()
|
2022-05-25 14:41:58 +08:00
|
|
|
|
2022-05-26 03:39:35 +08:00
|
|
|
for item in items:
|
|
|
|
financial_data = FinancialData()
|
|
|
|
financial_data.cid = new_cid
|
|
|
|
financial_data.company_name = basic_business_info.company_name
|
|
|
|
financial_data.report_period = item["报告期"]
|
2022-05-26 17:10:26 +08:00
|
|
|
# financial_data.balance_sheet = SpecObject.set_specify_instance(
|
|
|
|
# instance=FinancialData.BalanceSheet,
|
|
|
|
# data=item["资产负债表"]
|
|
|
|
# )
|
|
|
|
# financial_data.income_sheet = SpecObject.set_specify_instance(
|
|
|
|
# instance=FinancialData.IncomeSheet,
|
|
|
|
# data=item["利润表"]
|
|
|
|
# )
|
2022-05-26 03:39:35 +08:00
|
|
|
financial_data.appendix_sheet = SpecObject.set_specify_instance(
|
|
|
|
instance=FinancialData.AppendixSheet,
|
|
|
|
data=item["补充数据表"]
|
|
|
|
)
|
|
|
|
financial_data_list.append(financial_data)
|
|
|
|
|
2022-05-26 14:35:09 +08:00
|
|
|
elif sheet.name == '客户信息':
|
|
|
|
items = ExcelSheetParser(sheet=sheet).parse_sheet4()
|
|
|
|
|
|
|
|
for item in items:
|
|
|
|
customer_info = CustomerInfo()
|
|
|
|
customer_info.cid = new_cid
|
|
|
|
customer_info.company_name = basic_business_info.company_name
|
|
|
|
customer_info.set_instance(data=item)
|
|
|
|
customer_info_list.append(customer_info)
|
|
|
|
|
|
|
|
elif sheet.name == '区域分布':
|
|
|
|
items = ExcelSheetParser(sheet=sheet).parse_sheet5()
|
|
|
|
|
|
|
|
for item in items:
|
|
|
|
region_distribution = RegionalDistribution()
|
|
|
|
region_distribution.cid = new_cid
|
|
|
|
region_distribution.company_name = basic_business_info.company_name
|
|
|
|
region_distribution.set_instance(data=item)
|
|
|
|
region_distribution_list.append(region_distribution)
|
|
|
|
|
|
|
|
elif sheet.name == '行业分布':
|
|
|
|
items = ExcelSheetParser(sheet=sheet).parse_sheet5()
|
|
|
|
|
|
|
|
for item in items:
|
|
|
|
industry_distribution = IndustryDistribution()
|
|
|
|
industry_distribution.cid = new_cid
|
|
|
|
industry_distribution.company_name = basic_business_info.company_name
|
|
|
|
industry_distribution.set_instance(data=item)
|
|
|
|
industry_distribution_list.append(industry_distribution)
|
|
|
|
|
|
|
|
elif sheet.name == '担保金额分布':
|
|
|
|
items = ExcelSheetParser(sheet=sheet).parse_sheet6()
|
|
|
|
|
|
|
|
for item in items:
|
|
|
|
guarantee_distribution = GuaranteedBalanceDistribution()
|
|
|
|
guarantee_distribution.cid = new_cid
|
|
|
|
guarantee_distribution.company_name = basic_business_info.company_name
|
|
|
|
guarantee_distribution.report_period = item["报告期"]
|
|
|
|
guarantee_distribution.guarantee_account = SpecObject.set_specify_instance(
|
|
|
|
instance=GuaranteedBalanceDistribution.GuaranteeBalance,
|
|
|
|
data=item["担保户数"]
|
|
|
|
)
|
|
|
|
guarantee_distribution.guarantee_number = SpecObject.set_specify_instance(
|
|
|
|
instance=GuaranteedBalanceDistribution.GuaranteeBalance,
|
|
|
|
data=item["担保笔数"]
|
|
|
|
)
|
|
|
|
guarantee_distribution.guarantee_liability_balance = SpecObject.set_specify_instance(
|
|
|
|
instance=GuaranteedBalanceDistribution.GuaranteeBalance,
|
|
|
|
data=item["担保责任余额"]
|
|
|
|
)
|
|
|
|
guarantee_distribution_list.append(guarantee_distribution)
|
|
|
|
|
2022-05-26 17:10:26 +08:00
|
|
|
elif sheet.name == '资产负债表':
|
|
|
|
items = ExcelSheetParser(sheet=sheet).parse_sheet7()
|
|
|
|
|
|
|
|
balance_sheet = FinancialData().BalanceSheet()
|
|
|
|
current_assets_dict = [item for item in balance_sheet.CurrentAssets.fields_map.values()]
|
|
|
|
non_current_assets_dict = [item for item in balance_sheet.NonCurrentAssets.fields_map.values()]
|
|
|
|
current_liabilities_dict = [item for item in balance_sheet.CurrentLiabilities.fields_map.values()]
|
|
|
|
non_current_liabilities_dict = [item for item in balance_sheet.NonCurrentLiabilities.fields_map.values()]
|
|
|
|
owner_equity_dict = [item for item in balance_sheet.OwnerEquity.fields_map.values()]
|
|
|
|
|
|
|
|
for item in items:
|
|
|
|
current_assets_dict_ = dict()
|
|
|
|
non_current_assets_dict_ = dict()
|
|
|
|
current_liabilities_dict_ = dict()
|
|
|
|
non_current_liabilities_dict_ = dict()
|
|
|
|
owner_equity_dict_ = dict()
|
|
|
|
for key, value in item.items():
|
|
|
|
if key in current_assets_dict:
|
|
|
|
current_assets_dict_[key] = value
|
|
|
|
elif key in non_current_assets_dict:
|
|
|
|
non_current_assets_dict_[key] = value
|
|
|
|
elif key in current_liabilities_dict:
|
|
|
|
current_liabilities_dict_[key] = value
|
|
|
|
elif key in non_current_liabilities_dict:
|
|
|
|
non_current_liabilities_dict_[key] = value
|
|
|
|
elif key in owner_equity_dict:
|
|
|
|
owner_equity_dict_[key] = value
|
|
|
|
|
|
|
|
balance_sheet.current_assets = SpecObject.set_specify_instance(
|
|
|
|
instance=balance_sheet.CurrentAssets,
|
|
|
|
data=current_assets_dict_
|
|
|
|
)
|
|
|
|
balance_sheet.non_current_assets = SpecObject.set_specify_instance(
|
|
|
|
instance=balance_sheet.NonCurrentAssets,
|
|
|
|
data=non_current_assets_dict_
|
|
|
|
)
|
|
|
|
balance_sheet.current_liabilities = SpecObject.set_specify_instance(
|
|
|
|
instance=balance_sheet.CurrentLiabilities,
|
|
|
|
data=current_liabilities_dict_
|
|
|
|
)
|
|
|
|
balance_sheet.non_current_liabilities = SpecObject.set_specify_instance(
|
|
|
|
instance=balance_sheet.NonCurrentLiabilities,
|
|
|
|
data=non_current_liabilities_dict_
|
|
|
|
)
|
|
|
|
balance_sheet.owner_equity = SpecObject.set_specify_instance(
|
|
|
|
instance=balance_sheet.OwnerEquity,
|
|
|
|
data=owner_equity_dict_
|
|
|
|
)
|
|
|
|
|
|
|
|
for financial in financial_data_list:
|
|
|
|
if item['年度'] == financial.report_period:
|
|
|
|
financial.balance_sheet = balance_sheet
|
|
|
|
|
|
|
|
elif sheet.name == '利润表':
|
|
|
|
items = ExcelSheetParser(sheet=sheet).parse_sheet8()
|
|
|
|
|
|
|
|
for item in items:
|
2022-05-26 23:31:38 +08:00
|
|
|
year = item['年度']
|
2022-05-26 17:10:26 +08:00
|
|
|
item.pop('年度')
|
|
|
|
income_sheet = SpecObject.set_specify_instance(
|
|
|
|
instance=FinancialData.IncomeSheet,
|
|
|
|
data=item
|
|
|
|
)
|
|
|
|
for financial in financial_data_list:
|
2022-05-26 23:31:38 +08:00
|
|
|
if year == financial.report_period:
|
2022-05-26 17:10:26 +08:00
|
|
|
financial.income_sheet = income_sheet
|
2022-05-26 03:39:35 +08:00
|
|
|
|
|
|
|
DB_GUA.insert_single_data(
|
|
|
|
"企业数据",
|
|
|
|
"工商信息",
|
|
|
|
basic_business_info.fields_toggle()
|
|
|
|
)
|
|
|
|
|
2022-05-26 14:35:09 +08:00
|
|
|
DB_GUA.insert_many_data(
|
|
|
|
"企业数据",
|
|
|
|
"财务数据",
|
|
|
|
[item.fields_toggle() for item in financial_data_list]
|
|
|
|
)
|
|
|
|
|
|
|
|
DB_GUA.insert_many_data(
|
|
|
|
"企业数据",
|
|
|
|
"客户信息",
|
|
|
|
[item.fields_toggle() for item in customer_info_list]
|
|
|
|
)
|
|
|
|
|
|
|
|
DB_GUA.insert_many_data(
|
|
|
|
"企业数据",
|
|
|
|
"担保区域分布",
|
|
|
|
[item.fields_toggle() for item in region_distribution_list]
|
|
|
|
)
|
|
|
|
|
|
|
|
DB_GUA.insert_many_data(
|
|
|
|
"企业数据",
|
|
|
|
"担保行业分布",
|
|
|
|
[item.fields_toggle() for item in industry_distribution_list]
|
|
|
|
)
|
|
|
|
|
|
|
|
DB_GUA.insert_many_data(
|
|
|
|
"企业数据",
|
|
|
|
"担保金额分布",
|
|
|
|
[item.fields_toggle() for item in guarantee_distribution_list]
|
|
|
|
)
|