From 53b38d7cc455f8ed06ad91b53d99061081ea8d36 Mon Sep 17 00:00:00 2001 From: caoqianming Date: Mon, 23 Oct 2023 10:30:49 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E8=8E=B7=E5=8F=96=E7=9B=B8=E5=85=B3?= =?UTF-8?q?=E4=BB=BB=E5=8A=A1=E7=9A=84=E7=AC=AC=E4=B8=80=E9=81=93=E5=B7=A5?= =?UTF-8?q?=E5=BA=8F=E6=97=A5=E5=BF=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/wpm/serializers.py | 9 +++++++++ apps/wpm/views.py | 31 +++++++++++++++---------------- 2 files changed, 24 insertions(+), 16 deletions(-) diff --git a/apps/wpm/serializers.py b/apps/wpm/serializers.py index 9dafd816..815878fe 100644 --- a/apps/wpm/serializers.py +++ b/apps/wpm/serializers.py @@ -78,6 +78,10 @@ class WMaterialSerializer(CustomModelSerializer): class MlogSerializer(CustomModelSerializer): + mgroup_name = serializers.CharField( + source='mtask.mgroup.name', read_only=True) + mtask_count = serializers.IntegerField( + source='mtask.count', read_only=True) create_by_name = serializers.CharField( source='create_by.name', read_only=True) update_by_name = serializers.CharField( @@ -116,3 +120,8 @@ class MlogSerializer(CustomModelSerializer): if mtask.state != Mtask.MTASK_ASSGINED: raise ValidationError(f'{mtask.mgroup.name}_不可提交日志!') return attrs + + +class MlogRelatedSerializer(serializers.Serializer): + mtask = serializers.PrimaryKeyRelatedField( + label='小任务ID', queryset=Mtask.objects.all()) diff --git a/apps/wpm/views.py b/apps/wpm/views.py index 238a2334..e8174fc8 100644 --- a/apps/wpm/views.py +++ b/apps/wpm/views.py @@ -12,7 +12,7 @@ from apps.utils.mixins import BulkCreateModelMixin from .filters import SfLogExpFilter, SfLogFilter from .models import SfLog, SfLogExp, StLog, WMaterial, Mlog -from .serializers import SflogExpSerializer, SfLogSerializer, StLogSerializer, WMaterialSerializer, MlogSerializer +from .serializers import SflogExpSerializer, SfLogSerializer, StLogSerializer, WMaterialSerializer, MlogSerializer, MlogRelatedSerializer # Create your views here. @@ -114,29 +114,28 @@ class MlogViewSet(CustomModelViewSet): raise ParseError('任务已提交日志不可变动') return super().perform_destroy(instance) - @action(methods=['post'], detail=False, perms_map={'post': '*'}, serializer_class=MtaskDaySerializer) + @action(methods=['post'], detail=False, perms_map={'post': '*'}, serializer_class=MlogRelatedSerializer) @transaction.atomic - def day(self, request): - """获取指定车间指定日期的第一道工序日志 + def related_first(self, request): + """获取相关任务的第一道工序日志 - 获取指定车间指定日期的第一道工序日志 + 获取相关任务的第一道工序日志 """ - sr = MtaskDaySerializer(data=request.data) + sr = MlogRelatedSerializer(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 + mtask = vdata['mtask'] + if mtask.utask: + mtasks = mtask.related + mlogs = Mlog.objects.filter(mtask__in=mtasks).order_by( + 'mtask__mgroup__process__sort', 'batch', 'create_time') + data = MlogSerializer(instance=mlogs, many=True).data res_data = [] - len_data = len(data) for ind, val in enumerate(data): - if val['utask'] is None: + if ind == 0: res_data.append(val) - elif ind > 1: + else: before = data[ind-1] - if val['utask'] != before['utask']: - res_data.append(before) - elif ind == len_data - 1: + if val['batch'] != before['batch']: res_data.append(val) return Response(res_data)