feat: utask添加优先级字段

This commit is contained in:
caoqianming 2025-06-11 11:32:07 +08:00
parent 0719ef8f42
commit b3000b013f
5 changed files with 27 additions and 5 deletions

View File

@ -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"],

View File

@ -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='优先级'),
),
]

View File

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

View File

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

View File

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