from django.db import models


class MongoDevice(models.Model):
    # objects = models.DjongoManager()
    id = models.AutoField(primary_key=True)  # 自增id
    device_id = models.CharField(u'设备本身id', max_length=50, unique=True)  # 设备id
    dver_num = models.CharField(u'设备固件版本号', max_length=50, default='')  # 设备固件版本号
    device_model = models.PositiveIntegerField(default=0)  # 设备型号 1  2 3 型号特指性诱设备
    device_type_id = models.PositiveIntegerField(u'设备类型id', default=0)  # 设备类型id
    device_name = models.CharField(u'设备名称', max_length=50, default='')  # 设备名称
    owner_uid = models.PositiveIntegerField(u'负责人uid', default=0)  # 负责人uid
    user_dealer = models.PositiveIntegerField(u'负责人uid', default=0)  # 经销商id
    province = models.CharField(u'设备归属  省', max_length=50, default='')  # 设备归属  省
    city = models.CharField(u'设备归属  市', max_length=50, default='')  # 设备归属  市
    district = models.CharField(u'设备归属 县', max_length=50, default='')  # 设备归属 县
    # 设备编码,用于区分性诱1型、2型设备类型、测报灯设备类型1(1.0转盘) 11(1.0高空) 4(4.0水稻) 5(5.0测报灯) 6(吸虫塔)
    device_code = models.PositiveIntegerField(u'设备编码 当设备为性诱设备的时候必须存在', default=0)
    device_status = models.PositiveIntegerField(u'设备状态 1在线 0离线', default=1)  # 设备状态 1在线 0离线
    off_time = models.PositiveIntegerField(u'设备离线时间', default=0)  # 设备离线时间
    ftp_push_addr = models.CharField(u'设备推送图片地址', max_length=50, default='')  # 设备推送图片地址
    serverconf = models.TextField(u'服务器配置', default='')  # 服务器配置
    lng = models.CharField(u'经度', max_length=50, default='')  # 经度
    lat = models.CharField(u'纬度', max_length=50, default='')  # 纬度
    gps = models.PositiveIntegerField(u'纬度', default=2)  # 0-手动,1-GPS,2-基站
    addtime = models.IntegerField(default=0)  # 设备添加时间
    uptime = models.IntegerField(default=0)  # 设备修改时间
    glass_slide_time = models.IntegerField(default=0)  # 载玻片更换时间
    cultivate_time = models.IntegerField(default=0)  # 培养液更换时间
    add_position = models.PositiveIntegerField(u'是否手动添加位置', default=0)  # 0未添加 1已添加
    simid = models.CharField(u'海康流量卡', max_length=50, default='')  # 海康4G SIM卡，宁录性诱sim
    disable = models.PositiveIntegerField(u'禁用识别统计', default=0)  # 0 禁用(不带识别)  1识别 2计数
    decoy = models.CharField(u'性诱设备诱芯', max_length=50, default='')  # 性诱设备诱芯
    sim_dealer = models.CharField(u'SIM经销商', max_length=50, default=0)  # 0为 以前的，1企鹏  2 宁录
    xy_uptime = models.IntegerField(default=0)  # 诱芯更换时间
    networking = models.CharField(u'联网方式', max_length=10, default=0)  # 联网方式 0GPRS 1宽带 2其他
    equipment = models.CharField(u'设备状态', max_length=10, default=0)  # 设备状态 0生产 1发货 2安装、3返修、4更换设备号、5报废、6对接
    sale_uid = models.IntegerField('销售用户uid', default=0)
    salesman_task_number = models.CharField(u'销售用户#任务单号', max_length=20, default=0)  # 任务单号
    whether_equipment_status = models.CharField(u'是否更新设备状态', max_length=10, default=0)  # 设备状态 0未更新，1已更新
    device_expire_time = models.IntegerField(default=0)  # 设备到期时间
    device_activation = models.IntegerField(default=0)  # 设备激活时间
    device_expire = models.CharField(u'设备是否到期', max_length=10, default=0)  # 设备状态 0未到期，1已到期,2即将到期
    device_expire_days = models.CharField(u'设备到期天数', max_length=10, default=0)  # 设备到期天数
    water_pump_switch = models.CharField(u'水泵开关', max_length=10, default=0)  # 此字段针对康亚杰定制灌溉设备
    device_notes = models.CharField(u'设备备注', max_length=20, blank=True, null=True, default=0)  # 此字段针对康亚杰定制灌溉设备、水肥设备
    water_pump_times = models.CharField(u'水泵控制时间', max_length=10, default=0)  # 此字段针对康亚杰定制灌溉设备
    water_pump_switch_times = models.CharField(u'下发水泵开关的时间', max_length=10, default=0)  # 此字段针对康亚杰定制灌溉设备
    xy_expire_time = models.IntegerField(default=0)  # 诱芯到期时间
    device_tag = models.IntegerField("标签", default=0)
    
    class Meta:
        db_table = "sa_device"



class MongoDeviceType(models.Model):
    id = models.AutoField(primary_key=True)  # 设备类型id
    type_name = models.CharField(u'设备类型名称 ',max_length=50,default='')  # 设备类型名称 2杀虫灯，3测报灯，4智能性诱，5气象站，6监控设备，7孢子仪，8性诱设备
    img_url = models.TextField(u'设备类型图片url地址', default="")
    addtime = models.IntegerField(default=0)  # 设备类型添加时间
    uptime = models.IntegerField(default=0)  # 设备类型修改时间

    class Meta:
        db_table = "sa_device_type"


class MongoDeviceConfig(models.Model):
    id = models.AutoField(primary_key=True)
    d_id = models.PositiveIntegerField(u'设备自增id',default=0)  # 设备id  设备自增id和cmd 复合索引
    device_config = models.TextField(u'设备配置',default='')  # 设备配置
    cmd = models.CharField(u'配置属性',max_length=50)  # 设备id
    addtime = models.IntegerField(default=0)  # 新增时间
    uptime = models.IntegerField(default=0)  # 修改时间

    class Meta:
        db_table = "sa_device_config"
        unique_together = (('d_id', 'cmd'),)



class MongoSCDData(models.Model):
    #杀虫灯历史数据表
    id = models.AutoField(primary_key=True)
    device_id = models.CharField(u'设备自增id', max_length=32, default="")  # 设备id
    device_data = models.TextField(u'具体历史状态数据',default='')  # 具体历史状态数据
    addtime = models.IntegerField(default=0)  # 新增时间
    device_status = models.CharField(u'四情数据区分',max_length=10,default=1)  # data\status 1

    class Meta:
        db_table = "sa_device_scd_data"



class MongoCBDData(models.Model):
    #测报灯
    id = models.AutoField(primary_key=True)
    device_id = models.CharField(u'设备自增id', max_length=32, default="")  # 设备id
    device_data = models.TextField(u'具体历史状态数据',default='')  # 具体历史状态数据
    addtime = models.IntegerField(default=0)  # 新增时间
    class Meta:
        db_table = "sa_device_cbd_data"


class MongoXYCBData(models.Model):
    #自己的性诱测报灯
    id = models.AutoField(primary_key=True)
    device_id = models.CharField(u'设备自增id', max_length=32, default="")  # 设备id
    device_data = models.TextField(u'具体历史状态数据',default='')  # 具体历史状态数据
    addtime = models.IntegerField(default=0)  # 新增时间
    class Meta:
        db_table = "sa_device_xycb_data"



class MongoSYCBData(models.Model):
    # 色诱测报灯
    id = models.AutoField(primary_key=True)
    device_id = models.CharField(u'设备自增id', max_length=32, default="")  # 设备id
    device_data = models.TextField(u'具体历史状态数据',default='')  # 具体历史状态数据
    addtime = models.IntegerField(default=0)  # 新增时间

    class Meta:
        db_table = "sa_device_sycb_data"


class MongoBZYData(models.Model):
    # 孢子仪
    id = models.AutoField(primary_key=True)
    device_id = models.CharField(u'设备自增id', max_length=32, default="")  # 设备id
    device_data = models.TextField(u'具体历史状态数据',default='')  # 具体历史状态数据
    addtime = models.IntegerField(default=0)  # 新增时间

    class Meta:
        db_table = "sa_device_bzy_data"


class MongoXCTData(models.Model):
    # 吸虫塔设备数据
    id = models.AutoField(primary_key=True)
    device_id = models.CharField(u'设备自增id', max_length=32, default="")  # 设备id
    device_data = models.TextField(u'具体历史状态数据',default='')  # 具体历史状态数据
    addtime = models.IntegerField(default=0)  # 新增时间

    class Meta:
        db_table = "sa_device_xct_data"

class MongoXYThreeData(models.Model):
    # 性诱3
    id = models.AutoField(primary_key=True)
    device_id = models.CharField(u'设备自增id', max_length=32, default="")  # 设备id
    device_data = models.TextField(u'具体历史状态数据',default='')  # 具体历史状态数据
    addtime = models.IntegerField(default=0)  # 新增时间
    class Meta:
        db_table = "sa_device_xy_three_data"


class MongoDevicePest(models.Model):
    # 设备图片害虫种类表
    id = models.AutoField(primary_key=True)
    user = models.CharField(verbose_name=u'害虫所属用户',max_length=50, blank=True, null=True)
    pest_add_time = models.IntegerField(default=0) #添加时间
    pest_name = models.CharField(u'害虫名称', max_length=50)

    class Meta:
        db_table = "sa_device_pest"


# 设备照片描述
class MongoDevice_Desc(models.Model):
    id = models.AutoField(primary_key=True)
    device_id = models.CharField(u'对应的设备id', max_length=50, blank=True, null=True)
    photo_id = models.CharField(blank=True, null=True, verbose_name=u'照片ID',max_length=50)
    desc_user = models.CharField(verbose_name=u'添加描述的用户', blank=True, null=True,max_length=50)
    add_time = models.IntegerField(default=0) #添加时间
    # 用户自定义添加：作物名称、病虫害阶段、病虫名称、雌雄、数量
    crop_name = models.CharField(u'作物名称', max_length=20,blank=True, null=True)
    pest_case = models.CharField(u'虫害情况', max_length=30,blank=True, null=True)
    pest_name = models.CharField( blank=True, null=True, verbose_name=u'害虫名称',max_length=50)
    # pest_sex = models.TextField(u'害虫雌雄', max_length=10, blank=True, null=True)
    pest_num = models.CharField(u'害虫数量', max_length=10, blank=True, null=True)
    photo_time = models.IntegerField(default=0) #对应的照片时间
    # def __str__(self):
    #    return self.equip_name
    class Meta:
        db_table = "sa_device_desc"


# 测报灯害虫预警表
class DevicePestWarning(models.Model):
    id = models.AutoField(primary_key=True)
    device_id = models.CharField(u"设备id",max_length=50, default='')
    warning_content = models.TextField(u"预警内容",default='')  
    warning_status = models.CharField(u"预警类型",max_length=10,default=0) # 1目标种类预警 2、指定害虫数量预警  3 害虫数量总和预警 4综合预警
    upltime = models.IntegerField(u"预警时间",default=0)
    status = models.IntegerField(u"是否已读",default=0) # 0未读 1已读

    class Meta:
        db_table = "sa_device_pest_warning"
