from django.db import models
from django.contrib.auth.models import User
from Core.models import WorkOrder, SubWorkOrder, UserInfo
from Process import PROCESS_CHOICES
from Process.models import ProcessMaterial, ProcessStep
from Production import (PRODUCTION_PLAN_STATUS_CHOICES,
PRODUCTION_PLAN_RELAX)
# TODO: Review model name
[文档]class SubMaterial(models.Model):
"""
子工作票
"""
material = models.ForeignKey(ProcessMaterial, verbose_name='工艺物料',
on_delete=models.CASCADE)
sub_order = models.ForeignKey(SubWorkOrder, verbose_name='子工作令',
on_delete=models.CASCADE)
estimated_finish_date = models.DateField(verbose_name='计划完成日期',
blank=True, null=True)
actual_finish_date = models.DateField(verbose_name='实际完成日期',
blank=True, null=True)
class Meta:
verbose_name = '子工作票'
verbose_name_plural = '子工作票'
def __str__(self):
return '{} {}'.format(self.sub_order, self.material)
[文档]class ProductionWorkGroup(models.Model):
"""
生产工作组
"""
name = models.CharField(verbose_name='名字', max_length=20)
process = models.IntegerField(verbose_name='工序',
choices=PROCESS_CHOICES)
class Meta:
verbose_name = '生产工作组'
verbose_name_plural = '生产工作组'
def __str__(self):
return self.name
[文档]class ProductionUser(models.Model):
"""
生产人员
"""
user_info = models.OneToOneField(UserInfo, verbose_name='详细信息',
on_delete=models.CASCADE)
work_group = models.ForeignKey(ProductionWorkGroup,
verbose_name='生产工作组',
blank=True, null=True,
on_delete=models.SET_NULL)
class Meta:
verbose_name = '生产人员'
verbose_name_plural = '生产人员'
def __str__(self):
return str(self.user_info)
[文档]class ProcessDetail(models.Model):
"""
工序详细信息
"""
sub_material = models.ForeignKey(SubMaterial, verbose_name='子工作票',
on_delete=models.CASCADE)
process_step = models.OneToOneField(ProcessStep, verbose_name='工序步骤',
on_delete=models.CASCADE)
work_group = models.ForeignKey(ProductionWorkGroup, verbose_name='工作组',
blank=True, null=True,
on_delete=models.SET_NULL)
# *IMPORTANT*
# TODO: estimated should be changed if 'Plan' is noun and not verb
estimated_start_date = models.DateField(verbose_name='计划开始日期',
blank=True, null=True)
estimated_finish_date = models.DateField(verbose_name='计划完成日期',
blank=True, null=True)
actual_finish_date = models.DateField(verbose_name='实际完成日期',
blank=True, null=True)
# plan_startdate = models.DateField(
# blank = True, null= True, verbose_name = u"计划开始时间")
# plan_enddate = models.DateField(
# blank = True, null= True, verbose_name = u"计划完成时间")
# complete_process_date = models.DateField(
# blank = True, null= True, verbose_name = u"完成时间")
inspector = models.ForeignKey(User, verbose_name='检查者',
blank=True, null=True,
on_delete=models.SET_NULL)
inspection_date = models.DateField(verbose_name='检查时间',
blank=True, null=True)
remark = models.CharField(verbose_name='检查内容', max_length=200,
blank=True, default='')
class Meta:
verbose_name = '工序详细信息'
verbose_name_plural = '工序详细信息'
# TODO: Review this unique setting
unique_together = ('sub_material', 'process_step')
def __str__(self):
return '{}({})'.format(self.sub_material, self.process_step)
[文档]class ComprehensiveDepartmentFileList(models.Model):
"""
综合工部文件清单检查
"""
sub_order = models.ForeignKey(SubWorkOrder, verbose_name='工作令',
on_delete=models.CASCADE)
sketch = models.BooleanField(verbose_name='简图', default=False)
pressure_test = models.BooleanField(verbose_name='试压工艺', default=False)
process_lib = models.BooleanField(verbose_name='工艺库', default=False)
product_graph = models.BooleanField(verbose_name='产品图', default=False)
encasement_graph = models.BooleanField(verbose_name='装箱图',
default=False)
shipping_mark = models.BooleanField(verbose_name='唛头', default=False)
encasement_list = models.BooleanField(verbose_name='装箱单', default=False)
coating_detail = models.BooleanField(verbose_name='涂装明细',
default=False)
class Meta:
verbose_name = '综合工部文件清单检查'
verbose_name_plural = '综合工部文件清单检查'
def __str__(self):
return str(self.sub_order)
[文档]class ProductionPlan(models.Model):
"""
生产计划
"""
work_order = models.ForeignKey(WorkOrder, verbose_name='工作令',
on_delete=models.CASCADE)
status = models.IntegerField(verbose_name='生产计划状态',
choices=PRODUCTION_PLAN_STATUS_CHOICES,
default=PRODUCTION_PLAN_RELAX)
plan_date = models.DateField(verbose_name='计划年月')
class Meta:
verbose_name = '生产计划'
verbose_name_plural = '生产计划'
def __str__(self):
return str(self.work_order)