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

@ -726,16 +726,19 @@ class MlogbInSerializer(CustomModelSerializer):
ins.cal_count_pn_jgqbl() ins.cal_count_pn_jgqbl()
return ins 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): def update(self, instance, validated_data):
mlog: Mlog = instance.mlog mlog: Mlog = instance.mlog
mtask: Mtask = instance.mtask
mlogbdefect = validated_data.pop("mlogbdefect", None) 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: if mlog.submit_time is not None:
raise ParseError('生产日志已提交不可编辑') raise ParseError('生产日志已提交不可编辑')
ins = super().update(instance, validated_data) 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() MlogbDefect.objects.filter(mlogb=ins).delete()
mlogb_defect_objects = [ mlogb_defect_objects = [
MlogbDefect(**{**item, "mlogb": ins, "id": idWorker.get_id()}) MlogbDefect(**{**item, "mlogb": ins, "id": idWorker.get_id()})
@ -746,11 +749,6 @@ class MlogbInSerializer(CustomModelSerializer):
ins.cal_count_notok() ins.cal_count_notok()
return ins return ins
class MlogbInUpdateSerializer(CustomModelSerializer):
class Meta:
model = Mlogb
fields = ['id', 'count_use', 'count_break', 'count_pn_jgqbl', 'note']
class MlogbwCreateUpdateSerializer(CustomModelSerializer): class MlogbwCreateUpdateSerializer(CustomModelSerializer):
ftest = FtestProcessSerializer(required=False) ftest = FtestProcessSerializer(required=False)
class Meta: 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'} perms_map = {'post': 'mlog.update', 'delete': 'mlog.update', 'put': 'mlog.update'}
queryset = Mlogb.objects.filter(material_in__isnull=False) queryset = Mlogb.objects.filter(material_in__isnull=False)
serializer_class = MlogbInSerializer serializer_class = MlogbInSerializer
update_serializer_class = MlogbInUpdateSerializer
@transaction.atomic @transaction.atomic
def perform_destroy(self, instance): def perform_destroy(self, instance):