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 apps.pm.models import SubProductionPlan, SubProductionProgress
|
||||||
from django.utils import timezone
|
from django.utils import timezone
|
||||||
from django.utils.translation import gettext_lazy as _
|
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):
|
class PickDetailSerializer(serializers.Serializer):
|
||||||
material = serializers.PrimaryKeyRelatedField(queryset=Material.objects.all(), label="物料ID")
|
material = serializers.PrimaryKeyRelatedField(queryset=Material.objects.all(), label="物料ID")
|
||||||
|
@ -90,6 +91,27 @@ class WProductListSerializer(serializers.ModelSerializer):
|
||||||
model = WProduct
|
model = WProduct
|
||||||
fields = '__all__'
|
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):
|
class OperationInitSerializer(serializers.Serializer):
|
||||||
step = serializers.PrimaryKeyRelatedField(queryset=Step.objects.all(), label="子工序ID")
|
step = serializers.PrimaryKeyRelatedField(queryset=Step.objects.all(), label="子工序ID")
|
||||||
subproduction_plan = serializers.PrimaryKeyRelatedField(queryset=SubProductionPlan.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('请选择正确的子工序操作')
|
raise serializers.ValidationError('请选择正确的子工序操作')
|
||||||
|
|
||||||
if 'wproducts' in data and data['wproducts']:
|
if 'wproducts' in data and data['wproducts']:
|
||||||
|
if step.type == Step.STEP_TYPE_DIV:
|
||||||
|
raise serializers.ValidationError(_('不可进行此操作'))
|
||||||
for i in data['wproducts']:
|
for i in data['wproducts']:
|
||||||
|
if i.is_executed:
|
||||||
|
raise serializers.ValidationError('不可进行操作')
|
||||||
if i.subproduction_plan != subproduction_plan:
|
if i.subproduction_plan != subproduction_plan:
|
||||||
raise serializers.ValidationError('半成品所属子计划不一致')
|
raise serializers.ValidationError('半成品所属子计划不一致')
|
||||||
if i.step != step:
|
if i.p_state != step:
|
||||||
raise serializers.ValidationError('半成品所属子工序不一致')
|
raise serializers.ValidationError('半成品所属子工序不一致')
|
||||||
else:
|
else:
|
||||||
if step.type != Step.STEP_TYPE_DIV:
|
if step.type != Step.STEP_TYPE_DIV:
|
||||||
|
|
|
@ -3,11 +3,12 @@ from rest_framework import urlpatterns
|
||||||
from django.urls import path, include
|
from django.urls import path, include
|
||||||
from rest_framework.routers import DefaultRouter
|
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 = DefaultRouter()
|
||||||
router.register('wmaterial', WMaterialViewSet, basename='wmaterial')
|
router.register('wmaterial', WMaterialViewSet, basename='wmaterial')
|
||||||
router.register('wproduct', WProductViewSet, basename='wproduct')
|
router.register('wproduct', WProductViewSet, basename='wproduct')
|
||||||
|
router.register('operation', OperationViewSet, basename='operation')
|
||||||
router.register('subplan', WPlanViewSet, basename='wplan')
|
router.register('subplan', WPlanViewSet, basename='wplan')
|
||||||
urlpatterns = [
|
urlpatterns = [
|
||||||
path('do/init/', DoFormInit.as_view()),
|
path('do/init/', DoFormInit.as_view()),
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
from django.shortcuts import render
|
from django.shortcuts import render
|
||||||
from rest_framework.generics import CreateAPIView, GenericAPIView
|
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 import serializer_helpers
|
||||||
from rest_framework.utils.field_mapping import get_relation_kwargs
|
from rest_framework.utils.field_mapping import get_relation_kwargs
|
||||||
from rest_framework.views import APIView
|
from rest_framework.views import APIView
|
||||||
|
@ -14,7 +14,7 @@ from apps.system.mixins import CreateUpdateModelAMixin, OptimizationMixin
|
||||||
from rest_framework.decorators import action
|
from rest_framework.decorators import action
|
||||||
from apps.wpm.models import WMaterial, WProduct, Operation, OperationMaterial, OperationRecord, OperationRecordItem
|
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
|
from rest_framework.response import Response
|
||||||
# Create your views here.
|
# Create your views here.
|
||||||
class WPlanViewSet(ListModelMixin, GenericViewSet):
|
class WPlanViewSet(ListModelMixin, GenericViewSet):
|
||||||
|
@ -55,13 +55,33 @@ class WProductViewSet(ListModelMixin, GenericViewSet):
|
||||||
半成品
|
半成品
|
||||||
"""
|
"""
|
||||||
perms_map={'*':'*'}
|
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
|
serializer_class = WProductListSerializer
|
||||||
filterset_fields = ['p_state', 'subproduction_plan', 'm_state', 'production_plan', 'p_state__process']
|
filterset_fields = ['p_state', 'subproduction_plan', 'm_state', 'production_plan', 'p_state__process']
|
||||||
search_fields = ['number']
|
search_fields = ['number']
|
||||||
ordering_fields = ['id']
|
ordering_fields = ['id']
|
||||||
ordering = ['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):
|
class DoFormInit(CreateAPIView, GenericAPIView):
|
||||||
perms_map={'*':'*'}
|
perms_map={'*':'*'}
|
||||||
serializer_class=OperationInitSerializer
|
serializer_class=OperationInitSerializer
|
||||||
|
|
Loading…
Reference in New Issue