fix: 个到个的拆分bug

This commit is contained in:
caoqianming 2025-03-14 14:29:36 +08:00
parent 20e431cb7d
commit 5ba937ecd8
1 changed files with 17 additions and 22 deletions

View File

@ -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