From b3000b013fc4d2162100506786b5bb35c6f54cf1 Mon Sep 17 00:00:00 2001 From: caoqianming Date: Wed, 11 Jun 2025 11:32:07 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20utask=E6=B7=BB=E5=8A=A0=E4=BC=98?= =?UTF-8?q?=E5=85=88=E7=BA=A7=E5=AD=97=E6=AE=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/pm/filters.py | 2 +- apps/pm/migrations/0022_utask_priority.py | 18 ++++++++++++++++++ apps/pm/models.py | 1 + apps/pm/serializers.py | 4 +++- apps/pm/views.py | 7 ++++--- 5 files changed, 27 insertions(+), 5 deletions(-) create mode 100644 apps/pm/migrations/0022_utask_priority.py diff --git a/apps/pm/filters.py b/apps/pm/filters.py index 29e96d01..3e19565b 100644 --- a/apps/pm/filters.py +++ b/apps/pm/filters.py @@ -50,7 +50,7 @@ class MtaskFilter(filters.FilterSet): "is_count_utask": ["exact"], "start_date": ["exact", "gte", "lte"], "end_date": ["exact", "gte", "lte"], - "mgroup": ["exact"], + "mgroup": ["exact", "in"], "mgroup__name": ["exact"], "mgroup__cate": ["exact"], "mgroup__process": ["exact"], diff --git a/apps/pm/migrations/0022_utask_priority.py b/apps/pm/migrations/0022_utask_priority.py new file mode 100644 index 00000000..02828d56 --- /dev/null +++ b/apps/pm/migrations/0022_utask_priority.py @@ -0,0 +1,18 @@ +# Generated by Django 3.2.12 on 2025-06-11 03:15 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('pm', '0021_auto_20250317_1040'), + ] + + operations = [ + migrations.AddField( + model_name='utask', + name='priority', + field=models.PositiveIntegerField(default=20, help_text='10:低;20:中;30:高', verbose_name='优先级'), + ), + ] diff --git a/apps/pm/models.py b/apps/pm/models.py index 59e4a1fa..b8b2994c 100644 --- a/apps/pm/models.py +++ b/apps/pm/models.py @@ -37,6 +37,7 @@ class Utask(CommonBDModel): type = models.CharField('任务类型', max_length=10, help_text=str(TASK_TYPE), default='mass') routepack = models.ForeignKey(RoutePack, verbose_name='关联工艺包', on_delete=models.SET_NULL, null=True, blank=True) + priority = models.PositiveIntegerField('优先级', default=20, help_text="10:低;20:中;30:高") state = models.PositiveIntegerField( '状态', choices=UTASK_STATES, default=UTASK_CREATED, help_text=str(UTASK_STATES)) number = models.CharField('编号', max_length=50, unique=True) diff --git a/apps/pm/serializers.py b/apps/pm/serializers.py index fb0b9b68..667bf56c 100644 --- a/apps/pm/serializers.py +++ b/apps/pm/serializers.py @@ -27,7 +27,8 @@ class UtaskSerializer(CustomModelSerializer): model = Utask fields = '__all__' extra_kwargs = { - 'number': {"required": False, "allow_blank": True} + 'number': {"required": False, "allow_blank": True}, + "priority": {"required": False, "allow_null": True}, } @transaction.atomic @@ -52,6 +53,7 @@ class UtaskSerializer(CustomModelSerializer): attrs['count_day'] = math.ceil(attrs['count']/rela_days) except Exception: raise ParseError('日均任务数计划失败') + attrs["priority"] = attrs.get("priority", 20) return attrs def update(self, instance, validated_data): diff --git a/apps/pm/views.py b/apps/pm/views.py index 2c76fce5..c13f2aa9 100644 --- a/apps/pm/views.py +++ b/apps/pm/views.py @@ -29,7 +29,8 @@ class UtaskViewSet(CustomModelViewSet): serializer_class = UtaskSerializer filterset_class = UtaskFilter select_related_fields = ['material'] - ordering = ['-start_date'] + ordering_fields = ['priority', 'start_date'] + ordering = ["priority", '-start_date'] def perform_destroy(self, instance): if instance.state >= Utask.UTASK_WORKING: @@ -143,8 +144,8 @@ class MtaskViewSet(CustomModelViewSet): filterset_class = MtaskFilter select_related_fields = ['material_in', 'material_out', 'mgroup'] prefetch_related_fields = ['mlog_mtask', 'b_mtask'] - ordering_fields = ['start_date', 'mgroup__process__sort', 'create_time'] - ordering = ['-start_date', 'route__sort', 'mgroup__process__sort', '-create_time'] + ordering_fields = ["utask__priority", 'start_date', 'mgroup__process__sort', 'create_time'] + ordering = ["utask__priority", '-start_date', 'route__sort', 'mgroup__process__sort', '-create_time'] @action(methods=['post'], detail=False, perms_map={'post': '*'}, serializer_class=MtaskDaySerializer) @transaction.atomic