From b4e5937b289189e16ef7bc5486f64dcdd78c07a1 Mon Sep 17 00:00:00 2001 From: caoqianming Date: Thu, 13 Jan 2022 16:00:20 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B6=88=E8=80=97=E4=B8=8E=E4=BA=A7=E5=87=BA?= =?UTF-8?q?=E6=A0=A1=E9=AA=8C=20=E4=B8=BB=E8=A6=81=E6=98=AF=E5=86=B7?= =?UTF-8?q?=E5=8A=A0=E5=B7=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- hb_server/apps/inm/models.py | 4 ++-- hb_server/apps/inm/views.py | 14 ++++++++++---- hb_server/apps/wpm/serializers.py | 6 ++++++ hb_server/apps/wpm/views.py | 2 +- 4 files changed, 19 insertions(+), 7 deletions(-) diff --git a/hb_server/apps/inm/models.py b/hb_server/apps/inm/models.py index c03940c..363c0db 100644 --- a/hb_server/apps/inm/models.py +++ b/hb_server/apps/inm/models.py @@ -2,7 +2,7 @@ from django.db import models from django.db.models.base import Model import django.utils.timezone as timezone from django.db.models.query import QuerySet -from apps.system.models import CommonAModel, CommonBModel, Organization, User, Dict, File +from apps.system.models import CommonADModel, CommonAModel, CommonBModel, Organization, User, Dict, File from utils.model import SoftModel, BaseModel from simple_history.models import HistoricalRecords from apps.mtm.models import Material @@ -50,7 +50,7 @@ class MaterialBatch(BaseModel): -class FIFO(CommonAModel): +class FIFO(CommonADModel): """ 出入库记录 """ diff --git a/hb_server/apps/inm/views.py b/hb_server/apps/inm/views.py index a8c6f04..e91d156 100644 --- a/hb_server/apps/inm/views.py +++ b/hb_server/apps/inm/views.py @@ -115,7 +115,7 @@ class FIFOItemViewSet(ListModelMixin, DestroyModelMixin, GenericViewSet): obj.fifo_item.save() return Response() -class FIFOViewSet(ListModelMixin, GenericViewSet): +class FIFOViewSet(ListModelMixin, DestroyModelMixin, GenericViewSet): """ 出入库记录 """ @@ -131,6 +131,12 @@ class FIFOViewSet(ListModelMixin, GenericViewSet): if self.action == 'list': return FIFOListSerializer return super().get_serializer_class() + + def destroy(self, request, *args, **kwargs): + obj = self.get_object() + if obj.is_submited: + raise exceptions.APIException('该记录已审核,不可删除') + return super().destroy(request, *args, **kwargs) @action(methods=['post'], detail=False, perms_map={'post':'*'}, serializer_class=FIFOInPurSerializer) def in_pur(self, request, pk=None): @@ -148,9 +154,9 @@ class FIFOViewSet(ListModelMixin, GenericViewSet): 审核通过 """ obj = self.get_object() - # for i in FIFOItem.objects.filter(fifo=obj): - # if not i.is_testok: - # raise APIException('未检验通过, 不可审核') + for i in FIFOItem.objects.filter(fifo=obj): + if not i.is_testok: + raise APIException('未检验通过, 不可审核') if obj.is_audited: raise APIException('该入库记录已审核通过') with transaction.atomic(): diff --git a/hb_server/apps/wpm/serializers.py b/hb_server/apps/wpm/serializers.py index 8d5c9fe..b8c4ad5 100644 --- a/hb_server/apps/wpm/serializers.py +++ b/hb_server/apps/wpm/serializers.py @@ -256,7 +256,13 @@ class OperationListSerializer(serializers.ModelSerializer): # return WProduct.objects.filter(ow_wproduct__operation=obj).values('id', 'number') def get_count_work(self, obj): + from django.db.models.aggregates import Sum count_work = 0 + if obj.step.type == Step.STEP_TYPE_NOM: + count_work = OperationWproduct.objects.filter(operation=obj).count() + else: + count_work = OperationMaterial.objects.filter(operation=obj).annotate(count_work=Sum('count')) + print(count_work) return count_work def get_equip_(self, obj): diff --git a/hb_server/apps/wpm/views.py b/hb_server/apps/wpm/views.py index 87310eb..30accd4 100644 --- a/hb_server/apps/wpm/views.py +++ b/hb_server/apps/wpm/views.py @@ -616,7 +616,7 @@ class OperationViewSet(ListModelMixin, RetrieveModelMixin, CreateModelMixin, Upd omos = OperationMaterial.objects.filter(operation=op, type=SubprodctionMaterial.SUB_MA_TYPE_OUT) sps_omo_l = omos.filter(use_scrap=False).values_list('subproduction_plan', flat=True) - if set(list(sps_omi_l)) == set(list(sps_omo_l)) or op.step.type == Step.STEP_TYPE_COMB: + if set(list(sps_omi_l)) == set(list(sps_omo_l)) and op.step.type == Step.STEP_TYPE_DIV: pass else: raise exceptions.APIException('消耗与产出不一致')