feat: mioitem返回mio数据
This commit is contained in:
parent
741b64142b
commit
3b04bdf067
|
@ -109,7 +109,7 @@ class MIOItemCreateSerializer(CustomModelSerializer):
|
||||||
class Meta:
|
class Meta:
|
||||||
model = MIOItem
|
model = MIOItem
|
||||||
fields = ['mio', 'warehouse', 'material',
|
fields = ['mio', 'warehouse', 'material',
|
||||||
'batch', 'count', 'assemb', 'is_testok', 'mioitemw', 'mb', 'wm']
|
'batch', 'count', 'assemb', 'is_testok', 'mioitemw', 'mb', 'wm', 'unit_price']
|
||||||
extra_kwargs = {
|
extra_kwargs = {
|
||||||
'mio': {'required': True}, 'warehouse': {'required': False},
|
'mio': {'required': True}, 'warehouse': {'required': False},
|
||||||
'material': {'required': False}, 'batch': {'required': False}}
|
'material': {'required': False}, 'batch': {'required': False}}
|
||||||
|
@ -207,8 +207,7 @@ class MIOItemAListSerializer(CustomModelSerializer):
|
||||||
|
|
||||||
|
|
||||||
class MIOItemSerializer(CustomModelSerializer):
|
class MIOItemSerializer(CustomModelSerializer):
|
||||||
warehouse_name = serializers.CharField(
|
warehouse_name = serializers.CharField(source='warehouse.name', read_only=True)
|
||||||
source='warehouse.name', read_only=True)
|
|
||||||
material_ = MaterialSerializer(source='material', read_only=True)
|
material_ = MaterialSerializer(source='material', read_only=True)
|
||||||
assemb = MIOItemAListSerializer(
|
assemb = MIOItemAListSerializer(
|
||||||
source='a_mioitem', read_only=True, many=True)
|
source='a_mioitem', read_only=True, many=True)
|
||||||
|
@ -222,6 +221,15 @@ class MIOItemSerializer(CustomModelSerializer):
|
||||||
model = MIOItem
|
model = MIOItem
|
||||||
fields = '__all__'
|
fields = '__all__'
|
||||||
|
|
||||||
|
def to_representation(self, instance):
|
||||||
|
ret = super().to_representation(instance)
|
||||||
|
ret["price"] = None
|
||||||
|
if ret["unit_price"] is not None:
|
||||||
|
ret["price"] = ret["count"] * ret["unit_price"]
|
||||||
|
return ret
|
||||||
|
|
||||||
|
class MioItemDetailSerializer(MIOItemSerializer):
|
||||||
|
mio_ = MIOListSerializer(source='mio', read_only=True)
|
||||||
|
|
||||||
|
|
||||||
class MIODoSerializer(CustomModelSerializer):
|
class MIODoSerializer(CustomModelSerializer):
|
||||||
|
|
|
@ -14,7 +14,7 @@ from apps.inm.serializers import (
|
||||||
MaterialBatchSerializer, WareHourseSerializer, MIOListSerializer, MIOItemSerializer, MioItemAnaSerializer,
|
MaterialBatchSerializer, WareHourseSerializer, MIOListSerializer, MIOItemSerializer, MioItemAnaSerializer,
|
||||||
MIODoSerializer, MIOSaleSerializer, MIOPurSerializer, MIOOtherSerializer, MIOItemCreateSerializer,
|
MIODoSerializer, MIOSaleSerializer, MIOPurSerializer, MIOOtherSerializer, MIOItemCreateSerializer,
|
||||||
MaterialBatchDetailSerializer, MIODetailSerializer, MIOItemTestSerializer, MIOItemPurInTestSerializer,
|
MaterialBatchDetailSerializer, MIODetailSerializer, MIOItemTestSerializer, MIOItemPurInTestSerializer,
|
||||||
MIOItemwSerializer)
|
MIOItemwSerializer, MioItemDetailSerializer)
|
||||||
from apps.inm.serializers2 import MIOItemwCreateUpdateSerializer
|
from apps.inm.serializers2 import MIOItemwCreateUpdateSerializer
|
||||||
from apps.utils.viewsets import CustomGenericViewSet, CustomModelViewSet
|
from apps.utils.viewsets import CustomGenericViewSet, CustomModelViewSet
|
||||||
from apps.inm.services import InmService
|
from apps.inm.services import InmService
|
||||||
|
@ -25,6 +25,8 @@ from apps.utils.permission import has_perm
|
||||||
from .filters import MaterialBatchFilter, MioFilter
|
from .filters import MaterialBatchFilter, MioFilter
|
||||||
from apps.qm.serializers import FtestProcessSerializer
|
from apps.qm.serializers import FtestProcessSerializer
|
||||||
from apps.mtm.models import Material
|
from apps.mtm.models import Material
|
||||||
|
from drf_yasg.utils import swagger_auto_schema
|
||||||
|
from drf_yasg import openapi
|
||||||
|
|
||||||
|
|
||||||
# Create your views here.
|
# Create your views here.
|
||||||
|
@ -243,6 +245,7 @@ class MIOItemViewSet(CustomListModelMixin, BulkCreateModelMixin, BulkDestroyMode
|
||||||
perms_map = {'get': '*', 'post': '*', 'delete': '*'}
|
perms_map = {'get': '*', 'post': '*', 'delete': '*'}
|
||||||
queryset = MIOItem.objects.all()
|
queryset = MIOItem.objects.all()
|
||||||
serializer_class = MIOItemSerializer
|
serializer_class = MIOItemSerializer
|
||||||
|
retrieve_serializer_class = MioItemDetailSerializer
|
||||||
create_serializer_class = MIOItemCreateSerializer
|
create_serializer_class = MIOItemCreateSerializer
|
||||||
select_related_fields = ['warehouse', 'mio', 'material', 'test_user']
|
select_related_fields = ['warehouse', 'mio', 'material', 'test_user']
|
||||||
filterset_fields = {
|
filterset_fields = {
|
||||||
|
@ -258,9 +261,28 @@ class MIOItemViewSet(CustomListModelMixin, BulkCreateModelMixin, BulkDestroyMode
|
||||||
ordering_fields = ['create_time', 'test_date']
|
ordering_fields = ['create_time', 'test_date']
|
||||||
|
|
||||||
def add_info_for_list(self, data):
|
def add_info_for_list(self, data):
|
||||||
|
with_mio = self.request.query_params.get('with_mio', "no")
|
||||||
|
if with_mio == "yes" and isinstance(data, list):
|
||||||
|
mio_ids = [item['mio'] for item in data]
|
||||||
|
mio_qs = MIO.objects.filter(id__in=mio_ids)
|
||||||
|
mio_qs_= MIOListSerializer(mio_qs, many=True).data
|
||||||
|
mio_dict = {mio['id']: mio for mio in mio_qs_}
|
||||||
|
for item in data:
|
||||||
|
mioId = item['mio']
|
||||||
|
item['mio_'] = mio_dict[mioId]
|
||||||
return data
|
return data
|
||||||
|
|
||||||
|
@swagger_auto_schema(manual_parameters=[
|
||||||
|
openapi.Parameter(name="with_mio", in_=openapi.IN_QUERY, description="是否返回出入库记录信息",
|
||||||
|
type=openapi.TYPE_STRING, required=False),
|
||||||
|
openapi.Parameter(name="query", in_=openapi.IN_QUERY, description="定制返回数据",
|
||||||
|
type=openapi.TYPE_STRING, required=False),
|
||||||
|
openapi.Parameter(name="with_children", in_=openapi.IN_QUERY, description="带有children(yes/no/count)",
|
||||||
|
type=openapi.TYPE_STRING, required=False)
|
||||||
|
])
|
||||||
|
def list(self, request, *args, **kwargs):
|
||||||
|
return super().list(request, *args, **kwargs)
|
||||||
|
|
||||||
def perform_destroy(self, instance):
|
def perform_destroy(self, instance):
|
||||||
if instance.mio.state != MIO.MIO_CREATE:
|
if instance.mio.state != MIO.MIO_CREATE:
|
||||||
raise ParseError('出入库记录非创建中不可删除')
|
raise ParseError('出入库记录非创建中不可删除')
|
||||||
|
|
Loading…
Reference in New Issue