diff --git a/hb_server/apps/wpm/serializers.py b/hb_server/apps/wpm/serializers.py index 509d3a4..4c4fd0a 100644 --- a/hb_server/apps/wpm/serializers.py +++ b/hb_server/apps/wpm/serializers.py @@ -3,7 +3,7 @@ from rest_framework.serializers import ModelSerializer from apps.inm.models import FIFO, FIFOItem, MaterialBatch, WareHouse from apps.inm.signals import update_inm from apps.mtm.models import Material, RecordForm, Step -from apps.mtm.serializers import MaterialSimpleSerializer +from apps.mtm.serializers import MaterialSimpleSerializer, StepSimpleSerializer from apps.pm.models import SubProductionPlan, SubProductionProgress from django.utils import timezone @@ -80,6 +80,15 @@ class WMaterialListSerializer(serializers.ModelSerializer): model = WMaterial fields = '__all__' +class WProductListSerializer(serializers.ModelSerializer): + """ + 半成品列表 + """ + m_state_ = MaterialSimpleSerializer(source='m_state', read_only=True) + p_state_ = StepSimpleSerializer(source='p_state', read_only=True) + class Meta: + model = WProduct + fields = '__all__' class OperationInitSerializer(serializers.Serializer): step = serializers.PrimaryKeyRelatedField(queryset=Step.objects.all(), label="子工序ID") @@ -136,6 +145,7 @@ class OperationSubmitSerializer(serializers.Serializer): input = DoInputSerializer(many=True, required=False) output = DoOutputSerializer(many=True, required=False) forms = OperationRecordSerializer(many=True, required=False) + remark = serializers.CharField(required=False, label='操作备注') \ No newline at end of file diff --git a/hb_server/apps/wpm/urls.py b/hb_server/apps/wpm/urls.py index 89604b5..89057f7 100644 --- a/hb_server/apps/wpm/urls.py +++ b/hb_server/apps/wpm/urls.py @@ -3,10 +3,11 @@ 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 +from apps.wpm.views import DoFormInit, DoFormSubmit, WMaterialViewSet, WPlanViewSet, WProductViewSet router = DefaultRouter() router.register('wmaterial', WMaterialViewSet, basename='wmaterial') +router.register('wproduct', WProductViewSet, basename='wproduct') router.register('subplan', WPlanViewSet, basename='wplan') urlpatterns = [ path('do/init/', DoFormInit.as_view()), diff --git a/hb_server/apps/wpm/views.py b/hb_server/apps/wpm/views.py index 270dc11..e3f7e27 100644 --- a/hb_server/apps/wpm/views.py +++ b/hb_server/apps/wpm/views.py @@ -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 +from apps.wpm.serializers import PickSerializer, OperationInitSerializer, OperationSubmitSerializer, WMaterialListSerializer, WProductListSerializer from rest_framework.response import Response # Create your views here. class WPlanViewSet(ListModelMixin, GenericViewSet): @@ -50,6 +50,18 @@ class WMaterialViewSet(CreateUpdateModelAMixin, ListModelMixin, GenericViewSet): serializer.save() return Response() +class WProductViewSet(ListModelMixin, GenericViewSet): + """ + 半成品 + """ + perms_map={'*':'*'} + queryset = WProduct.objects.select_related('p_state', 'm_state').all() + serializer_class = WProductListSerializer + filterset_fields = ['p_state', 'subproduction_plan', 'm_state', 'production_plan', 'p_state__process'] + search_fields = ['number'] + ordering_fields = ['id'] + ordering = ['id'] + class DoFormInit(CreateAPIView, GenericAPIView): perms_map={'*':'*'} serializer_class=OperationInitSerializer @@ -114,7 +126,7 @@ class DoFormSubmit(CreateAPIView, GenericAPIView): if 'wproducts' in data and data['wproducts']: action_obj.wproducts = data['wproducts'] action_obj.m_state = vdata[0].m_state - action_obj.remark = data['remark'] # 操作备注 + action_obj.remark = vdata.get('remark', '') # 操作备注 action_obj.create_by = request.user action_obj.save()