wd-smebiz/utils/rate_utils.py

204 lines
8.5 KiB
Python
Raw Normal View History

2023-08-02 10:18:36 +08:00
import requests as rq
import json
import pandas as pd
import numpy as np
from fastapi import HTTPException
def parse_file_data_interface(file_path):
pass
questionnaire_dict = dict()
financial_dict = dict()
xls = pd.read_excel(file_path, sheet_name=None)
for sheet_name, df in xls.items():
if sheet_name == '问卷数据':
questionnaire_data = df.iloc[0:55, 0:2]
questionnaire_data = questionnaire_data.replace(np.nan, None)
questionnaire_dict = dict(zip(questionnaire_data.iloc[:, 0], questionnaire_data.iloc[:, 1]))
miss_val = list()
for key, val in questionnaire_dict.items():
if val is None:
miss_val.append(key)
# if miss_val:
# miss_val = ",".join(miss_val)
# print("问卷数据未填报完整:{}".format(miss_val))
# raise HTTPException(status_code=400, detail="问卷数据未填报完整:{}".format(miss_val))
elif sheet_name == '财务数据':
# 获取财务数据年份
financial_time = df.iloc[0, 1:3].index.tolist()
year = 1
for j in financial_time:
try:
if '' in j:
year += 1
except TypeError:
continue
financial_dict = dict()
financial_data = df.iloc[0:, 0:year]
financial_data.drop(financial_data.tail(1).index, inplace=True)
financial_data = financial_data.replace(np.nan, None)
for i in range(len(financial_time)):
try:
if '' in financial_time[i]:
financial_dict[financial_time[i]] = dict(
zip(financial_data.iloc[:, 0], financial_data.iloc[:, i + 1]))
except TypeError:
continue
return {
2023-08-04 16:59:19 +08:00
"问卷数据": questionnaire_dict,
"财报数据": financial_dict
}
2023-08-02 10:18:36 +08:00
def parse_file_data_interface2(file_path):
file_data = {
"问卷数据": {
"公司全称": "成都普瑞眼科医院股份有限公司",
"统一社会信用代码": "91510106785430077J",
"2020~2022年公司股东变更次数": 2,
"是否设立董事会": "",
"董事会人数": 8,
"独立董事人数": 2,
"董事会会议次数": 10,
"董事会出席率": 100,
"是否设立监事会": "",
"监事会人数": 3,
"非职工监事委派单位": "内部选举",
"是否设立党委会": "",
"公司战略符合哪些": "绿色、双碳、人才、创新、乡村振兴、国家安全、金融安全、就业优先",
"是否将风险管理纳入公司战略": "",
"是否设立风险管理部门": "",
"公司风险管理体系覆盖哪些部门": "市场、后勤、人力、财务、合规",
"2022年末数字化或智能化的风险控制方式覆盖比例": 50,
"2022年公司数据安全投入金额": 152,
"为公司提供数据安全的供应商名称": "华为技术有限公司、华为云计算技术有限公司",
"2022年产品研发投入金额": 200.5,
"2022年末公司产品系列": 2,
"2022年末公司产品种类": 5,
"2022年末公司产品数量": 100,
"2022年公司新产品数量": 15,
"公司是否曾被纳入黑名单": "",
"近三年公司信用修复次数": 0,
"公司获得的国家级荣誉数量": 5,
"公司获得的省级荣誉数量": 10,
"公司注册商标数量": 20,
"知名商标或品牌数量(例如驰名商标)": 2,
"国家级商标或品牌数量": 5,
"省级商标或品牌数量": 10,
"2022年公司缴纳的社会保险": 102.58,
"公司缴纳的社会保险种类": "五险一金",
"2022年公司员工因公死亡数量": 2,
"2022年公司员工工伤数量": 5,
"2022年公司提供服务次数": 102584,
"2022年公司被客户投诉次数": 265,
"2020~2022年公司信贷、债券、非标融资违约次数": 0,
"2020~2022年公司信贷、债券、非标融资违约金额": 0,
"2022年公司因关联方违约代偿的金额": 15,
"2022年公司应为关联方代偿金额为关联方提供担保且该关联方发生违约的金额": 120,
"2020年公司股东或关联方给予公司的资金支持金额": 200,
"2021年公司股东或关联方给予公司的资金支持金额": 200,
"2022年公司股东或关联方给予公司的资金支持金额": 200,
"2020年公司关联交易金额": 159.28,
"2021年公司关联交易金额": 195.88,
"2022年公司关联交易金额": 205.68,
"公司是否参与行业标准和规范制定": "",
"牵头制定的行业标准名称": "《千古》《有何不可》《知足》",
"牵头制定的规范名称": "《葡萄成熟时》《陪你度过漫长岁月》",
"参与制定的行业标准名称": "《慢慢喜欢你》",
"参与制定的规范名称": "《姗姗》"
},
"财报数据": {
"2021年末": {
2023-08-04 16:59:19 +08:00
"数据是否经过审计": "",
2023-08-02 10:18:36 +08:00
"财务数据": "2021年末",
"资产负债表": None,
"总资产": 6478468.9,
"净资产": 1772251.9,
"流动资产": 5231207.8,
"流动负债": 1293325.2,
"存货": 3858229.4,
"预付账款": 36937.9,
"应收票据": 0,
"应收账款": 4691.4,
"利润表": None,
"营业收入": 58448.8,
"主营业务成本": 60885.4,
"利润总额": 30918.8,
"净利润": 25281.9,
"总负债": 25281.9,
"计入财务费用的利息支出": 5704.1,
"现金流量表": None,
"经营性净现金流": -476663.2
},
"2022年末": {
"数据是否经过审计": "",
"财务数据": "2022年末",
"资产负债表": None,
"总资产": 7437834.9,
"净资产": 2269957.7,
"流动资产": 5753381.9,
"流动负债": 1546735.1,
"存货": 4458149.5,
"预付账款": 14129.6,
"应收票据": 0,
"应收账款": 7474.9,
"利润表": None,
"营业收入": 214701.3,
"主营业务成本": 162917.8,
"利润总额": 84587.2,
"净利润": 69785.4,
"总负债": 25281.9,
"计入财务费用的利息支出": 18922.5,
"现金流量表": None,
"经营性净现金流": -178170.9
}
}
}
return file_data
def bj_rate_interface(rate_data):
"""
保健业评级接口
"""
res = rq.post('http://127.0.0.1:8010/api/health_industry/score_calculate', json.dumps(
{"name": '保健服务业信誉评级模型', "index": rate_data}), timeout=8)
print(rate_data)
data = res.json()
return data
2023-08-04 16:59:19 +08:00
def smebiz_create_flow(id):
print(f"创建评级流程:{id}")
return id
res = rq.post('http://127.0.0.1:8010/api/model_management/new_process_file', json.dumps(
{"pid": id, "model_name": "中小商业企业信用模型"}), timeout=8)
def smebiz_post_wj_data(pid, data):
res = rq.post('http://127.0.0.1:8010/api/model_management/upload_reference_data', json.dumps(
{"pid": pid, "data": data}), timeout=8)
print(res)
def smebiz_rate_interface(pid):
"""
中小商业企业评级接口
"""
res = rq.post('http://127.0.0.1:8010/api/model_management/score_result', json.dumps(
{"pid": pid}), timeout=8)
data = res.json()
return data
2023-08-02 10:18:36 +08:00
def bj_finance_cal_interface(data):
"""
财报指标计算接口
"""
res = rq.post('http://127.0.0.1:8010/api/health_industry/index_calculate', json.dumps(
{"name": '保健服务业信誉评级模型', "index": data}), timeout=8)
data = res.json()
return data