feat: mlogbw支持批量创建
This commit is contained in:
parent
8a83f8b7d8
commit
cd0045c561
|
@ -711,43 +711,48 @@ class MlogbwViewSet(CustomModelViewSet):
|
||||||
@transaction.atomic
|
@transaction.atomic
|
||||||
def perform_create(self, serializer):
|
def perform_create(self, serializer):
|
||||||
ins:Mlogbw = serializer.save()
|
ins:Mlogbw = serializer.save()
|
||||||
route:Route = ins.mlogb.mlog.route
|
if isinstance(ins, list):
|
||||||
mlogb:Mlogb = ins.mlogb
|
insx = ins
|
||||||
Mlogbw.cal_count_notok(mlogb)
|
else:
|
||||||
# 如果是输入且输出追踪到个,需同步创建
|
insx = [ins]
|
||||||
material_in:Material = mlogb.material_in
|
for ins in insx:
|
||||||
if material_in is not None:
|
route:Route = ins.mlogb.mlog.route
|
||||||
mlogb_qs = Mlogb.objects.filter(mlogb_from=mlogb)
|
mlogb:Mlogb = ins.mlogb
|
||||||
material_out:Material = mlogb.mlog.material_out
|
Mlogbw.cal_count_notok(mlogb)
|
||||||
mtype = route.process.mtype if route.process else None
|
# 如果是输入且输出追踪到个,需同步创建
|
||||||
if mtype == Process.PRO_DIV:
|
material_in:Material = mlogb.material_in
|
||||||
mlogbin = ins.mlogb
|
if material_in is not None:
|
||||||
wm_in = mlogbin.wm_in
|
mlogb_qs = Mlogb.objects.filter(mlogb_from=mlogb)
|
||||||
mlog = mlogbin.mlog
|
material_out:Material = mlogb.mlog.material_out
|
||||||
div_number = route.div_number
|
mtype = route.process.mtype if route.process else None
|
||||||
m_dict = {
|
if mtype == Process.PRO_DIV:
|
||||||
"mtask": mlogbin.mtask,
|
mlogbin = ins.mlogb
|
||||||
"mlog": mlog,
|
wm_in = mlogbin.wm_in
|
||||||
"batch": ins.number,
|
mlog = mlogbin.mlog
|
||||||
"material_out": material_out,
|
div_number = route.div_number
|
||||||
"batch_ofrom": wm_in.batch_ofrom,
|
m_dict = {
|
||||||
"material_ofrom": wm_in.material_ofrom,
|
"mtask": mlogbin.mtask,
|
||||||
"count_real": div_number,
|
"mlog": mlog,
|
||||||
"count_ok": div_number, "qct": mlog.qct
|
"batch": ins.number,
|
||||||
}
|
"material_out": material_out,
|
||||||
mlogbout, _ = Mlogb.objects.get_or_create(mlogbw_from=ins, defaults=m_dict)
|
"batch_ofrom": wm_in.batch_ofrom,
|
||||||
if material_out.tracking == Material.MA_TRACKING_SINGLE:
|
"material_ofrom": wm_in.material_ofrom,
|
||||||
for i in range(div_number):
|
"count_real": div_number,
|
||||||
Mlogbw.objects.get_or_create(mlogb=mlogbout, number=f"{ins.number}-{i+1}", defaults={"mlogbw_from": ins})
|
"count_ok": div_number, "qct": mlog.qct
|
||||||
Mlogbw.cal_count_notok(mlogbout)
|
}
|
||||||
elif mlogb_qs.exists() and material_out.tracking == Material.MA_TRACKING_SINGLE:
|
mlogbout, _ = Mlogb.objects.get_or_create(mlogbw_from=ins, defaults=m_dict)
|
||||||
for mlogb in mlogb_qs:
|
if material_out.tracking == Material.MA_TRACKING_SINGLE:
|
||||||
if route.process.mtype == Process.PRO_NORMAL:
|
for i in range(div_number):
|
||||||
Mlogbw.objects.get_or_create(mlogb=mlogb, wpr=ins.wpr, defaults={"number": ins.number, "mlogbw_from": ins})
|
Mlogbw.objects.get_or_create(mlogb=mlogbout, number=f"{ins.number}-{i+1}", defaults={"mlogbw_from": ins})
|
||||||
elif route.process.mtype == Process.PRO_DIV:
|
Mlogbw.cal_count_notok(mlogbout)
|
||||||
for i in range(route.div_number):
|
elif mlogb_qs.exists() and material_out.tracking == Material.MA_TRACKING_SINGLE:
|
||||||
Mlogbw.objects.get_or_create(mlogb=mlogb, number=f'{ins.number}-{i+1}', defaults={"mlogbw_from": ins})
|
for mlogb in mlogb_qs:
|
||||||
Mlogbw.cal_count_notok(mlogb)
|
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)
|
||||||
|
|
||||||
@transaction.atomic
|
@transaction.atomic
|
||||||
def perform_update(self, serializer):
|
def perform_update(self, serializer):
|
||||||
|
|
Loading…
Reference in New Issue