fix: handoverserializer 关于new_wm的处理

This commit is contained in:
caoqianming 2025-12-17 15:24:38 +08:00
parent 07b2df1fd0
commit 041474411e
1 changed files with 18 additions and 11 deletions

View File

@ -1197,13 +1197,12 @@ class HandoverSerializer(CustomModelSerializer):
attrs['type'] = Handover.H_NORMAL
mtype = attrs["mtype"]
new_state = None
new_wm:WMaterial = attrs.get("new_wm", None)
if mtype == Handover.H_MERGE:
new_wm:WMaterial = attrs.get("new_wm", None)
if new_wm:
attrs['new_batch'] = new_wm.batch
new_state = new_wm.state
new_defect = new_wm.defect
if attrs["type"] == Handover.H_CHANGE:
attrs["material_changed"] = new_wm.material
attrs["state_changed"] = new_wm.state
@ -1252,6 +1251,14 @@ class HandoverSerializer(CustomModelSerializer):
# raise ParseError('正常交接收料工段与送料工段不能相同')
t_count = 0
tracking = attrs["material"].tracking
next_mat = None
next_state = None
next_defect = None
if new_wm:
next_mat = new_wm.material
next_state = new_wm.state
next_defect = new_wm.defect
for ind, item in enumerate(attrs['handoverb']):
if item["count"] > 0:
pass
@ -1259,16 +1266,16 @@ class HandoverSerializer(CustomModelSerializer):
raise ParseError(f'{ind+1}行-交接数量必须大于0')
wm = item["wm"]
if mtype == Handover.H_MERGE:
if new_state is None:
new_mat = wm.material
new_state = wm.state
new_defect = wm.defect
if next_mat is None:
next_mat = wm.material
next_state = wm.state
next_defect = wm.defect
else:
if new_mat != wm.material:
if next_mat != wm.material:
raise ParseError(f'{ind+1}行-合并的物料不一致')
if new_state != wm.state:
if next_state != wm.state:
raise ParseError(f'{ind+1}行-合并的物料状态不一致')
if new_defect != wm.defect:
if next_defect != wm.defect:
raise ParseError(f'{ind+1}行-合并的物料缺陷不一致')
if tracking == Material.MA_TRACKING_SINGLE:
handoverbw = item.get("handoverbw", [])