diff --git a/apps/rpm/serializers.py b/apps/rpm/serializers.py index 556340f3..b80fd2c4 100644 --- a/apps/rpm/serializers.py +++ b/apps/rpm/serializers.py @@ -231,11 +231,15 @@ class RpjmemberCreateSerializer(CustomModelSerializer): pass else: raise ParseError('该成员信息不全请补充') + re_in = False if Rpjmember.objects.filter(remployee=remployee, rpj=validated_data['rpj']).exists(): - raise ParseError('该成员已选择') + re_in =True with transaction.atomic(): reason = validated_data.pop('reason', '') - ins = super().create(validated_data) + if re_in: + ins = Rpjmember.objects.filter(remployee=remployee, rpj=validated_data['rpj']).first() + else: + ins = super().create(validated_data) for x in rcertificates: rpjc = Rpjcertificate.objects.filter(rpj_member=ins, rcertificate=x).first() if rpjc: @@ -257,9 +261,12 @@ class RpjmemberCreateSerializer(CustomModelSerializer): rpj_member_come(ins) rpj_certificate_in(ins) ins.note = '后入厂' + if re_in: + ins.note = '重新入厂' ins.save() except Exception: - ins.delete() + if not re_in: + ins.delete() raise RpjLog.objects.create(rpj=rpj, operation='member_come', remployee=remployee, create_by=self.context['request'].user, reason=reason) return ins