factory/apps/wpm/models.py

55 lines
2.4 KiB
Python

from django.db import models
from apps.system.models import BaseModel
from apps.utils.models import CommonADModel, CommonBDModel
from apps.mtm.models import Mgroup, Team, Shift
from django.utils.timezone import localtime
# Create your models here.
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, null=True, blank=True)
shift = models.ForeignKey(Shift, verbose_name='当班班次', on_delete=models.CASCADE)
leader = models.ForeignKey('system.user', verbose_name='班长', on_delete=models.CASCADE, null=True, blank=True)
start_time = models.DateTimeField('值班开始')
end_time = models.DateTimeField('值班结束')
note = models.TextField('其他备注', null=True, blank=True)
stlogs = models.ManyToManyField('wpm.stlog', verbose_name='关联停机记录', through='wpm.stsflog')
last_test_time = models.DateTimeField('最后质检时间', null=True, blank=True)
total_hour_now = models.FloatField('总时长动', default=0)
shut_hour = models.FloatField('停机时长', default=0)
pcoal_heat = models.FloatField('煤粉热值', null=True, blank=True)
@property
def get_ymd(self):
"""
返回值班记录所属年月日
"""
end_time_local = localtime(self.end_time)
return end_time_local.year, end_time_local.month, end_time_local.day
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)
duration = models.FloatField('停机时长(h)', null=True, blank=True)
class Meta:
ordering = ['sflog__start_time']