changes 保健业打分模型

This commit is contained in:
P3ngSaM 2023-05-10 16:39:42 +08:00
parent 46136727d0
commit 35edbc900d
1 changed files with 23 additions and 26 deletions

View File

@ -276,6 +276,7 @@ def func(schemas: ComputeSchemas.ComputeModelReqBody, mongodb: MongoHelper = Dep
# 指标权重 # 指标权重
weight = index.get('权重') weight = index.get('权重')
# 指标数值分为四种:常规数值型、直接进在区间内进行计算,部分区间可能缺失;财务指标数值型,经过计算的财务指标数值直接在区间进行计算;字符串型,直接与档位匹配,布尔型:是与否,一档与八档 # 指标数值分为四种:常规数值型、直接进在区间内进行计算,部分区间可能缺失;财务指标数值型,经过计算的财务指标数值直接在区间进行计算;字符串型,直接与档位匹配,布尔型:是与否,一档与八档
try:
if isinstance(value, str): if isinstance(value, str):
# 遍历档位 # 遍历档位
for key, val in index.items(): for key, val in index.items():
@ -284,7 +285,6 @@ def func(schemas: ComputeSchemas.ComputeModelReqBody, mongodb: MongoHelper = Dep
index_dict['档位'] = score_level(key) index_dict['档位'] = score_level(key)
index_score.append(index_dict) index_score.append(index_dict)
test_list.append(index_name) test_list.append(index_name)
print(index_name)
elif isinstance(value, float) or isinstance(value, int): elif isinstance(value, float) or isinstance(value, int):
# 提取档位 # 提取档位
key_list = ['一级指标', '二级指标', '三级指标', '四级指标', '权重', '单位', '计算公式'] key_list = ['一级指标', '二级指标', '三级指标', '四级指标', '权重', '单位', '计算公式']
@ -293,15 +293,12 @@ def func(schemas: ComputeSchemas.ComputeModelReqBody, mongodb: MongoHelper = Dep
if key not in key_list: if key not in key_list:
level_dict[key] = val level_dict[key] = val
test_list.append(index_name) test_list.append(index_name)
print(index_name)
result = score_func_by_number(level_dict, value, weight) result = score_func_by_number(level_dict, value, weight)
index_dict['得分'] = result.get('得分') index_dict['得分'] = result.get('得分')
index_dict['档位'] = result.get('档位') index_dict['档位'] = result.get('档位')
index_score.append(index_dict) index_score.append(index_dict)
except TypeError:
for da in data.keys(): raise HTTPException(status_code=400, detail="{}指标值不符合规范".format(index_name))
if da not in test_list:
print(da)
# 汇总得分 # 汇总得分
total_score = round(sum(item.get('得分') for item in index_score), 2) total_score = round(sum(item.get('得分') for item in index_score), 2)