diff --git a/apps/wpm/models.py b/apps/wpm/models.py index a00b2557..cbaf639d 100644 --- a/apps/wpm/models.py +++ b/apps/wpm/models.py @@ -654,6 +654,10 @@ class Handover(CommonADModel): @property def handoverb(self): return Handoverb.objects.filter(handover=self) + + @property + def belong_dept_or_mgroup_id(self): + return self.mgroup.id if self.mgroup else self.belong_dept.id class Handoverb(BaseModel): """TN: 子级交接记录 diff --git a/apps/wpm/serializers.py b/apps/wpm/serializers.py index f306bccc..a724afd7 100644 --- a/apps/wpm/serializers.py +++ b/apps/wpm/serializers.py @@ -1261,12 +1261,18 @@ class HandoverSerializer(CustomModelSerializer): next_mat = new_wm.material next_state = new_wm.state next_defect = new_wm.defect + deptOrmgroupId = None for ind, item in enumerate(attrs['handoverb']): if item["count"] > 0: pass else: raise ParseError(f'第{ind+1}行-交接数量必须大于0') - wm = item["wm"] + wm: WMaterial = item["wm"] + current_mdept_id = wm.belong_dept_or_mgroup_id + if deptOrmgroupId is None: + deptOrmgroupId = current_mdept_id + elif deptOrmgroupId != current_mdept_id: + raise ParseError(f'第{ind+1}行-交接物料所属工段/车间不一致') if mtype == Handover.H_MERGE: if next_mat is None: next_mat = wm.material