Compare commits
No commits in common. "4d60c2c7bda7824dcf7389bdae4f549c157349d2" and "08d9b7c7a7f607d17d1b177faadc8eedeca2a6f6" have entirely different histories.
4d60c2c7bd
...
08d9b7c7a7
|
|
@ -264,21 +264,6 @@ class MIOItemListSimpleSerializer(CustomModelSerializer):
|
||||||
model = MIOItem
|
model = MIOItem
|
||||||
fields = ["id", "mio", "material", "warehouse", "material_name", "warehouse_name", "batch", "count", "test_date", "count_notok"]
|
fields = ["id", "mio", "material", "warehouse", "material_name", "warehouse_name", "batch", "count", "test_date", "count_notok"]
|
||||||
|
|
||||||
|
|
||||||
class _MioDetailItemMaterialSerializer(CustomModelSerializer):
|
|
||||||
class Meta:
|
|
||||||
model = Material
|
|
||||||
fields = ["id", "name", "model"]
|
|
||||||
|
|
||||||
|
|
||||||
class MIOItemForMioDetailSerializer(CustomModelSerializer):
|
|
||||||
"""MIO 详情下挂的 items 用,仅含前端实际消费的字段"""
|
|
||||||
material_ = _MioDetailItemMaterialSerializer(source='material', read_only=True)
|
|
||||||
|
|
||||||
class Meta:
|
|
||||||
model = MIOItem
|
|
||||||
fields = ["id", "mio", "material", "material_", "batch", "count", "pack_index"]
|
|
||||||
|
|
||||||
class MIOItemSerializer(CustomModelSerializer):
|
class MIOItemSerializer(CustomModelSerializer):
|
||||||
warehouse_name = serializers.CharField(source='warehouse.name', read_only=True)
|
warehouse_name = serializers.CharField(source='warehouse.name', read_only=True)
|
||||||
material_ = MaterialSerializer(source='material', read_only=True)
|
material_ = MaterialSerializer(source='material', read_only=True)
|
||||||
|
|
@ -288,33 +273,11 @@ class MIOItemSerializer(CustomModelSerializer):
|
||||||
inout_date = serializers.DateField(source='mio.inout_date', read_only=True)
|
inout_date = serializers.DateField(source='mio.inout_date', read_only=True)
|
||||||
test_user_name = serializers.CharField(source='test_user.name', read_only=True)
|
test_user_name = serializers.CharField(source='test_user.name', read_only=True)
|
||||||
mioitemw = MIOItemwSerializer(many=True, required=False)
|
mioitemw = MIOItemwSerializer(many=True, required=False)
|
||||||
defect = serializers.SerializerMethodField(label="缺陷")
|
|
||||||
defect_name = serializers.SerializerMethodField(label="缺陷名称")
|
|
||||||
okcate = serializers.SerializerMethodField(label="缺陷分类")
|
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
model = MIOItem
|
model = MIOItem
|
||||||
fields = '__all__'
|
fields = '__all__'
|
||||||
|
|
||||||
def _resolve_defect(self, obj):
|
|
||||||
if obj.wm_id and obj.wm.defect_id:
|
|
||||||
return obj.wm.defect
|
|
||||||
if obj.mb_id and obj.mb.defect_id:
|
|
||||||
return obj.mb.defect
|
|
||||||
return None
|
|
||||||
|
|
||||||
def get_defect(self, obj):
|
|
||||||
d = self._resolve_defect(obj)
|
|
||||||
return d.id if d else None
|
|
||||||
|
|
||||||
def get_defect_name(self, obj):
|
|
||||||
d = self._resolve_defect(obj)
|
|
||||||
return d.name if d else None
|
|
||||||
|
|
||||||
def get_okcate(self, obj):
|
|
||||||
d = self._resolve_defect(obj)
|
|
||||||
return d.okcate if d else None
|
|
||||||
|
|
||||||
def to_representation(self, instance):
|
def to_representation(self, instance):
|
||||||
ret = super().to_representation(instance)
|
ret = super().to_representation(instance)
|
||||||
ret["price"] = None
|
ret["price"] = None
|
||||||
|
|
@ -461,7 +424,7 @@ class MIOOtherSerializer(CustomModelSerializer):
|
||||||
|
|
||||||
|
|
||||||
class MIODetailSerializer(MIOListSerializer):
|
class MIODetailSerializer(MIOListSerializer):
|
||||||
items = MIOItemForMioDetailSerializer(source='item_mio', many=True, read_only=True)
|
items = MIOItemSerializer(source='item_mio', many=True, read_only=True)
|
||||||
|
|
||||||
|
|
||||||
class MIOItemTestSerializer(CustomModelSerializer):
|
class MIOItemTestSerializer(CustomModelSerializer):
|
||||||
|
|
|
||||||
|
|
@ -7,7 +7,7 @@ from django.conf import settings
|
||||||
from rest_framework import serializers
|
from rest_framework import serializers
|
||||||
from django.utils import timezone
|
from django.utils import timezone
|
||||||
from rest_framework.response import Response
|
from rest_framework.response import Response
|
||||||
from django.db.models import Sum, Prefetch
|
from django.db.models import Sum
|
||||||
|
|
||||||
from apps.inm.models import WareHouse, MaterialBatch, MIO, MIOItem, MIOItemw, Pack
|
from apps.inm.models import WareHouse, MaterialBatch, MIO, MIOItem, MIOItemw, Pack
|
||||||
from apps.inm.serializers import (
|
from apps.inm.serializers import (
|
||||||
|
|
@ -153,15 +153,6 @@ class MIOViewSet(CustomModelViewSet):
|
||||||
'item_mio__a_mioitem__batch']
|
'item_mio__a_mioitem__batch']
|
||||||
data_filter = True
|
data_filter = True
|
||||||
|
|
||||||
def get_queryset(self):
|
|
||||||
queryset = super().get_queryset()
|
|
||||||
if self.action == 'retrieve':
|
|
||||||
queryset = queryset.prefetch_related(Prefetch(
|
|
||||||
'item_mio',
|
|
||||||
queryset=MIOItem.objects.select_related('material'),
|
|
||||||
))
|
|
||||||
return queryset
|
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def lock_and_check_can_update(cls, mio:MIO):
|
def lock_and_check_can_update(cls, mio:MIO):
|
||||||
if not connection.in_atomic_block:
|
if not connection.in_atomic_block:
|
||||||
|
|
@ -355,7 +346,7 @@ class MIOItemViewSet(CustomListModelMixin, BulkCreateModelMixin, BulkDestroyMode
|
||||||
serializer_class = MIOItemSerializer
|
serializer_class = MIOItemSerializer
|
||||||
retrieve_serializer_class = MioItemDetailSerializer
|
retrieve_serializer_class = MioItemDetailSerializer
|
||||||
create_serializer_class = MIOItemCreateSerializer
|
create_serializer_class = MIOItemCreateSerializer
|
||||||
select_related_fields = ['warehouse', 'mio', 'material', 'test_user', 'wm__defect', 'mb__defect']
|
select_related_fields = ['warehouse', 'mio', 'material', 'test_user']
|
||||||
filterset_fields = {
|
filterset_fields = {
|
||||||
"warehouse": ["exact"],
|
"warehouse": ["exact"],
|
||||||
"mio": ["exact"],
|
"mio": ["exact"],
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue