# -*- encoding: utf-8 -*- """ @File : EquipmentInfoService.py @Time : 2022/4/14 17:28 @Author : stephen @Email : zhangdongming@asj6.wecom.work @Software: PyCharm """ import logging import random from django.db import transaction from Model.models import EquipmentInfoMonday, EquipmentInfoTuesday, EquipmentInfoWednesday, EquipmentInfoThursday, \ EquipmentInfoFriday, EquipmentInfoSaturday, EquipmentInfoSunday, EquipmentInfo1, EquipmentInfo2, EquipmentInfo3, \ EquipmentInfo4, EquipmentInfo5, EquipmentInfo6, EquipmentInfo7, EquipmentInfo8, EquipmentInfo9, EquipmentInfo10, \ EquipmentInfo11, EquipmentInfo12, EquipmentInfo13, EquipmentInfo14, EquipmentInfo15, EquipmentInfo16, \ EquipmentInfo17, EquipmentInfo18, EquipmentInfo19, EquipmentInfo20 from Object.utils import LocalDateTimeUtil from AnsjerPush.config import LOGGER EQUIPMENT_INFO_LIST = [ EquipmentInfo1, EquipmentInfo2, EquipmentInfo3, EquipmentInfo4, EquipmentInfo5, EquipmentInfo6, EquipmentInfo7, EquipmentInfo8, EquipmentInfo9, EquipmentInfo10, EquipmentInfo11, EquipmentInfo12, EquipmentInfo13, EquipmentInfo14, EquipmentInfo15, EquipmentInfo16, EquipmentInfo17, EquipmentInfo18, EquipmentInfo19, EquipmentInfo20] class EquipmentInfoService: @staticmethod def get_equipment_info_obj(dt, **kwargs): """ 根据日期判断是星期几,返回相应的对象实例 @param dt: 日期 例:2022-03-03 @param kwargs: 设备信息属性值 @return: 星期一至星期天equipment_info对象实例 """ logger = logging.getLogger('info') week = LocalDateTimeUtil.date_to_week(dt) equipment_info = None if week == 1: equipment_info = EquipmentInfoMonday(**kwargs) elif week == 2: equipment_info = EquipmentInfoTuesday(**kwargs) elif week == 3: equipment_info = EquipmentInfoWednesday(**kwargs) elif week == 4: equipment_info = EquipmentInfoThursday(**kwargs) elif week == 5: equipment_info = EquipmentInfoFriday(**kwargs) elif week == 6: equipment_info = EquipmentInfoSaturday(**kwargs) elif week == 7: equipment_info = EquipmentInfoSunday(**kwargs) logger.info(type(equipment_info)) logger.info('model数据为:'.format(equipment_info)) return equipment_info @staticmethod def equipment_info_bulk_create(week_val, equipment_info_list): """ 根据week_val判断,进行表对象选择存储 @param week_val: 星期一至星期天,int类型 @param equipment_info_list: 设备信息实例列表 @return: True or False """ try: with transaction.atomic(): if equipment_info_list and len(equipment_info_list) > 0: if week_val == 0: return False if week_val == 1: EquipmentInfoMonday.objects.bulk_create(equipment_info_list) elif week_val == 2: EquipmentInfoTuesday.objects.bulk_create(equipment_info_list) elif week_val == 3: EquipmentInfoWednesday.objects.bulk_create(equipment_info_list) elif week_val == 4: EquipmentInfoThursday.objects.bulk_create(equipment_info_list) elif week_val == 5: EquipmentInfoFriday.objects.bulk_create(equipment_info_list) elif week_val == 6: EquipmentInfoSaturday.objects.bulk_create(equipment_info_list) elif week_val == 7: EquipmentInfoSunday.objects.bulk_create(equipment_info_list) return True return False except Exception as e: er_log = logging.getLogger('django') er_log.exception(repr(e)) er_log.error(repr(e)) return False @staticmethod def randoms_insert_equipment_info(**kwargs): """ 随机一个推送数据表存储数据 """ equipment_info_list = [ EquipmentInfo1, EquipmentInfo2, EquipmentInfo3, EquipmentInfo4, EquipmentInfo5, EquipmentInfo6, EquipmentInfo7, EquipmentInfo8, EquipmentInfo9, EquipmentInfo10, EquipmentInfo11, EquipmentInfo12, EquipmentInfo13, EquipmentInfo14, EquipmentInfo15, EquipmentInfo16, EquipmentInfo17, EquipmentInfo18, EquipmentInfo19, EquipmentInfo20] try: random_model = random.choice(equipment_info_list) LOGGER.info('随机存表参数:{},表:{}'.format(kwargs, random_model)) random_model.objects.create(**kwargs) except Exception as e: LOGGER.info('随机存储推送数据异常: error_line:{}, error_msg:{}'.format(e.__traceback__.tb_lineno, repr(e))) @staticmethod def randoms_choice_equipment_info(): return random.choice(EQUIPMENT_INFO_LIST)