feat: 获取指定车间指定日期的最后工序生产任务
This commit is contained in:
parent
0843cf6ce3
commit
a69fa79de8
|
@ -43,6 +43,7 @@ class MtaskFilter(filters.FilterSet):
|
||||||
"material_out__type": ["exact"],
|
"material_out__type": ["exact"],
|
||||||
"material_out__is_hidden": ["exact"],
|
"material_out__is_hidden": ["exact"],
|
||||||
"mgroup__belong_dept__name": ["exact"],
|
"mgroup__belong_dept__name": ["exact"],
|
||||||
|
"utask": ["exact"]
|
||||||
}
|
}
|
||||||
|
|
||||||
def filter_tag(self, queryset, name, value):
|
def filter_tag(self, queryset, name, value):
|
||||||
|
|
|
@ -47,3 +47,8 @@ class SchedueSerializer(serializers.Serializer):
|
||||||
label='orderitem的ID列表', queryset=OrderItem.objects.all(), many=True)
|
label='orderitem的ID列表', queryset=OrderItem.objects.all(), many=True)
|
||||||
start_date = serializers.DateField(label='计划开工日期')
|
start_date = serializers.DateField(label='计划开工日期')
|
||||||
end_date = serializers.DateField(label='计划完工日期')
|
end_date = serializers.DateField(label='计划完工日期')
|
||||||
|
|
||||||
|
|
||||||
|
class MtaskDaySerializer(serializers.Serializer):
|
||||||
|
belong_dept_name = serializers.CharField(label='车间名称')
|
||||||
|
date = serializers.DateField(label='日期')
|
||||||
|
|
|
@ -9,7 +9,7 @@ from apps.utils.viewsets import CustomModelViewSet
|
||||||
|
|
||||||
from .filters import MtaskFilter, UtaskFilter
|
from .filters import MtaskFilter, UtaskFilter
|
||||||
from .models import Mtask, Utask
|
from .models import Mtask, Utask
|
||||||
from .serializers import MtaskSerializer, SchedueSerializer, UtaskSerializer
|
from .serializers import MtaskSerializer, SchedueSerializer, UtaskSerializer, MtaskDaySerializer
|
||||||
from .services import PmService
|
from .services import PmService
|
||||||
|
|
||||||
# Create your views here.
|
# Create your views here.
|
||||||
|
@ -92,6 +92,33 @@ class MtaskViewSet(CustomModelViewSet):
|
||||||
ordering_fields = ['start_date', 'mgroup__process__sort']
|
ordering_fields = ['start_date', 'mgroup__process__sort']
|
||||||
ordering = ['-start_date', 'mgroup__process__sort', '-create_time']
|
ordering = ['-start_date', 'mgroup__process__sort', '-create_time']
|
||||||
|
|
||||||
|
@action(methods=['post'], detail=False, perms_map={'post': '*'}, serializer_class=MtaskDaySerializer)
|
||||||
|
@transaction.atomic
|
||||||
|
def day(self, request):
|
||||||
|
"""获取指定车间指定日期的最后工序生产任务
|
||||||
|
|
||||||
|
获取指定车间指定日期的最后工序生产任务
|
||||||
|
"""
|
||||||
|
sr = MtaskDaySerializer(data=request.data)
|
||||||
|
sr.is_valid(raise_exception=True)
|
||||||
|
vdata = sr.validated_data
|
||||||
|
mtasks = Mtask.objects.filter(mgroup__belong_dept__name=vdata['belong_dept_name'], start_date__lte=vdata['date'], end_date__gte=vdata['date']).order_by(
|
||||||
|
'utask', 'mgroup__process__sort', 'create_time'
|
||||||
|
)
|
||||||
|
data = MtaskSerializer(instance=mtasks, many=True).data
|
||||||
|
res_data = []
|
||||||
|
len_data = len(data)
|
||||||
|
for ind, val in enumerate(data):
|
||||||
|
if val['utask'] is None:
|
||||||
|
res_data.append(val)
|
||||||
|
elif ind > 1:
|
||||||
|
before = data[ind-1]
|
||||||
|
if val['utask'] != before['utask']:
|
||||||
|
res_data.append(before)
|
||||||
|
elif ind == len_data - 1:
|
||||||
|
res_data.append(val)
|
||||||
|
return Response(res_data)
|
||||||
|
|
||||||
# @action(methods=['post'], detail=False, perms_map={'post': 'mtask.schedue'}, serializer_class=SchedueSerializer)
|
# @action(methods=['post'], detail=False, perms_map={'post': 'mtask.schedue'}, serializer_class=SchedueSerializer)
|
||||||
# @transaction.atomic
|
# @transaction.atomic
|
||||||
# def schedue_from_orderitems(self, request, *args, **kwargs):
|
# def schedue_from_orderitems(self, request, *args, **kwargs):
|
||||||
|
|
|
@ -110,5 +110,5 @@ class MlogSerializer(CustomModelSerializer):
|
||||||
else:
|
else:
|
||||||
raise ValidationError('操作日期错误')
|
raise ValidationError('操作日期错误')
|
||||||
if mtask.state != Mtask.MTASK_ASSGINED:
|
if mtask.state != Mtask.MTASK_ASSGINED:
|
||||||
raise ValidationError('该任务状态不可提交日志!')
|
raise ValidationError(f'{mtask.mgroup.name}_不可提交日志!')
|
||||||
return attrs
|
return attrs
|
||||||
|
|
Loading…
Reference in New Issue