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 { "问卷数据": questionnaire_dict, "财报数据": financial_dict } 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年末": { "数据是否经过审计": "是", "财务数据": "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 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 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