From 9a7230d75290d490f59dacfddddb93f592d5b65b Mon Sep 17 00:00:00 2001 From: caoqianming Date: Wed, 12 Mar 2025 09:35:24 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E8=87=AA=E5=8A=A8=E7=94=9F=E6=88=90?= =?UTF-8?q?=E4=BB=BB=E5=8A=A1=E7=BC=96=E5=8F=B7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/pm/models.py | 14 ++++++++++++++ apps/pm/serializers.py | 8 ++++++-- 2 files changed, 20 insertions(+), 2 deletions(-) diff --git a/apps/pm/models.py b/apps/pm/models.py index 82f1d699..975597b4 100644 --- a/apps/pm/models.py +++ b/apps/pm/models.py @@ -1,6 +1,8 @@ from django.db import models from apps.utils.models import CommonADModel, CommonBDModel, BaseModel from apps.mtm.models import Material, Mgroup, RoutePack, Route +from datetime import datetime +from django.db.models import Max # Create your models here. @@ -52,6 +54,18 @@ class Utask(CommonBDModel): start_date = models.DateField('计划开工日期') end_date = models.DateField('计划完工日期') + @classmethod + def get_a_number(cls): + today_str = datetime.now().strftime('%Y%m%d') + prefix = "RW" + last_record = Utask.objects.filter(number__startswith=f"{prefix}-{today_str}") \ + .aggregate(Max('number'))['number__max'] + if last_record: + last_number = int(last_record.split('-')[-1]) + 1 + else: + last_number = 1 + return f"{prefix}-{today_str}-{last_number:02d}" + class Mtask(CommonADModel): """ diff --git a/apps/pm/serializers.py b/apps/pm/serializers.py index 5bea0059..0eb28dfa 100644 --- a/apps/pm/serializers.py +++ b/apps/pm/serializers.py @@ -24,7 +24,12 @@ class UtaskSerializer(CustomModelSerializer): class Meta: model = Utask fields = '__all__' + read_only_fields = ["number"] + def create(self, validated_data): + validated_data["number"] = Utask.get_a_number() + return super().create(validated_data) + def validate(self, attrs): end_date = attrs['end_date'] start_date = attrs['start_date'] @@ -42,8 +47,7 @@ class UtaskSerializer(CustomModelSerializer): def update(self, instance, validated_data): if instance.state != Utask.UTASK_CREATED: raise ValidationError('任务非创建中不可编辑') - new_data = {key: validated_data[key] for key in [ - 'number', 'count', 'start_date', 'end_date']} + new_data = {key: validated_data[key] for key in ['count', 'start_date', 'end_date']} return super().update(instance, new_data)