feat: mtask增加mtaskb的返回并在日志填写时校验

This commit is contained in:
caoqianming 2024-09-04 16:13:50 +08:00
parent 6694820dcd
commit c2649ec963
3 changed files with 20 additions and 14 deletions

View File

@ -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')

View File

@ -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']
fields = ['peifen_kg']

View File

@ -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)