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']: 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..911d318 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,25 @@ 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')) + 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'] + rets.append(ret) + return rets + 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..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': @@ -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