update 根据rid、cid级联删除相关数据/根据rid生成企业主页信息/根据评价类型查询评价数据库

This commit is contained in:
P3ngSaM 2022-03-07 16:51:04 +08:00
parent 70997bf0d3
commit dd80965dcf
3 changed files with 381 additions and 34 deletions

View File

@ -1,4 +1,5 @@
import json
import time
import requests
@ -6,65 +7,343 @@ from TestCenter.tc_db import update_user_info_by_cid, find_user_info_by_cid, del
delete_pdf
def delete_rid_cascade_scripts(rid):
def search_evaluate_record_scripts(types):
"""
根据评价类型
Parameters:
types str 评价类型
Returns:
result list 评价数据库名称
"""
if types == '综合信用评价':
result = ['评价结果', '报告数据', '综合信用报告', '评价证书', '综合评价填报']
else:
result = ['ESG评价结果', 'ESG报告数据', 'esg报告', 'ESG评价证书', 'ESG评价填报']
return result
def delete_rid_cascade_scripts(rid, record, data):
"""
级联删除与评价ID有关的评价数据
1.删除评价报告
2.删除评价结果
3.删除综合评价填报
4.删除评价记录
5.删除风险数据
1.根据rid和评价类型决定删除评价类型综合信用评价ESG评价
2.评价记录选择删除记录删除跟此rid相关的所有数据更改状态可不删除综合评价填报
Parameters:
rid: 评价ID
record: 评价记录
data: 评价数据
Returns:
res: True 执行结果
"""
def delete_all_records():
"""
根据rid删除评价数据库相匹配数据
Parameters:
-
Returns:
info str 删除结果
"""
# 删除填报数据
if '综合信用填报' in data:
delete_data('评价', '综合评价填报', {'评价ID': rid})
elif 'ESG评价填报' in data:
delete_data('评价', 'ESG评价填报', {'评价ID': rid})
else:
return '如选删除记录,请勾选综合评价填报'
# 删除与rid相关的所有数据
delete_data('评价', data[0], {'评价ID': rid})
delete_data('评价', data[1], {'评价ID': rid})
report_id = rids[0]['报告fid']
delete_pdf('评价', data[2], report_id)
certificate_id = rids[0]['证书fid']
delete_pdf('评价', data[3], certificate_id)
delete_data('评价', '评价记录', {'评价ID': rid})
return '删除成功'
def delete_part_records():
"""
根据rid删除评价数据库相匹配数据
Parameters:
-
Returns:
info str 删除结果
"""
# 删除相关数据
if '综合信用填报' in data:
delete_data('评价', '综合评价填报', {'评价ID': rid})
elif 'ESG评价填报' in data:
delete_data('评价', 'ESG评价填报', {'评价ID': rid})
# 删除rid相关的所有数据
delete_data('评价', data[0], {'评价ID': rid})
delete_data('评价', data[1], {'评价ID': rid})
report_id = rids[0]['报告fid']
delete_pdf('评价', data[2], report_id)
certificate_id = rids[0]['证书fid']
delete_pdf('评价', data[3], certificate_id)
# 更新此条数据
insert = {'进行状态': '进行', '评价结果': None, '评价时间': None, '报告fid': None, '证书fid': None}
res = update_data('评价', '评价记录', {'评价ID': rid}, insert)
if res:
return '状态更改成功'
else:
return '评价记录数据重置失败'
# main
rids = find_data('评价', '评价记录', {'评价ID': rid})
if rids:
# 判断状态是否已经完成
if rids[0]['进行状态'] == '完成':
# 删除报告/证书
report_id = rids[0]['报告fid']
delete_pdf('评价', '综合信用报告', report_id)
certificate_id = rids[0]['报告fid']
delete_pdf('评价', '评价证书', certificate_id)
# 更新此条数据
insert = {'进行状态': '进行', '评价结果': None, '评价时间': None, '报告fid': None, '证书fid': None}
res = update_data('评价', '评价记录', {'评价ID': rid}, insert)
if res:
delete_data('评价', '评价结果', {'评价ID': rid})
delete_data('评价', '报告数据', {'评价ID': rid})
return '删除成功'
# 判断评价记录为哪种类型
if record == '删除记录':
info = delete_all_records()
else:
return '评价记录数据重置失败'
info = delete_part_records()
return info
else:
return '不能删除正在进行的评价记录'
else:
return '未查询到此rid相关记录'
def delete_cid_cascade_scripts(cid):
def delete_cid_cascade_scripts(cid, data):
"""
级联删除uid有关的所有数据
Parameters:
cid: 企业ID
data: 数据库名称集合
Returns:
res: True 执行结果
"""
delete_data('用户', '用户信息', {"企业ID": cid})
delete_data('企业', '指标明细', {"企业ID": cid})
delete_data('企业', '综合评价分析', {"企业ID": cid})
delete_data('企业', '公司基本信息', {"企业ID": cid})
delete_data('企业', '财务要素分析', {"企业ID": cid})
delete_data('企业', '财务要素分析', {"企业ID": cid})
for name in data:
delete_data('企业', name, {'企业ID': cid})
return '企业数据删除成功'
rids = find_data('评价', '评价记录', {"企业ID": cid})
if rids:
for rid in rids:
delete_rid_cascade_scripts(rid['评价ID'])
return True
def generate_rid_information_script(rid, types):
"""
根据rid生成企业主页信息
Parameters:
rid str 评价ID
types str 评价类型
Returns:
result str 生成结果
"""
def rating_script():
"""
根据rid执行综合信用评价流程
Parameters:
rid str 评价ID
Returns:
result type 返回数据
"""
record = find_data('评价', '评价记录', {'评价ID': rid, '进行状态': '进行'})
if not record:
return False, "没有正在进行的评价"
inputs = find_data('评价', '综合信用填报', {'评价ID': rid})[0]
risks = {"风险数据": find_data('评价', '风险数据', {'评价ID': rid})[0]}
risks["风险数据"].pop('企业ID')
risks["风险数据"].pop('评价ID')
rating_inputs = {**inputs, **risks}
# 打分模型
def general_model():
url = "http://api.fecribd.com/tfse_rating/rating/general_model"
token = "X0gSlC!YE8jmr2jJr&ilcjS83j!tsoh5"
headers = {'token': token, "Content-Type": "application/json;charset=UTF-8"}
data = json.dumps({"input_data": rating_inputs})
res = requests.post(url, headers=headers, data=data)
if res.status_code == 200:
insert_data = {
"评价结果": json.loads(res.text)['result'],
"评价时间": time.strftime("%Y-%m-%d", time.localtime())
}
update_data('评价', '评价记录', {"评价ID": rid}, insert_data)
return True
else:
return False
# 生成报告
def gen_report():
url = "http://api.fecribd.com/tfse_rating/report/gen_general_rating_report"
token = "X0gSlC!YE8jmr2jJr&ilcjS83j!tsoh5"
headers = {'token': token, "Content-Type": "application/json;charset=UTF-8"}
data = {
"company": rating_inputs['企业名称'],
"cid": rating_inputs['企业ID'],
"rid": rating_inputs['评价ID']
}
res = requests.post(url, headers=headers, data=json.dumps(data))
if res.status_code == 200:
insert_data = {
"报告fid": json.loads(res.text)['result']['FileID']
}
update_data('评价', '评价记录', {"评价ID": rid}, insert_data)
return True
else:
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_inputs['企业名称'],
"cid": rating_inputs['企业ID'],
"rid": rating_inputs['评价ID']
}
res = requests.post(url, headers=headers, data=json.dumps(data))
if res.status_code == 200:
insert_data = {
"证书fid": json.loads(res.text)['result']['FileID']
}
update_data('评价', '评价记录', {"评价ID": rid}, insert_data)
return True
else:
return False
# 生成企业主页数据
def company_index():
url = "http://api.fecribd.com/etl_tfse/company/company_index_etl"
token = "dmfd7FshT!5Wng9^gcCcQV7T6FBnVgl4"
headers = {'token': token, "Content-Type": "application/json;charset=UTF-8"}
data = {
"rid": rating_inputs['评价ID']
}
res = requests.post(url, headers=headers, data=json.dumps(data))
if res.status_code == 200:
return True
else:
return False
if not general_model():
return False, "打分失败"
if not gen_report():
return False, "生成报告失败"
if not gen_certified():
return False, "生成证书失败"
if not company_index():
return False, "准备主页数据失败"
update_data('评价', '评价记录', {'评价ID': rid}, {'进行状态': '完成'})
return '执行完成'
def esg_rating_script():
"""
根据rid执行esg评价流程
Parameters:
rid str 评价ID
Returns:
result type 返回数据
"""
record = find_data('评价', '评价记录', {'评价ID': rid, '进行状态': '进行'})
if not record:
return False, "没有正在进行的评价"
inputs = find_data('评价', 'ESG评价填报', {'评价ID': rid})[0]
risks = {"风险数据": find_data('评价', 'ESG风险数据', {'评价ID': rid})[0]}
risks["风险数据"].pop('企业ID')
risks["风险数据"].pop('评价ID')
risks["风险数据"].pop('更新日期')
rating_inputs = {**inputs, **risks}
# 打分模型
def general_model():
url = "http://api.fecribd.com/esg_rating/rating/esg_model"
token = "X0gSlC!YE8jmr2jJr&ilcjS83j!tsoh5"
headers = {'token': token, "Content-Type": "application/json;charset=UTF-8"}
data = json.dumps({"input_data": rating_inputs})
res = requests.post(url, headers=headers, data=data)
if res.status_code == 200:
insert_data = {
"评价结果": json.loads(res.text)['result'],
"评价时间": time.strftime("%Y-%m-%d", time.localtime())
}
update_data('评价', '评价记录', {"评价ID": rid}, insert_data)
return True
else:
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_inputs['企业名称'],
"cid": rating_inputs['企业ID'],
"rid": rating_inputs['评价ID']
}
res = requests.post(url, headers=headers, data=json.dumps(data))
if res.status_code == 200:
insert_data = {
"报告fid": json.loads(res.text)['result']['FileID']
}
update_data('评价', '评价记录', {"评价ID": rid}, insert_data)
return True
else:
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_inputs['企业名称'],
"cid": rating_inputs['企业ID'],
"rid": rating_inputs['评价ID']
}
res = requests.post(url, headers=headers, data=json.dumps(data))
if res.status_code == 200:
insert_data = {
"证书fid": json.loads(res.text)['result']['FileID']
}
update_data('评价', '评价记录', {"评价ID": rid}, insert_data)
return True
else:
return False
# 生成企业主页数据
def company_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_inputs['评价ID']
}
res = requests.post(url, headers=headers, data=json.dumps(data))
if res.status_code == 200:
return True
else:
return False
if not general_model():
return False, "打分失败"
if not gen_report():
return False, "生成报告失败"
if not gen_certified():
return False, "生成证书失败"
if not company_index():
return False, "准备主页数据失败"
update_data('评价', '评价记录', {'评价ID': rid}, {'进行状态': '完成'})
return '执行完成'
if types == '综合信用评价':
info = rating_script()
else:
info = esg_rating_script()
return info
def company_verify_script(company, code, legal_person, cid):

View File

@ -10,18 +10,28 @@ class TestObj:
self.code = None
self.legal_person = None
self.cid = None
self.types = None
self.record = None
self.data = None
def search_evaluate_record(self):
"""
根据评价类型返回评价数据库
"""
data = search_evaluate_record_scripts(self.types)
return data
def delete_cid_cascade(self):
"""
级联删除与uid有关的所有数据
"""
delete_cid_cascade_scripts(self.uid)
delete_cid_cascade_scripts(self.uid, self.data)
def delete_rid_cascade(self):
"""
级联删除与评价ID有关的所有数据
"""
info = delete_rid_cascade_scripts(self.rid)
info = delete_rid_cascade_scripts(self.rid, self.record, self.data)
return info
def company_verify(self):
@ -41,3 +51,24 @@ class TestObj:
"""
info = change_verified_script(self.cid)
return info
def generate_rid_information(self):
"""
生成企业主页数据
"""
info = generate_rid_information_script(self.rid, self.types)
return info
# delete_data('用户', '用户信息', {"企业ID": cid})
# delete_data('企业', '指标明细', {"企业ID": cid})
# delete_data('企业', '综合评价分析', {"企业ID": cid})
# delete_data('企业', '公司基本信息', {"企业ID": cid})
# delete_data('企业', '财务要素分析', {"企业ID": cid})
# delete_data('企业', '财务要素分析', {"企业ID": cid})
#
# rids = find_data('评价', '评价记录', {"企业ID": cid})
# if rids:
# for rid in rids:
# delete_rid_cascade_scripts(rid['评价ID'])
#
# return True

View File

@ -6,6 +6,23 @@ from common.APIAuth import api_secret
test_route = Blueprint('test', __name__)
@test_route.route('/search_evaluate_record', methods=['POST'])
@api_secret
def search_evaluate_record_route():
"""
根据评价类型查询评价数据库
Parameters:
-
Returns:
-
"""
test_obj = TestObj()
test_obj.types = request.json['types']
data = test_obj.search_evaluate_record()
status = 200 if data else 210
return {"data": data}, status
@test_route.route('/delete_rid_cascade', methods=['POST'])
@api_secret
def delete_rid_cascade_route():
@ -18,6 +35,8 @@ def delete_rid_cascade_route():
"""
test_obj = TestObj()
test_obj.rid = request.json['rid']
test_obj.record = request.json['record']
test_obj.data = request.json['data']
info = test_obj.delete_rid_cascade()
status = 200 if info == '删除成功' else 210
return {"info": info}, status
@ -35,10 +54,28 @@ def delete_uid_cascade_route():
"""
test_obj = TestObj()
test_obj.uid = request.json['cid']
test_obj.data = request.json['data']
test_obj.delete_cid_cascade()
return {"info": "删除成功"}, 200
@test_route.route('/generate_rid_information', methods=['POST'])
@api_secret
def delete_uid_cascade_route():
"""
根据rid生成企业主页信息
Parameters:
-
Returns:
-
"""
test_obj = TestObj()
test_obj.rid = request.json['rid']
test_obj.types = request.json['types']
test_obj.generate_rid_information()
return {"info": "生成成功"}, 200
@test_route.route('/enterprise_certification', methods=['POST'])
@api_secret
def enterprise_certification():