diff --git a/apps/wpm/serializers.py b/apps/wpm/serializers.py index b0bd0957..883b7496 100644 --- a/apps/wpm/serializers.py +++ b/apps/wpm/serializers.py @@ -953,12 +953,18 @@ class HandoverSerializer(CustomModelSerializer): if attrs["type"] == Handover.H_CHANGE: if "material_changed" not in attrs: raise ParseError("必须指定改版后的物料") + if mtype == Handover.H_MERGE: - new_wm = attrs.get("new_wm", None) + new_state = None + 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 not attrs.get("new_batch", None): raise ParseError("必须指定合并后的批次") + + wm:WMaterial = attrs.get('wm', None) handoverb = attrs.get('handoverb', []) if wm: @@ -987,6 +993,15 @@ class HandoverSerializer(CustomModelSerializer): tracking = attrs["material"].tracking for ind, item in enumerate(attrs['handoverb']): wm = item["wm"] + if mtype == Handover.H_MERGE: + if new_state is None: + new_state = wm.state + new_defect = wm.defect + else: + if new_state != wm.state: + raise ParseError(f'第{ind+1}行-合并的物料状态不一致') + if new_defect != wm.defect: + raise ParseError(f'第{ind+1}行-合并的物料缺陷不一致') if tracking == Material.MA_TRACKING_SINGLE: handoverbw = item.get("handoverbw", []) if handoverbw: