forked from erp-dev/erp
feat: new modul (stateflow)
This commit is contained in:
45
stateflow/migrations/0001_initial.py
Normal file
45
stateflow/migrations/0001_initial.py
Normal file
@@ -0,0 +1,45 @@
|
||||
# Generated by Django 5.2.7 on 2025-11-11 03:12
|
||||
|
||||
import django.db.models.deletion
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
initial = True
|
||||
|
||||
dependencies = [
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.CreateModel(
|
||||
name='State',
|
||||
fields=[
|
||||
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||
('created_at', models.DateTimeField(auto_now_add=True, verbose_name='创建时间')),
|
||||
('updated_at', models.DateTimeField(auto_now=True, verbose_name='更新时间')),
|
||||
('name', models.CharField(max_length=100, verbose_name='状态名称')),
|
||||
('data', models.JSONField(blank=True, null=True, verbose_name='参数表')),
|
||||
('description', models.TextField(blank=True, verbose_name='状态描述')),
|
||||
('next', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='stateflow.state', verbose_name='下一个状态')),
|
||||
],
|
||||
options={
|
||||
'abstract': False,
|
||||
},
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='Process',
|
||||
fields=[
|
||||
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||
('created_at', models.DateTimeField(auto_now_add=True, verbose_name='创建时间')),
|
||||
('updated_at', models.DateTimeField(auto_now=True, verbose_name='更新时间')),
|
||||
('name', models.CharField(max_length=100, verbose_name='流程名称')),
|
||||
('state_nodes', models.CharField(max_length=200, verbose_name='节点列表')),
|
||||
('description', models.TextField(blank=True, verbose_name='流程描述')),
|
||||
('current_state', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='current_for_processes', to='stateflow.state', verbose_name='当前状态')),
|
||||
],
|
||||
options={
|
||||
'abstract': False,
|
||||
},
|
||||
),
|
||||
]
|
||||
@@ -0,0 +1,33 @@
|
||||
# Generated by Django 5.2.7 on 2025-11-11 03:51
|
||||
|
||||
import django.db.models.deletion
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('stateflow', '0001_initial'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.RemoveField(
|
||||
model_name='state',
|
||||
name='data',
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='StateParameter',
|
||||
fields=[
|
||||
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||
('created_at', models.DateTimeField(auto_now_add=True, verbose_name='创建时间')),
|
||||
('updated_at', models.DateTimeField(auto_now=True, verbose_name='更新时间')),
|
||||
('key', models.CharField(max_length=100, verbose_name='参数键')),
|
||||
('value', models.CharField(max_length=200, verbose_name='参数值')),
|
||||
('description', models.TextField(blank=True, verbose_name='参数描述')),
|
||||
('state', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='parameters', to='stateflow.state', verbose_name='关联参数')),
|
||||
],
|
||||
options={
|
||||
'abstract': False,
|
||||
},
|
||||
),
|
||||
]
|
||||
@@ -0,0 +1,35 @@
|
||||
# Generated by Django 5.2.7 on 2025-11-11 03:56
|
||||
|
||||
import django.db.models.deletion
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('stateflow', '0002_remove_state_data_stateparameter'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AlterModelOptions(
|
||||
name='process',
|
||||
options={'verbose_name': '印染流程', 'verbose_name_plural': '印染流程'},
|
||||
),
|
||||
migrations.AlterModelOptions(
|
||||
name='state',
|
||||
options={'verbose_name': '流程节点', 'verbose_name_plural': '流程节点'},
|
||||
),
|
||||
migrations.AlterModelOptions(
|
||||
name='stateparameter',
|
||||
options={'verbose_name': '工艺参数', 'verbose_name_plural': '工艺参数'},
|
||||
),
|
||||
migrations.RemoveField(
|
||||
model_name='state',
|
||||
name='next',
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='state',
|
||||
name='previous',
|
||||
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='stateflow.state', verbose_name='上一级状态'),
|
||||
),
|
||||
]
|
||||
17
stateflow/migrations/0004_remove_state_previous.py
Normal file
17
stateflow/migrations/0004_remove_state_previous.py
Normal file
@@ -0,0 +1,17 @@
|
||||
# Generated by Django 5.2.7 on 2025-11-11 03:57
|
||||
|
||||
from django.db import migrations
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('stateflow', '0003_alter_process_options_alter_state_options_and_more'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.RemoveField(
|
||||
model_name='state',
|
||||
name='previous',
|
||||
),
|
||||
]
|
||||
@@ -0,0 +1,23 @@
|
||||
# Generated by Django 5.2.7 on 2025-11-11 04:00
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('stateflow', '0004_remove_state_previous'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AlterField(
|
||||
model_name='state',
|
||||
name='description',
|
||||
field=models.CharField(blank=True, max_length=200, verbose_name='状态描述'),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='stateparameter',
|
||||
name='description',
|
||||
field=models.CharField(blank=True, max_length=200, verbose_name='参数描述'),
|
||||
),
|
||||
]
|
||||
@@ -0,0 +1,40 @@
|
||||
# Generated by Django 5.2.7 on 2025-11-11 04:05
|
||||
|
||||
import django.db.models.deletion
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('stateflow', '0005_alter_state_description_and_more'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.RemoveField(
|
||||
model_name='process',
|
||||
name='state_nodes',
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='ProcessNode',
|
||||
fields=[
|
||||
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||
('created_at', models.DateTimeField(auto_now_add=True, verbose_name='创建时间')),
|
||||
('updated_at', models.DateTimeField(auto_now=True, verbose_name='更新时间')),
|
||||
('order', models.PositiveIntegerField(default=0, verbose_name='顺序')),
|
||||
('process', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='process_nodes', to='stateflow.process', verbose_name='流程')),
|
||||
('state', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='state_process_nodes', to='stateflow.state', verbose_name='节点')),
|
||||
],
|
||||
options={
|
||||
'verbose_name': '流程节点关联',
|
||||
'verbose_name_plural': '流程节点关联',
|
||||
'ordering': ['order', 'id'],
|
||||
'unique_together': {('process', 'order')},
|
||||
},
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='process',
|
||||
name='state_nodes',
|
||||
field=models.ManyToManyField(related_name='processes', through='stateflow.ProcessNode', to='stateflow.state', verbose_name='节点列表'),
|
||||
),
|
||||
]
|
||||
19
stateflow/migrations/0007_alter_process_current_state.py
Normal file
19
stateflow/migrations/0007_alter_process_current_state.py
Normal file
@@ -0,0 +1,19 @@
|
||||
# Generated by Django 5.2.7 on 2025-11-11 04:16
|
||||
|
||||
import django.db.models.deletion
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('stateflow', '0006_remove_process_state_nodes_processnode_and_more'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AlterField(
|
||||
model_name='process',
|
||||
name='current_state',
|
||||
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.PROTECT, related_name='current_for_processes', to='stateflow.state', verbose_name='当前状态'),
|
||||
),
|
||||
]
|
||||
@@ -0,0 +1,34 @@
|
||||
# Generated by Django 5.2.7 on 2025-11-11 04:27
|
||||
|
||||
import django.db.models.deletion
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('stateflow', '0007_alter_process_current_state'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.RemoveField(
|
||||
model_name='process',
|
||||
name='current_state',
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='Order',
|
||||
fields=[
|
||||
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||
('created_at', models.DateTimeField(auto_now_add=True, verbose_name='创建时间')),
|
||||
('updated_at', models.DateTimeField(auto_now=True, verbose_name='更新时间')),
|
||||
('name', models.CharField(max_length=100, verbose_name='订单名称')),
|
||||
('description', models.TextField(blank=True, verbose_name='订单描述')),
|
||||
('current_state', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.PROTECT, related_name='current_for_orders', to='stateflow.state', verbose_name='当前状态')),
|
||||
('process', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='orders', to='stateflow.process', verbose_name='关联流程')),
|
||||
],
|
||||
options={
|
||||
'verbose_name': '订单',
|
||||
'verbose_name_plural': '订单',
|
||||
},
|
||||
),
|
||||
]
|
||||
@@ -0,0 +1,39 @@
|
||||
# Generated by Django 5.2.7 on 2025-11-11 04:37
|
||||
|
||||
import django.db.models.deletion
|
||||
from django.conf import settings
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('stateflow', '0008_remove_process_current_state_order'),
|
||||
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.RemoveField(
|
||||
model_name='order',
|
||||
name='current_state',
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='OrderStateLog',
|
||||
fields=[
|
||||
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||
('created_at', models.DateTimeField(auto_now_add=True, verbose_name='创建时间')),
|
||||
('updated_at', models.DateTimeField(auto_now=True, verbose_name='更新时间')),
|
||||
('completed_at', models.DateTimeField(auto_now_add=True, verbose_name='完成时间')),
|
||||
('notes', models.TextField(blank=True, verbose_name='备注')),
|
||||
('completed_by', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='completed_order_states', to=settings.AUTH_USER_MODEL, verbose_name='完成人')),
|
||||
('order', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='state_logs', to='stateflow.order', verbose_name='订单')),
|
||||
('state', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='order_logs', to='stateflow.state', verbose_name='状态节点')),
|
||||
],
|
||||
options={
|
||||
'verbose_name': '订单状态日志',
|
||||
'verbose_name_plural': '订单状态日志',
|
||||
'ordering': ['completed_at'],
|
||||
'unique_together': {('order', 'state')},
|
||||
},
|
||||
),
|
||||
]
|
||||
@@ -0,0 +1,44 @@
|
||||
# Generated by Django 5.2.7 on 2025-11-11 05:24
|
||||
|
||||
import django.db.models.deletion
|
||||
from django.conf import settings
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('stateflow', '0009_remove_order_current_state_orderstatelog'),
|
||||
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.RemoveField(
|
||||
model_name='orderstatelog',
|
||||
name='notes',
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='orderstatelog',
|
||||
name='cancelled_at',
|
||||
field=models.DateTimeField(blank=True, null=True, verbose_name='撤销时间'),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='orderstatelog',
|
||||
name='is_cancelled',
|
||||
field=models.BooleanField(default=False, verbose_name='是否已撤销'),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='orderstatelog',
|
||||
name='completed_by',
|
||||
field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.SET_NULL, to=settings.AUTH_USER_MODEL, verbose_name='操作人'),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='orderstatelog',
|
||||
name='state',
|
||||
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='stateflow.state', verbose_name='状态'),
|
||||
),
|
||||
migrations.AlterModelTable(
|
||||
name='orderstatelog',
|
||||
table='order_state_log',
|
||||
),
|
||||
]
|
||||
76
stateflow/migrations/0011_rename_order_to_business_object.py
Normal file
76
stateflow/migrations/0011_rename_order_to_business_object.py
Normal file
@@ -0,0 +1,76 @@
|
||||
# Generated manually
|
||||
|
||||
from django.conf import settings
|
||||
from django.db import migrations, models
|
||||
import django.db.models.deletion
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('contenttypes', '0002_remove_content_type_name'),
|
||||
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
|
||||
('stateflow', '0010_remove_orderstatelog_notes_and_more'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
# 先重命名表(保留数据)
|
||||
migrations.RenameModel(
|
||||
old_name='Order',
|
||||
new_name='BusinessObject',
|
||||
),
|
||||
migrations.RenameModel(
|
||||
old_name='OrderStateLog',
|
||||
new_name='StateFlowRecord',
|
||||
),
|
||||
|
||||
# 更新 BusinessObject 的字段
|
||||
migrations.AlterModelOptions(
|
||||
name='businessobject',
|
||||
options={'verbose_name': '业务对象', 'verbose_name_plural': '业务对象'},
|
||||
),
|
||||
migrations.AlterModelTable(
|
||||
name='businessobject',
|
||||
table='business_object',
|
||||
),
|
||||
|
||||
# 添加 GenericForeignKey 字段
|
||||
migrations.AddField(
|
||||
model_name='businessobject',
|
||||
name='content_type',
|
||||
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='contenttypes.contenttype', verbose_name='关联对象类型', default=1),
|
||||
preserve_default=False,
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='businessobject',
|
||||
name='object_id',
|
||||
field=models.PositiveIntegerField(verbose_name='关联对象ID', default=0),
|
||||
preserve_default=False,
|
||||
),
|
||||
|
||||
# 更新 StateFlowRecord
|
||||
migrations.RenameField(
|
||||
model_name='stateflowrecord',
|
||||
old_name='order',
|
||||
new_name='business_object',
|
||||
),
|
||||
migrations.AlterModelOptions(
|
||||
name='stateflowrecord',
|
||||
options={'ordering': ['completed_at'], 'verbose_name': '状态流转记录', 'verbose_name_plural': '状态流转记录'},
|
||||
),
|
||||
migrations.AlterModelTable(
|
||||
name='stateflowrecord',
|
||||
table='state_flow_record',
|
||||
),
|
||||
migrations.AlterUniqueTogether(
|
||||
name='stateflowrecord',
|
||||
unique_together={('business_object', 'state')},
|
||||
),
|
||||
|
||||
# 更新 Process 的 related_name
|
||||
migrations.AlterField(
|
||||
model_name='businessobject',
|
||||
name='process',
|
||||
field=models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='business_objects', to='stateflow.process', verbose_name='关联流程'),
|
||||
),
|
||||
]
|
||||
@@ -0,0 +1,40 @@
|
||||
# Generated by Django 5.2.7 on 2025-11-11 08:23
|
||||
|
||||
import django.db.models.deletion
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('contenttypes', '0002_remove_content_type_name'),
|
||||
('stateflow', '0011_rename_order_to_business_object'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AlterField(
|
||||
model_name='businessobject',
|
||||
name='content_type',
|
||||
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='contenttypes.contenttype', verbose_name='关联对象类型'),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='businessobject',
|
||||
name='description',
|
||||
field=models.TextField(blank=True, verbose_name='描述'),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='businessobject',
|
||||
name='name',
|
||||
field=models.CharField(max_length=100, verbose_name='业务对象名称'),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='businessobject',
|
||||
name='object_id',
|
||||
field=models.PositiveIntegerField(blank=True, null=True, verbose_name='关联对象ID'),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='stateflowrecord',
|
||||
name='business_object',
|
||||
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='state_logs', to='stateflow.businessobject', verbose_name='业务对象'),
|
||||
),
|
||||
]
|
||||
Reference in New Issue
Block a user