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)