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='')
|
note = models.CharField('备注', max_length=1000, default='')
|
||||||
expiration_date = models.DateField('有效期', null=True, blank=True)
|
expiration_date = models.DateField('有效期', null=True, blank=True)
|
||||||
submit_time = models.DateTimeField('提交时间', null=True, blank=True)
|
submit_time = models.DateTimeField('提交时间', null=True, blank=True)
|
||||||
pick_user = models.ForeignKey(
|
submit_user = models.ForeignKey(
|
||||||
User, verbose_name='领料人', on_delete=models.CASCADE, null=True, blank=True)
|
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):
|
class MIOItem(BaseModel):
|
||||||
|
|
|
@ -75,18 +75,19 @@ class MIOItemSerializer(CustomModelSerializer):
|
||||||
return super().create(validated_data)
|
return super().create(validated_data)
|
||||||
|
|
||||||
|
|
||||||
class PickSerializer(CustomModelSerializer):
|
class MIODoSerializer(CustomModelSerializer):
|
||||||
belong_dept = serializers.PrimaryKeyRelatedField(
|
belong_dept = serializers.PrimaryKeyRelatedField(
|
||||||
label="领料车间", queryset=Dept.objects.all(), required=True)
|
label="车间", queryset=Dept.objects.all(), required=True)
|
||||||
pick_user = serializers.PrimaryKeyRelatedField(
|
do_user = serializers.PrimaryKeyRelatedField(
|
||||||
label="领料人", queryset=User.objects.all(), required=True)
|
label="执行人", queryset=User.objects.all(), required=True)
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
model = MIO
|
model = MIO
|
||||||
fields = ['number', 'note', 'pick_user', 'belong_dept']
|
fields = ['number', 'note', 'do_user', 'belong_dept', 'type']
|
||||||
|
|
||||||
def create(self, validated_data):
|
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)
|
return super().create(validated_data)
|
||||||
|
|
||||||
def update(self, instance, 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.models import WareHouse, MaterialBatch, MIO, MIOItem
|
||||||
from apps.inm.serializers import (
|
from apps.inm.serializers import (
|
||||||
MaterialBatchSerializer, WareHourseSerializer, MIOSerializer, MIOItemSerializer, PickSerializer)
|
MaterialBatchSerializer, WareHourseSerializer, MIOSerializer, MIOItemSerializer, MIODoSerializer)
|
||||||
from apps.utils.viewsets import CustomGenericViewSet, CustomModelViewSet
|
from apps.utils.viewsets import CustomGenericViewSet, CustomModelViewSet
|
||||||
from apps.inm.services import InmService
|
from apps.inm.services import InmService
|
||||||
from apps.utils.mixins import BulkCreateModelMixin, BulkDestroyModelMixin
|
from apps.utils.mixins import BulkCreateModelMixin, BulkDestroyModelMixin
|
||||||
|
@ -62,14 +62,14 @@ class MIOViewSet(ListModelMixin, DestroyModelMixin, CustomGenericViewSet):
|
||||||
raise ParseError('非创建中不可删除')
|
raise ParseError('非创建中不可删除')
|
||||||
return super().perform_destroy(instance)
|
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
|
@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.is_valid(raise_exception=True)
|
||||||
sr.save()
|
sr.save()
|
||||||
return Response()
|
return Response()
|
||||||
|
@ -89,6 +89,7 @@ class MIOViewSet(ListModelMixin, DestroyModelMixin, CustomGenericViewSet):
|
||||||
raise ParseError('记录状态异常')
|
raise ParseError('记录状态异常')
|
||||||
ins.submit_time = timezone.now()
|
ins.submit_time = timezone.now()
|
||||||
ins.state = MIO.MIO_SUBMITED
|
ins.state = MIO.MIO_SUBMITED
|
||||||
|
ins.submit_user = request.user
|
||||||
ins.save()
|
ins.save()
|
||||||
InmService.update_inm(ins)
|
InmService.update_inm(ins)
|
||||||
return Response()
|
return Response()
|
||||||
|
|
Loading…
Reference in New Issue