From 5ba937ecd841f9fc8d904d1dc361ae032d89e8d2 Mon Sep 17 00:00:00 2001 From: caoqianming Date: Fri, 14 Mar 2025 14:29:36 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=B8=AA=E5=88=B0=E4=B8=AA=E7=9A=84?= =?UTF-8?q?=E6=8B=86=E5=88=86bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/wpm/views.py | 39 +++++++++++++++++---------------------- 1 file changed, 17 insertions(+), 22 deletions(-) diff --git a/apps/wpm/views.py b/apps/wpm/views.py index f95a91b1..0cc86700 100644 --- a/apps/wpm/views.py +++ b/apps/wpm/views.py @@ -580,7 +580,7 @@ class MlogbInViewSet(CreateModelMixin, UpdateModelMixin, DestroyModelMixin, Cust else: m_dict['batch'] = generate_new_batch(mlogbin.batch, mlog) - if mtype == Process.PRO_NORMAL: + if mtype == Process.PRO_NORMAL: # 正常 支持批到批, 个到个 d_count_real = mlogbin.count_use d_count_ok = mlogbin.count_use mlogbout, _ = Mlogb.objects.get_or_create(**m_dict, defaults= @@ -588,7 +588,10 @@ class MlogbInViewSet(CreateModelMixin, UpdateModelMixin, DestroyModelMixin, Cust "qct": qct, "mlogb_from": mlogbin}) if mlogbout.mlogb_from != mlogbin: raise ParseError("生成产出出错1") - elif mtype == Process.PRO_DIV: + if material_in.tracking == Material.MA_TRACKING_SINGLE and material_out.tracking == Material.MA_TRACKING_SINGLE: + for mlogbwin in Mlogbw.objects.filter(mlogb=mlogbin).order_by("number"): + Mlogbw.objects.get_or_create(wpr=wpr, mlogb=mlogbout, defaults={"number": wpr.number, "mlogbw_from": mlogbwin}) + elif mtype == Process.PRO_DIV: # 切分 支持批到批,个到个, 个到批 div_number = route.div_number if material_in.tracking == Material.MA_TRACKING_SINGLE: for mlogbwin in Mlogbw.objects.filter(mlogb=mlogbin).order_by("number"): @@ -598,7 +601,11 @@ class MlogbInViewSet(CreateModelMixin, UpdateModelMixin, DestroyModelMixin, Cust "count_real": div_number, "count_ok": div_number, "qct": qct, "mlogbw_from": mlogbwin}) if mlogbout.mlogbw_from != mlogbwin: raise ParseError("生成产出出错2") - elif material_out.tracking == Material.MA_TRACKING_BATCH: + if material_out.tracking == Material.MA_TRACKING_SINGLE: + for mlogbwin in Mlogbw.objects.filter(mlogb=mlogbin).order_by("number"): + for i in range(div_number): + Mlogbw.objects.get_or_create(mlogb=mlogbout, number=f'{wpr.number}-{i+1}', defaults={"mlogbw_from": mlogbwin}) + elif material_in.tracking == Material.MA_TRACKING_BATCH and material_out.tracking == Material.MA_TRACKING_BATCH: d_count_real = mlogbin.count_use * div_number d_count_ok = d_count_real mlogbout, _ = Mlogb.objects.get_or_create(**m_dict, defaults= @@ -606,7 +613,7 @@ class MlogbInViewSet(CreateModelMixin, UpdateModelMixin, DestroyModelMixin, Cust "count_real": d_count_real, "count_ok": d_count_ok, "qct": qct, "mlogb_from": mlogbin}) if mlogbout.mlogb_from != mlogbin: raise ParseError("生成产出出错2-2") - elif mtype == Process.PRO_MERGE: + elif mtype == Process.PRO_MERGE: # 支持批到批 xcount = math.floor( mlogbin.count_use / route.div_number) d_count_real = xcount d_count_ok = xcount @@ -615,7 +622,7 @@ class MlogbInViewSet(CreateModelMixin, UpdateModelMixin, DestroyModelMixin, Cust "count_real": d_count_real, "count_ok": d_count_ok, "qct": qct, "mlogb_from": mlogbin}) if mlogbout.mlogb_from != mlogbin: raise ParseError("生成产出出错3") - elif is_fix: + elif is_fix:# 支持批到批,个到个 d_count_real = mlogbin.count_use d_count_ok = mlogbin.count_use mlogbout, _ = Mlogb.objects.get_or_create(**m_dict, defaults= @@ -623,25 +630,13 @@ class MlogbInViewSet(CreateModelMixin, UpdateModelMixin, DestroyModelMixin, Cust "count_real": d_count_real, "count_ok": d_count_ok, "qct": qct, "mlogb_from": mlogbin}) if mlogbout.mlogb_from != mlogbin: raise ParseError("生成产出出错4") - else: - raise ParseError("不支持生成产出物料!") - - if material_out.tracking == Material.MA_TRACKING_SINGLE: - for mlogbwin in Mlogbw.objects.filter(mlogb=mlogbin).order_by("number"): - wpr = mlogbwin.wpr - if mtype == Process.PRO_NORMAL: + if material_in.tracking == Material.MA_TRACKING_SINGLE and material_out.tracking == Material.MA_TRACKING_SINGLE: + for mlogbwin in Mlogbw.objects.filter(mlogb=mlogbin).order_by("number"): bw, _ = Mlogbw.objects.get_or_create(wpr=wpr, mlogb=mlogbout, defaults={"number": wpr.number, "mlogbw_from": mlogbwin}) if bw.mlogbw_from != mlogbwin: raise ParseError("生成产出出错5") - elif mtype == Process.PRO_DIV: - for i in range(route.div_number): - Mlogbw.objects.get_or_create(mlogb=mlogbout, number=f'{wpr.number}-{i+1}', defaults={"mlogbw_from": mlogbwin}) - elif is_fix: - bw, _ = Mlogbw.objects.get_or_create(wpr=wpr, mlogb=mlogbout, defaults={"number": wpr.number, "mlogbw_from": mlogbwin}) - if bw.mlogbw_from != mlogbwin: - raise ParseError("生成产出出错6") - else: - raise ParseError("不支持的生产类型1") + else: + raise ParseError("不支持生成产出物料!") class MlogbOutViewSet(UpdateModelMixin, CustomGenericViewSet): @@ -710,7 +705,7 @@ class MlogbwViewSet(CustomModelViewSet): mlogb_qs = Mlogb.objects.filter(mlogb_from=mlogb) material_out:Material = mlogb.mlog.material_out mtype = route.process.mtype if route.process else None - if material_in.tracking == Material.MA_TRACKING_SINGLE and mtype == Process.PRO_DIV: + if mtype == Process.PRO_DIV: mlogbin = ins.mlogb wm_in = mlogbin.wm_in mlog = mlogbin.mlog