From c2649ec963d699a7cf2b85abbc588070d63935ae Mon Sep 17 00:00:00 2001 From: caoqianming Date: Wed, 4 Sep 2024 16:13:50 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20mtask=E5=A2=9E=E5=8A=A0mtaskb=E7=9A=84?= =?UTF-8?q?=E8=BF=94=E5=9B=9E=E5=B9=B6=E5=9C=A8=E6=97=A5=E5=BF=97=E5=A1=AB?= =?UTF-8?q?=E5=86=99=E6=97=B6=E6=A0=A1=E9=AA=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/pm/models.py | 4 ++++ apps/pm/serializers.py | 28 ++++++++++++++-------------- apps/wpm/serializers.py | 2 ++ 3 files changed, 20 insertions(+), 14 deletions(-) diff --git a/apps/pm/models.py b/apps/pm/models.py index 02e6c934..82f1d699 100644 --- a/apps/pm/models.py +++ b/apps/pm/models.py @@ -112,6 +112,10 @@ class Mtask(CommonADModel): from apps.wpm.models import Mlog return Mlog.objects.filter(mtask=self) + @property + def mtaskb(self): + return Mtaskb.objects.filter(mtask=self) + class Mtaskb(BaseModel): mtask = models.ForeignKey(Mtask, verbose_name='关联任务', on_delete=models.CASCADE, related_name='b_mtask') diff --git a/apps/pm/serializers.py b/apps/pm/serializers.py index 8a6a5d8d..314463eb 100644 --- a/apps/pm/serializers.py +++ b/apps/pm/serializers.py @@ -55,6 +55,18 @@ class MlogSimpleSerializer(CustomModelSerializer): fields = ['id', 'shift_name', 'count_use', 'count_ok', 'count_real', 'submit_time'] +class MtaskbSerializer(CustomModelSerializer): + handle_user_name = serializers.StringRelatedField( + source='handle_user.name', read_only=True) + class Meta: + model = Mtaskb + fields = '__all__' + read_only_fields = EXCLUDE_FIELDS_BASE + +class MtaskbUpdateSerializer(CustomModelSerializer): + class Meta: + model = Mtaskb + fields = ['id', 'count'] class MtaskSerializer(CustomModelSerializer): material_out_ = MaterialSimpleSerializer( @@ -67,6 +79,7 @@ class MtaskSerializer(CustomModelSerializer): source='submit_user.name', read_only=True) mgroup_name = serializers.CharField(source='mgroup.name', read_only=True) mlogs = MlogSimpleSerializer(label='日志信息', many=True, required=False) + mtaskb = MtaskbSerializer(label='子任务信息', many=True, required=False, read_only=True) class Meta: model = Mtask @@ -110,17 +123,4 @@ class MtaskDaySerializer(serializers.Serializer): class MtaskAddInfoSerializer(CustomModelSerializer): class Meta: model = Mtask - fields = ['peifen_kg'] - -class MtaskbSerializer(CustomModelSerializer): - handle_user_name = serializers.StringRelatedField( - source='handle_user.name', read_only=True) - class Meta: - model = Mtaskb - fields = '__all__' - read_only_fields = EXCLUDE_FIELDS_BASE - -class MtaskbUpdateSerializer(CustomModelSerializer): - class Meta: - model = Mtaskb - fields = ['id', 'count'] \ No newline at end of file + fields = ['peifen_kg'] \ No newline at end of file diff --git a/apps/wpm/serializers.py b/apps/wpm/serializers.py index 43aeec8b..1904b78f 100644 --- a/apps/wpm/serializers.py +++ b/apps/wpm/serializers.py @@ -366,6 +366,8 @@ class MlogSerializer(CustomModelSerializer): attrs['route'] = fmlog.route attrs['mgroup'] = fmlog.mgroup attrs['mtask'] = fmlog.mtask + if attrs['mtask'].mtaskb and mtaskb is None: + raise ValidationError('子任务不能为空') if mtaskb and mtaskb.mtask != fmlog.mtask: raise ValidationError('子任务不一致') mtask = attrs.get('mtask', None)