feat: mioitem返回mio数据
This commit is contained in:
parent
741b64142b
commit
3b04bdf067
|
@ -109,7 +109,7 @@ class MIOItemCreateSerializer(CustomModelSerializer):
|
|||
class Meta:
|
||||
model = MIOItem
|
||||
fields = ['mio', 'warehouse', 'material',
|
||||
'batch', 'count', 'assemb', 'is_testok', 'mioitemw', 'mb', 'wm']
|
||||
'batch', 'count', 'assemb', 'is_testok', 'mioitemw', 'mb', 'wm', 'unit_price']
|
||||
extra_kwargs = {
|
||||
'mio': {'required': True}, 'warehouse': {'required': False},
|
||||
'material': {'required': False}, 'batch': {'required': False}}
|
||||
|
@ -207,8 +207,7 @@ class MIOItemAListSerializer(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)
|
||||
assemb = MIOItemAListSerializer(
|
||||
source='a_mioitem', read_only=True, many=True)
|
||||
|
@ -222,6 +221,15 @@ class MIOItemSerializer(CustomModelSerializer):
|
|||
model = MIOItem
|
||||
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):
|
||||
|
|
|
@ -14,7 +14,7 @@ from apps.inm.serializers import (
|
|||
MaterialBatchSerializer, WareHourseSerializer, MIOListSerializer, MIOItemSerializer, MioItemAnaSerializer,
|
||||
MIODoSerializer, MIOSaleSerializer, MIOPurSerializer, MIOOtherSerializer, MIOItemCreateSerializer,
|
||||
MaterialBatchDetailSerializer, MIODetailSerializer, MIOItemTestSerializer, MIOItemPurInTestSerializer,
|
||||
MIOItemwSerializer)
|
||||
MIOItemwSerializer, MioItemDetailSerializer)
|
||||
from apps.inm.serializers2 import MIOItemwCreateUpdateSerializer
|
||||
from apps.utils.viewsets import CustomGenericViewSet, CustomModelViewSet
|
||||
from apps.inm.services import InmService
|
||||
|
@ -25,6 +25,8 @@ from apps.utils.permission import has_perm
|
|||
from .filters import MaterialBatchFilter, MioFilter
|
||||
from apps.qm.serializers import FtestProcessSerializer
|
||||
from apps.mtm.models import Material
|
||||
from drf_yasg.utils import swagger_auto_schema
|
||||
from drf_yasg import openapi
|
||||
|
||||
|
||||
# Create your views here.
|
||||
|
@ -243,6 +245,7 @@ class MIOItemViewSet(CustomListModelMixin, BulkCreateModelMixin, BulkDestroyMode
|
|||
perms_map = {'get': '*', 'post': '*', 'delete': '*'}
|
||||
queryset = MIOItem.objects.all()
|
||||
serializer_class = MIOItemSerializer
|
||||
retrieve_serializer_class = MioItemDetailSerializer
|
||||
create_serializer_class = MIOItemCreateSerializer
|
||||
select_related_fields = ['warehouse', 'mio', 'material', 'test_user']
|
||||
filterset_fields = {
|
||||
|
@ -258,9 +261,28 @@ class MIOItemViewSet(CustomListModelMixin, BulkCreateModelMixin, BulkDestroyMode
|
|||
ordering_fields = ['create_time', 'test_date']
|
||||
|
||||
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
|
||||
|
||||
@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):
|
||||
if instance.mio.state != MIO.MIO_CREATE:
|
||||
raise ParseError('出入库记录非创建中不可删除')
|
||||
|
|
Loading…
Reference in New Issue