wpm post bug
This commit is contained in:
parent
48caae5c9a
commit
5beb5026ff
|
@ -8,7 +8,8 @@ from apps.mtm.serializers import MaterialSimpleSerializer, StepSimpleSerializer
|
|||
from apps.pm.models import SubProductionPlan, SubProductionProgress
|
||||
from django.utils import timezone
|
||||
from django.utils.translation import gettext_lazy as _
|
||||
from apps.wpm.models import WMaterial, WProduct, OperationRecord, OperationRecordItem
|
||||
from apps.system.serializers import UserSimpleSerializer
|
||||
from apps.wpm.models import Operation, WMaterial, WProduct, OperationRecord, OperationRecordItem
|
||||
|
||||
class PickDetailSerializer(serializers.Serializer):
|
||||
material = serializers.PrimaryKeyRelatedField(queryset=Material.objects.all(), label="物料ID")
|
||||
|
@ -90,6 +91,27 @@ class WProductListSerializer(serializers.ModelSerializer):
|
|||
model = WProduct
|
||||
fields = '__all__'
|
||||
|
||||
class OperationDetailSerializer(serializers.ModelSerializer):
|
||||
wproducts_ = serializers.SerializerMethodField()
|
||||
create_by_ = UserSimpleSerializer(source='create_by', read_only=True)
|
||||
m_state_ = MaterialSimpleSerializer(source='m_state', read_only=True)
|
||||
p_state_ = StepSimpleSerializer(source='p_state', read_only=True)
|
||||
class Meta:
|
||||
model = Operation
|
||||
fields = '__all__'
|
||||
|
||||
def get_wproducts_(self, obj):
|
||||
return list(WProduct.objects.filter(id__in=obj.wproducts_).values('id', 'number'))
|
||||
|
||||
class OperationListSerializer(serializers.ModelSerializer):
|
||||
create_by_ = UserSimpleSerializer(source='create_by', read_only=True)
|
||||
m_state_ = MaterialSimpleSerializer(source='m_state', read_only=True)
|
||||
p_state_ = StepSimpleSerializer(source='p_state', read_only=True)
|
||||
class Meta:
|
||||
model = Operation
|
||||
fields = '__all__'
|
||||
|
||||
|
||||
class OperationInitSerializer(serializers.Serializer):
|
||||
step = serializers.PrimaryKeyRelatedField(queryset=Step.objects.all(), label="子工序ID")
|
||||
subproduction_plan = serializers.PrimaryKeyRelatedField(queryset=SubProductionPlan.objects.all(), label="子计划ID")
|
||||
|
@ -105,10 +127,14 @@ class OperationInitSerializer(serializers.Serializer):
|
|||
raise serializers.ValidationError('请选择正确的子工序操作')
|
||||
|
||||
if 'wproducts' in data and data['wproducts']:
|
||||
if step.type == Step.STEP_TYPE_DIV:
|
||||
raise serializers.ValidationError(_('不可进行此操作'))
|
||||
for i in data['wproducts']:
|
||||
if i.is_executed:
|
||||
raise serializers.ValidationError('不可进行操作')
|
||||
if i.subproduction_plan != subproduction_plan:
|
||||
raise serializers.ValidationError('半成品所属子计划不一致')
|
||||
if i.step != step:
|
||||
if i.p_state != step:
|
||||
raise serializers.ValidationError('半成品所属子工序不一致')
|
||||
else:
|
||||
if step.type != Step.STEP_TYPE_DIV:
|
||||
|
|
|
@ -3,11 +3,12 @@ from rest_framework import urlpatterns
|
|||
from django.urls import path, include
|
||||
from rest_framework.routers import DefaultRouter
|
||||
|
||||
from apps.wpm.views import DoFormInit, DoFormSubmit, WMaterialViewSet, WPlanViewSet, WProductViewSet
|
||||
from apps.wpm.views import DoFormInit, DoFormSubmit, OperationViewSet, WMaterialViewSet, WPlanViewSet, WProductViewSet
|
||||
|
||||
router = DefaultRouter()
|
||||
router.register('wmaterial', WMaterialViewSet, basename='wmaterial')
|
||||
router.register('wproduct', WProductViewSet, basename='wproduct')
|
||||
router.register('operation', OperationViewSet, basename='operation')
|
||||
router.register('subplan', WPlanViewSet, basename='wplan')
|
||||
urlpatterns = [
|
||||
path('do/init/', DoFormInit.as_view()),
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
from django.shortcuts import render
|
||||
from rest_framework.generics import CreateAPIView, GenericAPIView
|
||||
from rest_framework.mixins import ListModelMixin
|
||||
from rest_framework.mixins import ListModelMixin, RetrieveModelMixin
|
||||
from rest_framework.utils import serializer_helpers
|
||||
from rest_framework.utils.field_mapping import get_relation_kwargs
|
||||
from rest_framework.views import APIView
|
||||
|
@ -14,7 +14,7 @@ from apps.system.mixins import CreateUpdateModelAMixin, OptimizationMixin
|
|||
from rest_framework.decorators import action
|
||||
from apps.wpm.models import WMaterial, WProduct, Operation, OperationMaterial, OperationRecord, OperationRecordItem
|
||||
|
||||
from apps.wpm.serializers import PickSerializer, OperationInitSerializer, OperationSubmitSerializer, WMaterialListSerializer, WProductListSerializer
|
||||
from apps.wpm.serializers import OperationDetailSerializer, OperationListSerializer, PickSerializer, OperationInitSerializer, OperationSubmitSerializer, WMaterialListSerializer, WProductListSerializer
|
||||
from rest_framework.response import Response
|
||||
# Create your views here.
|
||||
class WPlanViewSet(ListModelMixin, GenericViewSet):
|
||||
|
@ -55,13 +55,33 @@ class WProductViewSet(ListModelMixin, GenericViewSet):
|
|||
半成品
|
||||
"""
|
||||
perms_map={'*':'*'}
|
||||
queryset = WProduct.objects.select_related('p_state', 'm_state').all()
|
||||
queryset = WProduct.objects.select_related('p_state', 'm_state').filter(is_hidden=True)
|
||||
serializer_class = WProductListSerializer
|
||||
filterset_fields = ['p_state', 'subproduction_plan', 'm_state', 'production_plan', 'p_state__process']
|
||||
search_fields = ['number']
|
||||
ordering_fields = ['id']
|
||||
ordering = ['id']
|
||||
|
||||
@action(methods=['post'], detail=False, perms_map={'post':'*'}, serializer_class=PickSerializer)
|
||||
def test():
|
||||
pass
|
||||
|
||||
class OperationViewSet(ListModelMixin, RetrieveModelMixin, GenericViewSet):
|
||||
"""
|
||||
生产操作记录
|
||||
"""
|
||||
perms_map={'*':'*'}
|
||||
queryset = Operation.objects.select_related('p_state', 'm_state').all()
|
||||
serializer_class = OperationListSerializer
|
||||
filterset_fields = ['p_state', 'm_state']
|
||||
ordering_fields = ['id']
|
||||
ordering = ['-id']
|
||||
|
||||
def get_serializer_class(self):
|
||||
if self.action == 'retrieve':
|
||||
return OperationDetailSerializer
|
||||
return super().get_serializer_class()
|
||||
|
||||
class DoFormInit(CreateAPIView, GenericAPIView):
|
||||
perms_map={'*':'*'}
|
||||
serializer_class=OperationInitSerializer
|
||||
|
|
Loading…
Reference in New Issue