1
0
forked from erp-dev/erp

fix: business.object_id maybe null, missing parameters when plate-Order cloned

This commit is contained in:
2025-12-17 11:02:07 +08:00
parent 639efe8421
commit 51fad953c3
24 changed files with 13247 additions and 47 deletions

View File

@@ -121,6 +121,12 @@ class PlateOrderAdmin(admin.ModelAdmin):
messages.append(f"{obj.id}: 没有关联的流程实例,无法推进")
continue
# 修复历史/异常数据:确保该订单的流程实例正确绑定到订单(避免 BusinessObject.object_id/content_type 为空)
services.ensure_business_object_bound_to_instance(
obj.business_object,
obj,
default_name=f"PlateOrder-{obj.id}",
)
success, message, state_log = services.advance_to_next_state(obj.business_object, request.user)
if success:
success_count += 1
@@ -375,6 +381,12 @@ class PrintingJobAdmin(admin.ModelAdmin):
messages.append(f"PrintingJob #{obj.id}: 没有关联的业务对象,无法推进")
continue
# 修复历史/异常数据:确保该 job 的流程实例正确绑定到 job避免 BusinessObject.object_id/content_type 为空)
services.ensure_business_object_bound_to_instance(
obj.business_object,
obj,
default_name=f"PrintingJob-{obj.id}",
)
success, message, state_log = services.advance_to_next_state(obj.business_object, request.user)
if success:
success_count += 1

View File

@@ -0,0 +1,21 @@
# Generated by Django 5.2.8 on 2025-12-16 11:52
import django.db.models.deletion
from django.conf import settings
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('printing', '0024_printingjobbatchadvancerecord'),
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
]
operations = [
migrations.AddField(
model_name='plateorder',
name='created_by',
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='created_plate_orders', to=settings.AUTH_USER_MODEL, verbose_name='创建人'),
),
]

View File

@@ -107,6 +107,14 @@ class PlateOrder(ModelBase):
# 流程管理
process = models.IntegerField(default=settings.PLATE_ORDER_DEFAULT_PROCESS_ID, verbose_name='关联流程')
created_by = models.ForeignKey(
settings.AUTH_USER_MODEL,
on_delete=models.SET_NULL,
null=True,
blank=True,
related_name='created_plate_orders',
verbose_name='创建人',
)
business_object = models.OneToOneField(
stateflow_models.BusinessObject,
on_delete=models.SET_NULL,