fix: mlogbupdate serializer

This commit is contained in:
caoqianming 2025-03-18 14:35:11 +08:00
parent 2238ab119d
commit 982fa7f373
2 changed files with 10 additions and 11 deletions

View File

@ -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:

View File

@ -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):