fix : ofm-models-publicity 修改记录编号自动生成
This commit is contained in:
parent
7d87c79dd1
commit
b93024ca44
|
@ -148,19 +148,16 @@ class Publicity(CommonBDModel):
|
|||
# 记录编号自动生成
|
||||
def save(self, *args, **kwargs):
|
||||
if not self.number:
|
||||
with transaction.atomic():
|
||||
# 加行锁,防止并发取到相同 last_number
|
||||
last_number = self.__class__.objects.select_for_update(skip_locked=True).order_by('-id').first() # skip_locked 锁定行,避免并发冲突
|
||||
if last_number:
|
||||
try:
|
||||
last_num = int(last_number.number.split('-')[-1])
|
||||
except ValueError:
|
||||
last_num = 0
|
||||
new_num= last_num + 1
|
||||
else:
|
||||
new_num = 1
|
||||
# 格式化编号,带补零
|
||||
self.number = f"(GXKG-{datetime.now().year}-{new_num:02d})"
|
||||
last_number = self.__class__.objects.filter(number__startswith=f"(GXKG-{datetime.now().year}-)").order_by('-id').first()
|
||||
if last_number:
|
||||
try:
|
||||
last_num = int(last_number.number.split('-')[-1])
|
||||
except ValueError:
|
||||
last_num = 0
|
||||
else:
|
||||
last_num =0
|
||||
# 格式化编号,带补零
|
||||
self.number = f"(GXKG-{datetime.now().year}-{last_num+1:02d})"
|
||||
super().save(*args, **kwargs)
|
||||
|
||||
|
||||
|
|
Loading…
Reference in New Issue