from apps.qm.models import FtestWork from apps.wpm.models import WMaterial from apps.system.models import User from rest_framework.exceptions import ParseError from django.utils import timezone def ftestwork_submit(ins:FtestWork, user: User): wm:WMaterial = ins.wm # 更新对应的车间库存 wm.count = wm.count - ins.count_notok if wm.count >= 0: # 已检测的数量 wm.count_xtest = wm.count_xtest + ins.count wm.save() else: raise ParseError("车间库存不足") # 生成合格的 count_ok = ins.count_ok if count_ok > 0: wm_ok = WMaterial() wm_ok.material = wm.material wm_ok.count = count_ok wm_ok.batch = wm.batch wm_ok.mgroup = wm.mgroup wm_ok.belong_dept = wm.belong_dept wm_ok.save() # 生成不合格的 count_notok_json = ins.count_notok_json for k, v in count_notok_json.items(): if v > 0: wm_n = WMaterial() wm_n.material = wm.material wm_n.count = v wm_n.batch = wm.batch wm_n.mgroup = wm.mgroup wm_n.belong_dept = wm.belong_dept wm_n.notok_sign = k.replace('count_n_', '') wm_n.save() ins.submit_user = user ins.submit_time = timezone.now() ins.save()