403 lines
12 KiB
Python
403 lines
12 KiB
Python
from DBHelper.MongoHelperInstance import DB_GUA
|
||
from Modules.Common.CommonUtils import CommonUtils
|
||
from Modules.Company.CompanyObject import GuaranteeInfo
|
||
from Modules.Company.CompanyUtils import CompanyUtils
|
||
from Utils.CommonUtil import trans_fields_name, sub_dict, get_attr, make_multistage_update_body
|
||
from Utils.ErrorUtil import APIReturnError
|
||
from Utils.ObjUtil import SpecObject
|
||
|
||
|
||
class CompanyManageImpl(object):
|
||
|
||
@staticmethod
|
||
def search(**kwargs):
|
||
|
||
total = DB_GUA.find_all_data_with_count(
|
||
"企业数据",
|
||
"公司概览",
|
||
{"企业名称": {"$regex": kwargs["company_name"]}}
|
||
)
|
||
|
||
items = DB_GUA.find_data_by_page_with_sort(
|
||
"企业数据",
|
||
"公司概览",
|
||
{"企业名称": {"$regex": kwargs["company_name"]}},
|
||
["企业ID", "企业名称", "所在省份", "所在城市", "信用评级", "评级日期", "公司标签"],
|
||
{"更新时间": -1},
|
||
kwargs["page_size"],
|
||
kwargs["page_no"]
|
||
)
|
||
|
||
trans_items = list()
|
||
|
||
for item in items:
|
||
trans_item = trans_fields_name(
|
||
item,
|
||
["企业ID", "所在省份", "所在城市", "信用评级", "评级日期", "公司标签"],
|
||
["cid", "省份", "地级市", "级别", "日期", "标签"]
|
||
)
|
||
trans_items.append(trans_item)
|
||
|
||
result = {
|
||
"total": total,
|
||
"records": trans_items
|
||
}
|
||
|
||
return result
|
||
|
||
@staticmethod
|
||
def basic_data(**kwargs):
|
||
|
||
item = DB_GUA.find_single_data(
|
||
"企业数据",
|
||
"工商信息",
|
||
{"企业ID": kwargs["cid"]},
|
||
[
|
||
"企业名称", "企业简称", "企业类型", "担保类型", "统一社会信用代码",
|
||
"组织代码", "成立时间", "注册资本(万元)", "实缴资本(万元)", "经营范围",
|
||
"所在省份", "所在城市", "注册地址", "通信地址", "电子邮箱",
|
||
"联系电话", "参保人数", "公司定位", "法定代表人", "实际控制人",
|
||
"高管信息", "股东信息"
|
||
]
|
||
)
|
||
|
||
if not item:
|
||
result = {}
|
||
else:
|
||
result = dict()
|
||
|
||
business_info = sub_dict(
|
||
item,
|
||
[
|
||
"企业名称", "企业简称", "企业类型", "担保类型", "统一社会信用代码",
|
||
"组织代码", "成立时间", "注册资本(万元)", "实缴资本(万元)", "经营范围",
|
||
"所在省份", "所在城市", "注册地址", "通信地址", "电子邮箱",
|
||
"联系电话", "参保人数", "公司定位", "法定代表人", "实际控制人"
|
||
]
|
||
)
|
||
|
||
result["工商信息"] = business_info
|
||
result["高管信息"] = get_attr(item, ["高管信息"], default=[])
|
||
result["股东信息"] = get_attr(item, ["股东信息"], default=[])
|
||
|
||
return result
|
||
|
||
@staticmethod
|
||
def get_financial_data(**kwargs):
|
||
|
||
items = DB_GUA.find_all_data(
|
||
"企业数据",
|
||
"财务数据",
|
||
{"企业ID": kwargs["cid"]},
|
||
[
|
||
"报告期", "资产负债表", "利润表", "补充数据表"
|
||
]
|
||
)
|
||
|
||
if not items:
|
||
result = {}
|
||
else:
|
||
|
||
balance_sheets = list()
|
||
profit_statements = list()
|
||
appendix_sheets = list()
|
||
|
||
for item in items:
|
||
balance_sheet = item["资产负债表"]
|
||
profit_statement = item["利润表"]
|
||
appendix_sheet = item["补充数据表"]
|
||
|
||
balance_sheet["报告期"] = item["报告期"]
|
||
profit_statement["报告期"] = item["报告期"]
|
||
appendix_sheet["报告期"] = item["报告期"]
|
||
|
||
balance_sheets.append(balance_sheet)
|
||
profit_statements.append(profit_statement)
|
||
appendix_sheets.append(appendix_sheet)
|
||
|
||
result = {
|
||
"资产负债表": balance_sheets,
|
||
"利润表": profit_statements,
|
||
"补充数据表": appendix_sheets,
|
||
}
|
||
|
||
return result
|
||
|
||
@staticmethod
|
||
def edit_financial_data(**kwargs):
|
||
cid = kwargs['cid']
|
||
report_date = kwargs['report_date']
|
||
update_data = kwargs['update_data']
|
||
|
||
update_body = make_multistage_update_body(update_data)
|
||
|
||
if update_body is None:
|
||
raise APIReturnError("输入格式错误", 202)
|
||
|
||
if type(list(update_body.values())[0]) not in [int, float, type(None)]:
|
||
raise APIReturnError("输入格式错误", 202)
|
||
|
||
DB_GUA.update_single_data(
|
||
"企业数据",
|
||
"财务数据",
|
||
{"企业ID": cid, "报告期": report_date},
|
||
update_body
|
||
)
|
||
|
||
@staticmethod
|
||
def get_guarantee_info(**kwargs):
|
||
|
||
items = DB_GUA.find_all_data(
|
||
"企业数据",
|
||
"担保数据",
|
||
{"企业ID": kwargs["cid"]},
|
||
[
|
||
"担保ID", "项目名称", "被担保人", "担保类型", "担保方式", "担保余额(万元)",
|
||
"解除金额(万元)", "责任担保余额(万元)", "担保开始日期", "担保结束日期",
|
||
"行业", "省份", "地级市", "备注"
|
||
]
|
||
)
|
||
|
||
if not items:
|
||
result = []
|
||
else:
|
||
result = items
|
||
|
||
return result
|
||
|
||
@staticmethod
|
||
def new_guarantee_info(**kwargs):
|
||
data = kwargs['data']
|
||
cid = data['企业ID']
|
||
gid = CompanyUtils.make_new_cid()
|
||
data['担保ID'] = gid
|
||
new_data = SpecObject.set_specify_instance(
|
||
instance=GuaranteeInfo,
|
||
data=data
|
||
)
|
||
DB_GUA.upsert_single_data(
|
||
'企业数据',
|
||
'担保数据',
|
||
{'企业ID': cid, '担保ID': gid},
|
||
new_data.fields_toggle()
|
||
)
|
||
return '新增成功'
|
||
|
||
@staticmethod
|
||
def edit_guarantee_info(**kwargs):
|
||
data = kwargs['data']
|
||
cid = data['企业ID']
|
||
gid = data['担保ID']
|
||
edit_data = SpecObject.set_specify_instance(
|
||
instance=GuaranteeInfo,
|
||
data=data
|
||
)
|
||
DB_GUA.update_single_data(
|
||
'企业数据',
|
||
'担保数据',
|
||
{'企业ID': cid, '担保ID': gid},
|
||
edit_data.fields_toggle()
|
||
)
|
||
return '修改成功'
|
||
|
||
@staticmethod
|
||
def get_repay(**kwargs):
|
||
|
||
items = DB_GUA.find_all_data(
|
||
"企业数据",
|
||
"代偿信息",
|
||
{"担保ID": kwargs["gid"]},
|
||
[
|
||
"项目名称", "代偿金额(万元)", "代偿回收金额(万元)", "代偿日期"
|
||
]
|
||
)
|
||
|
||
if not items:
|
||
result = []
|
||
else:
|
||
result = items
|
||
|
||
return result
|
||
|
||
@staticmethod
|
||
def edit_repay(**kwargs):
|
||
edit_data = SpecObject.set_specify_instance(
|
||
instance=GuaranteeInfo.CompensationInfo,
|
||
data=kwargs['data']
|
||
)
|
||
DB_GUA.update_single_data(
|
||
"企业数据",
|
||
"代偿信息",
|
||
{"担保ID": kwargs['data']['担保ID'], "项目名称": kwargs['data']['项目名称']},
|
||
edit_data.fields_toggle()
|
||
)
|
||
return '修改成功'
|
||
|
||
@staticmethod
|
||
def new_repay(**kwargs):
|
||
edit_data = SpecObject.set_specify_instance(
|
||
instance=GuaranteeInfo.CompensationInfo,
|
||
data=kwargs['data']
|
||
)
|
||
DB_GUA.insert_single_data(
|
||
"企业数据",
|
||
"代偿信息",
|
||
edit_data.fields_toggle()
|
||
)
|
||
return '新增成功'
|
||
|
||
@staticmethod
|
||
def get_rating_records(**kwargs):
|
||
|
||
cid = kwargs["cid"]
|
||
page_no = kwargs["page_no"]
|
||
page_size = kwargs["page_size"]
|
||
|
||
total = DB_GUA.find_all_data_with_count(
|
||
"评级数据",
|
||
"评级记录",
|
||
{"企业ID": cid}
|
||
)
|
||
|
||
records = DB_GUA.find_data_by_page_with_sort(
|
||
"评级数据",
|
||
"评级记录",
|
||
{"企业ID": cid},
|
||
["评级ID", "报告期", "所在省份", "所在城市", "评级时间", "信用级别", "信用得分", "评级报告", "评级状态"],
|
||
{"评级时间": -1},
|
||
page_size,
|
||
page_no
|
||
)
|
||
|
||
if records:
|
||
for record in records:
|
||
try:
|
||
record['评级报告'] = '/admin/file/credit_report?&file_id={}'.format(record['评级报告'])
|
||
except KeyError:
|
||
continue
|
||
|
||
result = {
|
||
"total": total,
|
||
"records": records
|
||
}
|
||
|
||
return result
|
||
|
||
@staticmethod
|
||
def customer_info(**kwargs):
|
||
|
||
cid = kwargs["cid"]
|
||
page_no = kwargs["page_no"]
|
||
page_size = kwargs["page_size"]
|
||
total = DB_GUA.find_all_data_with_count(
|
||
"企业数据",
|
||
"担保数据-客户信息",
|
||
{"企业ID": cid}
|
||
)
|
||
|
||
records = DB_GUA.find_data_by_page_with_sort(
|
||
"企业数据",
|
||
"担保数据-客户信息",
|
||
{"企业ID": cid},
|
||
["企业ID", "客户名称", "担保类型", "在保余额", "融资担保责任余额", "担保起始日", "担保截止日"],
|
||
{"担保起始日": -1},
|
||
page_size,
|
||
page_no
|
||
)
|
||
|
||
result = {
|
||
"total": total,
|
||
"records": records
|
||
}
|
||
|
||
return result
|
||
|
||
@staticmethod
|
||
def regional_info(**kwargs):
|
||
|
||
cid = kwargs["cid"]
|
||
page_no = kwargs["page_no"]
|
||
page_size = kwargs["page_size"]
|
||
total = DB_GUA.find_all_data_with_count(
|
||
"企业数据",
|
||
"担保数据-区域分布",
|
||
{"企业ID": cid}
|
||
)
|
||
|
||
records = DB_GUA.find_data_by_page_with_sort(
|
||
"企业数据",
|
||
"担保数据-区域分布",
|
||
{"企业ID": cid},
|
||
["企业ID", "地区", "报告期", "年末在保余额", "年末在保责任余额", "当年新增在保余额", "当年新增在保责任余额"],
|
||
{"报告期": -1},
|
||
page_size,
|
||
page_no
|
||
)
|
||
|
||
result = {
|
||
"total": total,
|
||
"records": records
|
||
}
|
||
|
||
return result
|
||
|
||
@staticmethod
|
||
def industry_info(**kwargs):
|
||
|
||
cid = kwargs["cid"]
|
||
page_no = kwargs["page_no"]
|
||
page_size = kwargs["page_size"]
|
||
total = DB_GUA.find_all_data_with_count(
|
||
"企业数据",
|
||
"担保数据-行业分布",
|
||
{"企业ID": cid}
|
||
)
|
||
|
||
records = DB_GUA.find_data_by_page_with_sort(
|
||
"企业数据",
|
||
"担保数据-行业分布",
|
||
{"企业ID": cid},
|
||
["企业ID", "报告期", "所属行业", "年末在保余额", "年末在保责任余额", "当年新增在保余额", "当年新增在保责任余额"],
|
||
{"报告期": -1},
|
||
page_size,
|
||
page_no
|
||
)
|
||
|
||
result = {
|
||
"total": total,
|
||
"records": records
|
||
}
|
||
|
||
return result
|
||
|
||
@staticmethod
|
||
def guarantee_balance_info(**kwargs):
|
||
|
||
cid = kwargs["cid"]
|
||
page_no = kwargs["page_no"]
|
||
page_size = kwargs["page_size"]
|
||
total = DB_GUA.find_all_data_with_count(
|
||
"企业数据",
|
||
"担保数据-担保金额分布",
|
||
{"企业ID": cid}
|
||
)
|
||
|
||
records = DB_GUA.find_data_by_page_with_sort(
|
||
"企业数据",
|
||
"担保数据-担保金额分布",
|
||
{"企业ID": cid},
|
||
["企业ID", "报告期", "100万以下(含100万)", "500万以下(含500万)", "500-1000万(含1000万)", "1000-3000万(含3000万)",
|
||
"3000-5000万(含5000万)"
|
||
"3000-5000万(含5000万)", "5000-8000万(含8000万)", "8000-10000万(含10000万)", "10000万以上", "合计"],
|
||
{"报告期": -1},
|
||
page_size,
|
||
page_no
|
||
)
|
||
|
||
result = {
|
||
"total": total,
|
||
"records": records
|
||
}
|
||
|
||
return result
|