feat: 获取指定车间指定日期的最后工序生产任务
This commit is contained in:
parent
0843cf6ce3
commit
a69fa79de8
|
@ -43,6 +43,7 @@ class MtaskFilter(filters.FilterSet):
|
|||
"material_out__type": ["exact"],
|
||||
"material_out__is_hidden": ["exact"],
|
||||
"mgroup__belong_dept__name": ["exact"],
|
||||
"utask": ["exact"]
|
||||
}
|
||||
|
||||
def filter_tag(self, queryset, name, value):
|
||||
|
|
|
@ -47,3 +47,8 @@ class SchedueSerializer(serializers.Serializer):
|
|||
label='orderitem的ID列表', queryset=OrderItem.objects.all(), many=True)
|
||||
start_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 .models import Mtask, Utask
|
||||
from .serializers import MtaskSerializer, SchedueSerializer, UtaskSerializer
|
||||
from .serializers import MtaskSerializer, SchedueSerializer, UtaskSerializer, MtaskDaySerializer
|
||||
from .services import PmService
|
||||
|
||||
# Create your views here.
|
||||
|
@ -92,6 +92,33 @@ class MtaskViewSet(CustomModelViewSet):
|
|||
ordering_fields = ['start_date', 'mgroup__process__sort']
|
||||
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)
|
||||
# @transaction.atomic
|
||||
# def schedue_from_orderitems(self, request, *args, **kwargs):
|
||||
|
|
|
@ -110,5 +110,5 @@ class MlogSerializer(CustomModelSerializer):
|
|||
else:
|
||||
raise ValidationError('操作日期错误')
|
||||
if mtask.state != Mtask.MTASK_ASSGINED:
|
||||
raise ValidationError('该任务状态不可提交日志!')
|
||||
raise ValidationError(f'{mtask.mgroup.name}_不可提交日志!')
|
||||
return attrs
|
||||
|
|
Loading…
Reference in New Issue