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 |