fix: mlog submit中提交wprbug

This commit is contained in:
caoqianming 2025-01-09 16:27:12 +08:00
parent aca5cd8a63
commit 88535650a7
1 changed files with 31 additions and 29 deletions

View File

@ -238,8 +238,8 @@ def mlog_submit(mlog: Mlog, user: User, now: Union[datetime.datetime, None]):
# 获取所有主要的不合格项
bw_qs = Mlogbw.objects.filter(mlogb=item)
defect_qs = FtestDefect.objects.filter(ftest__is_ok=False,
ftest__mlogbw_ftest__mlogb=item, is_main=True).values_list(
"defect", flat=True).distinct()
ftest__mlogbw_ftest__mlogb=item, is_main=True).values(
"defect").distinct()
for defect in defect_qs:
xcount = bw_qs.filter(ftest__defects_ftest__defect=defect).count()
if xcount > 0:
@ -259,6 +259,8 @@ def mlog_submit(mlog: Mlog, user: User, now: Union[datetime.datetime, None]):
for mo in m_outs_list:
mo_ma, mo_batch, mo_count, mo_count_eweight, notok_sign_or_defect, mlog_or_b = mo
if mo_count <= 0:
continue
wm_state = WMaterial.WM_OK if notok_sign_or_defect is None else WMaterial.WM_NOTOK
lookup = {'batch': mo_batch, 'material': mo_ma, 'mgroup': None,
'notok_sign': None, 'defect': None, 'state': wm_state}
@ -271,33 +273,33 @@ def mlog_submit(mlog: Mlog, user: User, now: Union[datetime.datetime, None]):
stored_mgroup = True
else:
lookup['belong_dept'] = belong_dept
if mo_count > 0:
wm, is_create2 = WMaterial.objects.get_or_create(**lookup, defaults={**lookup, "belong_dept": belong_dept})
wm.count = wm.count + mo_count
wm.count_eweight = mo_count_eweight
wm.update_by = user
if supplier is not None:
wm.supplier = supplier
if is_create2:
wm.create_by = user
if isinstance(mlog_or_b, Mlog) and mlog_or_b.wm_in:
wm.batch_ofrom = mlog_or_b.wm_in.batch_ofrom
wm.material_ofrom = mlog_or_b.wm_in.material_ofrom
elif isinstance(mlog_or_b, Mlogb):
wm.batch_ofrom = mlog_or_b.batch_ofrom
wm.material_ofrom = mlog_or_b.material_ofrom
wm.save()
if material_out.tracking == Material.MA_TRACKING_SINGLE:
mlogbws = Mlogbw.objects.filter(mlogb=mlog_or_b)
if mlogbws.count() != mo_count:
raise ParseError("日志与明细数量不一致,操作失败")
for item in mlogbws:
if item.wpr:
Wpr.change_or_new(wpr=item.wpr, wm=wm, ftest=item.ftest)
else:
wpr = Wpr.change_or_new(number=item.number, wm=wm, ftest=item.ftest)
item.wpr = wpr
item.save()
wm, is_create2 = WMaterial.objects.get_or_create(**lookup, defaults={**lookup, "belong_dept": belong_dept})
wm.count = wm.count + mo_count
wm.count_eweight = mo_count_eweight
wm.update_by = user
if supplier is not None:
wm.supplier = supplier
if is_create2:
wm.create_by = user
if isinstance(mlog_or_b, Mlog) and mlog_or_b.wm_in:
wm.batch_ofrom = mlog_or_b.wm_in.batch_ofrom
wm.material_ofrom = mlog_or_b.wm_in.material_ofrom
elif isinstance(mlog_or_b, Mlogb):
wm.batch_ofrom = mlog_or_b.batch_ofrom
wm.material_ofrom = mlog_or_b.material_ofrom
wm.save()
if material_out.tracking == Material.MA_TRACKING_SINGLE:
mlogbws = Mlogbw.objects.filter(mlogb=mlog_or_b)
if mlogbws.count() != mo_count:
raise ParseError("日志与明细数量不一致,操作失败")
for item in mlogbws:
if item.wpr:
Wpr.change_or_new(wpr=item.wpr, wm=wm, ftest=item.ftest)
else:
wpr = Wpr.change_or_new(number=item.number, wm=wm, ftest=item.ftest)
item.wpr = wpr
item.save()
mlog.submit_time = now
mlog.submit_user = user