diff --git a/apps/wpm/migrations/0014_mlog_handle_date.py b/apps/wpm/migrations/0014_mlog_handle_date.py new file mode 100644 index 00000000..70d61884 --- /dev/null +++ b/apps/wpm/migrations/0014_mlog_handle_date.py @@ -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, + ), + ] diff --git a/apps/wpm/models.py b/apps/wpm/models.py index 0f1955e9..0662d73b 100644 --- a/apps/wpm/models.py +++ b/apps/wpm/models.py @@ -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) diff --git a/apps/wpm/serializers.py b/apps/wpm/serializers.py index 1b174630..45438b52 100644 --- a/apps/wpm/serializers.py +++ b/apps/wpm/serializers.py @@ -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 diff --git a/apps/wpm/views.py b/apps/wpm/views.py index c2b6b637..43767dd5 100644 --- a/apps/wpm/views.py +++ b/apps/wpm/views.py @@ -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']