diff --git a/apps/wpm/views.py b/apps/wpm/views.py index dc00e5f6..a1453925 100644 --- a/apps/wpm/views.py +++ b/apps/wpm/views.py @@ -893,15 +893,28 @@ class MlogbwViewSet(CustomModelViewSet): if mlog != ins.mlogb.mlog: raise ParseError("所有记录必须属于同一张日志") mlogb:Mlogb = ins.mlogb - route:Route = mlogb.route + route:Route = mlogb.route if mlogb.route else mlog.route Mlogbw.cal_count_notok(mlogb) # 如果是输入且输出追踪到个,需同步创建 material_in:Material = mlogb.material_in if material_in is not None: mlogb_qs = Mlogb.objects.filter(mlogb_from=mlogb) - material_out:Material = route.material_out if route else material_in if mlog.is_fix is False else mlog.material_out + if route: + material_out = route.material_out + elif mlog.is_fix: + material_out = material_in + else: + raise ParseError("获取产出物料错误") mtype = route.process.mtype if route.process else None - if mtype == Process.PRO_DIV: + if mlogb_qs.exists() and material_out.tracking == Material.MA_TRACKING_SINGLE: + for mlogb in mlogb_qs: + if route.process.mtype == Process.PRO_NORMAL: + Mlogbw.objects.get_or_create(mlogb=mlogb, wpr=ins.wpr, defaults={"number": ins.number, "mlogbw_from": ins}) + elif route.process.mtype == Process.PRO_DIV: + for i in range(route.div_number): + Mlogbw.objects.get_or_create(mlogb=mlogb, number=f'{ins.number}-{i+1}', defaults={"mlogbw_from": ins}) + Mlogbw.cal_count_notok(mlogb) + elif mtype == Process.PRO_DIV: mlogbin = ins.mlogb wm_in = mlogbin.wm_in mlog = mlogbin.mlog @@ -930,14 +943,6 @@ class MlogbwViewSet(CustomModelViewSet): pass else: raise ParseError("该个号不可产生该批") - elif mlogb_qs.exists() and material_out.tracking == Material.MA_TRACKING_SINGLE: - for mlogb in mlogb_qs: - if route.process.mtype == Process.PRO_NORMAL: - Mlogbw.objects.get_or_create(mlogb=mlogb, wpr=ins.wpr, defaults={"number": ins.number, "mlogbw_from": ins}) - elif route.process.mtype == Process.PRO_DIV: - for i in range(route.div_number): - Mlogbw.objects.get_or_create(mlogb=mlogb, number=f'{ins.number}-{i+1}', defaults={"mlogbw_from": ins}) - Mlogbw.cal_count_notok(mlogb) mlog.cal_mlog_count_from_mlogb() @transaction.atomic