from django.db import models from apps.utils.models import CommonADModel 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.sflogexp') 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 SfLogExp(CommonADModel): """ 生产异常情况记录 """ sflog = models.ForeignKey( SfLog, on_delete=models.CASCADE, verbose_name='关联值班记录') stlog = models.ForeignKey( StLog, verbose_name='关联停机记录', on_delete=models.CASCADE, null=True, blank=True) title = models.CharField('异常名称', max_length=20) happen_time = models.DateTimeField('发生时间', null=True, blank=True) cate = models.CharField('原因类别', max_length=10, null=True, blank=True) reason = models.TextField('事件原因', default='', max_length=100) measure = models.TextField('处置措施', default='', max_length=100) handler = models.CharField('处理人', default='', max_length=100) is_current_down = models.BooleanField('是否本班停机', default=False) duration = models.FloatField('停机时长(h)', null=True, blank=True)