130 lines
5.5 KiB
Python
130 lines
5.5 KiB
Python
from django.db import models
|
|
from apps.utils.models import CommonBDModel, BaseModel, CommonADModel, CommonAModel, CommonBModel
|
|
|
|
class Product(CommonAModel):
|
|
"""
|
|
产品
|
|
"""
|
|
name = models.CharField('名称', max_length=50)
|
|
code = models.CharField('编号', max_length=50, null=True, blank=True)
|
|
|
|
class Meta:
|
|
verbose_name = '产品'
|
|
|
|
class Shift(CommonAModel):
|
|
"""班次
|
|
"""
|
|
name = models.CharField('名称', max_length=50)
|
|
start_time_o = models.TimeField('开始时间')
|
|
end_time_o = models.TimeField('结束时间')
|
|
|
|
class Meta:
|
|
verbose_name = '班次'
|
|
|
|
class Mgroup(CommonBModel):
|
|
"""测点集
|
|
"""
|
|
name = models.CharField('名称', max_length=50)
|
|
cate = models.CharField('分类', max_length=50, default='section') # section是工段
|
|
|
|
class Meta:
|
|
verbose_name = '测点集'
|
|
|
|
|
|
class Team(CommonBModel):
|
|
"""班组
|
|
"""
|
|
name = models.CharField('名称', max_length=50)
|
|
leader = models.ForeignKey('system.user', verbose_name='班长', on_delete=models.CASCADE)
|
|
|
|
|
|
class Mpoint(CommonBDModel):
|
|
"""测点
|
|
"""
|
|
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('enm.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 StLog(CommonADModel):
|
|
"""
|
|
停机记录
|
|
"""
|
|
mgroup = models.ForeignKey(Mgroup, verbose_name='关联工段', on_delete=models.CASCADE)
|
|
start_time = models.DateTimeField('停机开始')
|
|
end_time = models.DateTimeField('停机结束', null=True, blank=True)
|
|
duration = models.FloatField('停机时长(h)', null=True, blank=True)
|
|
|
|
|
|
class SfLog(CommonADModel):
|
|
"""值班记录
|
|
"""
|
|
mgroup = models.ForeignKey(Mgroup, verbose_name='关联工段', on_delete=models.CASCADE)
|
|
team = models.ForeignKey(Team, verbose_name='班组', on_delete=models.CASCADE)
|
|
shift = models.ForeignKey(Shift, verbose_name='当班班次', on_delete=models.CASCADE)
|
|
leader = models.ForeignKey('system.user', verbose_name='班长', on_delete=models.CASCADE)
|
|
start_time = models.DateTimeField('值班开始')
|
|
end_time = models.DateTimeField('值班结束')
|
|
note = models.TextField('生产情况记录', null=True, blank=True)
|
|
stlogs = models.ManyToManyField('enm.stlog', verbose_name='关联停机记录', through='enm.stsflog')
|
|
|
|
|
|
class StSfLog(BaseModel):
|
|
"""
|
|
停机-值班记录关联表
|
|
"""
|
|
stlog = models.ForeignKey(StLog, verbose_name='关联停机记录', on_delete=models.CASCADE)
|
|
sflog = models.ForeignKey(SfLog, verbose_name='关联值班记录', on_delete=models.CASCADE)
|
|
is_current_down = models.BooleanField('是否本班停机', default=False)
|
|
reason = models.TextField('停机原因', null=True, blank=True)
|
|
|
|
class Meta:
|
|
ordering = ['sflog__start_time']
|
|
|
|
|
|
class MpointStat(BaseModel):
|
|
"""测点统计表
|
|
"""
|
|
type = models.CharField('统计维度', max_length=50, default='hour', help_text='year/month/day/hour')
|
|
year = models.PositiveSmallIntegerField('年')
|
|
month = models.PositiveSmallIntegerField('月', null=True, blank=True)
|
|
day = models.PositiveSmallIntegerField('日', null=True, blank=True)
|
|
hour = models.PositiveSmallIntegerField('时', null=True, blank=True)
|
|
mpoint = models.ForeignKey(Mpoint, verbose_name='关联测点', on_delete=models.CASCADE)
|
|
val = models.FloatField('统计值', default=0)
|
|
|
|
|
|
class Goal(CommonADModel):
|
|
"""目标
|
|
"""
|
|
mgroup = models.ForeignKey(Mgroup, verbose_name='关联工段', on_delete=models.CASCADE, null=True, blank=True)
|
|
product = models.ForeignKey(Product, verbose_name='关联产品', on_delete=models.CASCADE, null=True, blank=True)
|
|
team = models.ForeignKey(Team, verbose_name='关联班组', on_delete=models.CASCADE, null=True, blank=True)
|
|
year = models.PositiveSmallIntegerField('年')
|
|
goal_name = models.CharField('目标名称', max_length=50, help_text='总产量/台时产量/单位产品分布电耗/')
|
|
goal_val = models.FloatField('全年目标值')
|
|
goal_val_1 = models.FloatField('1月份目标值')
|
|
goal_val_2 = models.FloatField('2月份目标值')
|
|
goal_val_3 = models.FloatField('3月份目标值')
|
|
goal_val_4 = models.FloatField('4月份目标值')
|
|
goal_val_5 = models.FloatField('5月份目标值')
|
|
goal_val_6 = models.FloatField('6月份目标值')
|
|
goal_val_7 = models.FloatField('7月份目标值')
|
|
goal_val_8 = models.FloatField('8月份目标值')
|
|
goal_val_9 = models.FloatField('9月份目标值')
|
|
goal_val_10 = models.FloatField('10月份目标值')
|
|
goal_val_11 = models.FloatField('11月份目标值')
|
|
goal_val_12 = models.FloatField('12月份目标值') |