107 lines
4.6 KiB
Python
107 lines
4.6 KiB
Python
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)
|
|
|
|
count_n_zw = models.PositiveIntegerField('炸纹', default=0)
|
|
count_n_tw = models.PositiveIntegerField('条纹', default=0)
|
|
count_n_qp = models.PositiveIntegerField('气泡', default=0)
|
|
count_n_wq = models.PositiveIntegerField('弯曲', default=0)
|
|
count_n_dl = models.PositiveIntegerField('断裂', default=0)
|
|
count_n_pb = models.PositiveIntegerField('偏壁', default=0)
|
|
count_n_dxt = models.PositiveIntegerField('大小头', default=0)
|
|
count_n_jsqx = models.PositiveIntegerField('结石气线', default=0)
|
|
count_n_qt = models.PositiveIntegerField('其他', default=0)
|
|
|
|
handle_date = models.DateField('操作日期')
|
|
handle_user = models.ForeignKey(
|
|
User, verbose_name='操作人', on_delete=models.CASCADE, related_name='mlog_handle_user')
|
|
handle_leader = models.ForeignKey(
|
|
User, verbose_name='班长', on_delete=models.CASCADE, null=True, blank=True, related_name='mlog_handle_leader')
|