feat: 获取可交接到的工段
This commit is contained in:
parent
622d594795
commit
b96846d2c0
|
@ -0,0 +1,24 @@
|
|||
# Generated by Django 3.2.12 on 2025-02-07 02:02
|
||||
|
||||
from django.db import migrations, models
|
||||
import django.db.models.deletion
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('mtm', '0049_auto_20250107_0949'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AlterField(
|
||||
model_name='route',
|
||||
name='process',
|
||||
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='route_p', to='mtm.process', verbose_name='工序'),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='routemat',
|
||||
name='route',
|
||||
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='routemat_route', to='mtm.route', verbose_name='关联路线'),
|
||||
),
|
||||
]
|
|
@ -221,7 +221,7 @@ class Route(CommonADModel):
|
|||
material = models.ForeignKey(
|
||||
Material, verbose_name='关联产品', on_delete=models.CASCADE, null=True, blank=True)
|
||||
process = models.ForeignKey(
|
||||
Process, verbose_name='工序', on_delete=models.CASCADE, null=True, blank=True)
|
||||
Process, verbose_name='工序', on_delete=models.CASCADE, null=True, blank=True, related_name="route_p")
|
||||
mgroup = models.ForeignKey(Mgroup, verbose_name='指定工段', on_delete=models.CASCADE,
|
||||
null=True, blank=True, related_name='route_mgroup')
|
||||
sort = models.PositiveSmallIntegerField('顺序', default=1)
|
||||
|
@ -256,5 +256,5 @@ class Route(CommonADModel):
|
|||
return rq
|
||||
|
||||
class RouteMat(BaseModel):
|
||||
route = models.ForeignKey(Route, verbose_name='关联路线', on_delete=models.CASCADE)
|
||||
route = models.ForeignKey(Route, verbose_name='关联路线', on_delete=models.CASCADE, related_name="routemat_route")
|
||||
material = models.ForeignKey(Material, verbose_name='辅助物料', on_delete=models.CASCADE)
|
|
@ -933,3 +933,8 @@ class BatchStSerializer(CustomModelSerializer):
|
|||
model = BatchSt
|
||||
fields = "__all__"
|
||||
|
||||
|
||||
class HandoverMgroupSerializer(serializers.Serializer):
|
||||
material_in = serializers.CharField(label="物料ID")
|
||||
type = serializers.IntegerField(label="交送类型")
|
||||
|
||||
|
|
|
@ -10,7 +10,7 @@ from django.db.models import Sum
|
|||
from django.utils import timezone
|
||||
from apps.system.models import User
|
||||
|
||||
from apps.mtm.models import Material, Process, Route
|
||||
from apps.mtm.models import Material, Process, Route, Mgroup, RoutePack
|
||||
from apps.utils.viewsets import CustomGenericViewSet, CustomModelViewSet
|
||||
from apps.utils.mixins import CustomListModelMixin, BulkCreateModelMixin, BulkDestroyModelMixin
|
||||
|
||||
|
@ -25,7 +25,7 @@ from .serializers import (SflogExpSerializer, SfLogSerializer, StLogSerializer,
|
|||
AttLogSerializer, OtherLogSerializer, MlogInitSerializer, MlogChangeSerializer,
|
||||
MlogbDetailSerializer, MlogbInSerializer, MlogbInUpdateSerializer,
|
||||
MlogbOutUpdateSerializer, FmlogSerializer, FmlogUpdateSerializer, BatchStSerializer,
|
||||
MlogbwCreateUpdateSerializer)
|
||||
MlogbwCreateUpdateSerializer, HandoverMgroupSerializer)
|
||||
from .services import mlog_submit, handover_submit, mlog_revert
|
||||
from apps.wpm.services import mlog_submit_validate, generate_new_batch
|
||||
from apps.wf.models import State
|
||||
|
@ -382,6 +382,29 @@ class HandoverViewSet(CustomModelViewSet):
|
|||
handover_submit(ins, user, None)
|
||||
return Response()
|
||||
|
||||
@action(methods=['post'], detail=True, perms_map={'post': '*'}, serializer_class=HandoverMgroupSerializer)
|
||||
@transaction.atomic
|
||||
def mgroups(self, request, *args, **kwargs):
|
||||
"""获取可交接到的工段
|
||||
|
||||
获取可交接到的工段
|
||||
"""
|
||||
sr = HandoverMgroupSerializer(data=request.data)
|
||||
sr.is_valid(raise_exception=True)
|
||||
vdata = sr.validated_data
|
||||
materialInId = vdata['material_in']
|
||||
type = vdata['type']
|
||||
m_qs = Mgroup.objects.all()
|
||||
if type in [Handover.H_NORMAL, Handover.H_CHANGE]:
|
||||
m_qs = m_qs.filter(process__route_p_routepack__state=RoutePack.RP_S_CONFIRM)
|
||||
m_qs = m_qs.filter(
|
||||
process__route_p__material_in__id=materialInId)|m_qs.filter(
|
||||
process__route_p__routemat_route__material__id=materialInId
|
||||
)
|
||||
elif type in [Handover.H_SCRAP]:
|
||||
m_qs = m_qs.filter(process=None)
|
||||
return Response(list(m_qs.values('id', 'name')))
|
||||
|
||||
@action(methods=['post'], detail=False, perms_map={'post': 'handover.create'}, serializer_class=GenHandoverWmSerializer)
|
||||
@transaction.atomic
|
||||
def gen_by_wm(self, request):
|
||||
|
|
Loading…
Reference in New Issue