经营风险分析

This commit is contained in:
王思川 2022-04-24 10:25:45 +08:00
parent d2b60763c3
commit 717e5fc808
4 changed files with 107 additions and 14 deletions

View File

@ -190,3 +190,28 @@ class CompanyImpl(Company):
financial_analysis.index_details = self.instance_list_to_set(instance=FinancialAnalysis.CompareToIndustry.FinancialAnalysisDetails, data=result['指标详情'])
self.financial_analysis = financial_analysis
def get_operating_risk(self):
"""获取经营风险分析数据"""
result = self.db.find_single_data_with_single_sort(
"企业数据",
"经营风险分析",
{"企业ID": self.cid},
["评价ID", "更新日期", "风险级别", "风险分数", "列入失信名单", "合规风险", "经营风险", "周边风险", "变更记录"],
{"更新日期": -1}
)
if result:
operating_risk = OperatingRisk()
operating_risk.rid = result['评价ID']
operating_risk.update_time = result["更新日期"]
operating_risk.risk_level = result['风险级别']
operating_risk.risk_score = result['风险分数']
operating_risk.in_untrustworthy_list = result['列入失信名单']
operating_risk.compliance_risk = self.instance_list_to_set(instance=OperatingRisk().InfluenceObj, data=result['合规风险'])
operating_risk.operating_risk = self.instance_list_to_set(instance=OperatingRisk().InfluenceObj, data=result['经营风险'])
operating_risk.peripheral_risk = self.instance_list_to_set(instance=OperatingRisk().DetailObj, data=result['周边风险'])
operating_risk.change_records = self.instance_list_to_set(instance=OperatingRisk().InfluenceObj, data=result['变更记录'])
self.operating_risk_analysis = operating_risk

View File

@ -415,11 +415,72 @@ class FinancialAnalysis(SpecObject):
return _dict_
class OperatingRisk(SpecObject):
"""经营风险"""
class InfluenceObj(SpecObject):
"""影响统计"""
name = ValidateAttr(field='name', type=str)
total = ValidateAttr(field='total', type=int)
influence = ValidateAttr(field='influence', type=str)
fields_map = {
"name": "类型",
"total": "数量",
"influence": "影响"
}
class DetailObj(SpecObject):
"""详细统计"""
name = ValidateAttr(field='name', type=str)
total = ValidateAttr(field='total', type=int)
detail = ValidateAttr(field='detail', type=list)
fields_map = {
"name": "类型",
"total": "数量",
"detail": "详情"
}
cid = ValidateAttr(field='cid', type=str, length=8, default=None)
update_time = ValidateAttr(field='update_time', func=Validate.time_format)
rid = ValidateAttr(field='rid', type=str, length=8, default='')
risk_level = ValidateAttr(field='risk_level', type=str, in_list=['', '较高', '中等', '警示', ''], default='')
risk_score = ValidateAttr(field='risk_score', type=[int, float], default='')
in_untrustworthy_list = ValidateAttr(field='in_untrustworthy_list', type=str, in_list=["", ""], default='')
compliance_risk = ValidateAttr(field='compliance_risk', instance_list=InfluenceObj)
operating_risk = ValidateAttr(field='operating_risk', instance_list=InfluenceObj)
peripheral_risk = ValidateAttr(field='peripheral_risk', instance_list=DetailObj)
change_records = ValidateAttr(field='change_records', instance_list=InfluenceObj)
fields_map = {
"cid": "企业ID",
"update_time": "更新日期",
"rid": "评价ID",
"risk_level": "风险级别",
"risk_score": "风险分数",
"in_untrustworthy_list": "列入失信名单",
"compliance_risk": "合规风险统计",
"operating_risk": "经营风险统计",
"peripheral_risk": "周边风险统计",
"change_records": "变更记录统计"
}
def dict_to_return(self):
_dict_ = self.dict_to_show(columns=["更新日期", "风险分数", "风险级别", "列入失信名单", "合规风险统计", "经营风险统计", "周边风险统计", "变更记录统计"])
_dict_["合规风险"] = _dict_.pop("合规风险统计")
_dict_["经营风险"] = _dict_.pop("经营风险统计")
_dict_["周边风险"] = _dict_.pop("周边风险统计")
_dict_["变更记录"] = _dict_.pop("变更记录统计")
return _dict_
class Company(SpecObject):
"""企业"""
cid = ValidateAttr(field='cid', type=str, length=8)
name = ValidateAttr(field='name', type=str)
update_time = ValidateAttr(field='update_time', type=dict)
industry_l1 = ValidateAttr(field='industry_l1', type=str)
industry_l2 = ValidateAttr(field='industry_l2', type=str)
basic_info = ValidateAttr(field='basic_info', type=BasicInfo)
@ -428,7 +489,7 @@ class Company(SpecObject):
cc_rating_result = ValidateAttr(field='cc_rating_result', type=CCRating)
esg_rating_result = ValidateAttr(field='esg_rating_result', type=ESGRating)
financial_analysis = ValidateAttr(field="financial_analysis", type=FinancialAnalysis)
update_time = ValidateAttr(field='update_time', type=dict)
operating_risk_analysis = ValidateAttr(field="operating_risk_analysis", type=OperatingRisk)
fields_map = {
"cid": "企业ID",
@ -441,6 +502,7 @@ class Company(SpecObject):
"cc_rating_result": "综信评价结果",
"esg_rating_result": "ESG评价结果",
"financial_analysis": "财务要素分析",
"operating_risk_analysis": "经营风险分析",
"update_time": "更新时间"
}
@ -461,3 +523,6 @@ class Company(SpecObject):
def get_financial_analysis(self):
"""财务要素分析"""
def get_operating_risk(self):
"""经营风险分析"""

View File

@ -113,4 +113,18 @@ def financial_elements_route(**kwargs):
@company_route.route('/operating_risk', methods=['GET'])
@verify_token
def operating_risk_route(**kwargs):
"""经营风险分析"""
try:
impl = CompanyImpl()
impl.cid = kwargs['cid']
impl.get_operating_risk()
if impl.operating_risk_analysis:
result = impl.operating_risk_analysis.dict_to_return()
return {"info": "查询结果", "result": result}, 200
else:
return {"info": "查询结果", "result": {}}, 200
except ReturnConditionCheckFailed as e:
e.log_error()
return {"info": e.failed_info}, e.status_code
# except KeyError:
# return {"info": "参数异常"}, 400

View File

@ -229,14 +229,3 @@ class MongoHelper:
"""
fs = GridFS(self.client[param1], param2)
fs.delete(ObjectId(param3))
def insert_single_data(self, param1, param2, param3):
"""
插入一条数据
param1: str 数据库
param2: str 数据集
param3: obj 插入数据
return: None
"""
collection = self.client[param1][param2]
collection.insert_one(param3)