from django.db import models
from django.db.models.base import Model
import django.utils.timezone as timezone
from django.db.models.query import QuerySet
from apps.system.models import CommonAModel, CommonBModel, Organization, User, Dict, File
from utils.model import SoftModel, BaseModel
from simple_history.models import HistoricalRecords
from apps.mtm.models import Material, Step, RecordForm

class Product(CommonAModel):
    """
    产品(所有生产过程中出现过的)
    """
    act_state_choices=(
        (0, '待执行'),
        (1, '进行中'),
        (2, '已完成')
    )
    number = models.CharField('物品编号', unique=True, null=True, blank=True, max_length=50)
    m_state = models.ForeignKey(Material, verbose_name='所属物料状态', on_delete=models.CASCADE)
    p_state = models.ForeignKey(Step, verbose_name='所在步骤', on_delete=models.CASCADE, null=True, blank=True)
    act_state = models.IntegerField('进行状态', default=0)
    parent = models.ForeignKey('self', verbose_name='上一级', on_delete=models.CASCADE, db_constraint=False)
    remark = models.CharField('备注', max_length=200, null=True, blank=True)

class ProductForm(CommonAModel):
    """
    记录表格
    """
    record_form = models.ForeignKey(RecordForm, verbose_name='所用表格', on_delete=models.CASCADE)
    data = models.JSONField('记录的数据', default=dict, blank=True)


class ProductFlow(BaseModel):
    """
    产品流转日志
    """
    product = models.ForeignKey(Product, verbose_name='产品', on_delete=models.CASCADE)