tfse-etl-api-v0.2/rating/scripts/risk_count.py

563 lines
18 KiB
Python

from rating.scripts.report import *
def risk_data_etl(param1, param2, param3):
"""
根据企业名称,查询天眼查数据库
将数据按规定格式存储到股交企业数据库中(评价-风险数据)
Parameters:
param1: 企业名称
param2: 企业ID
param3: 评价ID
Returns:
res: 保存结果
"""
# 合规风险
compliance_risk = dict()
compliance_risk['失信人'] = dishonest_person(param1)
compliance_risk['严重违法'] = serious_illegal(param1)
compliance_risk['经营异常'] = abnormal_operation(param1)
compliance_risk['欠税公告'] = owing_taxes(param1)
compliance_risk['税收违法'] = tax_violation(param1)
compliance_risk['行政处罚'] = administrative_punish(param1)
compliance_risk['环保处罚'] = environmental_punish(param1)
# 经营风险
business_risk = dict()
business_risk['立案信息'] = filing_info(param1)
business_risk['开庭公告'] = opening_announcement(param1)
business_risk['被执行人'] = executed_person(param1)
business_risk['法院公告'] = court_announcement(param1)
business_risk['诉讼'] = lawsuit(param1)
business_risk['送达公告'] = service_notice(param1)
business_risk['股权出质'] = equity_pledge(param1)
# 关联风险
relation_risk = dict()
relation_risk['周边风险'] = dict()
relation_risk['周边风险']['高风险'] = periphery_risk(param1, '高风险')
relation_risk['周边风险']['警示'] = periphery_risk(param1, '警示')
relation_risk['变更记录'] = dict()
relation_risk['变更记录']['法人变更'] = change_record(param1, '法人变更')
relation_risk['变更记录']['主要成员变更'] = change_record(param1, '主要成员变更')
# 合并数据
insert_data = dict()
insert_data['评价ID'] = param3
insert_data['企业ID'] = param2
insert_data['合规风险'] = compliance_risk
insert_data['经营风险'] = business_risk
insert_data['关联风险'] = relation_risk
info = conserve_data(db='评价', col='风险数据', cid=param2, insert_data=insert_data)
return info
def dishonest_person(param):
"""
失信人
根据企业名称,查询天眼查数据库,根据条件筛选数据
Parameters:
param: 企业名称
Returns:
res: 满足条件总数
"""
total = 0
res = find_tyc_db(db='司法风险', col='失信人', query={'企业名称': param})
if len(res):
data = res[0]
try:
quantity = len(data['失信人'])
if quantity:
for num in range(quantity):
try:
date = int(data['失信人'][num]['publishdate'][:4])
current_year = datetime.date.today().year
if current_year - date <= 3:
total += 1
except Exception:
total += 1
return total
except KeyError:
return total
else:
return total
def serious_illegal(param):
"""
严重违法
根据企业名称,查询天眼查数据库,根据条件筛选数据
Parameters:
param: 企业名称
Returns:
res: 满足条件总数
"""
total = 0
res = find_tyc_db(db='经营风险', col='严重违法', query={'企业名称': param})
if len(res):
data = res[0]
try:
quantity = len(data['严重违法']['result'])
if quantity:
for num in range(quantity):
try:
timestamp = data['严重违法']['result'][num]['putDate'] / 1000
put_date = time.localtime(timestamp)
date = int(time.strftime("%Y", put_date))
current_year = datetime.date.today().year
if current_year - date <= 3:
total += 1
except Exception:
total += 1
return total
except KeyError:
return total
else:
return total
def abnormal_operation(param):
"""
经营异常
根据企业名称,查询天眼查数据库,根据条件筛选数据
Parameters:
param: 企业名称
Returns:
res: 满足条件总数
"""
total = 0
res = find_tyc_db(db='经营风险', col='经营异常', query={'企业名称': param})
if len(res):
data = res[0]
try:
quantity = len(data['经营异常']['result'])
if quantity:
for num in range(quantity):
try:
date = int(data['经营异常']['result'][num]['putDate'][:4])
current_year = datetime.date.today().year
if current_year - date <= 3:
total += 1
except Exception:
total += 1
return total
except KeyError:
return total
else:
return total
def owing_taxes(param):
"""
欠税公告
根据企业名称,查询天眼查数据库,根据条件筛选数据
Parameters:
param: 企业名称
Returns:
res: 满足条件总数
"""
total = 0
res = find_tyc_db(db='经营风险', col='欠税公告', query={'企业名称': param})
if len(res):
data = res[0]
try:
quantity = len(data['欠税公告']['result'])
if quantity:
for num in range(quantity):
try:
date = int(data['经营异常']['result'][num]['publishDate'][:4])
current_year = datetime.date.today().year
if current_year - date <= 3:
total += 1
except Exception:
total += 1
return total
except KeyError:
return total
else:
return total
def tax_violation(param):
"""
税收违法
根据企业名称,查询天眼查数据库,根据条件筛选数据
Parameters:
param: 企业名称
Returns:
res: 满足条件总数
"""
total = 0
res = find_tyc_db(db='经营风险', col='税收违法', query={'企业名称': param})
if len(res):
data = res[0]
try:
quantity = len(data['税收违法']['result'])
if quantity:
for num in range(quantity):
try:
date = int(data['税收违法']['result'][num]['publish_time'][:4])
current_year = datetime.date.today().year
if current_year - date <= 3:
total += 1
except Exception:
total += 1
return total
except KeyError:
return total
else:
return total
def filing_info(param):
"""
立案信息
根据企业名称,查询天眼查数据库,根据条件筛选数据
Parameters:
param: 企业名称
Returns:
res: 满足条件总数
"""
total = 0
res = find_tyc_db(db='司法风险', col='立案信息', query={'企业名称': param})
if len(res):
data = res[0]
try:
quantity = len(data['立案信息'])
if quantity:
for num in range(quantity):
try:
date = int(data['立案信息'][num]['filingDate'][:4])
current_year = datetime.date.today().year
if current_year - date <= 3:
total += 1
except Exception:
total += 1
return total
except KeyError:
return total
else:
return total
def administrative_punish(param):
"""
行政处罚
根据企业名称,查询天眼查数据库,根据条件筛选数据
Parameters:
param: 企业名称
Returns:
res: 满足条件总数
"""
total = 0
res = find_tyc_db(db='经营风险', col='行政处罚', query={'企业名称': param})
if len(res):
data = res[0]
try:
quantity = len(data['行政处罚']['result'])
if quantity:
for num in range(quantity):
try:
date = int(data['行政处罚']['result'][num]['decisionDate'][:4])
current_year = datetime.date.today().year
if current_year - date <= 3:
total += 1
except Exception:
total += 1
return total
except KeyError:
return total
else:
return total
def environmental_punish(param):
"""
环保处罚
根据企业名称,查询天眼查数据库,根据条件筛选数据
Parameters:
param: 企业名称
Returns:
res: 满足条件总数
"""
total = 0
res = find_tyc_db(db='经营风险', col='环保处罚', query={'企业名称': param})
if len(res):
data = res[0]
try:
quantity = len(data['环保处罚']['result'])
if quantity:
for num in range(quantity):
try:
date = int(data['环保处罚']['result'][num]['publish_time'][:4])
current_year = datetime.date.today().year
if current_year - date <= 3:
total += 1
except Exception:
total += 1
return total
except KeyError:
return total
else:
return total
def opening_announcement(param):
"""
开庭公告
根据企业名称,查询天眼查数据库,根据条件筛选数据
Parameters:
param: 企业名称
Returns:
res: 满足条件总数
"""
total = 0
res = find_tyc_db(db='司法风险', col='开庭公告', query={'企业名称': param})
if len(res):
data = res[0]
try:
quantity = len(data['开庭公告'])
if quantity:
for num in range(quantity):
try:
date = int(data['开庭公告'][num]['startDate'][:4])
current_year = datetime.date.today().year
if current_year - date <= 3:
defendant = data['开庭公告'][num]['defendant']
if len(defendant) > 0:
for item in defendant:
if param == item['name']:
total += 1
except Exception:
total += 1
return total
except KeyError:
return total
else:
return total
def executed_person(param):
"""
被执行人
根据企业名称,查询天眼查数据库,根据条件筛选数据
Parameters:
param: 企业名称
Returns:
res: 满足条件总数
"""
total = 0
res = find_tyc_db(db='司法风险', col='被执行人', query={'企业名称': param})
if len(res):
data = res[0]
try:
quantity = len(data['被执行人'])
if quantity:
for num in range(quantity):
try:
date = int(data['被执行人'][num]['caseCreateTime'][:4])
current_year = datetime.date.today().year
if current_year - date <= 3:
total += 1
except Exception:
total += 1
return total
except KeyError:
return total
else:
return total
def court_announcement(param):
"""
法院公告
根据企业名称,查询天眼查数据库,根据条件筛选数据
Parameters:
param: 企业名称
Returns:
res: 满足条件总数
"""
total = 0
res = find_tyc_db(db='司法风险', col='法院公告', query={'企业名称': param})
if len(res):
data = res[0]
try:
quantity = len(data['法院公告'])
if quantity:
for num in range(quantity):
try:
date = int(data['法院公告'][num]['publishdate'][:4])
current_year = datetime.date.today().year
party = data['法院公告'][num]['party2']
if current_year - date <= 3 and param in party:
total += 1
except Exception:
total += 1
return total
except KeyError:
return total
else:
return total
def lawsuit(param):
"""
诉讼
根据企业名称,查询天眼查数据库,根据条件筛选数据
Parameters:
param: 企业名称
Returns:
res: 满足条件总数
"""
total = 0
res = find_tyc_db(db='司法风险', col='诉讼', query={'企业名称': param})
if len(res):
data = res[0]
try:
quantity = len(data['诉讼'])
if quantity:
for num in range(quantity):
try:
date = int(data['诉讼'][num]['submittime'][:4])
current_year = datetime.date.today().year
defendants = data['诉讼'][num]['defendants']
if current_year - date <= 3 and param in defendants:
total += 1
except Exception:
total += 1
return total
except KeyError:
return total
else:
return total
def service_notice(param):
"""
送达公告
根据企业名称,查询天眼查数据库,根据条件筛选数据
Parameters:
param: 企业名称
Returns:
res: 满足条件总数
"""
total = 0
res = find_tyc_db(db='司法风险', col='送达公告', query={'企业名称': param})
if len(res):
data = res[0]
try:
quantity = len(data['送达公告'])
if quantity:
for num in range(quantity):
try:
date = int(data['送达公告'][num]['startDate'][:4])
current_year = datetime.date.today().year
if current_year - date <= 3:
total += 1
except Exception:
total += 1
return total
except KeyError:
return total
else:
return total
def equity_pledge(param):
"""
股权出质
根据企业名称,查询天眼查数据库,根据条件筛选数据
Parameters:
param: 企业名称
Returns:
res: 满足条件总数
"""
total = 0
res = find_tyc_db(db='经营风险', col='股权出质', query={'企业名称': param})
if len(res):
data = res[0]
try:
quantity = len(data['股权出质']['result'])
if quantity:
for num in range(quantity):
try:
timestamp = data['股权出质']['result'][num]['putDate'] / 1000
put_date = time.localtime(timestamp)
date = int(time.strftime("%Y", put_date))
current_year = datetime.date.today().year
if current_year - date <= 3:
total += 1
except Exception:
total += 1
return total
except KeyError:
return total
else:
return total
def periphery_risk(param1, param2):
"""
股权出质
根据企业名称,查询天眼查数据库,根据条件筛选数据
Parameters:
param1: 企业名称
param2: 风险类型
Returns:
res: 满足条件总数
"""
total = 0
res = find_tyc_db(db='天眼风险', col='周边风险', query={'企业名称': param1})
if len(res):
data = res[0]
try:
quantity = len(data['周边风险']['list'])
if quantity:
for num in range(quantity):
try:
if data['周边风险']['list'][num]['tag'] == param2:
total += data['周边风险']['list'][num]['total']
except Exception:
total += 0
return total
except KeyError:
return total
else:
return total
def change_record(param1, param2):
"""
变更记录
根据企业名称,查询天眼查数据库,根据条件筛选数据
Parameters:
param1: 企业名称
param2: 变更事项
Returns:
res: 满足条件总数
"""
total = 0
res = find_tyc_db(db='公司背景', col='变更记录', query={'企业名称': param1})
if len(res):
data = res[0]
try:
quantity = len(data['变更记录']['result'])
if quantity:
for num in range(quantity):
try:
date = int(data['变更记录']['result'][num]['createTime'][:4])
current_year = datetime.date.today().year
if current_year - date <= 3:
if param2 == '法人变更' and '法定代表人' in data['变更记录']['result'][num]['changeItem']:
total += 1
elif param2 == '主要成员变更' and '董事(理事)、经理、监事' in data['变更记录']['result'][num]['changeItem']:
total += 1
except Exception:
total += 0
return total
except KeyError:
return total
else:
return total