feat: 获取相关任务的第一道工序日志

This commit is contained in:
caoqianming 2023-10-23 10:30:49 +08:00
parent ebd9c96300
commit 53b38d7cc4
2 changed files with 24 additions and 16 deletions

View File

@ -78,6 +78,10 @@ class WMaterialSerializer(CustomModelSerializer):
class MlogSerializer(CustomModelSerializer):
mgroup_name = serializers.CharField(
source='mtask.mgroup.name', read_only=True)
mtask_count = serializers.IntegerField(
source='mtask.count', read_only=True)
create_by_name = serializers.CharField(
source='create_by.name', read_only=True)
update_by_name = serializers.CharField(
@ -116,3 +120,8 @@ class MlogSerializer(CustomModelSerializer):
if mtask.state != Mtask.MTASK_ASSGINED:
raise ValidationError(f'{mtask.mgroup.name}_不可提交日志!')
return attrs
class MlogRelatedSerializer(serializers.Serializer):
mtask = serializers.PrimaryKeyRelatedField(
label='小任务ID', queryset=Mtask.objects.all())

View File

@ -12,7 +12,7 @@ from apps.utils.mixins import BulkCreateModelMixin
from .filters import SfLogExpFilter, SfLogFilter
from .models import SfLog, SfLogExp, StLog, WMaterial, Mlog
from .serializers import SflogExpSerializer, SfLogSerializer, StLogSerializer, WMaterialSerializer, MlogSerializer
from .serializers import SflogExpSerializer, SfLogSerializer, StLogSerializer, WMaterialSerializer, MlogSerializer, MlogRelatedSerializer
# Create your views here.
@ -114,29 +114,28 @@ class MlogViewSet(CustomModelViewSet):
raise ParseError('任务已提交日志不可变动')
return super().perform_destroy(instance)
@action(methods=['post'], detail=False, perms_map={'post': '*'}, serializer_class=MtaskDaySerializer)
@action(methods=['post'], detail=False, perms_map={'post': '*'}, serializer_class=MlogRelatedSerializer)
@transaction.atomic
def day(self, request):
"""获取指定车间指定日期的第一道工序日志
def related_first(self, request):
"""获取相关任务的第一道工序日志
获取指定车间指定日期的第一道工序日志
获取相关任务的第一道工序日志
"""
sr = MtaskDaySerializer(data=request.data)
sr = MlogRelatedSerializer(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
mtask = vdata['mtask']
if mtask.utask:
mtasks = mtask.related
mlogs = Mlog.objects.filter(mtask__in=mtasks).order_by(
'mtask__mgroup__process__sort', 'batch', 'create_time')
data = MlogSerializer(instance=mlogs, many=True).data
res_data = []
len_data = len(data)
for ind, val in enumerate(data):
if val['utask'] is None:
if ind == 0:
res_data.append(val)
elif ind > 1:
else:
before = data[ind-1]
if val['utask'] != before['utask']:
res_data.append(before)
elif ind == len_data - 1:
if val['batch'] != before['batch']:
res_data.append(val)
return Response(res_data)