Merge branch 'develop' of https://e.coding.net/ctcdevteam/hberp/hberp into develop

This commit is contained in:
shijing 2022-05-19 17:50:55 +08:00
commit c5005b0e7f
5 changed files with 42 additions and 13 deletions

View File

@ -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']:

View File

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

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

View File

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