# Generated by Django 4.1.2 on 2025-04-24 23:03 from django.db import migrations, models import django.db.models.deletion class Migration(migrations.Migration): initial = True dependencies = [ ('container', '0001_initial'), ] operations = [ migrations.CreateModel( name='alloction_pre', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('batch_number', models.CharField(max_length=255, verbose_name='批次号')), ('layer_pre_type', models.JSONField(default=list, verbose_name='预留方案')), ('layer_solution_type', models.JSONField(default=list, verbose_name='规划方案')), ('layer1_task_finish_number', models.IntegerField(default=0, verbose_name='第一层任务完成数')), ('layer2_task_finish_number', models.IntegerField(default=0, verbose_name='第二层任务完成数')), ('layer3_task_finish_number', models.IntegerField(default=0, verbose_name='第三层任务完成数')), ('create_time', models.DateTimeField(auto_now_add=True, verbose_name='创建时间')), ], options={ 'verbose_name': 'Allocation_pre', 'verbose_name_plural': 'Allocation_pre', 'db_table': 'allocation_pre', 'ordering': ['-id'], }, ), migrations.CreateModel( name='base_location', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('layer1_pressure', models.IntegerField(default=0, verbose_name='第一层工作压力')), ('layer2_pressure', models.IntegerField(default=0, verbose_name='第二层工作压力')), ('layer3_pressure', models.IntegerField(default=0, verbose_name='第三层工作压力')), ], options={ 'verbose_name': 'Base_location', 'verbose_name_plural': 'Base_location', 'db_table': 'base_location', 'ordering': ['-id'], }, ), migrations.CreateModel( name='LocationContainerLink', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('put_time', models.DateTimeField(auto_now_add=True, verbose_name='上架时间')), ('operator', models.CharField(max_length=50, verbose_name='操作人')), ('is_active', models.BooleanField(default=True, verbose_name='是否有效')), ('container', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='container.containerlistmodel')), ], options={ 'verbose_name': 'Location-Container Link', 'verbose_name_plural': 'Location-Container Link', 'db_table': 'location_container_link', 'ordering': ['-id'], }, ), migrations.CreateModel( name='LocationModel', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('warehouse_code', models.CharField(max_length=255, verbose_name='Warehouse code')), ('warehouse_name', models.CharField(max_length=255, verbose_name='Warehouse Name')), ('shelf_type', models.CharField(default='storage', max_length=255, verbose_name='Shelf Type')), ('row', models.IntegerField(verbose_name='Row')), ('col', models.IntegerField(verbose_name='Column')), ('layer', models.IntegerField(verbose_name='Layer')), ('update_time', models.DateTimeField(auto_now=True, null=True, verbose_name='Update Time')), ('empty_label', models.BooleanField(default=True, verbose_name='Empty Flag')), ('location_code', models.CharField(max_length=20, unique=True, verbose_name='库位编码')), ('location_group', models.CharField(max_length=20, verbose_name='库位组')), ('location_type', models.CharField(choices=[('T5', '5货位'), ('T4', '4货位'), ('S4', '4单货位'), ('T2', '2货位'), ('T1', '散货位'), ('M1', '通道区'), ('E1', '提升机'), ('C1', '输送机'), ('B1', '充电桩')], max_length=3, verbose_name='货位类型')), ('status', models.CharField(choices=[('available', '可用'), ('occupied', '占用'), ('disabled', '禁用'), ('reserved', '预留'), ('maintenance', '维护中')], default='available', max_length=20, verbose_name='库位状态')), ('max_capacity', models.PositiveIntegerField(verbose_name='最大容量')), ('current_quantity', models.PositiveIntegerField(default=0, verbose_name='当前数')), ('c_number', models.IntegerField(default=1, verbose_name='库位远近排序')), ('coordinate', models.CharField(max_length=50, verbose_name='三维坐标')), ('access_priority', models.IntegerField(default=0, help_text='值越大表示越远离主通道,应优先使用', verbose_name='访问优先级')), ('is_active', models.BooleanField(default=True, verbose_name='是否有效')), ('current_containers', models.ManyToManyField(through='bin.LocationContainerLink', to='container.containerlistmodel', verbose_name='当前存放托盘')), ], options={ 'verbose_name': 'Location', 'verbose_name_plural': 'Location', 'db_table': 'location', 'ordering': ['-id'], 'unique_together': {('warehouse_code', 'row', 'col', 'layer')}, }, ), migrations.AddField( model_name='locationcontainerlink', name='location', field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='bin.locationmodel', verbose_name='库位'), ), migrations.AddField( model_name='locationcontainerlink', name='task_detail', field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='container.taskmodel'), ), migrations.AddField( model_name='locationcontainerlink', name='task_wcs', field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='container.containerwcsmodel'), ), migrations.CreateModel( name='LocationChangeLog', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('operation_type', models.CharField(choices=[('put', '上架'), ('pick', '下架'), ('move_in', '移入'), ('move_out', '移出')], max_length=10, verbose_name='操作类型')), ('timestamp', models.DateTimeField(auto_now_add=True, verbose_name='操作时间')), ('container', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='container.containerlistmodel', verbose_name='托盘')), ('location', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='bin.locationmodel', verbose_name='库位')), ('related_location', models.ForeignKey(null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='related_logs', to='bin.locationmodel', verbose_name='关联库位')), ('task_detail', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='container.taskmodel', verbose_name='批次详情')), ('task_wcs', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='container.containerwcsmodel', verbose_name='WCS任务')), ], options={ 'verbose_name': 'Location Change Log', 'verbose_name_plural': 'Location Change Log', 'db_table': 'location_change_log', 'ordering': ['-id'], }, ), migrations.CreateModel( name='allocation_history', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('operation_type', models.CharField(max_length=10, verbose_name='操作类型')), ('timestamp', models.DateTimeField(auto_now_add=True, verbose_name='操作时间')), ('container', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='container.containerlistmodel', verbose_name='托盘')), ('location', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='bin.locationmodel', verbose_name='库位')), ('related_location', models.ForeignKey(null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='related_logs_history', to='bin.locationmodel', verbose_name='关联库位')), ('task_detail', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='container.taskmodel', verbose_name='批次详情')), ('task_wcs', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='container.containerwcsmodel', verbose_name='WCS任务')), ], options={ 'verbose_name': 'Allocation_history', 'verbose_name_plural': 'Allocation_history', 'db_table': 'allocation_history', 'ordering': ['-id'], }, ), migrations.CreateModel( name='LocationGroupModel', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('warehouse_code', models.CharField(max_length=50, verbose_name='仓库编码')), ('group_name', models.CharField(max_length=50, verbose_name='库位组名称')), ('group_type', models.CharField(choices=[('T5', '5货位'), ('T4', '4货位'), ('S4', '4单货位'), ('T2', '2货位'), ('T1', '散货位')], max_length=50, verbose_name='库位组类型')), ('group_code', models.CharField(max_length=50, verbose_name='库位组编码')), ('layer', models.PositiveIntegerField(verbose_name='层数')), ('status', models.CharField(choices=[('available', '可用'), ('occupied', '占用'), ('full', '满'), ('disabled', '禁用'), ('reserved', '预留'), ('maintenance', '维护中')], default='available', max_length=20, verbose_name='库位状态')), ('max_capacity', models.PositiveIntegerField(verbose_name='最大容量')), ('current_quantity', models.PositiveIntegerField(default=0, verbose_name='当前托盘数')), ('current_goods_quantity', models.PositiveIntegerField(default=0, verbose_name='当前货物数')), ('current_batch', models.CharField(default='', max_length=50, verbose_name='当前批次')), ('current_goods_code', models.CharField(default='', max_length=50, verbose_name='当前货物编码')), ('access_priority', models.IntegerField(default=0, help_text='值越大表示越远离主通道,应优先使用', verbose_name='访问优先级')), ('left_priority', models.IntegerField(default=0, help_text='值越大表示越靠左,应优先使用', verbose_name='左侧优先级')), ('right_priority', models.IntegerField(default=0, help_text='值越大表示越靠右,应优先使用', verbose_name='右侧优先级')), ('is_active', models.BooleanField(default=True, verbose_name='是否有效')), ('location_items', models.ManyToManyField(to='bin.locationmodel', verbose_name='库位')), ], options={ 'verbose_name': 'Location Group', 'verbose_name_plural': 'Location Group', 'db_table': 'location_group', 'ordering': ['-id'], 'unique_together': {('warehouse_code', 'group_code')}, }, ), migrations.AlterUniqueTogether( name='locationcontainerlink', unique_together={('location', 'container')}, ), migrations.CreateModel( name='DeviceModel', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('device_id', models.CharField(max_length=255, verbose_name='Device ID')), ('device_name', models.CharField(max_length=255, verbose_name='Device Name')), ('device_type', models.CharField(max_length=255, verbose_name='Device Type')), ('ip_address', models.CharField(max_length=255, verbose_name='IP Address')), ('port', models.IntegerField(verbose_name='Port')), ('status', models.CharField(max_length=255, verbose_name='Status')), ('create_time', models.DateTimeField(auto_now_add=True, verbose_name='Create Time')), ('update_time', models.DateTimeField(auto_now=True, null=True, verbose_name='Update Time')), ('location', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='bin.locationmodel')), ], options={ 'verbose_name': 'Device', 'verbose_name_plural': 'Device', 'db_table': 'device', 'ordering': ['-id'], 'unique_together': {('location', 'device_id')}, }, ), ]