Process.models.circulation 源代码

from django.db import models
from django.contrib.auth.models import User

from Core.utils import DynamicHashPath
from Process import (PROCESS_CHOICES, CIRCULATION_CHOICES,
                     TRANSFER_CARD_CATEGORY_CHOICES, TRANSFER_HEADER_MAP)
from Process.models import ProcessMaterial


[文档]class ProcessRoute(models.Model): """ 工序路线 """ process_material = models.OneToOneField(ProcessMaterial, verbose_name='物料', on_delete=models.CASCADE) class Meta: verbose_name = '工序路线' verbose_name_plural = '工序路线' def __str__(self): return self.process_material.name
[文档]class ProcessStep(models.Model): route = models.ForeignKey(ProcessRoute, verbose_name='工序路线', related_name='steps', on_delete=models.CASCADE) step = models.IntegerField(verbose_name='工序', blank=True, null=True, choices=PROCESS_CHOICES) man_hours = models.FloatField(verbose_name='工时', blank=True, null=True) class Meta: verbose_name = '工序步骤' verbose_name_plural = '工序步骤'
[文档]class CirculationRoute(models.Model): """ 流转路线 """ process_material = models.OneToOneField(ProcessMaterial, verbose_name='物料', on_delete=models.CASCADE) C1 = models.IntegerField(verbose_name='路线1', blank=True, null=True, choices=CIRCULATION_CHOICES) C2 = models.IntegerField(verbose_name='路线2', blank=True, null=True, choices=CIRCULATION_CHOICES) C3 = models.IntegerField(verbose_name='路线3', blank=True, null=True, choices=CIRCULATION_CHOICES) C4 = models.IntegerField(verbose_name='路线4', blank=True, null=True, choices=CIRCULATION_CHOICES) C5 = models.IntegerField(verbose_name='路线5', blank=True, null=True, choices=CIRCULATION_CHOICES) C6 = models.IntegerField(verbose_name='路线6', blank=True, null=True, choices=CIRCULATION_CHOICES) C7 = models.IntegerField(verbose_name='路线7', blank=True, null=True, choices=CIRCULATION_CHOICES) C8 = models.IntegerField(verbose_name='路线8', blank=True, null=True, choices=CIRCULATION_CHOICES) C9 = models.IntegerField(verbose_name='路线9', blank=True, null=True, choices=CIRCULATION_CHOICES) C10 = models.IntegerField(verbose_name='路线10', blank=True, null=True, choices=CIRCULATION_CHOICES) class Meta: verbose_name = '流转路线' verbose_name_plural = '流转路线' def __str__(self): return str(self.process_material)
[文档]class TransferCard(models.Model): """ 流转卡 """ process_material = models.ForeignKey(ProcessMaterial, verbose_name='工艺物料', on_delete=models.CASCADE) category = models.IntegerField(verbose_name='流转卡类型', choices=TRANSFER_CARD_CATEGORY_CHOICES) container_category = models.CharField(verbose_name='容器类别', max_length=50, blank=True, default='') parent_name = models.CharField(verbose_name='所属部件名称', max_length=50, blank=True, default='') welding_plate_idx = models.CharField(verbose_name='焊接试板图号', max_length=50, blank=True, default='') parent_plate_idx = models.CharField(verbose_name='母材试板图号', max_length=50, blank=True, default='') material_index = models.CharField(verbose_name='材质标记', max_length=100, blank=True, default='') path = models.FileField(verbose_name='文件路径', upload_to=DynamicHashPath('TransferCard'), blank=True, null=True) tech_requirement = models.CharField(verbose_name='技术要求', max_length=1000, default='', blank=True) writer = models.ForeignKey(User, verbose_name='编制人', blank=True, null=True, related_name='transfer_card_writer', on_delete=models.SET_NULL) write_dt = models.DateTimeField(verbose_name='编制日期', blank=True, null=True) reviewer = models.ForeignKey(User, verbose_name='审核人', blank=True, null=True, related_name='transfer_card_reviewer', on_delete=models.SET_NULL) review_dt = models.DateTimeField(verbose_name='审核日期', blank=True, null=True) proofreader = models.ForeignKey(User, verbose_name='校对人', blank=True, null=True, related_name='transfer_card_proofreader', on_delete=models.SET_NULL) proofread_dt = models.DateTimeField(verbose_name='校对日期', blank=True, null=True) approver = models.ForeignKey(User, verbose_name='批准人', blank=True, null=True, related_name='transfer_card_approver', on_delete=models.SET_NULL) approve_dt = models.DateTimeField(verbose_name='批准日期', blank=True, null=True) class Meta: verbose_name = '流转卡' verbose_name_plural = '流转卡' def __str__(self): header = TRANSFER_HEADER_MAP.get(self.category, 'RH05') return '{}-{}-{}'.format(header, self.process_material.work_order.uid, self.uid) @property def status(self): zipped = zip( [self.approver, self.reviewer, self.proofreader, self.writer], ['已批准', '已审核', '已校对', '已编制']) for signed, status_name in zipped: if signed: return status_name return '初创建'
[文档]class TransferCardProcess(models.Model): """ 流转卡工序 """ transfer_card = models.ForeignKey(TransferCard, verbose_name='流转卡', on_delete=models.CASCADE) index = models.IntegerField(verbose_name='序号') name = models.CharField(verbose_name='工序名', max_length=50, default='', blank=True) detail = models.CharField(verbose_name='工艺过程及技术要求', max_length=100, default='', blank=True) class Meta: verbose_name = '流转卡工序' verbose_name_plural = '流转卡工序' def __str__(self): return '{}-{}-{}'.format(self.transfer_card, self.index, self.name)