feat: ftestwork_submit增加抽检逻辑

This commit is contained in:
caoqianming 2024-08-13 14:31:38 +08:00
parent 23dd745192
commit bfad89bf2f
1 changed files with 58 additions and 25 deletions

View File

@ -7,6 +7,7 @@ from django.utils import timezone
def ftestwork_submit(ins:FtestWork, user: User): def ftestwork_submit(ins:FtestWork, user: User):
wm:WMaterial = ins.wm wm:WMaterial = ins.wm
if wm.count_xtest is not None: # 如果关心检验数量 一般是全检
# 更新对应的车间库存 # 更新对应的车间库存
wm.count = wm.count - ins.count wm.count = wm.count - ins.count
if wm.count >= 0: if wm.count >= 0:
@ -18,24 +19,56 @@ def ftestwork_submit(ins:FtestWork, user: User):
# 生成合格的 # 生成合格的
count_ok = ins.count_ok count_ok = ins.count_ok
if count_ok > 0: if count_ok > 0:
wm_ok = WMaterial() wm, new_create = WMaterial.objects.get_or_create(
wm_ok.material = wm.material material=wm.material,
wm_ok.count = count_ok batch=wm.batch,
wm_ok.batch = wm.batch mgroup=wm.mgroup,
wm_ok.mgroup = wm.mgroup belong_dept=wm.belong_dept,
wm_ok.belong_dept = wm.belong_dept notok_sign=None,
wm_ok.save() material_origin=None,
count_xtest=None,
defaults={
'count': count_ok,
'material': wm.material,
'batch': wm.batch,
'mgroup': wm.mgroup,
'belong_dept': wm.belong_dept,
}
)
if not new_create:
wm.count = wm.count + count_ok
wm.save()
else:
wm.count = wm.count - ins.count_notok
if wm.count >= 0:
wm.save()
else:
raise ParseError("不合格数不可大于批次数量")
# 生成不合格的 # 生成不合格的
count_notok_json = ins.count_notok_json count_notok_json = ins.count_notok_json
for k, v in count_notok_json.items(): for k, v in count_notok_json.items():
if v > 0: if v > 0:
wm_n = WMaterial() notok_sign = k.replace('count_n_', '')
wm_n.material = wm.material wm_n, new_create = WMaterial.objects.get_or_create(
wm_n.count = v material=wm.material,
wm_n.batch = wm.batch batch=wm.batch,
wm_n.mgroup = wm.mgroup mgroup=wm.mgroup,
wm_n.belong_dept = wm.belong_dept belong_dept=wm.belong_dept,
wm_n.notok_sign = k.replace('count_n_', '') notok_sign=notok_sign,
material_origin=None,
count_xtest=None,
defaults={
'count': v,
'material': wm.material,
'batch': wm.batch,
'mgroup': wm.mgroup,
'belong_dept': wm.belong_dept,
'notok_sign': notok_sign
}
)
if not new_create:
wm_n.count = wm_n.count + v
wm_n.save() wm_n.save()
ins.submit_user = user ins.submit_user = user
ins.submit_time = timezone.now() ins.submit_time = timezone.now()