fix: 获取qct提出到model
This commit is contained in:
parent
bbed6fa646
commit
666fbd306b
|
@ -168,6 +168,16 @@ class Qct(CommonAModel):
|
|||
def qct_mats(self):
|
||||
return QctMat.objects.filter(qct=self)
|
||||
|
||||
@classmethod
|
||||
def get(self, material:Material, cate:str):
|
||||
try:
|
||||
qctmat = QctMat.objects.get(material=material, qct__is_deleted=False, qct__tags__contains=cate)
|
||||
except QctMat.DoesNotExist:
|
||||
qctmat = None
|
||||
except QctMat.MultipleObjectsReturned:
|
||||
raise ParseError("存在多个质检表,请手动选择")
|
||||
return qctmat.qct if qctmat else None
|
||||
|
||||
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)
|
||||
|
|
|
@ -199,24 +199,30 @@ class FtestWorkCreateUpdateSerializer(CustomModelSerializer):
|
|||
ftestworkdefect = validated_data.pop("ftestworkdefect", [])
|
||||
with transaction.atomic():
|
||||
ins: FtestWork = super().create(validated_data)
|
||||
qct = Qct.get(ins.material, "inm")
|
||||
if qct:
|
||||
ins.qct = qct
|
||||
ins.save()
|
||||
for ftestworkdefect in ftestworkdefect:
|
||||
FtestworkDefect.objects.create(ftestwork=ins, **ftestworkdefect)
|
||||
if ftestworkdefect:
|
||||
if ins.qct or ftestworkdefect:
|
||||
ins.cal_count()
|
||||
return ins
|
||||
|
||||
def update(self, instance, validated_data):
|
||||
ftestworkdefect = validated_data.pop("ftestworkdefect", [])
|
||||
ins = super().update(instance, validated_data)
|
||||
ins:FtestWork = super().update(instance, validated_data)
|
||||
with transaction.atomic():
|
||||
for item in ftestworkdefect:
|
||||
try:
|
||||
ins = FtestworkDefect.objects.get(ftestwork=ins, defect=item["defect"])
|
||||
except FtestworkDefect.DoesNotExist:
|
||||
raise ParseError("新的缺陷项!")
|
||||
except FtestworkDefect.MultipleObjectsReturned:
|
||||
raise ParseError("缺陷项重复!")
|
||||
ins.count = item["count"]
|
||||
ins.save()
|
||||
if ftestworkdefect:
|
||||
if ins.qct or ftestworkdefect:
|
||||
ins.cal_count()
|
||||
return ins
|
||||
|
||||
|
|
|
@ -752,7 +752,7 @@ class MlogbOutUpdateSerializer(CustomModelSerializer):
|
|||
def validate(self, attrs):
|
||||
mlogbdefect = attrs.get("mlogbdefect", [])
|
||||
if mlogbdefect:
|
||||
attrs.pop("count_notok_json")
|
||||
attrs.pop("count_notok_json", None)
|
||||
for i in attrs:
|
||||
if 'count_n_' in i:
|
||||
attrs.pop(i, None)
|
||||
|
|
|
@ -30,7 +30,7 @@ from .services import mlog_submit, handover_submit, mlog_revert
|
|||
from apps.wpm.services import mlog_submit_validate, generate_new_batch
|
||||
from apps.wf.models import State
|
||||
from apps.wpmw.models import Wpr
|
||||
from apps.qm.models import QctMat, Ftest
|
||||
from apps.qm.models import Qct, Ftest
|
||||
from apps.enm.models import EnStat
|
||||
from django.db.models import Q
|
||||
from apps.utils.tools import convert_ordereddict
|
||||
|
@ -596,13 +596,7 @@ class MlogbInViewSet(CreateModelMixin, UpdateModelMixin, DestroyModelMixin, Cust
|
|||
# 如果是生产返修,则忽略质检
|
||||
pass
|
||||
elif mlogbout.qct is None:
|
||||
try:
|
||||
qctmat = QctMat.objects.get(material=material_out, qct__is_deleted=False, qct__tags__contains="process")
|
||||
except QctMat.DoesNotExist:
|
||||
qctmat = None
|
||||
except QctMat.MultipleObjectsReturned:
|
||||
raise ParseError("存在多个质检表,请手动选择")
|
||||
mlogbout.qct = qctmat.qct if qctmat else None
|
||||
mlogbout.qct = Qct.get(mlogbout.material_out, "process")
|
||||
mlogbout.count_real = d_count_real
|
||||
mlogbout.count_ok = d_count_ok
|
||||
mlogbout.save()
|
||||
|
|
Loading…
Reference in New Issue