feat: wpr添加初始物料字段
This commit is contained in:
parent
98bf81f5e0
commit
be6d51af7d
|
@ -0,0 +1,25 @@
|
|||
# Generated by Django 3.2.12 on 2025-05-13 03:00
|
||||
|
||||
from django.db import migrations, models
|
||||
import django.db.models.deletion
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('mtm', '0057_process_number_to_batch'),
|
||||
('wpmw', '0005_wpr_wpr_from'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AddField(
|
||||
model_name='wpr',
|
||||
name='material_start',
|
||||
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='material_start_wpr', to='mtm.material', verbose_name='初始物料'),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='wpr',
|
||||
name='material',
|
||||
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='material_wpr', to='mtm.material', verbose_name='当前物料形态'),
|
||||
),
|
||||
]
|
|
@ -16,7 +16,8 @@ class Wpr(BaseModel):
|
|||
number = models.CharField("编号", max_length=50, null=True, blank=True)
|
||||
version = models.PositiveIntegerField("版本号", default=9999)
|
||||
state = models.PositiveSmallIntegerField('状态', default=10, choices=WmStateOption.choices)
|
||||
material = models.ForeignKey(Material, verbose_name="当前物料形态", on_delete=models.CASCADE)
|
||||
material = models.ForeignKey(Material, verbose_name="当前物料形态", on_delete=models.CASCADE, related_name="material_wpr")
|
||||
material_start = models.ForeignKey(Material, verbose_name="初始物料", on_delete=models.CASCADE, null=True, blank=True, related_name="material_start_wpr")
|
||||
defects = models.ManyToManyField("qm.defect", through="wpmw.wprdefect", verbose_name="缺陷项")
|
||||
|
||||
|
||||
|
@ -27,6 +28,7 @@ class Wpr(BaseModel):
|
|||
|
||||
@classmethod
|
||||
def change_or_new(cls, wpr=None, number=None, mb=None, wm=None, old_mb=None, old_wm=None, ftest=None, wpr_from=None):
|
||||
is_create = False
|
||||
if wpr is None and number is None:
|
||||
raise ParseError("id和number不能同时为空")
|
||||
if mb and wm:
|
||||
|
@ -48,6 +50,7 @@ class Wpr(BaseModel):
|
|||
ins = cls(number=number)
|
||||
ins.version = -1
|
||||
ins.oinfo = {}
|
||||
is_create = True
|
||||
else:
|
||||
raise ParseError(f"该物料编号{number}-已存在不可使用")
|
||||
else:
|
||||
|
@ -56,6 +59,7 @@ class Wpr(BaseModel):
|
|||
ins = cls(number=number)
|
||||
ins.version = -1
|
||||
ins.oinfo = {}
|
||||
is_create = True
|
||||
# if batch_from: # 尝试从批号追踪来源
|
||||
# ins_from = cls.objects.filter(number=batch_from).order_by("-version").first()
|
||||
# if ins_from:
|
||||
|
@ -86,11 +90,15 @@ class Wpr(BaseModel):
|
|||
ins.mb = mb
|
||||
if mb:
|
||||
ins.material = mb.material
|
||||
if is_create:
|
||||
ins.material_start = mb.material
|
||||
|
||||
ins.wm = wm
|
||||
if wm:
|
||||
ins.material = wm.material
|
||||
ins.state = wm.state
|
||||
if is_create:
|
||||
ins.material_start = wm.material
|
||||
WprDefect.objects.filter(wpr=ins).delete()
|
||||
if wm.defect:
|
||||
WprDefect.objects.create(wpr=ins, defect=wm.defect, is_main=True)
|
||||
|
|
Loading…
Reference in New Issue