tfse-admin-api-v0.2/Manage/rating/scripts.py

363 lines
9.8 KiB
Python

import json
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, update_esg_report_data, \
delete_esg_report_pdf, find_esg_report_data
def search_rating_script(query, skip, limit):
"""
企业评价记录搜索
Parameters:
query: 查询条件
skip: 默认0
limit: 查询条数
Returns:
result: 结果数据
"""
result = find_rating_records(query, skip, limit)
for item in result:
item['报告fid'] = '/file/get_company_report?file_id={}'.format(item['报告fid'])
item['证书fid'] = '/file/get_certification?file_id={}'.format(item['证书fid'])
return result
def rating_result_script(rid):
"""
根据rid查询评价结果
Parameters:
rid: 评价ID
Returns:
result: 结果数据
"""
result = find_rating_result_records(rid)
return result
def fill_detailss_script(rid):
"""
根据rid查询评填报详情信息
Parameters:
rid: 评价ID
Returns:
result: 结果数据
"""
result = find_fill_details_records(rid)
return result
def risk_info_script(rid):
"""
根据rid查询风险数据
Parameters:
rid: 评价ID
Returns:
result: 结果数据
"""
result = find_risk_info_records(rid)
return result
def report_edit_script(rid, text_model):
"""
根据rid编辑报告数据
Parameters:
rid: 评价ID
text_model: 报告数据
Returns:
result: 编辑结果
"""
insert_data = dict()
insert_data['报告内容'] = text_model
result = update_report_data(rid, insert_data)
return result
def 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_report_pdf(fid)
if res:
r = update_evaluation_records(rid, {"报告fid": None})
return r
else:
return res
def report_create_script(rid, cid):
"""
根据rid查询报告数据并生成PDF报告
Parameters:
rid: 评价ID
cid: 企业ID
Returns:
result: 生成结果
"""
text_model = dict()
text_model['text_model'] = find_report_data(rid)[0]
def generate_report(text_data):
"""
调用报告生成接口
Parameters:
text_data: 报告数据
Returns:
result: type 生成结果
"""
url = 'http://139.9.249.34:51012/tfse_rating/report/generate_pdf_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']})
result['result']['FileID'] = '/file/get_company_report?file_id={}'.format(result['result']['FileID'])
update_comprehensive_records(cid, {"信用分析.查看报告": result['result']['FileID']})
return result
def get_report_text_model_impl(rid):
data = FIND_DATA_FILTER("评价", "报告数据", {"评价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_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):
"""
查询企业测评流程
Parameters:
types str 数据集名称
rid str 评价ID
cid str 企业ID
Returns:
result dict 流程数据
"""
process_01 = ['问卷填报', '财务数据填报', '清洗风险数据']
process_02 = ['数据填报', '清洗风险数据']
process_04 = ['综合信用评价主页', '财务要素评价主页', '公司风险分析主页', '分析指标明细主页']
process_05 = ['主页ESG数据生成']
def handle_process(data):
"""
综合评价流程
"""
result = list()
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_02[k] = v
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 = {"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_02[k] = v
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})
if len(records) > 0:
process = records[0]['评价流程']
if types == '综合评价流程':
info = handle_process(process)
else:
info = handle_esg_process(process)
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