feat: 获取指定车间指定日期的最后工序生产任务

This commit is contained in:
caoqianming 2023-10-20 16:55:20 +08:00
parent 0843cf6ce3
commit a69fa79de8
4 changed files with 35 additions and 2 deletions

View File

@ -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):

View File

@ -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='日期')

View File

@ -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):

View File

@ -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