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

This commit is contained in:
shijing 2022-06-08 08:51:58 +08:00
commit 2e5b24b370
6 changed files with 41 additions and 16 deletions

View File

@ -0,0 +1,18 @@
# Generated by Django 3.2.9 on 2022-06-06 05:15
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('mtm', '0051_material_file'),
]
operations = [
migrations.AddField(
model_name='material',
name='brand',
field=models.CharField(blank=True, max_length=100, null=True, verbose_name='牌号'),
),
]

View File

@ -36,6 +36,7 @@ class Material(CommonAModel):
) )
name = models.CharField('物料名称', max_length=100) name = models.CharField('物料名称', max_length=100)
number = models.CharField('编号', max_length=100, unique=True) number = models.CharField('编号', max_length=100, unique=True)
brand = models.CharField('牌号', max_length=100, null=True, blank=True)
specification = models.CharField('型号', max_length=100, null=True, blank=True) specification = models.CharField('型号', max_length=100, null=True, blank=True)
type = models.PositiveSmallIntegerField('物料类型', choices= type_choices, default=1) type = models.PositiveSmallIntegerField('物料类型', choices= type_choices, default=1)
sort_str = models.CharField('排序字符', max_length=100, null=True, blank=True) sort_str = models.CharField('排序字符', max_length=100, null=True, blank=True)

View File

@ -46,7 +46,7 @@ class PackItemUpdateSerializer(serializers.ModelSerializer):
class MaterialSimpleSerializer(serializers.ModelSerializer): class MaterialSimpleSerializer(serializers.ModelSerializer):
class Meta: class Meta:
model = Material model = Material
fields = ['id', 'name', 'number', 'unit','specification', 'type', 'count', 'count_safe'] fields = ['id', 'name', 'number', 'unit','specification', 'type', 'count', 'count_safe', 'brand']
class PackItemDetailSerializer(serializers.ModelSerializer): class PackItemDetailSerializer(serializers.ModelSerializer):
material_ = MaterialSimpleSerializer(source='material', read_only=True) material_ = MaterialSimpleSerializer(source='material', read_only=True)
@ -227,7 +227,7 @@ class RecordFormCreateSerializer(serializers.ModelSerializer):
class RecordFormUpdateSerializer(serializers.ModelSerializer): class RecordFormUpdateSerializer(serializers.ModelSerializer):
class Meta: class Meta:
model = RecordForm model = RecordForm
fields = ['name', 'type', 'number', 'enabled', 'export_template', 'material'] fields = ['name', 'type', 'number', 'enabled', 'export_template', 'material', 'form']
# def validate(self, attrs): # def validate(self, attrs):
# if attrs['enabled']: # if attrs['enabled']:
@ -280,7 +280,7 @@ class RecordFormFieldCreateSerializer(serializers.ModelSerializer):
class RecordFormFieldUpdateSerializer(serializers.ModelSerializer): class RecordFormFieldUpdateSerializer(serializers.ModelSerializer):
class Meta: class Meta:
model = RecordFormField model = RecordFormField
exclude = ['field_key'] fields = '__all__'
class RecordFormFieldSimpleSerializer(serializers.ModelSerializer): class RecordFormFieldSimpleSerializer(serializers.ModelSerializer):
class Meta: class Meta:

View File

@ -184,7 +184,7 @@ class RecordFormViewSet(OptimizationMixin, CreateUpdateModelAMixin, ModelViewSet
queryset = RecordForm.objects.all() queryset = RecordForm.objects.all()
filterset_fields = ['step', 'type', 'material', 'number', 'enabled'] filterset_fields = ['step', 'type', 'material', 'number', 'enabled']
search_fields = ['name'] search_fields = ['name']
ordering='id' ordering=['id']
def get_serializer_class(self): def get_serializer_class(self):
@ -234,8 +234,8 @@ class RecordFormFieldViewSet(OptimizationMixin, CreateUpdateModelAMixin, ModelVi
queryset = RecordFormField.objects.all() queryset = RecordFormField.objects.all()
filterset_fields = ['field_type', 'form'] filterset_fields = ['field_type', 'form']
search_fields = ['field_name', 'field_key'] search_fields = ['field_name', 'field_key']
ordering = 'sort' ordering = ['sort', 'create_time']
ordering_fields = ['sort', 'id'] ordering_fields = ['sort', 'create_time']
def get_serializer_class(self): def get_serializer_class(self):
if self.action =='create': if self.action =='create':

View File

@ -8,7 +8,7 @@ from apps.inm.serializers import WareHouseSimpleSerializer
from apps.inm.services import InmService from apps.inm.services import InmService
from apps.mtm.models import Material, RecordForm, RecordFormField, Step, SubprodctionMaterial from apps.mtm.models import Material, RecordForm, RecordFormField, Step, SubprodctionMaterial
from apps.mtm.serializers import MaterialSimpleSerializer, ProcessSimpleSerializer, RecordFormSimpleSerializer, StepSimpleSerializer from apps.mtm.serializers import MaterialSimpleSerializer, ProcessSimpleSerializer, RecordFormSimpleSerializer, StepSimpleSerializer
from django.db.models.aggregates import Sum from django.db.models.aggregates import Sum, Count
from apps.pm.models import ProductionPlan, SubProductionPlan, SubProductionProgress from apps.pm.models import ProductionPlan, SubProductionPlan, SubProductionProgress
from django.utils import timezone from django.utils import timezone
from django.utils.translation import gettext_lazy as _ from django.utils.translation import gettext_lazy as _
@ -282,18 +282,24 @@ class OperationListSerializer(serializers.ModelSerializer):
# return WProduct.objects.filter(ow_wproduct__operation=obj).values('id', 'number') # return WProduct.objects.filter(ow_wproduct__operation=obj).values('id', 'number')
def get_out_detail(self, obj): 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 = [] rets = []
if obj.step.type == Step.STEP_TYPE_NOM:
qs = OperationWproduct.objects.filter(operation=obj).values(
'subproduction_plan__production_plan',
'subproduction_plan__production_plan__product'
).annotate(count=Count('wproduct'))
else:
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'))
for i in qs: for i in qs:
ret = {} ret = {}
ret['plan'] = ProductionPlanSimpleSerializer(instance=ProductionPlan.objects.get( ret['plan'] = ProductionPlanSimpleSerializer(instance=ProductionPlan.objects.get(
id= i['subproduction_plan__production_plan'])).data id= i['subproduction_plan__production_plan'])).data
ret['product'] = MaterialSimpleSerializer(instance=Material.objects.get( ret['product'] = MaterialSimpleSerializer(instance=Material.objects.get(
id=i['subproduction_plan__production_plan__product'])).data id=i['subproduction_plan__production_plan__product'])).data
ret['count'] = i['count'] ret['count'] = i['count']
rets.append(ret) rets.append(ret)
return rets return rets

View File

@ -605,8 +605,8 @@ class OperationViewSet(ListModelMixin, RetrieveModelMixin, CreateModelMixin, Upd
# 查询需要填写的自定义表格 # 查询需要填写的自定义表格
forms = RecordForm.objects.filter( forms = RecordForm.objects.filter(
step=step, type=RecordForm.RF_TYPE_DO, enabled=True) step=step, type=RecordForm.RF_TYPE_DO, enabled=True)
# 根据产品不同进行筛选 # 根据产品不同进行筛选 这里其实是有问题的,应该是以产出物归属产品来查表,但操作刚创建是没有的,先这样吧
if 'wproducts' in vdata: if 'wproducts' in vdata and splans:
xforms = forms.filter(material=splans[0].production_plan.product) xforms = forms.filter(material=splans[0].production_plan.product)
if xforms.exists(): if xforms.exists():
forms = xforms forms = xforms