from django.db import models from apps.utils.models import CommonADModel, CommonBDModel from apps.mtm.models import Mgroup, Team, Shift, Material from apps.pm.models import Mtask from apps.system.models import User 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) class WMaterial(CommonBDModel): """ belong_dept是所在车间 """ material = models.ForeignKey( Material, verbose_name='物料', on_delete=models.CASCADE) batch = models.CharField('批次号', max_length=50) count = models.PositiveIntegerField('当前数量', default=0) class Mlog(CommonADModel): """ 生产日志 """ mtask = models.ForeignKey( Mtask, verbose_name='关联生产', on_delete=models.CASCADE) batch = models.CharField('批次号', max_length=50) count_use = models.PositiveIntegerField('领用数', default=0) count_real = models.PositiveIntegerField('实际生产数', default=0) count_ok = models.PositiveIntegerField('合格数', default=0) count_notok = models.PositiveIntegerField('不合格数', default=0) handle_date = models.DateField('操作日期') handle_user = models.ForeignKey( User, verbose_name='操作人', on_delete=models.CASCADE)