feat: 自动生成任务编号
This commit is contained in:
parent
5a05710ff2
commit
9a7230d752
|
@ -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):
|
||||
"""
|
||||
|
|
|
@ -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)
|
||||
|
||||
|
||||
|
|
Loading…
Reference in New Issue