42 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			Python
		
	
	
	
			
		
		
	
	
			42 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			Python
		
	
	
	
from django.db import models
 | 
						|
from apps.utils.models import BaseModel
 | 
						|
from apps.mtm.models import Material
 | 
						|
from apps.pum.models import Supplier
 | 
						|
from apps.wpm.models import WmStateOption
 | 
						|
from rest_framework.exceptions import NotFound, ParseError
 | 
						|
# Create your models here.
 | 
						|
 | 
						|
class LableMat(BaseModel):
 | 
						|
    """TN: 标签物料"""
 | 
						|
    state = models.PositiveSmallIntegerField('状态', default=10, choices=WmStateOption.choices)
 | 
						|
    material = models.ForeignKey(Material, on_delete=models.CASCADE)
 | 
						|
    batch = models.TextField('批次号', db_index=True)
 | 
						|
    supplier = models.ForeignKey(Supplier, verbose_name='外协供应商', on_delete=models.SET_NULL, null=True, blank=True)
 | 
						|
    notok_sign = models.CharField('不合格标记', max_length=10, null=True, blank=True)
 | 
						|
    defect = models.ForeignKey("qm.defect", verbose_name='缺陷', on_delete=models.SET_NULL, null=True, blank=True)
 | 
						|
    material_origin = models.ForeignKey(Material, verbose_name='原始物料', on_delete=models.SET_NULL, null=True, blank=True, related_name='lm_mo')
 | 
						|
 | 
						|
 | 
						|
class LabelTemplate(BaseModel):
 | 
						|
    """TN: 标签模板"""
 | 
						|
    name = models.TextField("名称")
 | 
						|
    commands = models.JSONField("指令模板", default=list, blank=True)
 | 
						|
    process_json = models.JSONField("工序", default=list, blank=True)
 | 
						|
 | 
						|
    @classmethod
 | 
						|
    def gen_commands(cls, label_template, label_template_name, tdata):
 | 
						|
        if label_template:
 | 
						|
            lt = LabelTemplate.objects.get(id=label_template)
 | 
						|
        else:
 | 
						|
            lt = LabelTemplate.objects.filter(name=label_template_name).first()
 | 
						|
            if not lt:
 | 
						|
                raise NotFound("标签模板不存在")
 | 
						|
        commands:list = lt.commands
 | 
						|
        try:
 | 
						|
            n_commands = []
 | 
						|
            for item in commands:
 | 
						|
                item = item.format(**tdata)
 | 
						|
                n_commands.append(item)
 | 
						|
        except Exception as e:
 | 
						|
            raise ParseError(f"标签解析错误-{str(e)}")
 | 
						|
        return n_commands |