feat: 增加handle_date及相应的校验

This commit is contained in:
caoqianming 2023-10-20 14:50:56 +08:00
parent f9b3a69552
commit c142f00bf3
4 changed files with 37 additions and 1 deletions

View File

@ -0,0 +1,20 @@
# Generated by Django 3.2.12 on 2023-10-20 05:52
from django.db import migrations, models
import django.utils.timezone
class Migration(migrations.Migration):
dependencies = [
('wpm', '0013_mlog_handle_user'),
]
operations = [
migrations.AddField(
model_name='mlog',
name='handle_date',
field=models.DateField(default=django.utils.timezone.now, verbose_name='操作日期'),
preserve_default=False,
),
]

View File

@ -88,5 +88,6 @@ class Mlog(CommonADModel):
count_real = models.PositiveIntegerField('实际生产数', default=0)
count_ok = models.PositiveIntegerField('合格数', default=0)
count_notok = models.PositiveIntegerField('不合格数', default=0)
handle_date = models.DateField('操作日期')
handle_user = models.ForeignKey(
User, verbose_name='操作人', on_delete=models.CASCADE)

View File

@ -88,12 +88,27 @@ class MlogSerializer(CustomModelSerializer):
fields = '__all__'
read_only_fields = EXCLUDE_FIELDS
def create(self, validated_data):
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():
raise ValidationError('存在相同的日志的记录')
return super().create(validated_data)
def update(self, instance, validated_data):
validated_data.pop('mtask', None)
validated_data.pop('batch', None)
validated_data.pop('handle_date', None)
return super().update(instance, validated_data)
def validate(self, attrs):
mtask = attrs['mtask']
handle_date = attrs['handle_date']
if handle_date >= mtask.start_date and handle_date <= mtask.end_date:
pass
else:
raise ValidationError('操作日期错误')
if mtask.state != Mtask.MTASK_ASSGINED:
raise ValidationError('该任务状态不可提交日志!')
return attrs

View File

@ -89,6 +89,7 @@ class WMaterialViewSet(ListModelMixin, CustomGenericViewSet):
车间库存
"""
perms_map = {'get': '*'}
queryset = WMaterial.objects.all()
serializer_class = WMaterialSerializer
select_related_fields = ['material', 'belong_dept']
@ -103,7 +104,6 @@ class MlogViewSet(CustomModelViewSet):
生产日志
"""
perms_map = {'get': '*', 'post': 'mlog.create', 'delete': 'mlog.delete'}
queryset = Mlog.objects.all()
serializer_class = MlogSerializer
select_related_fields = ['create_by', 'update_by', 'mtask']