2022-06-27 16:08:03 +08:00
|
|
|
import time
|
2022-06-23 16:44:09 +08:00
|
|
|
|
2022-06-27 16:08:03 +08:00
|
|
|
from DBHelper.MongoHelperInstance import DB_TEST
|
|
|
|
from Modules.Models.SModels.SModelsObj import ScoreModelObj
|
2022-06-23 16:44:09 +08:00
|
|
|
|
|
|
|
|
2022-06-27 16:08:03 +08:00
|
|
|
class ScoreModelImpl(object):
|
2022-06-23 16:44:09 +08:00
|
|
|
|
|
|
|
@staticmethod
|
2022-06-27 16:08:03 +08:00
|
|
|
def search_score_model(**kwargs):
|
|
|
|
"""搜索打分模型"""
|
2022-06-23 16:44:09 +08:00
|
|
|
total = DB_TEST.find_all_data_with_count(
|
|
|
|
'模型数据',
|
2022-06-27 16:08:03 +08:00
|
|
|
'打分模型',
|
|
|
|
{'模型名称': {"$regex": kwargs['model_name']}}
|
2022-06-23 16:44:09 +08:00
|
|
|
)
|
|
|
|
|
2022-06-27 16:08:03 +08:00
|
|
|
records = DB_TEST.find_all_data_with_single_sort(
|
2022-06-23 16:44:09 +08:00
|
|
|
'模型数据',
|
2022-06-27 16:08:03 +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
|
|
|
|
}
|
|
|
|
|
2022-06-27 16:08:03 +08:00
|
|
|
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 '校验成功'
|