From 6713693c6ccf2f2abe51c137b958e6397df88f42 Mon Sep 17 00:00:00 2001 From: zty Date: Sat, 11 Oct 2025 11:32:05 +0800 Subject: [PATCH 1/7] =?UTF-8?q?feat:=20ofm-models=20-pulicity=20=E4=BF=AE?= =?UTF-8?q?=E6=94=B9=E5=AD=97=E6=AE=B5=E5=B1=9E=E6=80=A7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ofm/migrations/0019_auto_20251011_1128.py | 28 +++++++++++++++++++ apps/ofm/models.py | 6 ++-- 2 files changed, 31 insertions(+), 3 deletions(-) create mode 100644 apps/ofm/migrations/0019_auto_20251011_1128.py diff --git a/apps/ofm/migrations/0019_auto_20251011_1128.py b/apps/ofm/migrations/0019_auto_20251011_1128.py new file mode 100644 index 00000000..2bc69c66 --- /dev/null +++ b/apps/ofm/migrations/0019_auto_20251011_1128.py @@ -0,0 +1,28 @@ +# Generated by Django 3.2.12 on 2025-10-11 03:28 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('ofm', '0018_auto_20251011_0922'), + ] + + operations = [ + migrations.AlterField( + model_name='publicity', + name='dept_opinion', + field=models.JSONField(default=list, help_text=['同意', '不同意'], verbose_name='部门负责人意见'), + ), + migrations.AlterField( + model_name='publicity', + name='publicity_opinion', + field=models.JSONField(blank=True, default=list, help_text=['同意公开宣传报道', '不同意任何渠道的宣传报道'], verbose_name='宣传统战部审查意见'), + ), + migrations.AlterField( + model_name='publicity', + name='review', + field=models.JSONField(blank=True, default=list, help_text=['内容不涉及国家秘密和商业秘密,申请公开', '内容涉及国家秘密,申请按涉密渠道发布'], verbose_name='第一撰稿人自审'), + ), + ] diff --git a/apps/ofm/models.py b/apps/ofm/models.py index 91d71d49..2f28ca32 100644 --- a/apps/ofm/models.py +++ b/apps/ofm/models.py @@ -137,11 +137,11 @@ class Publicity(CommonBDModel): channel = models.JSONField('发布渠道', default=list, help_text=['互联网', '信息平台', '官微', '公开发行物', '其它']) other_channel = models.CharField('其它渠道', max_length=50, blank=True, null=True) report_name = models.CharField('报道名称', max_length=50, blank=True, null=True) - review = models.JSONField('第一撰稿人自审', default=list, help_text=['内容不涉及国家秘密和商业秘密,申请公开', '内容涉及国家秘密,申请按涉密渠道发布'], null=True, blank=True) - dept_opinion = models.JSONField('部门负责人意见', default=list, help_text=['同意', '不同意'], null=True, blank=True) + review = models.JSONField('第一撰稿人自审', default=list, help_text=['内容不涉及国家秘密和商业秘密,申请公开', '内容涉及国家秘密,申请按涉密渠道发布'], blank=True) + dept_opinion = models.JSONField('部门负责人意见', default=list, help_text=['同意', '不同意']) secret_period = models.CharField('秘密期限', max_length=50, blank=True, null=True) dept_opinion_review = models.CharField('部门审查意见', max_length=100, blank=True, null=True) - publicity_opinion = models.JSONField('宣传统战部审查意见', default=list, help_text=['同意公开宣传报道', '不同意任何渠道的宣传报道'], null=True, blank=True) + publicity_opinion = models.JSONField('宣传统战部审查意见', default=list, help_text=['同意公开宣传报道', '不同意任何渠道的宣传报道'], blank=True) ticket = models.ForeignKey('wf.ticket', verbose_name='关联工单', on_delete=models.SET_NULL, related_name='publicity_ticket', null=True, blank=True, db_constraint=False) From 8fe2b8ca483b6806ce7ae4e64b0c46901d98634c Mon Sep 17 00:00:00 2001 From: zty Date: Sat, 11 Oct 2025 14:28:09 +0800 Subject: [PATCH 2/7] =?UTF-8?q?feat:=20ofm-models=20=E4=BF=AE=E6=94=B9?= =?UTF-8?q?=E5=AD=97=E6=AE=B5=E5=B1=9E=E6=80=A7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ofm/migrations/0020_auto_20251011_1427.py | 28 +++++++++++++++++++ apps/ofm/models.py | 6 ++-- 2 files changed, 31 insertions(+), 3 deletions(-) create mode 100644 apps/ofm/migrations/0020_auto_20251011_1427.py diff --git a/apps/ofm/migrations/0020_auto_20251011_1427.py b/apps/ofm/migrations/0020_auto_20251011_1427.py new file mode 100644 index 00000000..24954f8a --- /dev/null +++ b/apps/ofm/migrations/0020_auto_20251011_1427.py @@ -0,0 +1,28 @@ +# Generated by Django 3.2.12 on 2025-10-11 06:27 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('ofm', '0019_auto_20251011_1128'), + ] + + operations = [ + migrations.AlterField( + model_name='publicity', + name='dept_opinion', + field=models.JSONField(blank=True, default=list, help_text=['同意', '不同意'], null=True, verbose_name='部门负责人意见'), + ), + migrations.AlterField( + model_name='publicity', + name='publicity_opinion', + field=models.JSONField(blank=True, default=list, help_text=['同意公开宣传报道', '不同意任何渠道的宣传报道'], null=True, verbose_name='宣传统战部审查意见'), + ), + migrations.AlterField( + model_name='publicity', + name='review', + field=models.JSONField(blank=True, default=list, help_text=['内容不涉及国家秘密和商业秘密,申请公开', '内容涉及国家秘密,申请按涉密渠道发布'], null=True, verbose_name='第一撰稿人自审'), + ), + ] diff --git a/apps/ofm/models.py b/apps/ofm/models.py index 2f28ca32..d50037c2 100644 --- a/apps/ofm/models.py +++ b/apps/ofm/models.py @@ -137,11 +137,11 @@ class Publicity(CommonBDModel): channel = models.JSONField('发布渠道', default=list, help_text=['互联网', '信息平台', '官微', '公开发行物', '其它']) other_channel = models.CharField('其它渠道', max_length=50, blank=True, null=True) report_name = models.CharField('报道名称', max_length=50, blank=True, null=True) - review = models.JSONField('第一撰稿人自审', default=list, help_text=['内容不涉及国家秘密和商业秘密,申请公开', '内容涉及国家秘密,申请按涉密渠道发布'], blank=True) - dept_opinion = models.JSONField('部门负责人意见', default=list, help_text=['同意', '不同意']) + review = models.JSONField('第一撰稿人自审', default=list, help_text=['内容不涉及国家秘密和商业秘密,申请公开', '内容涉及国家秘密,申请按涉密渠道发布'], null=True,blank=True) + dept_opinion = models.JSONField('部门负责人意见', default=list, help_text=['同意', '不同意'], null=True, blank=True) secret_period = models.CharField('秘密期限', max_length=50, blank=True, null=True) dept_opinion_review = models.CharField('部门审查意见', max_length=100, blank=True, null=True) - publicity_opinion = models.JSONField('宣传统战部审查意见', default=list, help_text=['同意公开宣传报道', '不同意任何渠道的宣传报道'], blank=True) + publicity_opinion = models.JSONField('宣传统战部审查意见', default=list, help_text=['同意公开宣传报道', '不同意任何渠道的宣传报道'], null=True, blank=True) ticket = models.ForeignKey('wf.ticket', verbose_name='关联工单', on_delete=models.SET_NULL, related_name='publicity_ticket', null=True, blank=True, db_constraint=False) From 67f9cbb7004d7962a3c693c832e654f0c5ae85cf Mon Sep 17 00:00:00 2001 From: zty Date: Mon, 13 Oct 2025 09:01:44 +0800 Subject: [PATCH 3/7] feat: ofm--Alter field publicity_opinion on publicity --- .../0021_alter_publicity_publicity_opinion.py | 18 ++++++++++++++++++ apps/ofm/models.py | 2 +- 2 files changed, 19 insertions(+), 1 deletion(-) create mode 100644 apps/ofm/migrations/0021_alter_publicity_publicity_opinion.py diff --git a/apps/ofm/migrations/0021_alter_publicity_publicity_opinion.py b/apps/ofm/migrations/0021_alter_publicity_publicity_opinion.py new file mode 100644 index 00000000..86dae1b4 --- /dev/null +++ b/apps/ofm/migrations/0021_alter_publicity_publicity_opinion.py @@ -0,0 +1,18 @@ +# Generated by Django 3.2.12 on 2025-10-13 01:01 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('ofm', '0020_auto_20251011_1427'), + ] + + operations = [ + migrations.AlterField( + model_name='publicity', + name='publicity_opinion', + field=models.CharField(blank=True, max_length=100, null=True, verbose_name='宣传报道意见'), + ), + ] diff --git a/apps/ofm/models.py b/apps/ofm/models.py index d50037c2..2814e9a6 100644 --- a/apps/ofm/models.py +++ b/apps/ofm/models.py @@ -141,7 +141,7 @@ class Publicity(CommonBDModel): dept_opinion = models.JSONField('部门负责人意见', default=list, help_text=['同意', '不同意'], null=True, blank=True) secret_period = models.CharField('秘密期限', max_length=50, blank=True, null=True) dept_opinion_review = models.CharField('部门审查意见', max_length=100, blank=True, null=True) - publicity_opinion = models.JSONField('宣传统战部审查意见', default=list, help_text=['同意公开宣传报道', '不同意任何渠道的宣传报道'], null=True, blank=True) + publicity_opinion = models.CharField('宣传报道意见', max_length=100, blank=True, null=True) ticket = models.ForeignKey('wf.ticket', verbose_name='关联工单', on_delete=models.SET_NULL, related_name='publicity_ticket', null=True, blank=True, db_constraint=False) From 9f030ece6de7b4b93e0b82f8d688d355f40827a2 Mon Sep 17 00:00:00 2001 From: zty Date: Mon, 13 Oct 2025 13:50:04 +0800 Subject: [PATCH 4/7] =?UTF-8?q?feat:=20ofm-service-pulicity=20=E5=8F=8D?= =?UTF-8?q?=E5=AD=98ticket=5Fdata=20=E5=88=B0=20obj?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/ofm/services.py | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/apps/ofm/services.py b/apps/ofm/services.py index 0cfad707..25f68687 100644 --- a/apps/ofm/services.py +++ b/apps/ofm/services.py @@ -90,4 +90,17 @@ def bind_publicity(ticket: Ticket, transition, new_ticket_data: dict): ticket.save() if ins.ticket is None: ins.ticket = ticket - ins.save() \ No newline at end of file + ins.save() + + +def save_ticket_data(ticket: Ticket, new_ticket_data: dict): + try: + obj = Publicity.objects.get(id=new_ticket_data['t_id']) + except Publicity.DoesNotExist: + raise ParseError("Publicity t_id 不存在") + data_save = {k: v for k, v in new_ticket_data.items() if k not in ['t_model', 't_id']} + + for k, v in data_save.items(): + setattr(obj, k, v) + obj.save() + \ No newline at end of file From 7d87c79dd16d470d6aeb49a8caac41aefc117d81 Mon Sep 17 00:00:00 2001 From: zty Date: Mon, 13 Oct 2025 14:04:40 +0800 Subject: [PATCH 5/7] =?UTF-8?q?feat:=20ofm-service-pulicity=20=E5=8F=8D?= =?UTF-8?q?=E5=AD=98ticket=5Fdata=20=E5=88=B0=20obj?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/ofm/services.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/ofm/services.py b/apps/ofm/services.py index 25f68687..7e95286c 100644 --- a/apps/ofm/services.py +++ b/apps/ofm/services.py @@ -93,7 +93,7 @@ def bind_publicity(ticket: Ticket, transition, new_ticket_data: dict): ins.save() -def save_ticket_data(ticket: Ticket, new_ticket_data: dict): +def save_ticket_data(ticket: Ticket, new_ticket_data: dict, **kwargs): try: obj = Publicity.objects.get(id=new_ticket_data['t_id']) except Publicity.DoesNotExist: From b93024ca44544033f852130bd0a24c9e5d6b22dc Mon Sep 17 00:00:00 2001 From: zty Date: Mon, 13 Oct 2025 14:18:03 +0800 Subject: [PATCH 6/7] =?UTF-8?q?fix=20:=20ofm-models-publicity=20=E4=BF=AE?= =?UTF-8?q?=E6=94=B9=E8=AE=B0=E5=BD=95=E7=BC=96=E5=8F=B7=E8=87=AA=E5=8A=A8?= =?UTF-8?q?=E7=94=9F=E6=88=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/ofm/models.py | 23 ++++++++++------------- 1 file changed, 10 insertions(+), 13 deletions(-) diff --git a/apps/ofm/models.py b/apps/ofm/models.py index 2814e9a6..f22a132e 100644 --- a/apps/ofm/models.py +++ b/apps/ofm/models.py @@ -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) From e06cc8c38ed696d4bb9f6cadc5ec49f9db58f860 Mon Sep 17 00:00:00 2001 From: zty Date: Mon, 13 Oct 2025 14:26:40 +0800 Subject: [PATCH 7/7] =?UTF-8?q?fix=20:=20ofm-models-publicity=20=E4=BF=AE?= =?UTF-8?q?=E6=94=B9=E8=AE=B0=E5=BD=95=E7=BC=96=E5=8F=B7=E8=87=AA=E5=8A=A8?= =?UTF-8?q?=E7=94=9F=E6=88=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/ofm/models.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/apps/ofm/models.py b/apps/ofm/models.py index f22a132e..6fc1d986 100644 --- a/apps/ofm/models.py +++ b/apps/ofm/models.py @@ -148,7 +148,7 @@ class Publicity(CommonBDModel): # 记录编号自动生成 def save(self, *args, **kwargs): if not self.number: - last_number = self.__class__.objects.filter(number__startswith=f"(GXKG-{datetime.now().year}-)").order_by('-id').first() + last_number = self.__class__.objects.filter(number__startswith=f"GXKG-{datetime.now().year}-").order_by('-number').first() if last_number: try: last_num = int(last_number.number.split('-')[-1]) @@ -157,7 +157,7 @@ class Publicity(CommonBDModel): else: last_num =0 # 格式化编号,带补零 - self.number = f"(GXKG-{datetime.now().year}-{last_num+1:02d})" + self.number = f"GXKG-{datetime.now().year}-{last_num+1:02d}" super().save(*args, **kwargs)