diff --git a/hb_server/apps/develop/urls.py b/hb_server/apps/develop/urls.py index 250f0c3..8f6e395 100644 --- a/hb_server/apps/develop/urls.py +++ b/hb_server/apps/develop/urls.py @@ -2,10 +2,11 @@ from django.db.models import base from rest_framework import urlpatterns from django.urls import path, include from rest_framework.routers import DefaultRouter -from apps.develop.views import CleanDataView, UpdateCuttingView +from apps.develop.views import CleanDataView, UpdateCuttingView, UpdateLastTestResult urlpatterns = [ path('cleandata/', CleanDataView.as_view()), - path('update_cutting/', UpdateCuttingView.as_view()) + path('update_cutting/', UpdateCuttingView.as_view()), + path('update_last_result/', UpdateLastTestResult.as_view()) ] diff --git a/hb_server/apps/develop/views.py b/hb_server/apps/develop/views.py index a36a550..7ca4ca8 100644 --- a/hb_server/apps/develop/views.py +++ b/hb_server/apps/develop/views.py @@ -47,3 +47,18 @@ class UpdateCuttingView(APIView): WproductFlow.objects.filter(wproduct=i).update(coperation=op) WpmServies.update_cutting_list_with_operation(op) return Response() + +from apps.qm.models import TestRecord +class UpdateLastTestResult(APIView): + permission_classes = [IsAdminUser] + @transaction.atomic + def post(self, request, format=None): + """ + 更新最后一次检验结果 + """ + for i in WProduct.objects.all(): + tr = TestRecord.objects.filter(wproduct=i, is_submited=True).order_by('-id').first() + if tr: + i.last_test_result = tr.is_testok + i.save() + return Response() diff --git a/hb_server/apps/wpm/filters.py b/hb_server/apps/wpm/filters.py index 7719d7b..e47fec7 100644 --- a/hb_server/apps/wpm/filters.py +++ b/hb_server/apps/wpm/filters.py @@ -2,7 +2,7 @@ from django_filters import rest_framework as filters from apps.mtm.models import Material, Step from apps.wpm.services import WpmServies -from .models import Operation, OperationMaterial, WMaterial, WProduct +from .models import Operation, OperationMaterial, OperationRecord, WMaterial, WProduct class WMaterialFilterSet(filters.FilterSet): @@ -39,4 +39,15 @@ class CuttingFilterSet(filters.FilterSet): production_plan = filters.NumberFilter(field_name='subproduction_plan__production_plan') class Meta: model = OperationMaterial - fields = ['operation', 'subproduction_plan', 'material'] \ No newline at end of file + fields = ['operation', 'subproduction_plan', 'material'] + + +class OperationRecordFilterSet(filters.FilterSet): + wproduct = filters.NumberFilter(method='filter_wproduct') + class Meta: + model = OperationRecord + fields = ['operation', 'form'] + + def filter_wproduct(self, queryset, name, value): + queryset = queryset.filter(operation__ow_operation__wproduct__id=value) + return queryset \ No newline at end of file diff --git a/hb_server/apps/wpm/views.py b/hb_server/apps/wpm/views.py index ce5eb9c..217b4fa 100644 --- a/hb_server/apps/wpm/views.py +++ b/hb_server/apps/wpm/views.py @@ -19,7 +19,7 @@ from apps.system.mixins import CreateUpdateModelAMixin, OptimizationMixin from rest_framework.decorators import action from apps.wf.models import Workflow from apps.wf.serializers import WorkflowSimpleSerializer -from apps.wpm.filters import CuttingFilterSet, WMaterialFilterSet, WProductFilterSet +from apps.wpm.filters import CuttingFilterSet, OperationRecordFilterSet, WMaterialFilterSet, WProductFilterSet from apps.wpm.models import OperationEquip, OperationWproduct, Pick, PickWproduct, WMaterial, WProduct, Operation, OperationMaterial, OperationRecord, OperationRecordItem, WprouctTicket from apps.wpm.serializers import CuttingListSerializer, OperationEquipListSerializer, OperationEquipUpdateSerializer, OperationMaterialCreate1ListSerailizer, OperationMaterialCreate1Serailizer, OperationMaterialCreate2ListSerailizer, OperationMaterialCreate2Serailizer, OperationMaterialCreate3Serializer, OperationMaterialListSerializer, OperationRecordDetailSerializer, OperationRecordListSerializer, OperationRecordSubmitSerializer, OperationUpdateSerializer, OperationWproductListSerializer, OperationCreateSerializer, OperationDetailSerializer, OperationListSerializer, PickHalfSerializer, PickHalfsSerializer, PickSerializer, OperationInitSerializer, OperationSubmitSerializer, ScrapSerializer, WMaterialListSerializer, WProductCardSerializer, WProductDetailSerializer, WProductListSerializer, WplanPutInSerializer, WpmTestFormInitSerializer, WpmTestRecordCreateSerializer, WproductMtestSerializer, WproductPutInSerializer, WproductPutInsSerializer, WproductTicketListSerializer @@ -781,7 +781,7 @@ class OperationRecordViewSet(ListModelMixin, DestroyModelMixin, UpdateModelMixin perms_map={'*':'*'} queryset = OperationRecord.objects.select_related('operation', 'form').all() serializer_class = OperationRecordListSerializer - filterset_fields = ['operation', 'form'] + filterset_class = OperationRecordFilterSet ordering_fields = ['id'] ordering = ['-id']