From 074520a418d7eca0dfb96070ad0c3c274d5d7cf5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9B=B9=E5=89=8D=E6=98=8E?= <909355014@qq.com> Date: Thu, 19 May 2022 15:42:23 +0800 Subject: [PATCH 1/4] =?UTF-8?q?OperationListSerializer=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- hb_server/apps/mtm/views.py | 8 ++++---- hb_server/apps/pm/serializers.py | 5 +++++ hb_server/apps/wpm/serializers.py | 31 ++++++++++++++++++++++++------- hb_server/apps/wpm/views.py | 5 +++++ 4 files changed, 38 insertions(+), 11 deletions(-) diff --git a/hb_server/apps/mtm/views.py b/hb_server/apps/mtm/views.py index f3614f9..ee46787 100644 --- a/hb_server/apps/mtm/views.py +++ b/hb_server/apps/mtm/views.py @@ -216,10 +216,10 @@ class RecordFormViewSet(OptimizationMixin, CreateUpdateModelAMixin, ModelViewSet instance.save() if form: for i in RecordFormField.objects.filter(form=form, is_deleted=False): - i.pk = None - i.form = instance - i.parent = None - i.save() + i.pk = None + i.form = instance + i.parent = None + i.save() return Response() diff --git a/hb_server/apps/pm/serializers.py b/hb_server/apps/pm/serializers.py index ee3953b..13b55fb 100644 --- a/hb_server/apps/pm/serializers.py +++ b/hb_server/apps/pm/serializers.py @@ -20,6 +20,11 @@ class ProductionPlanSerializer(DynamicFieldsSerializerMixin, serializers.ModelSe model = ProductionPlan fields ='__all__' +class ProductionPlanSimpleSerializer(serializers.ModelSerializer): + class Meta: + model = ProductionPlan + fields = ['number', 'state'] + class ResourceCalSerializer(serializers.Serializer): id = serializers.IntegerField(label='产品ID') count = serializers.IntegerField(label='生产数量') diff --git a/hb_server/apps/wpm/serializers.py b/hb_server/apps/wpm/serializers.py index 2b143b1..aab801d 100644 --- a/hb_server/apps/wpm/serializers.py +++ b/hb_server/apps/wpm/serializers.py @@ -8,11 +8,11 @@ from apps.inm.serializers import WareHouseSimpleSerializer from apps.inm.services import InmService from apps.mtm.models import Material, RecordForm, RecordFormField, Step, SubprodctionMaterial from apps.mtm.serializers import MaterialSimpleSerializer, ProcessSimpleSerializer, RecordFormSimpleSerializer, StepSimpleSerializer - -from apps.pm.models import SubProductionPlan, SubProductionProgress +from django.db.models.aggregates import Sum +from apps.pm.models import ProductionPlan, SubProductionPlan, SubProductionProgress from django.utils import timezone from django.utils.translation import gettext_lazy as _ -from apps.pm.serializers import SubproductionPlanSimpleSerializer +from apps.pm.serializers import ProductionPlanSerializer, ProductionPlanSimpleSerializer, SubproductionPlanSimpleSerializer from apps.qm.models import TestRecord, TestRecordItem from apps.sam.serializers import OrderSimpleSerializer from apps.system.models import User @@ -265,13 +265,15 @@ class OperationDetailSerializer(serializers.ModelSerializer): fields = '__all__' class OperationListSerializer(serializers.ModelSerializer): + create_by_ = UserSimpleSerializer(source='create_by', read_only=True) update_by_ = UserSimpleSerializer(source='update_by', read_only=True) step_ = StepSimpleSerializer(source='step', read_only=True) + out_detail = serializers.SerializerMethodField() # wproduct_ = serializers.SerializerMethodField() - count_work = serializers.SerializerMethodField() - equip_ = serializers.SerializerMethodField() - record_ = serializers.SerializerMethodField() + # count_work = serializers.SerializerMethodField() + # equip_ = serializers.SerializerMethodField() + # record_ = serializers.SerializerMethodField() class Meta: model = Operation fields = '__all__' @@ -279,8 +281,23 @@ class OperationListSerializer(serializers.ModelSerializer): # def get_wproduct_(self, obj): # return WProduct.objects.filter(ow_wproduct__operation=obj).values('id', 'number') + def get_out_detail(self, obj): + qs = OperationMaterial.objects.filter(operation=obj, + type=SubprodctionMaterial.SUB_MA_TYPE_OUT, subproduction_progress__is_main=True).values( + 'subproduction_plan__production_plan', + 'subproduction_plan__production_plan__product' + ).annotate(count=Sum('count')) + ret = {} + for i in qs: + ret['plan'] = ProductionPlanSimpleSerializer(instance=ProductionPlan.objects.get( + id= i['subproduction_plan__production_plan'])).data + ret['product'] = MaterialSimpleSerializer(instance=Material.objects.get( + id=i['subproduction_plan__production_plan__product'])).data + ret['count'] = i['count'] + return ret + 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() diff --git a/hb_server/apps/wpm/views.py b/hb_server/apps/wpm/views.py index 36c5f9a..9f44265 100644 --- a/hb_server/apps/wpm/views.py +++ b/hb_server/apps/wpm/views.py @@ -605,6 +605,11 @@ class OperationViewSet(ListModelMixin, RetrieveModelMixin, CreateModelMixin, Upd # 查询需要填写的自定义表格 forms = RecordForm.objects.filter( step=step, type=RecordForm.RF_TYPE_DO, enabled=True) + # 根据产品不同进行筛选 + if 'wproducts' in vdata: + xforms = forms.filter(material=splans[0].production_plan.product) + if xforms.exists(): + forms = xforms for i in forms: opr = OperationRecord() opr.operation = op From e9e9835b5d6bbb7d0b4628a901d946a0f96c038a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9B=B9=E5=89=8D=E6=98=8E?= <909355014@qq.com> Date: Thu, 19 May 2022 15:46:21 +0800 Subject: [PATCH 2/4] =?UTF-8?q?OperationListSerializer=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- hb_server/apps/wpm/serializers.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/hb_server/apps/wpm/serializers.py b/hb_server/apps/wpm/serializers.py index aab801d..911d318 100644 --- a/hb_server/apps/wpm/serializers.py +++ b/hb_server/apps/wpm/serializers.py @@ -287,14 +287,16 @@ class OperationListSerializer(serializers.ModelSerializer): 'subproduction_plan__production_plan', 'subproduction_plan__production_plan__product' ).annotate(count=Sum('count')) - ret = {} + rets = [] for i in qs: + ret = {} ret['plan'] = ProductionPlanSimpleSerializer(instance=ProductionPlan.objects.get( id= i['subproduction_plan__production_plan'])).data ret['product'] = MaterialSimpleSerializer(instance=Material.objects.get( id=i['subproduction_plan__production_plan__product'])).data ret['count'] = i['count'] - return ret + rets.append(ret) + return rets def get_count_work(self, obj): From 8d9788698c67224238e1455e3bcfc62b2a35f492 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9B=B9=E5=89=8D=E6=98=8E?= <909355014@qq.com> Date: Thu, 19 May 2022 15:51:02 +0800 Subject: [PATCH 3/4] recordform update material --- hb_server/apps/mtm/serializers.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hb_server/apps/mtm/serializers.py b/hb_server/apps/mtm/serializers.py index ad6c0e1..8bcbd24 100644 --- a/hb_server/apps/mtm/serializers.py +++ b/hb_server/apps/mtm/serializers.py @@ -227,7 +227,7 @@ class RecordFormCreateSerializer(serializers.ModelSerializer): class RecordFormUpdateSerializer(serializers.ModelSerializer): class Meta: model = RecordForm - fields = ['name', 'type', 'number', 'enabled', 'export_template'] + fields = ['name', 'type', 'number', 'enabled', 'export_template', 'material'] # def validate(self, attrs): # if attrs['enabled']: From 072a3ad0ed9de0a650965ef2191bb6084d2c2379 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9B=B9=E5=89=8D=E6=98=8E?= <909355014@qq.com> Date: Thu, 19 May 2022 17:24:24 +0800 Subject: [PATCH 4/4] operation list serializer --- hb_server/apps/wpm/views.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hb_server/apps/wpm/views.py b/hb_server/apps/wpm/views.py index 9f44265..b93250c 100644 --- a/hb_server/apps/wpm/views.py +++ b/hb_server/apps/wpm/views.py @@ -539,7 +539,7 @@ class OperationViewSet(ListModelMixin, RetrieveModelMixin, CreateModelMixin, Upd def get_serializer_class(self): if self.action == 'retrieve': - return OperationDetailSerializer + return OperationListSerializer elif self.action == 'create': return OperationCreateSerializer elif self.action == 'update':