79 lines
4.9 KiB
Python
79 lines
4.9 KiB
Python
from django.db import models
|
|
from apps.utils.models import BaseModel, CommonBModel, CommonADModel
|
|
from apps.wpm.models import SfLog
|
|
from apps.mtm.models import Material, Mgroup
|
|
|
|
|
|
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='material')
|
|
material = models.ForeignKey(Material, verbose_name='计量某种物料', on_delete=models.CASCADE, null=True, blank=True)
|
|
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)
|
|
mgroups_allocate = models.JSONField('各工段分配', default=list, blank=True, help_text='[{"mgroup":"x", "ratio": 1}]')
|
|
is_auto = models.BooleanField('是否自动采集', default=True)
|
|
is_all = models.BooleanField('是否记录是整个工段', default=False)
|
|
|
|
|
|
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(CommonADModel):
|
|
"""测点统计表
|
|
"""
|
|
type = models.CharField('统计维度', max_length=50, default='hour', help_text='year/month/day/year_s/month_s/day_s/sflog/hour_s/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)
|
|
mgroup = models.ForeignKey(Mgroup, 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='hour', help_text='year_s/month_s/day_s/sflog/hour_s')
|
|
sflog = models.ForeignKey(SfLog, verbose_name='关联值班记录', on_delete=models.CASCADE, null=True, blank=True)
|
|
mgroup = models.ForeignKey(Mgroup, verbose_name='关联工段', on_delete=models.CASCADE)
|
|
year = models.PositiveSmallIntegerField('年', null=True, blank=True)
|
|
month = models.PositiveSmallIntegerField('月', null=True, blank=True)
|
|
day = models.PositiveSmallIntegerField('日', null=True, blank=True)
|
|
hour = 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)
|
|
total_production = models.FloatField('总产量', null=True, blank=True, help_text='t')
|
|
elec_consume = models.FloatField('总电耗', null=True, blank=True, help_text='kw·h')
|
|
imaterial_data = models.JSONField('成本物料数据', default=list, blank=True)
|
|
other_cost_data = models.JSONField('其他成本数据', default=list, blank=True)
|
|
production_cost_unit = models.FloatField('单位产品成本', null=True, blank=True, help_text='y/t')
|
|
elec_consume_unit = models.FloatField('单位产品分布电耗', null=True, blank=True, help_text='kw·h/t')
|
|
celec_consume_unit = models.FloatField('单位产品综合电耗', null=True, blank=True, help_text='kw·h/t')
|
|
coal_consume_unit = models.FloatField('单位产品标煤耗', null=True, blank=True, help_text='kgce/t')
|
|
cen_consume_unit = models.FloatField('单位产品综合能耗', null=True, blank=True, help_text='kgce/t')
|
|
production_hour = models.FloatField('台时产量', null=True, blank=True, help_text='t/h')
|
|
run_hour = models.FloatField('运转时长', null=True, blank=True, help_text='h')
|
|
run_rate = models.FloatField('运转率', null=True, blank=True, help_text='%')
|
|
|