From 2725a97213259629acf2d17c435641567137e00c Mon Sep 17 00:00:00 2001 From: caoqianming Date: Mon, 23 Oct 2023 09:02:57 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20handle=5Fuser=E4=B9=9F=E4=BD=9C?= =?UTF-8?q?=E4=B8=BA=E7=BA=A6=E6=9D=9F=E6=9D=A1=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/wpm/serializers.py | 6 +++++- apps/wpm/views.py | 27 +++++++++++++++++++++++++++ 2 files changed, 32 insertions(+), 1 deletion(-) diff --git a/apps/wpm/serializers.py b/apps/wpm/serializers.py index d03698e8..9dafd816 100644 --- a/apps/wpm/serializers.py +++ b/apps/wpm/serializers.py @@ -92,7 +92,10 @@ class MlogSerializer(CustomModelSerializer): mtask = validated_data['mtask'] batch = validated_data['batch'] handle_date = validated_data['handle_date'] - if Mlog.objects.filter(mtask=mtask, batch=batch, handle_date=handle_date).exists(): + handle_user = validated_data['handle_user'] + if not WMaterial.objects.filter(batch=batch).exists(): + raise ValidationError('批次号不存在') + if Mlog.objects.filter(mtask=mtask, batch=batch, handle_date=handle_date, handle_user=handle_user).exists(): raise ValidationError('存在相同的日志的记录') return super().create(validated_data) @@ -100,6 +103,7 @@ class MlogSerializer(CustomModelSerializer): validated_data.pop('mtask', None) validated_data.pop('batch', None) validated_data.pop('handle_date', None) + validated_data.pop('handle_user', None) return super().update(instance, validated_data) def validate(self, attrs): diff --git a/apps/wpm/views.py b/apps/wpm/views.py index 43767dd5..238a2334 100644 --- a/apps/wpm/views.py +++ b/apps/wpm/views.py @@ -113,3 +113,30 @@ class MlogViewSet(CustomModelViewSet): if instance.mtask.state == Mtask.MTASK_DONE: raise ParseError('任务已提交日志不可变动') return super().perform_destroy(instance) + + @action(methods=['post'], detail=False, perms_map={'post': '*'}, serializer_class=MtaskDaySerializer) + @transaction.atomic + def day(self, request): + """获取指定车间指定日期的第一道工序日志 + + 获取指定车间指定日期的第一道工序日志 + """ + sr = MtaskDaySerializer(data=request.data) + sr.is_valid(raise_exception=True) + vdata = sr.validated_data + mtasks = Mtask.objects.filter(mgroup__belong_dept__name=vdata['belong_dept_name'], start_date__lte=vdata['date'], end_date__gte=vdata['date']).order_by( + 'utask', 'mgroup__process__sort', 'create_time' + ) + data = MtaskSerializer(instance=mtasks, many=True).data + res_data = [] + len_data = len(data) + for ind, val in enumerate(data): + if val['utask'] is None: + res_data.append(val) + elif ind > 1: + before = data[ind-1] + if val['utask'] != before['utask']: + res_data.append(before) + elif ind == len_data - 1: + res_data.append(val) + return Response(res_data)