feat: 自动生成任务编号

This commit is contained in:
caoqianming 2025-03-12 09:35:24 +08:00
parent 5a05710ff2
commit 9a7230d752
2 changed files with 20 additions and 2 deletions

View File

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

View File

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