update esg包重写

This commit is contained in:
P3ngSaM 2022-04-12 10:48:38 +08:00
parent 68e9b34b43
commit be1dbb9da9
4 changed files with 165 additions and 4 deletions

View File

@ -405,9 +405,9 @@ class RatingImpl(CreditRatingInput, RatingInfo, BusinessQuestionnaire, Financial
# 更新完成时间和进行状态
self.finish_time = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())
self.finish_date = time.strftime("%Y-%m-%d", time.localtime())
update_time = self.rating_info_dict_to_save(columns=['评价完成时间', '评价完成日期'])
self.status = "完成"
update_time = self.rating_info_dict_to_save(columns=['进行状态', '评价完成时间', '评价完成日期'])
self.db.update_single_data('企业数据', '评价记录', rid, update_time)
self.db.update_single_data("企业数据", "评价记录", rid, {"进行状态": "完成"})
return "执行成功", 200

View File

@ -314,7 +314,148 @@ class EsgRatingImpl(RatingInfo, EsgRatingInput, EnvironmentInput, SocietyInput,
rid,
input_data
)
update_process_status(rid, {"评价流程.数据填报": 1})
update_process_status(rid['评价ID'], {"评价流程.数据填报": 1})
rating_input()
return '保存成功'
def exec_esg_rating(self):
"""提交数据开始esg评价"""
def check_rating_record():
"""校验评价记录"""
self.project = 'ESG评价'
self.status = '进行'
find = self.rating_info_dict_to_save(columns=['企业ID', '评价项目', '进行状态'])
record = self.db.find_single_data(
'企业数据',
'评价记录',
find,
['评价ID']
)
return record
rid = check_rating_record()
if not rid:
return "没有正在进行的评价", 200
self.submit_time = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())
update_time = self.rating_info_dict_to_save(columns=['提交填报时间'])
self.db.update_single_data('企业数据', '评价记录', rid, update_time)
def get_rating_data():
"""获取打分需要的数据"""
input_data = self.db.find_single_data(
'ESG评价数据',
'填报数据',
rid,
["评价ID", "企业ID", "企业名称", "评价年度", "所属行业", "公司当年收入(万元)", "环境问卷", "社会问卷", "治理问卷"]
)
risk_data = self.db.find_single_data(
'ESG评价数据',
'风险数据',
rid,
["严重违法", "失信人", "法律诉讼", "税收违法", "经营异常", "行政处罚", "被执行人"]
)
return {**input_data, **{"风险数据": risk_data}}
rating_input = get_rating_data()
def esg_model():
"""模型打分"""
url = "http://api.fecribd.com/tfse_rating/esg/esg_model"
token = "X0gSlC!YE8jmr2jJr&ilcjS83j!tsoh5"
headers = {'token': token, "Content-Type": "application/json;charset=UTF-8"}
data = json.dumps({"input_data": rating_input})
res = requests.post(url, headers=headers, data=data)
if res.status_code == 200:
update_data = {
"评价结果": json.loads(res.text)['result'],
}
self.db.update_single_data("企业数据", "评价记录", rid, update_data)
update_process_status(rid['评价ID'], {"评价流程.模型打分": 1})
return True
else:
update_process_status(rid['评价ID'], {"评价流程.模型打分": -1})
return False
def gen_report():
"""报告生成"""
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"}
data = {
"company": rating_input['企业名称'],
"cid": rating_input['企业ID'],
"rid": rating_input['评价ID']
}
res = requests.post(url, headers=headers, data=json.dumps(data))
if res.status_code == 200:
update_data = {
"报告fid": json.loads(res.text)['result']['FileID']
}
self.db.update_single_data("企业数据", "评价记录", rid, update_data)
update_process_status(rid['评价ID'], {"评价流程.报告生成": 1})
return True
else:
update_process_status(rid['评价ID'], {"评价流程.报告生成": -1})
return False
def gen_certified():
"""证书生成"""
url = "http://api.fecribd.com/tfse_rating/certificate/generate_certificate"
token = "X0gSlC!YE8jmr2jJr&ilcjS83j!tsoh5"
headers = {'token': token, "Content-Type": "application/json;charset=UTF-8"}
data = {
"company": rating_input['企业名称'],
"cid": rating_input['企业ID'],
"rid": rating_input['评价ID'],
"type": "esg"
}
res = requests.post(url, headers=headers, data=json.dumps(data))
if res.status_code == 200:
update_data = {
"证书fid": json.loads(res.text)['result']['FileID']
}
self.db.update_single_data("企业数据", "评价记录", rid, update_data)
update_process_status(rid['评价ID'], {"评价流程.证书生成": 1})
return True
else:
update_process_status(rid['评价ID'], {"评价流程.证书生成": -1})
return False
def esg_index():
url = "http://api.fecribd.com/etl_tfse/company/esg_index_etl"
token = "dmfd7FshT!5Wng9^gcCcQV7T6FBnVgl4"
headers = {'token': token, "Content-Type": "application/json;charset=UTF-8"}
data = {
"rid": rating_input['评价ID']
}
res = requests.post(url, headers=headers, data=json.dumps(data))
if res.status_code == 200:
update_process_status(rid['评价ID'], {"评价流程.主页ESG数据生成": 1})
return True
else:
update_process_status(rid['评价ID'], {"评价流程.主页ESG数据生成": -1})
return False
if not esg_model():
return "打分失败", 210
if not gen_report():
return "生成报告失败", 210
if not gen_certified():
return "生成证书失败", 210
if not esg_index():
return "准备主页数据失败", 210
# 更新完成时间和进行状态
self.finish_time = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())
self.finish_date = time.strftime("%Y-%m-%d", time.localtime())
self.status = "完成"
update_time = self.rating_info_dict_to_save(columns=['进行状态', '评价完成时间', '评价完成日期'])
self.db.update_single_data('企业数据', '评价记录', rid, update_time)
return "执行成功", 200

View File

@ -68,3 +68,23 @@ def save_esg_input_form(**kwargs):
except ReturnConditionCheckFailed as e:
e.log_error()
return {"info": e.__str__()}, e.status_code
@esg_route.route('/submit_esg_rating_input', methods=['GET'])
@verify_token
def submit_general_rating_input(**kwargs):
"""
提交填报数据开始esg评价
Parameters:
cid 企业ID
Returns:
res: desc
"""
try:
esg = EsgRatingImpl()
esg.cid = kwargs['cid']
info, status = esg.exec_esg_rating()
return {"info": info}, status
except ReturnConditionCheckFailed as e:
e.log_error()
return {"info": e.__str__()}, e.status_code

View File

@ -100,4 +100,4 @@ def prepare_risk_data(cid, rid, company_name):
data = json.dumps({"company_id": cid, "company_name": company_name, "evaluation_id": rid})
requests.post(url, headers=headers, data=data)
# 风险数据清洗完成后更新流程状态
update_process_status(rid, {"评价流程.清洗风险数据": 1})
update_process_status(rid, {"评价流程.清洗风险数据": 1})