feat: ftestwork的submit支持defect

This commit is contained in:
caoqianming 2025-01-13 11:23:42 +08:00
parent 942e54a7e4
commit 69daa63ea6
2 changed files with 94 additions and 67 deletions

View File

@ -181,7 +181,7 @@ class FtestWorkCreateUpdateSerializer(CustomModelSerializer):
with transaction.atomic():
ins: FtestWork = super().create(validated_data)
for ftestworkdefect in ftestworkdefect:
FtestworkDefect.objects.create(ftest=ins, **ftestworkdefect)
FtestworkDefect.objects.create(ftestwork=ins, **ftestworkdefect)
if ftestworkdefect:
ins.cal_count()

View File

@ -1,10 +1,10 @@
from apps.qm.models import FtestWork
from apps.qm.models import FtestWork, FtestworkDefect
from apps.wpm.models import WMaterial
from apps.system.models import User
from rest_framework.exceptions import ParseError
from django.utils import timezone
from apps.wf.models import Ticket
from apps.qm.models import NotOkOption
from apps.qm.models import NotOkOption, Defect
from apps.utils.thread import MyThread
from apps.wpm.services_2 import get_alldata_with_batch_and_store
@ -24,6 +24,7 @@ def ftestwork_submit_validate(ins: FtestWork):
def ftestwork_submit(ins:FtestWork, user: User):
wm:WMaterial = ins.wm
if ins.need_update_wm:
if ins.qct is None:
if wm.state == WMaterial.WM_TEST:
# 更新对应的车间库存
wm.count = wm.count - ins.count
@ -33,6 +34,7 @@ def ftestwork_submit(ins:FtestWork, user: User):
wm.save()
else:
raise ParseError("超过待检数量")
# 寻找count_notok_json中的b类不合格不进行处理
count_notok_json = ins.count_notok_json
need_move_count = 0
@ -92,6 +94,31 @@ def ftestwork_submit(ins:FtestWork, user: User):
if not new_create:
wm_n.count = wm_n.count + v
wm_n.save()
else:
wm:WMaterial = ins.wm
# 此时调用了qct表
for item in FtestworkDefect.objects.filter(ftestwork=ins):
item:FtestworkDefect = item
if item.count > 0 and item.defect.okcate == Defect.DEFECT_NOTOK:
ins.count = ins.count - item.count
if ins.count < 0:
raise ParseError("数量不足,扣减失败")
wm, new_create = WMaterial.objects.get_or_create(
material=wm.material,
batch=wm.batch,
mgroup=wm.mgroup,
belong_dept=wm.belong_dept,
state=WMaterial.WM_NOTOK,
notok_sign=None,
defect=item.defect,
defaults={
'count': item.count,
}
)
if not new_create:
wm.count = wm.count + item.count
wm.save()
ins.save()
ins.submit_user = user
ins.submit_time = timezone.now()
ins.save()