models.py 3.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. from django.db import models
  2. class StockshelfModel(models.Model):
  3. warehouse_code = models.CharField(max_length=255, verbose_name="Warehouse code")
  4. warehouse_name = models.CharField(max_length=255, verbose_name="Warehouse Name")
  5. shelf_name = models.CharField(max_length=255, verbose_name="Shelf Name")
  6. shelf_type = models.CharField(max_length=255,default = 'storage', verbose_name="Shelf Type")
  7. row = models.IntegerField(verbose_name="Row") # 位置的行号
  8. col = models.IntegerField(verbose_name="Column") # 位置的列号
  9. layer = models.IntegerField(verbose_name="Layer") # 位置的层号
  10. ip_address = models.CharField(max_length=255, default = '127.0.0.1',verbose_name="IP Address")
  11. port = models.IntegerField(default = 8000, verbose_name="Port")
  12. status = models.CharField(max_length=255, default = 'offline',verbose_name="Status")
  13. # openid = models.CharField(max_length=255, verbose_name="Openid")
  14. create_time = models.DateTimeField(auto_now_add=True, verbose_name="Create Time")
  15. update_time = models.DateTimeField(auto_now=True, blank=True, null=True, verbose_name="Update Time")
  16. empty_label = models.BooleanField(default=True, verbose_name="Empty Flag")
  17. shelf_department = models.CharField(max_length=255, default = '货架部门', verbose_name="Shelf Department")
  18. shelf_status = models.CharField(max_length=255, default = '未满', verbose_name="Shelf Status")
  19. goods_code = models.CharField(max_length=255,default = 'A010203', verbose_name="Goods Code")
  20. goods_name = models.CharField(max_length=255,default = '待填写', verbose_name="Goods Name")
  21. goods_std = models.CharField(max_length=255,default = '待填写', verbose_name="Goods Standard")
  22. goods_desc = models.CharField(max_length=255,default = '待填写', verbose_name="Goods Description")
  23. goods_qty = models.BigIntegerField(default=0, verbose_name="Goods Quantity")
  24. goods_unit = models.CharField(max_length=255,default = '件', verbose_name="Goods Unit")
  25. goods_price = models.DecimalField(max_digits=10, default=0,decimal_places=2, verbose_name="Goods Price")
  26. goods_batch = models.CharField(max_length=255,default = '待填写', verbose_name="Goods Batch")
  27. goods_notes = models.CharField(max_length=255,default = '待填写', verbose_name="Goods Notes")
  28. goods_in = models.BigIntegerField(default=0, verbose_name="Goods In")
  29. goods_out = models.BigIntegerField(default=0, verbose_name="Goods Out")
  30. class Meta:
  31. db_table = 'shelflist'
  32. verbose_name = 'Shelf List'
  33. verbose_name_plural = "Shelf List"
  34. ordering = ['-id']
  35. unique_together = ('shelf_name', 'warehouse_code','row', 'col', 'layer') # 防止重复坐标
  36. def save(self, *args, **kwargs):
  37. """自动更新 empty_label 状态"""
  38. self.empty_label = (self.goods_qty == 0)
  39. super().save(*args, **kwargs)
  40. @classmethod
  41. def get_existing_positions(cls, warehouse_code,shelf_name, rows, cols, layers):
  42. """获取已存在的坐标集合"""
  43. return set(
  44. cls.objects.filter(
  45. warehouse_code=warehouse_code,
  46. shelf_name=shelf_name,
  47. row__lte=rows,
  48. col__lte=cols,
  49. layer__lte=layers
  50. ).values_list('row', 'col', 'layer')
  51. )