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
|