feat: 一些统计分析接口可用bi替代
This commit is contained in:
parent
a591abab8a
commit
2ae8913b25
|
@ -234,3 +234,9 @@ class MIOItemTestSerializer(CustomModelSerializer):
|
|||
model = MIOItem
|
||||
fields = ['id', 'test_date', 'test_user', 'count_notok', 'count_n_zw', 'count_n_tw',
|
||||
'count_n_qp', 'count_n_wq', 'count_n_dl', 'count_n_pb', 'count_n_dxt', 'count_n_jsqx', 'count_n_qt']
|
||||
|
||||
|
||||
class MioItemAnaSerializer(serializers.Serializer):
|
||||
start_date = serializers.DateField(label='开始日期', required=True)
|
||||
end_date = serializers.DateField(label='结束日期', required=True)
|
||||
material_cate = serializers.CharField(label='物料系列', required=True)
|
||||
|
|
|
@ -6,10 +6,11 @@ from django.db import transaction
|
|||
from rest_framework import serializers
|
||||
from django.utils import timezone
|
||||
from rest_framework.response import Response
|
||||
from django.db.models import Sum
|
||||
|
||||
from apps.inm.models import WareHouse, MaterialBatch, MIO, MIOItem
|
||||
from apps.inm.serializers import (
|
||||
MaterialBatchSerializer, WareHourseSerializer, MIOListSerializer, MIOItemSerializer,
|
||||
MaterialBatchSerializer, WareHourseSerializer, MIOListSerializer, MIOItemSerializer, MioItemAnaSerializer,
|
||||
MIODoSerializer, MIOSaleSerializer, MIOPurSerializer, MIOOtherSerializer, MIOItemCreateSerializer, MaterialBatchDetailSerializer, MIODetailSerializer, MIOItemTestSerializer)
|
||||
from apps.utils.viewsets import CustomGenericViewSet, CustomModelViewSet
|
||||
from apps.inm.services import InmService
|
||||
|
@ -223,3 +224,28 @@ class MIOItemViewSet(ListModelMixin, BulkCreateModelMixin, BulkDestroyModelMixin
|
|||
mb.count = count_new
|
||||
mb.save()
|
||||
return Response()
|
||||
|
||||
@action(methods=['post'], detail=False, perms_map={'post': '*'}, serializer_class=MioItemAnaSerializer)
|
||||
def sale_out_ana(self, request, *args, **kwargs):
|
||||
"""交付统计数据
|
||||
|
||||
交付统计数据
|
||||
"""
|
||||
sr = MIOItemTestSerializer(data=request.data)
|
||||
sr.is_valid(raise_exception=True)
|
||||
vdata = sr.validated_data
|
||||
mioitems = MIOItem.objects.filter(
|
||||
mio__type='sale_out', mio__state=MIO.MIO_SUBMITED)
|
||||
if vdata.get('material_cate'):
|
||||
mioitems = mioitems.filter(
|
||||
material__cate=vdata['material_cate'])
|
||||
if vdata.get('start_date', ''):
|
||||
mioitems = mioitems.filter(
|
||||
mio__inout_date__gte=vdata['start_date'])
|
||||
if vdata.get('end_date', ''):
|
||||
mioitems = mioitems.filter(mio__inout_date__lte=vdata['end_date'])
|
||||
res = mioitems.aggregate(count=Sum('count'))
|
||||
for i in res:
|
||||
if res[i] is None:
|
||||
res[i] = 0
|
||||
return Response(res)
|
||||
|
|
|
@ -244,3 +244,10 @@ class GenHandoverWmSerializer(serializers.Serializer):
|
|||
if attrs['count'] <= 1:
|
||||
raise ValidationError('交送数量必须大于1')
|
||||
return attrs
|
||||
|
||||
|
||||
class MlogAnaSerializer(serializers.Serializer):
|
||||
belong_dept_name = serializers.CharField(label='车间名', required=False)
|
||||
start_date = serializers.DateField(label='开始日期', required=True)
|
||||
end_date = serializers.DateField(label='结束日期', required=True)
|
||||
material_cate = serializers.CharField(label='物料系列', required=False)
|
||||
|
|
|
@ -6,6 +6,7 @@ from rest_framework.exceptions import ParseError
|
|||
from rest_framework.mixins import DestroyModelMixin, ListModelMixin, UpdateModelMixin
|
||||
from rest_framework.response import Response
|
||||
from rest_framework.serializers import Serializer
|
||||
from django.db.models import Sum
|
||||
|
||||
from apps.mtm.models import Material
|
||||
from apps.pm.models import Mtask
|
||||
|
@ -15,7 +16,8 @@ from apps.utils.mixins import BulkCreateModelMixin
|
|||
from .filters import SfLogExpFilter, SfLogFilter, WMaterialFilter, MlogFilter, HandoverFilter
|
||||
from .models import SfLog, SfLogExp, StLog, WMaterial, Mlog, Handover, Mlogb
|
||||
from .serializers import (SflogExpSerializer, SfLogSerializer, StLogSerializer, WMaterialSerializer,
|
||||
MlogSerializer, MlogRelatedSerializer, DeptBatchSerializer, HandoverSerializer, GenHandoverSerializer, GenHandoverWmSerializer)
|
||||
MlogSerializer, MlogRelatedSerializer, DeptBatchSerializer, HandoverSerializer,
|
||||
GenHandoverSerializer, GenHandoverWmSerializer, MlogAnaSerializer)
|
||||
from .services import mlog_submit, update_mtask, handover_submit
|
||||
# Create your views here.
|
||||
|
||||
|
@ -173,6 +175,44 @@ class MlogViewSet(CustomModelViewSet):
|
|||
res_data.append(val)
|
||||
return Response(res_data)
|
||||
|
||||
@action(methods=['post'], detail=False, perms_map={'post': '*'}, serializer_class=MlogAnaSerializer)
|
||||
def ana(self, request):
|
||||
"""核心统计数据
|
||||
|
||||
核心统计数据
|
||||
"""
|
||||
sr = MlogAnaSerializer(data=request.data)
|
||||
sr.is_valid(raise_exception=True)
|
||||
vdata = sr.validated_data
|
||||
mlogs = Mlog.objects.exclude(submit_time=None)
|
||||
if vdata.get('belong_dept_name', ''):
|
||||
mlogs = mlogs.filter(
|
||||
mgroup__belong_dept__name=vdata['belong_dept_name'])
|
||||
if vdata.get('material_cate', ''):
|
||||
mlogs = mlogs.filter(
|
||||
material_out__cate=vdata['material_cate'])
|
||||
if vdata.get('start_date', ''):
|
||||
mlogs = mlogs.filter(handle_date__gte=vdata['start_date'])
|
||||
if vdata.get('end_date', ''):
|
||||
mlogs = mlogs.filter(handle_date__lte=vdata['end_date'])
|
||||
res = mlogs.aggregate(
|
||||
count_real=Sum('count_real'),
|
||||
count_ok=Sum('count_ok'),
|
||||
count_notok=Sum('count_notok'),
|
||||
count_n_zw=Sum('count_n_zw'),
|
||||
count_n_tw=Sum('count_n_tw'),
|
||||
count_n_qp=Sum('count_n_qp'),
|
||||
count_n_wq=Sum('count_n_wq'),
|
||||
count_n_dl=Sum('count_n_dl'),
|
||||
count_n_pb=Sum('count_n_pb'),
|
||||
count_n_dxt=Sum('count_n_dxt'),
|
||||
count_n_jsqx=Sum('count_n_jsqx'),
|
||||
count_n_qt=Sum('count_n_qt'))
|
||||
for i in res:
|
||||
if res[i] is None:
|
||||
res[i] = 0
|
||||
return Response(res)
|
||||
|
||||
|
||||
class HandoverViewSet(CustomModelViewSet):
|
||||
"""
|
||||
|
|
Loading…
Reference in New Issue