api-datamanager/Modules/Models/SModels/SModelImpl.py

89 lines
3.1 KiB
Python
Raw Normal View History

import time
2022-06-23 16:44:09 +08:00
from DBHelper.MongoHelperInstance import DB_TEST
from Modules.Models.SModels.SModelsObj import ScoreModelObj
2022-06-23 16:44:09 +08:00
class ScoreModelImpl(object):
2022-06-23 16:44:09 +08:00
@staticmethod
def search_score_model(**kwargs):
"""搜索打分模型"""
2022-06-23 16:44:09 +08:00
total = DB_TEST.find_all_data_with_count(
'模型数据',
'打分模型',
{'模型名称': {"$regex": kwargs['model_name']}}
2022-06-23 16:44:09 +08:00
)
records = DB_TEST.find_all_data_with_single_sort(
2022-06-23 16:44:09 +08:00
'模型数据',
'打分模型',
{'模型名称': {"$regex": kwargs['model_name']}},
['模型名称', '作者', '日期', '标签'],
{'日期': -1},
2022-06-23 16:44:09 +08:00
kwargs['page_size'],
kwargs['page_no']
)
result = {
"total": total,
"records": records
}
return result
@staticmethod
def new_score_model(**kwargs):
"""构建打分模型"""
data = kwargs['data']
model = ScoreModelObj()
model.model_name = data['model_name']
model.author = data['author']
model.tags = data['tags']
model.dimension = list()
model.date = time.strftime('%Y-%m-%d', time.localtime())
# 维度
for item in data['dimension']:
dimension = model.Dimension()
dimension.name = item['维度名称']
dimension.first_level_index = list()
for first in item['一级指标']:
first_level = dimension.FirstLevelIndex()
first_level.name = first['指标名称']
first_level.secondary_index = list()
for second in first['二级指标']:
second_level = first_level.SecondaryIndex()
second_level.name = second['指标名称']
second_level.standard_score = second['标准分']
setting = second_level.ScoreSetting()
setting.pattern = second['打分设置']['模式']
setting.setting = list()
for setting_ in second['打分设置']['设置']:
set_ = setting.Setting()
set_.gear = setting_['档位']
set_.percentage = setting_['百分比(%)']
interval = set_.Interval()
interval.gt = setting_['区间']['gt']
interval.lte = setting_['区间']['lte']
set_.interval = interval
setting.setting.append(set_)
second_level.score_setting = setting
first_level.secondary_index.append(second_level)
dimension.first_level_index.append(first_level)
model.dimension.append(dimension)
DB_TEST.upsert_single_data(
'模型数据',
'打分模型',
{'模型名称': data['model_name']},
model.fields_toggle()
)
return '构建成功'
@staticmethod
def check_score_model(**kwargs):
data = kwargs['data']
return '校验成功'