diff --git a/apps/wpm/serializers.py b/apps/wpm/serializers.py index dcc7670d..7045f0e9 100644 --- a/apps/wpm/serializers.py +++ b/apps/wpm/serializers.py @@ -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", [])