feat: 获取可交接到的工段

This commit is contained in:
caoqianming 2025-02-07 10:04:12 +08:00
parent 622d594795
commit b96846d2c0
4 changed files with 56 additions and 4 deletions

View File

@ -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='关联路线'),
),
]

View File

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

View File

@ -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="交送类型")

View File

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