OperationListSerializer修改

This commit is contained in:
曹前明 2022-05-19 15:42:23 +08:00
parent b02edd3751
commit 074520a418
4 changed files with 38 additions and 11 deletions

View File

@ -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='生产数量')

View File

@ -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()

View File

@ -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