68 lines
		
	
	
		
			2.6 KiB
		
	
	
	
		
			Python
		
	
	
	
			
		
		
	
	
			68 lines
		
	
	
		
			2.6 KiB
		
	
	
	
		
			Python
		
	
	
	
| from django.db import models
 | |
| from django.db.models.enums import Choices
 | |
| from apps.mtm.models import RecordForm, RecordFormField
 | |
| from apps.system.models import CommonAModel, File
 | |
| from utils.model import BaseModel
 | |
| # Create your models here.
 | |
| class Standard(CommonAModel):
 | |
|     """
 | |
|     标准
 | |
|     """
 | |
|     number = models.CharField('标准编号', max_length=100)
 | |
|     name = models.CharField('标准名称', max_length=100)
 | |
|     enabled = models.BooleanField('是否启用', default=True)
 | |
|     file = models.ForeignKey(File, verbose_name='文件', null=True, blank=True, on_delete=models.CASCADE)
 | |
| 
 | |
|     class Meta:
 | |
|         verbose_name = '标准库'
 | |
|         verbose_name_plural = verbose_name
 | |
| 
 | |
|     def __str__(self):
 | |
|         return self.number + '-' + self.name
 | |
| 
 | |
| class TestItem(CommonAModel):
 | |
|     """
 | |
|     检验项目
 | |
|     """
 | |
|     name = models.CharField('名称', max_length=100)
 | |
|     standard = models.ForeignKey(Standard, verbose_name='关联标准', on_delete=models.CASCADE)
 | |
|     term_number = models.CharField('条款号', max_length=100)
 | |
| 
 | |
|     class Meta:
 | |
|         verbose_name = '检验项目'
 | |
|         verbose_name_plural = verbose_name
 | |
| 
 | |
| class AnalysisItem(CommonAModel):
 | |
|     """
 | |
|     检验分析项
 | |
|     """
 | |
|     name = models.CharField('名称', max_length=100)
 | |
|     testitem = models.ForeignKey(TestItem, on_delete=models.CASCADE, verbose_name='关联检验项目')
 | |
|     rules =models.JSONField('判定规则', default=list)
 | |
| 
 | |
|     class Meta:
 | |
|         verbose_name = '检验分析项'
 | |
| 
 | |
| class TestRecord(CommonAModel):
 | |
|     """
 | |
|     检验记录
 | |
|     """
 | |
| 
 | |
|     form = models.ForeignKey('mtm.recordform', verbose_name='所用表格', on_delete=models.CASCADE)
 | |
|     record_data = models.JSONField('记录数据', default=dict, blank=True)
 | |
|     is_testok = models.BooleanField('是否合格', default=True)
 | |
|     fifo_detail = models.ForeignKey('inm.fifodetail', verbose_name='关联的出入库批次', on_delete=models.CASCADE, null=True, blank=True)
 | |
| 
 | |
| 
 | |
| class TestRecordDetail(BaseModel):
 | |
|     """
 | |
|     记录表格字段值
 | |
|     """
 | |
|     form_field = models.ForeignKey(RecordFormField, verbose_name='关联字段', on_delete=models.CASCADE, db_constraint=False)
 | |
|     field_name = models.CharField('字段名', max_length=50)
 | |
|     field_key = models.CharField('字段标识', max_length=50)
 | |
|     field_type = models.IntegerField('字段类型', choices=RecordForm.type_choices)
 | |
|     field_value = models.JSONField('录入值', default=dict, blank=True)
 | |
|     need_judge = models.BooleanField('是否需要判定', default=False)
 | |
|     is_testok = models.BooleanField('是否合格', default=True) 
 | |
|     test_record = models.ForeignKey(TestRecord, verbose_name='关联的检测记录', on_delete=models.CASCADE) |