From c142f00bf329f192871673467b2ab94dd086846a Mon Sep 17 00:00:00 2001 From: caoqianming Date: Fri, 20 Oct 2023 14:50:56 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E5=A2=9E=E5=8A=A0handle=5Fdate?= =?UTF-8?q?=E5=8F=8A=E7=9B=B8=E5=BA=94=E7=9A=84=E6=A0=A1=E9=AA=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/wpm/migrations/0014_mlog_handle_date.py | 20 ++++++++++++++++++++ apps/wpm/models.py | 1 + apps/wpm/serializers.py | 15 +++++++++++++++ apps/wpm/views.py | 2 +- 4 files changed, 37 insertions(+), 1 deletion(-) create mode 100644 apps/wpm/migrations/0014_mlog_handle_date.py 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']