api-datamanager/Modules/Filters/FiltersImpl.py

62 lines
2.4 KiB
Python
Raw Normal View History

2022-07-19 15:12:44 +08:00
from Modules.Filters.FiltersObj import FiltersObj
from Modules.Filters.FiltersUtils import FilterUtils
from DBHelper.MongoHelperInstance import DB_TEST
class FilterImpl(object):
@staticmethod
def new_filter(**kwargs):
data = kwargs['data']
filters = FiltersObj()
filters.filter_id = FilterUtils.make_new_cid()
filters.filter_name = data['filter_name']
filters.filter_range = data['filter_range']
search_case = filters.SearchCase()
if 'by_cid' in data['search_case']:
by_cid = search_case.ByCid()
by_cid.cid = data['search_case']['by_cid']['cid']
search_case.by_cid = by_cid
if 'by_report_date' in data['search_case']:
report_date = search_case.ByReportDate()
report_date.report_date = data['search_case']['by_report_date']['report_date']
search_case.by_report_date = report_date
if 'by_diy_case' in data['search_case']:
search_case.by_diy_case = data['search_case']['by_diy_case']
filters.search_case = search_case
set_value = filters.SetValue()
def dispose_setting(dispose_data):
"""处理异常值"""
dispose_obj = set_value.DisposeExcept()
if 'null_type' in dispose_data:
dispose_obj.null_type = None
elif 'numeric_type' in dispose_data:
numeric_type = dispose_obj.NumericType()
numeric_type.value = dispose_data['numeric_type']['value']
numeric_type.bit = dispose_data['numeric_type']['bit']
dispose_obj.numeric_type = numeric_type
else:
dispose_obj.text_type = dispose_data['text_type']
return dispose_obj
if 'case_none_str' in data['set_value']:
set_value.dispose_none_string = dispose_setting(data['set_value']['case_none_str'])
if 'case_none' in data['set_value']:
set_value.dispose_none_value = dispose_setting(data['set_value']['case_none'])
if 'case_no_key' in data['set_value']:
set_value.dispose_not_exist = dispose_setting(data['set_value']['case_no_key'])
filters.set_value = set_value
DB_TEST.upsert_single_data(
'模型数据',
'筛选器数据',
{'筛选器名称': data['filter_name']},
filters.fields_toggle()
)
return '新建成功'