refector: 生产领料接口同时支持生产入库
This commit is contained in:
parent
9504b527cb
commit
f13de6b2c5
|
@ -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='提交人'),
|
||||
),
|
||||
]
|
|
@ -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):
|
||||
|
|
|
@ -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):
|
||||
|
|
|
@ -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()
|
||||
|
|
Loading…
Reference in New Issue