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'] class SfLogExp(CommonADModel): """ 生产异常情况记录 """ sflog = models.ForeignKey(SfLog, on_delete=models.CASCADE, verbose_name='关联值班记录') happen_time = models.DateTimeField('发生时间') cate = models.CharField('异常类别', max_length=10) reason = models.TextField('原因') measure = models.TextField('处置措施') handler = models.CharField('处理人', max_length=100)