经营风险分析
This commit is contained in:
parent
d2b60763c3
commit
717e5fc808
|
@ -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
|
||||
|
|
|
@ -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):
|
||||
"""经营风险分析"""
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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)
|
Loading…
Reference in New Issue