refector: 生产领料接口同时支持生产入库

This commit is contained in:
caoqianming 2023-09-27 17:02:00 +08:00
parent 9504b527cb
commit f13de6b2c5
4 changed files with 48 additions and 14 deletions

View File

@ -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='提交人'),
),
]

View File

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

View File

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

View File

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