diff --git a/hb_server/apps/wpm/migrations/0026_auto_20211201_1608.py b/hb_server/apps/wpm/migrations/0026_auto_20211201_1608.py new file mode 100644 index 0000000..bb7859f --- /dev/null +++ b/hb_server/apps/wpm/migrations/0026_auto_20211201_1608.py @@ -0,0 +1,26 @@ +# Generated by Django 3.2.9 on 2021-12-01 08:08 + +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + ('mtm', '0040_material_piece_count'), + ('em', '0009_auto_20210916_1108'), + ('wpm', '0025_alter_wmaterial_count'), + ] + + operations = [ + migrations.AlterField( + model_name='operationequip', + name='equip', + field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='oe_equip', to='em.equipment', verbose_name='生产设备'), + ), + migrations.AlterField( + model_name='operationrecord', + name='form', + field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='or_form', to='mtm.recordform', verbose_name='所用的生产记录表格'), + ), + ] diff --git a/hb_server/apps/wpm/models.py b/hb_server/apps/wpm/models.py index 327bc80..9bd50d2 100644 --- a/hb_server/apps/wpm/models.py +++ b/hb_server/apps/wpm/models.py @@ -1,3 +1,4 @@ +import re from django.db import models from django.db.models.base import Model import django.utils.timezone as timezone @@ -94,7 +95,7 @@ class OperationRecord(BaseModel): """ 记录表格 """ - form = models.ForeignKey(RecordForm, verbose_name='所用的生产记录表格', on_delete=models.CASCADE) + form = models.ForeignKey(RecordForm, verbose_name='所用的生产记录表格', on_delete=models.CASCADE, related_name='or_form') operation = models.ForeignKey(Operation, verbose_name='关联的生产操作', on_delete=models.CASCADE, related_name='or_operation') is_filled = models.BooleanField('是否填写', default=True) @@ -112,5 +113,5 @@ class OperationRecordItem(BaseModel): class OperationEquip(BaseModel): operation = models.ForeignKey(Operation, verbose_name='关联操作', on_delete=models.CASCADE, related_name='oe_operation') - equip = models.ForeignKey(Equipment, verbose_name='生产设备', on_delete=models.CASCADE) + equip = models.ForeignKey(Equipment, verbose_name='生产设备', on_delete=models.CASCADE, related_name='oe_equip') remark = models.TextField('备注', null=True, blank=True) \ No newline at end of file diff --git a/hb_server/apps/wpm/serializers.py b/hb_server/apps/wpm/serializers.py index 0a8cb9b..ec95ed0 100644 --- a/hb_server/apps/wpm/serializers.py +++ b/hb_server/apps/wpm/serializers.py @@ -1,5 +1,6 @@ from rest_framework import serializers, exceptions from rest_framework.serializers import ModelSerializer +from apps.em.models import Equipment from apps.em.serializers import EquipmentSimpleSerializer from apps.inm.models import FIFO, FIFOItem, FIFOItemProduct, IProduct, MaterialBatch, WareHouse from apps.inm.signals import update_inm @@ -19,7 +20,7 @@ class PickHalfSerializer(serializers.Serializer): id = serializers.PrimaryKeyRelatedField(queryset=SubProductionProgress.objects.all(), label='子计划进度ID') wproducts = serializers.ListField(child=serializers.PrimaryKeyRelatedField(queryset=WProduct.objects.all(), label='半成品ID'), required=False) # 从半成品表里直接修改状态 - + class PickDetailSerializer(serializers.Serializer): material = serializers.PrimaryKeyRelatedField(queryset=Material.objects.all(), label="物料ID") batch = serializers.CharField(label='物料批次', allow_blank=True) @@ -143,21 +144,21 @@ class OperationDetailSerializer(serializers.ModelSerializer): class OperationListSerializer(serializers.ModelSerializer): create_by_ = UserSimpleSerializer(source='create_by', read_only=True) step_ = StepSimpleSerializer(source='step', read_only=True) - wproduct_count = serializers.SerializerMethodField() - equip_count = serializers.SerializerMethodField() - record_count = serializers.SerializerMethodField() + wproduct_ = serializers.SerializerMethodField() + equip_ = serializers.SerializerMethodField() + record_ = serializers.SerializerMethodField() class Meta: model = Operation fields = '__all__' - def get_wproduct_count(self, obj): - return obj.ow_operation.count() + def get_wproduct_(self, obj): + return WProduct.objects.filter(ow_wproduct__operation=obj).values('id', 'number') - def get_equip_count(self, obj): - return obj.oe_operation.count() + def get_equip_(self, obj): + return EquipmentSimpleSerializer(instance=Equipment.objects.filter(oe_equip__operation=obj), many=True).data - def get_record_count(self, obj): - return obj.or_operation.count() + def get_record_(self, obj): + return RecordFormSimpleSerializer(instance=RecordForm.objects.filter(or_form__operation=obj), many=True).data class OperationCreateSerializer(serializers.Serializer): """