update ESG报告管理端相关接口

This commit is contained in:
P3ngSaM 2022-03-17 14:49:02 +08:00
parent c8bd39ba4f
commit 2a79dfc839
4 changed files with 387 additions and 12 deletions

View File

@ -1,6 +1,7 @@
from Manage.rating.scripts import rating_result_script, search_rating_script, fill_detailss_script, risk_info_script, \
report_edit_script, report_delete_script, report_create_script, get_report_text_model_impl, \
get_company_process_script
get_company_process_script, search_esg_rating_result_script, fill_esg_details_script, esg_risk_info_script, \
get_esg_report_text_impl, esg_report_edit_script, esg_report_delete_script, esg_report_create_script
class Rating:
@ -95,3 +96,67 @@ class Rating:
data = get_company_process_script(self.types, self.rid, self.cid)
return data
def search_esg_rating_result(self):
"""
查询ESG评价结果
Parameters:
-
Returns:
result: 查询结果
"""
result = search_esg_rating_result_script(self.rid)
return result
def search_esg_fill_details(self):
"""
查看ESG填报详情信息
Parameters:
-
Returns:
result: 查询结果
"""
result = fill_esg_details_script(self.rid)
return result
def search_esg_risk_info(self):
"""
查看风险数据信息
Parameters:
-
Returns:
result: 查询结果
"""
result = esg_risk_info_script(self.rid)
return result
def get_esg_report_text(self):
"""
获取报告text_model
"""
return get_esg_report_text_impl(self.rid)
def esg_report_edit(self, text_model):
"""
编辑报告数据
Parameters:
text_model: 报告数据
Returns:
result: 编辑结果
"""
result = esg_report_edit_script(self.rid, text_model)
return result
def esg_report_delete(self):
result = esg_report_delete_script(self.rid)
return result
def esg_report_create(self):
"""
报告生成
Parameters:
-
Returns:
result: 生成结果
"""
result = esg_report_create_script(self.rid, self.cid)
return result

View File

@ -120,6 +120,21 @@ def delete_report_pdf(fid):
return True
def delete_esg_report_pdf(fid):
"""
更新评价数据
Parameters:
fid: 评价ID
Returns:
record: 删除结果
"""
database = '评价'
collection = 'esg报告'
fs = GridFS(client[database], collection)
fs.delete(ObjectId(fid))
return True
def find_risk_info_records(rid):
"""
查询风险数据信息
@ -149,6 +164,21 @@ def update_report_data(rid, data):
return info
def update_esg_report_data(rid, data):
"""
更新ESG报告数据
Parameters:
rid: 评价ID
data: 报告数据
Returns:
record: 更新结果
"""
collection = client['评价']['ESG报告数据']
res = collection.update_one({"评价ID": rid}, {"$set": data})
info = res.raw_result['updatedExisting']
return info
def find_report_data(rid):
"""
查询报告数据
@ -163,6 +193,20 @@ def find_report_data(rid):
return record
def find_esg_report_data(rid):
"""
查询报告数据
Parameters:
rid: 评价ID
Returns:
record: 报告数据
"""
collection = client['评价']['ESG报告数据']
data = collection.find({"评价ID": rid}, {'_id': False})
record = list(data)
return record
def FIND_DATA_FILTER(param1, param2, param3, param4):
"""
查询数据

View File

@ -164,3 +164,124 @@ def get_company_process():
info = rating.get_company_process()
status = 200 if info else 210
return {"info": info}, status
@rating_route.route('/esg_rating_result', methods=['POST'])
@api_secret
def esg_rating_result():
"""
查询esg评价结果
Parameters:
-
Returns:
info: 返回信息
result: 返回数据
"""
try:
rating = Rating()
rating.rid = request.json['rid']
data = rating.search_esg_rating_result()
return {"info": '查询成功', "result": data}, 200
except KeyError:
return {"info": "键值错误"}, 400
except TypeError:
return {"info": "参数错误"}, 400
@rating_route.route('/esg_details', methods=['POST'])
@api_secret
def esg_fill_details():
"""
查看ESG填报详情信息
Parameters:
-
Returns:
info: 返回信息
result: 返回数据
"""
try:
rating = Rating()
rating.rid = request.json['rid']
data = rating.search_esg_fill_details()
return {"info": '查询成功', "result": data}, 200
except KeyError:
return {"info": "键值错误"}, 400
except TypeError:
return {"info": "参数错误"}, 400
@rating_route.route('/esg_risk', methods=['POST'])
@api_secret
def esg_risk_info():
"""
查看ESG风险数据信息
Parameters:
-
Returns:
info: 返回信息
result: 返回数据
"""
try:
rating = Rating()
rating.rid = request.json['rid']
data = rating.search_esg_risk_info()
return {"info": '查询成功', "result": data}, 200
except KeyError:
return {"info": "键值错误"}, 400
except TypeError:
return {"info": "参数错误"}, 400
@rating_route.route('/get_esg_report_text', methods=['POST'])
@api_secret
def get_esg_report_text_route(**kwargs):
"""
查看ESG报告text_model
"""
rating = Rating()
rating.rid = request.json['rid']
result = rating.get_esg_report_text()
return {"info": "查询成功", "result": result}, 200
@rating_route.route('/esg_report_edit_save_delete', methods=['POST'])
@api_secret
def esg_report_edit_save_delete(**kwargs):
"""
ESG报告编辑保存删除操作
Parameters:
-
Returns:
info: 生成结果
"""
try:
def edit():
info = rating.esg_report_edit(text_model)
return info
def delete():
info = rating.esg_report_delete()
return info
def create():
info = rating.esg_report_create()
return info
rating = Rating()
rating.rid = request.json['rid']
rating.cid = request.json['cid']
text_model = request.json['text_model']
step_01 = edit()
if step_01:
step_02 = delete()
if step_02:
step_03 = create()
return step_03
else:
return {"info": "删除失败"}
else:
return {"info": "此公司不存在报告数据"}
except KeyError:
return {"info": "键值错误"}, 400
except TypeError:
return {"info": "参数错误"}, 400

View File

@ -3,7 +3,8 @@ import requests
from Manage.rating.db import find_rating_records, find_rating_result_records, find_fill_details_records, \
find_risk_info_records, update_report_data, find_evaluation_records, delete_report_pdf, update_evaluation_records, \
find_report_data, update_comprehensive_records, FIND_DATA_FILTER, find_data
find_report_data, update_comprehensive_records, FIND_DATA_FILTER, find_data, update_esg_report_data, \
delete_esg_report_pdf, find_esg_report_data
def search_rating_script(query, skip, limit):
@ -148,6 +149,21 @@ def get_report_text_model_impl(rid):
return data
def get_esg_report_text_impl(rid):
data = FIND_DATA_FILTER("评价", "ESG报告数据", {"评价ID": rid}, {"企业ID": 1, "报告内容": 1})
if not data:
return {}
else:
data = data[0]
data['cid'] = data['企业ID']
data['text_model'] = data['报告内容']
data.pop('企业ID')
data.pop('报告内容')
return data
def get_company_process_script(types, rid, cid):
"""
查询企业测评流程
@ -160,7 +176,6 @@ def get_company_process_script(types, rid, cid):
"""
process_01 = ['问卷填报', '财务数据填报', '清洗风险数据']
process_02 = ['数据填报', '清洗风险数据']
process_03 = ['模型打分', '报告生成', '证书生成']
process_04 = ['综合信用评价主页', '财务要素评价主页', '公司风险分析主页', '分析指标明细主页']
process_05 = ['主页ESG数据生成']
@ -169,39 +184,59 @@ def get_company_process_script(types, rid, cid):
综合评价流程
"""
result = list()
insert_01 = dict()
insert_01 = {"综合评价流程": 1}
insert_02 = dict()
insert_03 = dict()
insert_04 = dict()
insert_05 = dict()
insert_06 = dict()
for k, v in data.items():
if k in process_01:
insert_01[k] = v
elif k in process_03:
insert_02[k] = v
elif k in process_04:
elif k == '模型打分':
insert_03[k] = v
elif k == '报告生成':
insert_04[k] = v
elif k == '证书生成':
insert_05[k] = v
elif k in process_04:
insert_06[k] = v
result.append(insert_01)
result.append(insert_02)
result.append(insert_03)
result.append(insert_04)
result.append(insert_05)
result.append(insert_06)
return result
def handle_esg_process(data):
"""
综合评价流程
esg评价流程
"""
result = list()
insert_01 = dict()
insert_01 = {"ESG评价流程": 1}
insert_02 = dict()
insert_03 = dict()
insert_04 = dict()
insert_05 = dict()
insert_06 = dict()
for k, v in data.items():
if k in process_02:
insert_01[k] = v
elif k in process_03:
insert_02[k] = v
elif k in process_05:
elif k == '模型打分':
insert_03[k] = v
elif k == '报告生成':
insert_04[k] = v
elif k == '证书生成':
insert_05[k] = v
elif k == '主页ESG数据生成':
insert_06[k] = v
result.append(insert_01)
result.append(insert_02)
result.append(insert_03)
result.append(insert_04)
result.append(insert_05)
result.append(insert_06)
return result
records = find_data("评价", types, {"评价ID": rid, "企业ID": cid})
@ -215,3 +250,113 @@ def get_company_process_script(types, rid, cid):
return info
else:
return {}
def search_esg_rating_result_script(rid):
"""
根据rid查询ESG评价结果
Parameters:
rid: 评价ID
Returns:
result: 结果数据
"""
result = find_data("评价", "ESG评价结果", {"评价ID": rid})
return result
def fill_esg_details_script(rid):
"""
根据rid查询esg评填报详情信息
Parameters:
rid: 评价ID
Returns:
result: 结果数据
"""
result = find_data("评价", "ESG评价填报", {"评价ID": rid})
return result
def esg_risk_info_script(rid):
"""
根据rid查询esg风险信息
Parameters:
rid: 评价ID
Returns:
result: 结果数据
"""
result = find_data("评价", "ESG风险数据", {"评价ID": rid})
return result
def esg_report_edit_script(rid, text_model):
"""
根据rid编辑报告数据
Parameters:
rid: 评价ID
text_model: 报告数据
Returns:
result: 编辑结果
"""
insert_data = dict()
insert_data['报告内容'] = text_model
result = update_esg_report_data(rid, insert_data)
return result
def esg_report_delete_script(rid):
"""
根据rid删除报告相关数据数据
Parameters:
rid: 评价ID
Returns:
result: 删除结果
"""
data = find_evaluation_records(rid)
# 判断是否存在这条评价记录
if len(data) == 0:
return False
else:
eval_data = data[0]
if eval_data['报告fid']:
fid = eval_data['报告fid']
res = delete_esg_report_pdf(fid)
if res:
r = update_evaluation_records(rid, {"报告fid": None})
return r
else:
return res
def esg_report_create_script(rid, cid):
"""
根据rid查询报告数据并生成PDF报告
Parameters:
rid: 评价ID
cid: 企业ID
Returns:
result: 生成结果
"""
text_model = dict()
text_model['company'] = find_esg_report_data(rid)[0]['企业名称']
text_model['cid'] = cid
text_model['rid'] = rid
def generate_report(text_data):
"""
调用报告生成接口
Parameters:
text_data: 报告数据
Returns:
result: type 生成结果
"""
url = 'http://api.fecribd.com/tfse_rating/report/generate_esg_report'
token = 'X0gSlC!YE8jmr2jJr&ilcjS83j!tsoh5'
headers = {'token': token, 'Content-Type': 'application/json;charset=UTF-8'}
res = requests.post(url, headers=headers, data=json.dumps(text_data))
return res
r = generate_report(text_model)
result = r.json()
if result['info'] == '生成报告成功':
update_evaluation_records(rid, {"报告fid": result['result']['FileID']})
return result