Fix mlogbw creation for route-less rework
This commit is contained in:
parent
d5426c980f
commit
dde5b0a6e8
|
|
@ -1,3 +1,61 @@
|
|||
from django.test import TestCase
|
||||
from types import SimpleNamespace
|
||||
from unittest.mock import MagicMock, patch
|
||||
|
||||
# Create your tests here.
|
||||
from django.test import SimpleTestCase
|
||||
|
||||
from apps.mtm.models import Material
|
||||
from apps.wpm.views import MlogbwViewSet
|
||||
|
||||
|
||||
class MlogbwViewSetTests(SimpleTestCase):
|
||||
@patch("apps.wpm.views.MlogViewSet.lock_and_check_can_update")
|
||||
@patch("apps.wpm.views.Mlogbw.cal_count_notok")
|
||||
@patch("apps.wpm.views.Mlogbw.objects.get_or_create")
|
||||
@patch("apps.wpm.views.Mlogb.objects.filter")
|
||||
def test_perform_create_syncs_fix_output_without_route(
|
||||
self,
|
||||
mlogb_filter,
|
||||
mlogbw_get_or_create,
|
||||
cal_count_notok,
|
||||
lock_and_check_can_update,
|
||||
):
|
||||
wm = object()
|
||||
wpr = SimpleNamespace(wm=wm)
|
||||
material = SimpleNamespace(tracking=Material.MA_TRACKING_SINGLE)
|
||||
mlog = SimpleNamespace(
|
||||
route=None,
|
||||
is_fix=True,
|
||||
cal_mlog_count_from_mlogb=MagicMock(),
|
||||
)
|
||||
mlogb_in = SimpleNamespace(
|
||||
mlog=mlog,
|
||||
route=None,
|
||||
wm_in=wm,
|
||||
material_in=material,
|
||||
)
|
||||
mlogb_out = object()
|
||||
mlogb_qs = MagicMock()
|
||||
mlogb_qs.exists.return_value = True
|
||||
mlogb_qs.__iter__.return_value = iter([mlogb_out])
|
||||
mlogb_filter.return_value = mlogb_qs
|
||||
ins = SimpleNamespace(
|
||||
mlogb=mlogb_in,
|
||||
wpr=wpr,
|
||||
number="2606P1095-3",
|
||||
)
|
||||
serializer = MagicMock()
|
||||
serializer.save.return_value = ins
|
||||
lock_and_check_can_update.return_value = mlog
|
||||
|
||||
MlogbwViewSet().perform_create(serializer)
|
||||
|
||||
mlogbw_get_or_create.assert_called_once_with(
|
||||
mlogb=mlogb_out,
|
||||
wpr=wpr,
|
||||
defaults={
|
||||
"number": "2606P1095-3",
|
||||
"mlogbw_from": ins,
|
||||
},
|
||||
)
|
||||
self.assertEqual(cal_count_notok.call_count, 2)
|
||||
mlog.cal_mlog_count_from_mlogb.assert_called_once_with()
|
||||
|
|
|
|||
|
|
@ -1199,12 +1199,14 @@ class MlogbwViewSet(CustomModelViewSet):
|
|||
material_out = material_in
|
||||
else:
|
||||
raise ParseError("获取产出物料错误")
|
||||
mtype = route.process.mtype if route.process else None
|
||||
process = route.process if route else None
|
||||
# 返修不依赖工艺路线,按个到个的普通流转同步产出。
|
||||
mtype = Process.PRO_NORMAL if mlog.is_fix else process.mtype if process else None
|
||||
if mlogb_qs.exists() and material_out.tracking == Material.MA_TRACKING_SINGLE:
|
||||
for mlogb in mlogb_qs:
|
||||
if route.process.mtype == Process.PRO_NORMAL:
|
||||
if 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:
|
||||
elif mtype == Process.PRO_DIV:
|
||||
if route.div_number == 1:
|
||||
Mlogbw.objects.get_or_create(wpr=ins.wpr, mlogb=mlogb, defaults={"number": ins.wpr.number, "mlogbw_from": ins})
|
||||
else:
|
||||
|
|
|
|||
Loading…
Reference in New Issue