0001_initial.py 6.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110
  1. # Generated by Django 4.1.2 on 2025-04-15 19:55
  2. from django.db import migrations, models
  3. import django.db.models.deletion
  4. class Migration(migrations.Migration):
  5. initial = True
  6. dependencies = [
  7. ('container', '0002_containerwcsmodel_tasknumber'),
  8. ]
  9. operations = [
  10. migrations.CreateModel(
  11. name='LocationContainerLink',
  12. fields=[
  13. ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
  14. ('put_time', models.DateTimeField(auto_now_add=True, verbose_name='上架时间')),
  15. ('operator', models.CharField(max_length=50, verbose_name='操作人')),
  16. ('is_active', models.BooleanField(default=True, verbose_name='是否有效')),
  17. ('container', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='container.containerlistmodel')),
  18. ],
  19. options={
  20. 'verbose_name': 'Location-Container Link',
  21. 'verbose_name_plural': 'Location-Container Link',
  22. 'db_table': 'location_container_link',
  23. 'ordering': ['-id'],
  24. },
  25. ),
  26. migrations.CreateModel(
  27. name='LocationModel',
  28. fields=[
  29. ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
  30. ('warehouse_code', models.CharField(max_length=255, verbose_name='Warehouse code')),
  31. ('warehouse_name', models.CharField(max_length=255, verbose_name='Warehouse Name')),
  32. ('shelf_type', models.CharField(default='storage', max_length=255, verbose_name='Shelf Type')),
  33. ('row', models.IntegerField(verbose_name='Row')),
  34. ('col', models.IntegerField(verbose_name='Column')),
  35. ('layer', models.IntegerField(verbose_name='Layer')),
  36. ('update_time', models.DateTimeField(auto_now=True, null=True, verbose_name='Update Time')),
  37. ('empty_label', models.BooleanField(default=True, verbose_name='Empty Flag')),
  38. ('location_code', models.CharField(max_length=20, unique=True, verbose_name='库位编码')),
  39. ('location_type', models.CharField(choices=[('T5', '5货位'), ('T4', '4货位'), ('T2', '2货位'), ('S1', '散货位'), ('M', '通道区'), ('E', '提升机'), ('C', '输送机')], max_length=3, verbose_name='货位类型')),
  40. ('status', models.CharField(choices=[('available', '可用'), ('occupied', '占用'), ('disabled', '禁用'), ('reserved', '预留'), ('maintenance', '维护中')], default='available', max_length=20, verbose_name='库位状态')),
  41. ('max_capacity', models.PositiveIntegerField(verbose_name='最大容量')),
  42. ('current_quantity', models.PositiveIntegerField(default=0, verbose_name='当前托盘数')),
  43. ('coordinate', models.CharField(max_length=50, verbose_name='三维坐标')),
  44. ('current_containers', models.ManyToManyField(through='bin.LocationContainerLink', to='container.containerlistmodel', verbose_name='当前存放托盘')),
  45. ],
  46. options={
  47. 'verbose_name': 'Location',
  48. 'verbose_name_plural': 'Location',
  49. 'db_table': 'location',
  50. 'ordering': ['-id'],
  51. 'unique_together': {('warehouse_code', 'row', 'col', 'layer')},
  52. },
  53. ),
  54. migrations.AddField(
  55. model_name='locationcontainerlink',
  56. name='location',
  57. field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='bin.locationmodel'),
  58. ),
  59. migrations.CreateModel(
  60. name='LocationChangeLog',
  61. fields=[
  62. ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
  63. ('operation_type', models.CharField(choices=[('put', '上架'), ('pick', '下架'), ('move_in', '移入'), ('move_out', '移出')], max_length=10, verbose_name='操作类型')),
  64. ('timestamp', models.DateTimeField(auto_now_add=True, verbose_name='操作时间')),
  65. ('operator', models.CharField(max_length=50, verbose_name='操作人')),
  66. ('wcs_task_id', models.CharField(max_length=50, null=True, verbose_name='WCS任务ID')),
  67. ('container', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='container.containerlistmodel', verbose_name='托盘')),
  68. ('location', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='bin.locationmodel', verbose_name='库位')),
  69. ('related_location', models.ForeignKey(null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='related_logs', to='bin.locationmodel', verbose_name='关联库位')),
  70. ],
  71. options={
  72. 'verbose_name': 'Location Change Log',
  73. 'verbose_name_plural': 'Location Change Log',
  74. 'db_table': 'location_change_log',
  75. 'ordering': ['-id'],
  76. },
  77. ),
  78. migrations.AlterUniqueTogether(
  79. name='locationcontainerlink',
  80. unique_together={('location', 'container')},
  81. ),
  82. migrations.CreateModel(
  83. name='DeviceModel',
  84. fields=[
  85. ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
  86. ('device_id', models.CharField(max_length=255, verbose_name='Device ID')),
  87. ('device_name', models.CharField(max_length=255, verbose_name='Device Name')),
  88. ('device_type', models.CharField(max_length=255, verbose_name='Device Type')),
  89. ('ip_address', models.CharField(max_length=255, verbose_name='IP Address')),
  90. ('port', models.IntegerField(verbose_name='Port')),
  91. ('status', models.CharField(max_length=255, verbose_name='Status')),
  92. ('create_time', models.DateTimeField(auto_now_add=True, verbose_name='Create Time')),
  93. ('update_time', models.DateTimeField(auto_now=True, null=True, verbose_name='Update Time')),
  94. ('location', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='bin.locationmodel')),
  95. ],
  96. options={
  97. 'verbose_name': 'Device',
  98. 'verbose_name_plural': 'Device',
  99. 'db_table': 'device',
  100. 'ordering': ['-id'],
  101. 'unique_together': {('device_id',)},
  102. },
  103. ),
  104. ]