feat: 增加addto_wpr字段配置以在wpr表里添加额外信息
This commit is contained in:
parent
3e93fce213
commit
f88689cc1e
|
@ -0,0 +1,23 @@
|
||||||
|
# Generated by Django 3.2.12 on 2025-01-22 05:47
|
||||||
|
|
||||||
|
from django.db import migrations, models
|
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration):
|
||||||
|
|
||||||
|
dependencies = [
|
||||||
|
('qm', '0040_quastat_rate_pass_t'),
|
||||||
|
]
|
||||||
|
|
||||||
|
operations = [
|
||||||
|
migrations.AddField(
|
||||||
|
model_name='ftestitem',
|
||||||
|
name='addto_wpr',
|
||||||
|
field=models.BooleanField(default=False, verbose_name='加入WPR作为信息'),
|
||||||
|
),
|
||||||
|
migrations.AddField(
|
||||||
|
model_name='qcttestitem',
|
||||||
|
name='addto_wpr',
|
||||||
|
field=models.BooleanField(default=False, verbose_name='加入WPR作为信息'),
|
||||||
|
),
|
||||||
|
]
|
|
@ -170,6 +170,7 @@ class Qct(CommonAModel):
|
||||||
class QctTestItem(BaseModel):
|
class QctTestItem(BaseModel):
|
||||||
qct = models.ForeignKey(Qct, verbose_name="质检模板", on_delete=models.CASCADE, related_name="qcttestitem")
|
qct = models.ForeignKey(Qct, verbose_name="质检模板", on_delete=models.CASCADE, related_name="qcttestitem")
|
||||||
testitem = models.ForeignKey(TestItem, verbose_name="检测项", on_delete=models.CASCADE, null=True, blank=True)
|
testitem = models.ForeignKey(TestItem, verbose_name="检测项", on_delete=models.CASCADE, null=True, blank=True)
|
||||||
|
addto_wpr = models.BooleanField('加入WPR作为信息', default=False)
|
||||||
note = models.TextField('备注', null=True, blank=True)
|
note = models.TextField('备注', null=True, blank=True)
|
||||||
sort = models.FloatField('排序', default=1)
|
sort = models.FloatField('排序', default=1)
|
||||||
|
|
||||||
|
@ -315,6 +316,7 @@ class FtestItem(BaseModel):
|
||||||
TestItem, verbose_name='质检项目', on_delete=models.CASCADE)
|
TestItem, verbose_name='质检项目', on_delete=models.CASCADE)
|
||||||
test_user = models.ForeignKey(User, verbose_name='操作人', on_delete=models.CASCADE, null=True, blank=True)
|
test_user = models.ForeignKey(User, verbose_name='操作人', on_delete=models.CASCADE, null=True, blank=True)
|
||||||
test_val = models.FloatField('测量值', null=True, blank=True)
|
test_val = models.FloatField('测量值', null=True, blank=True)
|
||||||
|
addto_wpr = models.BooleanField('加入WPR作为信息', default=False)
|
||||||
check_val = models.FloatField('专检测量值', null=True, blank=True)
|
check_val = models.FloatField('专检测量值', null=True, blank=True)
|
||||||
test_val_json = models.JSONField('测量值', null=True, blank=True)
|
test_val_json = models.JSONField('测量值', null=True, blank=True)
|
||||||
check_val_json = models.JSONField('专检测量值', null=True, blank=True)
|
check_val_json = models.JSONField('专检测量值', null=True, blank=True)
|
||||||
|
|
|
@ -306,7 +306,7 @@ class FtestItemProcessSerializer(CustomModelSerializer):
|
||||||
source='testitem.description', read_only=True)
|
source='testitem.description', read_only=True)
|
||||||
class Meta:
|
class Meta:
|
||||||
model = FtestItem
|
model = FtestItem
|
||||||
fields = ["id", "testitem", "test_user", "test_val_json", "testitem_name", "testitem_description"]
|
fields = ["id", "testitem", "test_user", "test_val_json", "testitem_name", "testitem_description", "addto_wpr"]
|
||||||
|
|
||||||
class FtestProcessSerializer(CustomModelSerializer):
|
class FtestProcessSerializer(CustomModelSerializer):
|
||||||
test_user_name = serializers.CharField(
|
test_user_name = serializers.CharField(
|
||||||
|
|
|
@ -0,0 +1,18 @@
|
||||||
|
# Generated by Django 3.2.12 on 2025-01-22 05:48
|
||||||
|
|
||||||
|
from django.db import migrations, models
|
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration):
|
||||||
|
|
||||||
|
dependencies = [
|
||||||
|
('wpmw', '0001_initial'),
|
||||||
|
]
|
||||||
|
|
||||||
|
operations = [
|
||||||
|
migrations.AddField(
|
||||||
|
model_name='wpr',
|
||||||
|
name='oinfo',
|
||||||
|
field=models.JSONField(blank=True, default=dict, verbose_name='其他信息'),
|
||||||
|
),
|
||||||
|
]
|
|
@ -1,6 +1,6 @@
|
||||||
from django.db import models
|
from django.db import models
|
||||||
|
|
||||||
from apps.qm.models import FtestDefect
|
from apps.qm.models import FtestDefect, FtestItem
|
||||||
from apps.utils.models import BaseModel
|
from apps.utils.models import BaseModel
|
||||||
from apps.mtm.models import Material
|
from apps.mtm.models import Material
|
||||||
from rest_framework.exceptions import ParseError
|
from rest_framework.exceptions import ParseError
|
||||||
|
@ -19,6 +19,7 @@ class Wpr(BaseModel):
|
||||||
|
|
||||||
mb = models.ForeignKey("inm.materialbatch", verbose_name="仓库物料", on_delete=models.CASCADE, null=True, blank=True)
|
mb = models.ForeignKey("inm.materialbatch", verbose_name="仓库物料", on_delete=models.CASCADE, null=True, blank=True)
|
||||||
wm = models.ForeignKey("wpm.wmaterial", verbose_name="车间物料", on_delete=models.CASCADE, null=True, blank=True)
|
wm = models.ForeignKey("wpm.wmaterial", verbose_name="车间物料", on_delete=models.CASCADE, null=True, blank=True)
|
||||||
|
oinfo = models.JSONField(verbose_name="其他信息", default=dict, blank=True)
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def change_or_new(cls, wpr=None, number=None, mb=None, wm=None, old_mb=None, old_wm=None, ftest=None):
|
def change_or_new(cls, wpr=None, number=None, mb=None, wm=None, old_mb=None, old_wm=None, ftest=None):
|
||||||
|
@ -57,10 +58,18 @@ class Wpr(BaseModel):
|
||||||
if wm.defect:
|
if wm.defect:
|
||||||
WprDefect.objects.create(wpr=ins, defect=wm.defect, is_main=True)
|
WprDefect.objects.create(wpr=ins, defect=wm.defect, is_main=True)
|
||||||
ins.save()
|
ins.save()
|
||||||
if ftest: # 通过检验变更其缺陷项
|
if ftest:
|
||||||
|
# 通过检验变更其缺陷项
|
||||||
WprDefect.objects.filter(wpr=ins).delete()
|
WprDefect.objects.filter(wpr=ins).delete()
|
||||||
for ftestdefect in FtestDefect.objects.filter(ftest=ftest, has=True):
|
for ftestdefect in FtestDefect.objects.filter(ftest=ftest, has=True):
|
||||||
WprDefect.objects.create(wpr=ins, defect=ftestdefect.defect, is_main=ftestdefect.is_main)
|
WprDefect.objects.create(wpr=ins, defect=ftestdefect.defect, is_main=ftestdefect.is_main)
|
||||||
|
# 携带某些检测信息
|
||||||
|
oinfo = {}
|
||||||
|
for ftestitem in FtestItem.objects.filter(ftest=ftest, addto_wpr=True):
|
||||||
|
if ftestitem.test_val_json:
|
||||||
|
oinfo[ftestitem.id] = {"name": ftestitem.testitem.name, "val": ftestitem.test_val_json}
|
||||||
|
ins.oinfo = ins.oinfo.update(oinfo) if ins.oinfo else oinfo
|
||||||
|
ins.save()
|
||||||
return ins
|
return ins
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
|
|
Loading…
Reference in New Issue