diff --git a/apps/wpm/serializers.py b/apps/wpm/serializers.py index ed388dea..8592e42f 100644 --- a/apps/wpm/serializers.py +++ b/apps/wpm/serializers.py @@ -725,17 +725,20 @@ class MlogbInSerializer(CustomModelSerializer): MlogbDefect.objects.bulk_create(mlogb_defect_objects) ins.cal_count_pn_jgqbl() return ins - + +class MlogbInUpdateSerializer(CustomModelSerializer): + mlogbdefect = MlogbDefectSerializer(many=True, required=False) + class Meta: + model = Mlogb + fields = ['id', 'count_use', 'count_pn_jgqbl', 'note', 'mlogbdefect'] + def update(self, instance, validated_data): mlog: Mlog = instance.mlog - mtask: Mtask = instance.mtask mlogbdefect = validated_data.pop("mlogbdefect", None) - if Mlogb.objects.filter(mlog=mlog, mtask=mtask, wm_in=validated_data['wm_in'], parent=None).exclude(id=instance.id).exists(): - raise ParseError('该记录已存在') if mlog.submit_time is not None: raise ParseError('生产日志已提交不可编辑') ins = super().update(instance, validated_data) - if mlogbdefect is not None and ins.material_out.tracking == Material.MA_TRACKING_BATCH: + if mlogbdefect is not None and ins.material_in.tracking == Material.MA_TRACKING_BATCH: MlogbDefect.objects.filter(mlogb=ins).delete() mlogb_defect_objects = [ MlogbDefect(**{**item, "mlogb": ins, "id": idWorker.get_id()}) @@ -745,12 +748,7 @@ class MlogbInSerializer(CustomModelSerializer): MlogbDefect.objects.bulk_create(mlogb_defect_objects) ins.cal_count_notok() return ins - -class MlogbInUpdateSerializer(CustomModelSerializer): - class Meta: - model = Mlogb - fields = ['id', 'count_use', 'count_break', 'count_pn_jgqbl', 'note'] - + class MlogbwCreateUpdateSerializer(CustomModelSerializer): ftest = FtestProcessSerializer(required=False) class Meta: diff --git a/apps/wpm/views.py b/apps/wpm/views.py index 0d4b0c55..f70758ec 100644 --- a/apps/wpm/views.py +++ b/apps/wpm/views.py @@ -532,6 +532,7 @@ class MlogbInViewSet(CreateModelMixin, UpdateModelMixin, DestroyModelMixin, Cust perms_map = {'post': 'mlog.update', 'delete': 'mlog.update', 'put': 'mlog.update'} queryset = Mlogb.objects.filter(material_in__isnull=False) serializer_class = MlogbInSerializer + update_serializer_class = MlogbInUpdateSerializer @transaction.atomic def perform_destroy(self, instance):