from django.db import models from apps.utils.models import BaseModel, CommonBModel from apps.wpm.models import SfLog class Mpoint(CommonBModel): """测点 """ name = models.CharField('测点名称', max_length=50) code = models.CharField('测点编号', max_length=50, unique=True) unit = models.CharField('单位', max_length=50) cate = models.CharField('分类', max_length=50, default='elec') ep_monitored = models.ForeignKey('em.equipment', verbose_name='监测哪个设备', related_name='mp_ep_monitored', on_delete=models.SET_NULL, null=True, blank=True) ep_belong = models.ForeignKey('em.equipment', verbose_name='属于哪个设备', related_name='mp_ep_belong', on_delete=models.SET_NULL, null=True, blank=True) mgroup = models.ForeignKey('mtm.mgroup', verbose_name='所在集合', on_delete=models.SET_NULL, null=True, blank=True) class MpLog(BaseModel): """测点原始记录 """ mpoint = models.ForeignKey(Mpoint, verbose_name='关联测点', on_delete=models.SET_NULL, null=True, blank=True) tag_id = models.BigIntegerField('记录ID', db_index=True) tag_code = models.CharField('测点编号', max_length=50) tag_update = models.DateTimeField('更新时间') tag_val = models.FloatField('当前值') class MpointStat(BaseModel): """测点统计表 """ type = models.CharField('统计维度', max_length=50, default='hour', help_text='year/month/day/year_s/month_s/day_s/sflog/hour') year = models.PositiveSmallIntegerField('年', null=True, blank=True) month = models.PositiveSmallIntegerField('月', null=True, blank=True) day = models.PositiveSmallIntegerField('日', null=True, blank=True) year_s = models.PositiveSmallIntegerField('班年', null=True, blank=True) month_s = models.PositiveSmallIntegerField('班月', null=True, blank=True) day_s = models.PositiveSmallIntegerField('班日', null=True, blank=True) hour = models.PositiveSmallIntegerField('时', null=True, blank=True) sflog = models.ForeignKey(SfLog, verbose_name='关联值班记录', on_delete=models.CASCADE, null=True, blank=True) mpoint = models.ForeignKey(Mpoint, verbose_name='关联测点', on_delete=models.CASCADE) val = models.FloatField('统计值', default=0) # class EnStat(BaseModel): # """ # 能源数据统计表 # """ # type = models.CharField('统计种类', max_length=50, default='elec', help_text='year_s/month_s/day_s/sflog') # sflog = models.ForeignKey(SfLog, verbose_name='关联值班记录', on_delete=models.CASCADE, null=True, blank=True) # mpoint = models.ForeignKey(Mpoint, verbose_name='关联测点', on_delete=models.CASCADE)