guarantee-admin-api-v0.2/Modules/Company/CompanyManageImpl.py

403 lines
12 KiB
Python
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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