From a1c74a0fa643b392c4c4751827407ceafeed2f23 Mon Sep 17 00:00:00 2001 From: caoqianming Date: Mon, 23 Oct 2023 09:02:37 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E5=A2=9E=E5=8A=A0=E5=A4=9A=E4=B8=AA?= =?UTF-8?q?=E5=8F=8B=E5=A5=BD=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/pm/models.py | 12 ++++++++++++ apps/pm/views.py | 34 ++++++++++++++-------------------- 2 files changed, 26 insertions(+), 20 deletions(-) diff --git a/apps/pm/models.py b/apps/pm/models.py index 1b8785cf..d73b5f50 100644 --- a/apps/pm/models.py +++ b/apps/pm/models.py @@ -63,3 +63,15 @@ class Mtask(CommonADModel): end_date = models.DateField('计划完工日期') utask = models.ForeignKey( Utask, verbose_name='关联大任务', on_delete=models.CASCADE, null=True, blank=True, related_name='mtask_utask') + + @property + def related(self): + """ + 当天已下达的所有的兄弟小任务 + """ + if self.utask: + return Mtask.objects.filter( + utask=self.utask, mgroup__belong_dept=self.mgroup.belong_dept, start_date=self.start_date, end_date=self.start_date, state=self.MTASK_ASSGINED).order_by( + 'utask', 'mgroup__process__sort', 'create_time' + ) + return Mtask.objects.none() diff --git a/apps/pm/views.py b/apps/pm/views.py index 9659b2fc..f5bdc311 100644 --- a/apps/pm/views.py +++ b/apps/pm/views.py @@ -119,26 +119,23 @@ class MtaskViewSet(CustomModelViewSet): 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): - # """从多个订单明细自动排产 + @action(methods=['get'], detail=True, perms_map={'get': '*'}) + @transaction.atomic + def related(self, request, *args, **kwargs): + """获取已下达的所有的兄弟小任务 - # 从多个订单明细自动排产 - # """ - # sr = SchedueSerializer(data=request.data) - # sr.is_valid(raise_exception=True) - # vdata = sr.validated_data - # PmService.schedue_from_orderitems(request.user, - # request.data['orderitems'], vdata['start_date'], vdata.get('end_date', None)) - # return Response() + 获取已下达的所有的兄弟小任务 + """ + obj = self.get_object() + rdata = MtaskSerializer(instance=obj.related, many=True).data + return Response(rdata) def perform_destroy(self, instance): if instance.state != Mtask.MTASK_CREATED: raise ParseError('该任务非创建中不可删除') return super().perform_destroy(instance) - @action(methods=['post'], detail=True, perms_map={'post': 'mtask.submit'}, serializer_class=PkSerializer) + @action(methods=['post'], detail=False, perms_map={'post': 'mtask.submit'}, serializer_class=PkSerializer) @transaction.atomic def submit(self, request): """提交任务(根据任务ID) @@ -154,14 +151,11 @@ class MtaskViewSet(CustomModelViewSet): @action(methods=['post'], detail=True, perms_map={'post': 'mtask.submit'}, serializer_class=Serializer) @transaction.atomic def submit_related_same_day(self, request): - """提交同一天该部门下的所有兄弟小任务 + """提交同一天该部门下大任务的所有兄弟小任务 - 提交同一天的该部门下的所有兄弟小任务 + 提交同一天的该部门下大任务的所有兄弟小任务 """ mtask = self.get_object() - utask = mtask.utask - if utask: - mtasks = Mtask.objects.filter(utask=utask, belong_dept=mtask.belong_dept, - start_date=mtask.start_date, end_date=mtask.end_date, state=Mtask.MTASK_ASSGINED) - PmService.mtasks_submit(mtasks) + mtasks = mtask.related + PmService.mtasks_submit(mtasks) return Response()