# globalData.py import json import time import redis from config import redis_url class GlobalData: # 数据字段 standard_company_program = {} standard_company_name_list = [] simply_to_standard_company_name_map = {} pinyin_simply_to_standard_company_name_map = {} standard_project_name_list = [] simply_to_standard_project_name_map = {} pinyin_simply_to_standard_project_name_map = {} standard_construct_name_list = [] simply_to_standard_construct_name_map = {} pinyin_simply_to_standard_construct_name_map = {} standard_constractor_name_list = [] simply_to_standard_constractor_name_map = {} pinyin_simply_to_standard_constractor_name_map = {} @classmethod def update_from_local(cls): from utils import ( load_standard_data, load_standard_name, clean_useless_company_name, clean_useless_project_name, text_to_pinyin ) # 公司数据 temp_standard_company_program = load_standard_data("./standard_data/standard_company_program.json") if temp_standard_company_program != cls.standard_company_program: cls.standard_company_program.clear() cls.standard_company_program.update(temp_standard_company_program) cls.standard_company_name_list.clear() cls.standard_company_name_list.extend(list(cls.standard_company_program.keys())) cls.simply_to_standard_company_name_map.clear() cls.simply_to_standard_company_name_map.update({ clean_useless_company_name(kw): kw for kw in cls.standard_company_name_list }) cls.pinyin_simply_to_standard_company_name_map.clear() cls.pinyin_simply_to_standard_company_name_map.update({ text_to_pinyin(clean_useless_company_name(kw)): kw for kw in cls.standard_company_name_list }) # 工程名数据 temp_standard_project_name_list = load_standard_name('./standard_data/standard_project.txt') if temp_standard_project_name_list != cls.standard_project_name_list: cls.standard_project_name_list.clear() cls.standard_project_name_list.extend(temp_standard_project_name_list) cls.simply_to_standard_project_name_map.clear() cls.simply_to_standard_project_name_map.update({ clean_useless_project_name(kw): kw for kw in cls.standard_project_name_list }) cls.pinyin_simply_to_standard_project_name_map.clear() cls.pinyin_simply_to_standard_project_name_map.update({ text_to_pinyin(clean_useless_project_name(kw)): kw for kw in cls.standard_project_name_list }) # 建管单位数据 temp_standard_construct_name_list = load_standard_name('./standard_data/construct_unit.txt') if temp_standard_construct_name_list != cls.standard_construct_name_list: cls.standard_construct_name_list.clear() cls.standard_construct_name_list.extend(temp_standard_construct_name_list) cls.simply_to_standard_construct_name_map.clear() cls.simply_to_standard_construct_name_map.update({ clean_useless_company_name(kw): kw for kw in cls.standard_construct_name_list }) cls.pinyin_simply_to_standard_construct_name_map.clear() cls.pinyin_simply_to_standard_construct_name_map.update({ text_to_pinyin(clean_useless_company_name(kw)): kw for kw in cls.standard_construct_name_list }) # 分包单位数据 temp_standard_constractor_name_list = load_standard_name('./standard_data/sub_contract.txt') if temp_standard_constractor_name_list != cls.standard_constractor_name_list: cls.standard_constractor_name_list.clear() cls.standard_constractor_name_list.extend(temp_standard_constractor_name_list) cls.simply_to_standard_constractor_name_map.clear() cls.simply_to_standard_constractor_name_map.update({ clean_useless_company_name(kw): kw for kw in cls.standard_constractor_name_list }) cls.pinyin_simply_to_standard_constractor_name_map.clear() cls.pinyin_simply_to_standard_constractor_name_map.update({ text_to_pinyin(clean_useless_company_name(kw)): kw for kw in cls.standard_constractor_name_list }) print(f"✅ Data updated from local at {time.strftime('%Y-%m-%d %H:%M:%S')}") @classmethod def update_from_redis(cls): from utils import ( load_standard_data, load_standard_name, clean_useless_company_name, clean_useless_project_name, text_to_pinyin ) # 公司数据 # r = redis.Redis(host='192.168.0.37', port=16379, password = 'Bonus@Redis123!', decode_responses=True) r = redis.from_url(redis_url, decode_responses=True) json_str = r.get('SBD_QUERY_DATA:STANDARD_COMPANY_PROGRAM') if json_str: temp_standard_company_program = json.loads(json_str) print(f"update_from_redis:temp_standard_project_name_list from redis") else: temp_standard_company_program = load_standard_data("./standard_data/standard_company_program.json") if temp_standard_company_program != cls.standard_company_program: cls.standard_company_program.clear() cls.standard_company_program.update(temp_standard_company_program) cls.standard_company_name_list.clear() cls.standard_company_name_list.extend(list(cls.standard_company_program.keys())) cls.simply_to_standard_company_name_map.clear() cls.simply_to_standard_company_name_map.update({ clean_useless_company_name(kw): kw for kw in cls.standard_company_name_list }) cls.pinyin_simply_to_standard_company_name_map.clear() cls.pinyin_simply_to_standard_company_name_map.update({ text_to_pinyin(clean_useless_company_name(kw)): kw for kw in cls.standard_company_name_list }) # 工程名数据 json_str = r.get('SBD_QUERY_DATA:PROJECT_NAME') if json_str: temp_standard_project_name_list = json.loads(json_str) print(f"update_from_redis:temp_standard_project_name_list from redis") else: temp_standard_project_name_list = load_standard_name('./standard_data/standard_project.txt') if temp_standard_project_name_list != cls.standard_project_name_list: cls.standard_project_name_list.clear() cls.standard_project_name_list.extend(temp_standard_project_name_list) cls.simply_to_standard_project_name_map.clear() cls.simply_to_standard_project_name_map.update({ clean_useless_project_name(kw): kw for kw in cls.standard_project_name_list }) cls.pinyin_simply_to_standard_project_name_map.clear() cls.pinyin_simply_to_standard_project_name_map.update({ text_to_pinyin(clean_useless_project_name(kw)): kw for kw in cls.standard_project_name_list }) # 建管单位数据 temp_standard_construct_name_list = load_standard_name('./standard_data/construct_unit.txt') if temp_standard_construct_name_list != cls.standard_construct_name_list: cls.standard_construct_name_list.clear() cls.standard_construct_name_list.extend(temp_standard_construct_name_list) cls.simply_to_standard_construct_name_map.clear() cls.simply_to_standard_construct_name_map.update({ clean_useless_company_name(kw): kw for kw in cls.standard_construct_name_list }) cls.pinyin_simply_to_standard_construct_name_map.clear() cls.pinyin_simply_to_standard_construct_name_map.update({ text_to_pinyin(clean_useless_company_name(kw)): kw for kw in cls.standard_construct_name_list }) # 分包单位数据 json_str = r.get('SBD_QUERY_DATA:SUBCONTRACTOR') if json_str: temp_standard_constractor_name_list = json.loads(json_str) print(f"update_from_redis:temp_standard_constractor_name_list from redis") else: temp_standard_constractor_name_list = load_standard_name('./standard_data/sub_contract.txt') if temp_standard_constractor_name_list != cls.standard_constractor_name_list: cls.standard_constractor_name_list.clear() cls.standard_constractor_name_list.extend(temp_standard_constractor_name_list) cls.simply_to_standard_constractor_name_map.clear() cls.simply_to_standard_constractor_name_map.update({ clean_useless_company_name(kw): kw for kw in cls.standard_constractor_name_list }) cls.pinyin_simply_to_standard_constractor_name_map.clear() cls.pinyin_simply_to_standard_constractor_name_map.update({ text_to_pinyin(clean_useless_company_name(kw)): kw for kw in cls.standard_constractor_name_list }) print(f"✅ Data updated from local at {time.strftime('%Y-%m-%d %H:%M:%S')}")