From f13de6b2c5fa8957b72fe659dc71c76dd23fb806 Mon Sep 17 00:00:00 2001 From: caoqianming Date: Wed, 27 Sep 2023 17:02:00 +0800 Subject: [PATCH] =?UTF-8?q?refector:=20=E7=94=9F=E4=BA=A7=E9=A2=86?= =?UTF-8?q?=E6=96=99=E6=8E=A5=E5=8F=A3=E5=90=8C=E6=97=B6=E6=94=AF=E6=8C=81?= =?UTF-8?q?=E7=94=9F=E4=BA=A7=E5=85=A5=E5=BA=93?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../inm/migrations/0004_auto_20230927_1700.py | 30 +++++++++++++++++++ apps/inm/models.py | 6 ++-- apps/inm/serializers.py | 13 ++++---- apps/inm/views.py | 13 ++++---- 4 files changed, 48 insertions(+), 14 deletions(-) create mode 100644 apps/inm/migrations/0004_auto_20230927_1700.py diff --git a/apps/inm/migrations/0004_auto_20230927_1700.py b/apps/inm/migrations/0004_auto_20230927_1700.py new file mode 100644 index 00000000..ebe9e0ff --- /dev/null +++ b/apps/inm/migrations/0004_auto_20230927_1700.py @@ -0,0 +1,30 @@ +# Generated by Django 3.2.12 on 2023-09-27 09:00 + +from django.conf import settings +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + migrations.swappable_dependency(settings.AUTH_USER_MODEL), + ('inm', '0003_auto_20230927_1516'), + ] + + operations = [ + migrations.RemoveField( + model_name='mio', + name='pick_user', + ), + migrations.AddField( + model_name='mio', + name='do_user', + field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='pick_user_mio', to=settings.AUTH_USER_MODEL, verbose_name='车间执行人'), + ), + migrations.AddField( + model_name='mio', + name='submit_user', + field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='submit_user_mio', to=settings.AUTH_USER_MODEL, verbose_name='提交人'), + ), + ] diff --git a/apps/inm/models.py b/apps/inm/models.py index 49b30ef0..21714466 100644 --- a/apps/inm/models.py +++ b/apps/inm/models.py @@ -71,8 +71,10 @@ class MIO(CommonBDModel): note = models.CharField('备注', max_length=1000, default='') expiration_date = models.DateField('有效期', null=True, blank=True) submit_time = models.DateTimeField('提交时间', null=True, blank=True) - pick_user = models.ForeignKey( - User, verbose_name='领料人', on_delete=models.CASCADE, null=True, blank=True) + submit_user = models.ForeignKey( + User, verbose_name='提交人', related_name='submit_user_mio', on_delete=models.CASCADE, null=True, blank=True) + do_user = models.ForeignKey( + User, verbose_name='车间执行人', related_name='pick_user_mio', on_delete=models.CASCADE, null=True, blank=True) class MIOItem(BaseModel): diff --git a/apps/inm/serializers.py b/apps/inm/serializers.py index 0d893ba5..8ef9eeb5 100644 --- a/apps/inm/serializers.py +++ b/apps/inm/serializers.py @@ -75,18 +75,19 @@ class MIOItemSerializer(CustomModelSerializer): return super().create(validated_data) -class PickSerializer(CustomModelSerializer): +class MIODoSerializer(CustomModelSerializer): belong_dept = serializers.PrimaryKeyRelatedField( - label="领料车间", queryset=Dept.objects.all(), required=True) - pick_user = serializers.PrimaryKeyRelatedField( - label="领料人", queryset=User.objects.all(), required=True) + label="车间", queryset=Dept.objects.all(), required=True) + do_user = serializers.PrimaryKeyRelatedField( + label="执行人", queryset=User.objects.all(), required=True) class Meta: model = MIO - fields = ['number', 'note', 'pick_user', 'belong_dept'] + fields = ['number', 'note', 'do_user', 'belong_dept', 'type'] def create(self, validated_data): - validated_data['type'] = MIO.MIO_TYPE_DO_OUT + if validated_data['type'] not in [MIO.MIO_TYPE_DO_OUT, MIO.MIO_TYPE_DO_IN]: + raise ValidationError('出入库类型错误') return super().create(validated_data) def update(self, instance, validated_data): diff --git a/apps/inm/views.py b/apps/inm/views.py index 58f8a2f6..6fda8d58 100644 --- a/apps/inm/views.py +++ b/apps/inm/views.py @@ -9,7 +9,7 @@ from rest_framework.response import Response from apps.inm.models import WareHouse, MaterialBatch, MIO, MIOItem from apps.inm.serializers import ( - MaterialBatchSerializer, WareHourseSerializer, MIOSerializer, MIOItemSerializer, PickSerializer) + MaterialBatchSerializer, WareHourseSerializer, MIOSerializer, MIOItemSerializer, MIODoSerializer) from apps.utils.viewsets import CustomGenericViewSet, CustomModelViewSet from apps.inm.services import InmService from apps.utils.mixins import BulkCreateModelMixin, BulkDestroyModelMixin @@ -62,14 +62,14 @@ class MIOViewSet(ListModelMixin, DestroyModelMixin, CustomGenericViewSet): raise ParseError('非创建中不可删除') return super().perform_destroy(instance) - @action(methods=['post'], detail=False, perms_map={'post': 'mio.pick'}, serializer_class=PickSerializer) + @action(methods=['post'], detail=False, perms_map={'post': 'mio.do'}, serializer_class=MIODoSerializer) @transaction.atomic - def pick(self, request, *args, **kwargs): - """生产领料 + def do(self, request, *args, **kwargs): + """创建生产领料/生产入库 - 生产领料 + 创建生产领料/生产入库 """ - sr = PickSerializer(data=request.data) + sr = MIODoSerializer(data=request.data) sr.is_valid(raise_exception=True) sr.save() return Response() @@ -89,6 +89,7 @@ class MIOViewSet(ListModelMixin, DestroyModelMixin, CustomGenericViewSet): raise ParseError('记录状态异常') ins.submit_time = timezone.now() ins.state = MIO.MIO_SUBMITED + ins.submit_user = request.user ins.save() InmService.update_inm(ins) return Response()