from django.db import models from bound.models import BoundBatchModel # Create your models here. # 主表:托盘数据 class ContainerListModel(models.Model): CONTAINER_STATUS = ( (0, '空置'), (1, '入库中'), (2, '在库'), (3, '出库中'), (4, '已出库') ) container_code = models.IntegerField( verbose_name='托盘编号') current_location = models.CharField(max_length=50, verbose_name='当前库位', default='N/A') target_location = models.CharField(max_length=50, verbose_name='目标库位', default='N/A') status = models.IntegerField(choices=CONTAINER_STATUS, default=0, verbose_name='托盘状态') last_operation = models.DateTimeField(auto_now=True, verbose_name='最后操作时间') class Meta: db_table = 'container_list' verbose_name = 'ContainerList' verbose_name_plural = "ContainerList" ordering = ['-container_code'] # 明细表:托盘详细数据记录当前组盘的 批次 数量 使用托盘码和状态来获取、托盘上的物料信息, class ContainerDetailModel(models.Model): BATCH_STATUS=( (0, '空盘'), (1, '组盘'), (2, '已出库') ) month = models.IntegerField(verbose_name='月份') container = models.ForeignKey(ContainerListModel, on_delete=models.CASCADE, related_name='details') batch = models.ForeignKey(BoundBatchModel, on_delete=models.CASCADE, verbose_name='批次') goods_code = models.CharField(max_length=50, verbose_name='货品编码') goods_desc = models.CharField(max_length=100, verbose_name='货品描述') goods_qty = models.IntegerField(verbose_name='数量') goods_weight = models.DecimalField(max_digits=10, decimal_places=3, verbose_name='重量') status = models.IntegerField(choices=BATCH_STATUS,default=0, verbose_name='状态') # 0: 未使用 1: 使用中 2: 已出库 creater = models.CharField(max_length=50, verbose_name='创建人') create_time = models.DateTimeField(auto_now_add=True, verbose_name='创建时间') update_time = models.DateTimeField(auto_now=True, verbose_name='更新时间') is_delete = models.BooleanField(default=False, verbose_name='是否删除') class Meta: db_table = 'container_detail' verbose_name = 'ContainerDetail' verbose_name_plural = "ContainerDetail" ordering = ['-id'] # 明细表:操作记录 记录每次出入库的记录,使用goods来进行盘点,使用托盘码来进行托盘的操作记录 class ContainerOperationModel(models.Model): OPERATION_TYPES = ( ('container','组盘'), ('inbound', '入库'), ('outbound', '出库'), ('adjust', '调整'), ) month = models.IntegerField(verbose_name='月份') container = models.ForeignKey(ContainerListModel, on_delete=models.CASCADE, related_name='operations') operation_type = models.CharField(max_length=20, choices=OPERATION_TYPES, verbose_name='操作类型') batch = models.ForeignKey(BoundBatchModel, on_delete=models.CASCADE, verbose_name='批次') goods_code = models.CharField(max_length=50, verbose_name='货品编码') goods_desc = models.CharField(max_length=100, verbose_name='货品描述') goods_qty = models.IntegerField(verbose_name='数量') goods_weight = models.DecimalField(max_digits=10, decimal_places=3, verbose_name='重量') operator = models.CharField(max_length=50, verbose_name='操作人') timestamp = models.DateTimeField(auto_now_add=True, verbose_name='操作时间') from_location = models.CharField(max_length=50, null=True, verbose_name='原库位') to_location = models.CharField(max_length=50, null=True, verbose_name='目标库位') memo = models.TextField(null=True, verbose_name='备注') is_delete = models.BooleanField(default=False, verbose_name='是否删除') class Meta: db_table = 'container_operation' verbose_name = 'ContainerOperation' verbose_name_plural = "ContainerOperation" ordering = ['-timestamp'] class ContainerWCSModel(models.Model): taskid = models.CharField(max_length=50, verbose_name='任务ID') month = models.IntegerField(verbose_name='月份') tasktype = models.CharField(max_length=50, verbose_name='任务类型') container = models.CharField(max_length=50, verbose_name='托盘号') current_location = models.CharField(max_length=50, verbose_name='当前库位') target_location = models.CharField(max_length=50, verbose_name='目标库位') message = models.TextField(verbose_name='消息') status = models.IntegerField(verbose_name='状态') create_time = models.DateTimeField(auto_now_add=True, verbose_name='创建时间') is_delete = models.BooleanField(default=False, verbose_name='是否删除') class Meta: db_table = 'container_wcs' verbose_name = 'ContainerWCS' verbose_name_plural = "ContainerWCS" ordering = ['-create_time'] def to_dict(self): return { 'container': self.container, 'current_location': self.current_location, 'month' : self.month, 'target_location': self.target_location, 'tasktype': self.tasktype, 'taskid': self.taskid, 'message': self.message, 'container': self.container, 'status': self.status } class TaskModel(models.Model): task_wcs = models.ForeignKey(ContainerWCSModel, on_delete=models.CASCADE, related_name='tasks') container_detail = models.ForeignKey(ContainerDetailModel, on_delete=models.CASCADE, verbose_name='托盘明细') class Meta: db_table = 'task' verbose_name = 'Task' verbose_name_plural = "Task" ordering = ['-id']