feat: 增加addto_wpr字段配置以在wpr表里添加额外信息

This commit is contained in:
caoqianming 2025-01-22 13:51:03 +08:00
parent 3e93fce213
commit f88689cc1e
5 changed files with 55 additions and 3 deletions

View File

@ -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作为信息'),
),
]

View File

@ -170,6 +170,7 @@ class Qct(CommonAModel):
class QctTestItem(BaseModel):
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)
addto_wpr = models.BooleanField('加入WPR作为信息', default=False)
note = models.TextField('备注', null=True, blank=True)
sort = models.FloatField('排序', default=1)
@ -315,6 +316,7 @@ class FtestItem(BaseModel):
TestItem, verbose_name='质检项目', on_delete=models.CASCADE)
test_user = models.ForeignKey(User, verbose_name='操作人', on_delete=models.CASCADE, 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)
test_val_json = models.JSONField('测量值', null=True, blank=True)
check_val_json = models.JSONField('专检测量值', null=True, blank=True)

View File

@ -306,7 +306,7 @@ class FtestItemProcessSerializer(CustomModelSerializer):
source='testitem.description', read_only=True)
class Meta:
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):
test_user_name = serializers.CharField(

View File

@ -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='其他信息'),
),
]

View File

@ -1,6 +1,6 @@
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.mtm.models import Material
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)
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
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:
WprDefect.objects.create(wpr=ins, defect=wm.defect, is_main=True)
ins.save()
if ftest: # 通过检验变更其缺陷项
if ftest:
# 通过检验变更其缺陷项
WprDefect.objects.filter(wpr=ins).delete()
for ftestdefect in FtestDefect.objects.filter(ftest=ftest, has=True):
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
@classmethod