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 django.db import models
from apps.utils.models import CommonADModel, CommonBDModel, BaseModel from apps.utils.models import CommonADModel, CommonBDModel, BaseModel
from apps.mtm.models import Material, Mgroup, RoutePack, Route from apps.mtm.models import Material, Mgroup, RoutePack, Route
from datetime import datetime
from django.db.models import Max
# Create your models here. # Create your models here.
@ -52,6 +54,18 @@ class Utask(CommonBDModel):
start_date = models.DateField('计划开工日期') start_date = models.DateField('计划开工日期')
end_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): class Mtask(CommonADModel):
""" """

View File

@ -24,7 +24,12 @@ class UtaskSerializer(CustomModelSerializer):
class Meta: class Meta:
model = Utask model = Utask
fields = '__all__' 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): def validate(self, attrs):
end_date = attrs['end_date'] end_date = attrs['end_date']
start_date = attrs['start_date'] start_date = attrs['start_date']
@ -42,8 +47,7 @@ class UtaskSerializer(CustomModelSerializer):
def update(self, instance, validated_data): def update(self, instance, validated_data):
if instance.state != Utask.UTASK_CREATED: if instance.state != Utask.UTASK_CREATED:
raise ValidationError('任务非创建中不可编辑') raise ValidationError('任务非创建中不可编辑')
new_data = {key: validated_data[key] for key in [ new_data = {key: validated_data[key] for key in ['count', 'start_date', 'end_date']}
'number', 'count', 'start_date', 'end_date']}
return super().update(instance, new_data) return super().update(instance, new_data)