12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061 |
- from django.db import models
- class StockshelfModel(models.Model):
- warehouse_code = models.CharField(max_length=255, verbose_name="Warehouse code")
- warehouse_name = models.CharField(max_length=255, verbose_name="Warehouse Name")
- shelf_name = models.CharField(max_length=255, verbose_name="Shelf Name")
- shelf_type = models.CharField(max_length=255,default = 'storage', verbose_name="Shelf Type")
- row = models.IntegerField(verbose_name="Row") # 位置的行号
- col = models.IntegerField(verbose_name="Column") # 位置的列号
- layer = models.IntegerField(verbose_name="Layer") # 位置的层号
- ip_address = models.CharField(max_length=255, default = '127.0.0.1',verbose_name="IP Address")
- port = models.IntegerField(default = 8000, verbose_name="Port")
- status = models.CharField(max_length=255, default = 'offline',verbose_name="Status")
- # openid = models.CharField(max_length=255, verbose_name="Openid")
- create_time = models.DateTimeField(auto_now_add=True, verbose_name="Create Time")
- update_time = models.DateTimeField(auto_now=True, blank=True, null=True, verbose_name="Update Time")
- empty_label = models.BooleanField(default=True, verbose_name="Empty Flag")
- shelf_department = models.CharField(max_length=255, default = '货架部门', verbose_name="Shelf Department")
- shelf_status = models.CharField(max_length=255, default = '未满', verbose_name="Shelf Status")
- goods_code = models.CharField(max_length=255,default = 'A010203', verbose_name="Goods Code")
- goods_name = models.CharField(max_length=255,default = '待填写', verbose_name="Goods Name")
- goods_std = models.CharField(max_length=255,default = '待填写', verbose_name="Goods Standard")
- goods_desc = models.CharField(max_length=255,default = '待填写', verbose_name="Goods Description")
- goods_qty = models.BigIntegerField(default=0, verbose_name="Goods Quantity")
- goods_unit = models.CharField(max_length=255,default = '件', verbose_name="Goods Unit")
- goods_price = models.DecimalField(max_digits=10, default=0,decimal_places=2, verbose_name="Goods Price")
- goods_batch = models.CharField(max_length=255,default = '待填写', verbose_name="Goods Batch")
- goods_notes = models.CharField(max_length=255,default = '待填写', verbose_name="Goods Notes")
- goods_in = models.BigIntegerField(default=0, verbose_name="Goods In")
- goods_out = models.BigIntegerField(default=0, verbose_name="Goods Out")
- class Meta:
- db_table = 'shelflist'
- verbose_name = 'Shelf List'
- verbose_name_plural = "Shelf List"
- ordering = ['-id']
- unique_together = ('shelf_name', 'warehouse_code','row', 'col', 'layer') # 防止重复坐标
-
- def save(self, *args, **kwargs):
- """自动更新 empty_label 状态"""
- self.empty_label = (self.goods_qty == 0)
- super().save(*args, **kwargs)
-
- @classmethod
- def get_existing_positions(cls, warehouse_code,shelf_name, rows, cols, layers):
- """获取已存在的坐标集合"""
- return set(
- cls.objects.filter(
- warehouse_code=warehouse_code,
- shelf_name=shelf_name,
- row__lte=rows,
- col__lte=cols,
- layer__lte=layers
- ).values_list('row', 'col', 'layer')
- )
|