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