From 4bf80699bdaae8e56ac0d3a0ceb7bc24cc946f8a Mon Sep 17 00:00:00 2001 From: caoqianming Date: Mon, 5 Jun 2023 15:39:18 +0800 Subject: [PATCH 1/9] =?UTF-8?q?fix:=20pgoal=20dept=20update=20=E6=97=B6?= =?UTF-8?q?=E4=B9=9F=E8=BF=9B=E8=A1=8C=E8=AE=A1=E7=AE=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- server/apps/supervision/views.py | 1 + 1 file changed, 1 insertion(+) diff --git a/server/apps/supervision/views.py b/server/apps/supervision/views.py index 5f14ffa..bb6365e 100644 --- a/server/apps/supervision/views.py +++ b/server/apps/supervision/views.py @@ -598,6 +598,7 @@ class PgoalDeptViewSet(Domixin, CreateUpdateCustomMixin, ModelViewSet): goal_file = instance.goal_file if goal_file: instance.goal_files.add(goal_file) + self.countup_task2do(instance.task2do) class ImpMixin: def get_enum(self, val, atuple, ind): From a07d0c034dfc2fc26dba28888c81396073271515 Mon Sep 17 00:00:00 2001 From: caoqianming Date: Mon, 5 Jun 2023 15:44:55 +0800 Subject: [PATCH 2/9] =?UTF-8?q?feat:=20=E5=8E=BB=E9=99=A4goal=5Fo=5Ffile?= =?UTF-8?q?=20=E6=97=A0=E7=94=A8=E5=AD=97=E6=AE=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../migrations/0048_auto_20230605_1543.py | 22 +++++++++++++++++++ server/apps/supervision/models.py | 1 - 2 files changed, 22 insertions(+), 1 deletion(-) create mode 100644 server/apps/supervision/migrations/0048_auto_20230605_1543.py diff --git a/server/apps/supervision/migrations/0048_auto_20230605_1543.py b/server/apps/supervision/migrations/0048_auto_20230605_1543.py new file mode 100644 index 0000000..f1e97b7 --- /dev/null +++ b/server/apps/supervision/migrations/0048_auto_20230605_1543.py @@ -0,0 +1,22 @@ +# Generated by Django 3.2.12 on 2023-06-05 07:43 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('supervision', '0047_auto_20230531_1629'), + ] + + operations = [ + migrations.RemoveField( + model_name='pgoaldept', + name='goal_o_file', + ), + migrations.AlterField( + model_name='task2do', + name='count_all', + field=models.PositiveSmallIntegerField(default=9, verbose_name='需上报内容数'), + ), + ] diff --git a/server/apps/supervision/models.py b/server/apps/supervision/models.py index 6ce7664..19cf116 100644 --- a/server/apps/supervision/models.py +++ b/server/apps/supervision/models.py @@ -191,7 +191,6 @@ class PgoalDept(CommonBDModel): goal_name = models.CharField('目标名称', max_length=100) goal_key = models.CharField('目标key值', max_length=100, default='other', blank=True) goal_value_a = models.FloatField('基础值', null=True, blank=True) - goal_o_file = models.ForeignKey(File, related_name='goal_o_file', verbose_name='原文件ID', on_delete=models.SET_NULL, null=True, blank=True) goal_value_b = models.FloatField('设定值', null=True, blank=True) goal_value_c = models.FloatField('实际值', null=True, blank=True) goal_file = models.ForeignKey(File, related_name='goal_file', verbose_name='当前文件ID', on_delete=models.SET_NULL, null=True, blank=True) From c86e0a77e9bd1e4fe67daef7e4212cd4c5cfccf1 Mon Sep 17 00:00:00 2001 From: caoqianming Date: Mon, 5 Jun 2023 17:00:39 +0800 Subject: [PATCH 3/9] =?UTF-8?q?feat:=20=E5=8E=BB=E9=99=A4goal=5Fo=5Ffile?= =?UTF-8?q?=20=E6=97=A0=E7=94=A8=E5=AD=97=E6=AE=B52?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- server/apps/supervision/serializers.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/server/apps/supervision/serializers.py b/server/apps/supervision/serializers.py index 28a35dc..7b52d39 100644 --- a/server/apps/supervision/serializers.py +++ b/server/apps/supervision/serializers.py @@ -145,10 +145,9 @@ class BaseMeta: class PgoalDeptSerializer(serializers.ModelSerializer): goal_file_ = FileSimpleSerializer(source='goal_file', read_only=True) - goal_o_file_ = FileSimpleSerializer(source='goal_o_file', read_only=True) class Meta(BaseMeta): model = PgoalDept - read_only_fields = BaseMeta.read_only_fields + ['goal_value_a', 'goal_value_c', 'goal_files', 'goal_key', 'goal_file_', 'goal_o_file', 'goal_o_file_'] + read_only_fields = BaseMeta.read_only_fields + ['goal_value_a', 'goal_value_c', 'goal_files', 'goal_key', 'goal_file_'] def validate(self, attrs): task2do = attrs.get('task2do', None) From 7ce6fecb35fa35838292ea1aff77647759a25c42 Mon Sep 17 00:00:00 2001 From: caoqianming Date: Mon, 5 Jun 2023 17:03:33 +0800 Subject: [PATCH 4/9] =?UTF-8?q?feat:=20task2=E5=A2=9E=E5=8A=A0=E6=88=AA?= =?UTF-8?q?=E6=AD=A2=E6=97=A5=E6=9C=9F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../migrations/0049_task2_end_time.py | 18 ++++++++++++++++++ server/apps/supervision/models.py | 1 + 2 files changed, 19 insertions(+) create mode 100644 server/apps/supervision/migrations/0049_task2_end_time.py diff --git a/server/apps/supervision/migrations/0049_task2_end_time.py b/server/apps/supervision/migrations/0049_task2_end_time.py new file mode 100644 index 0000000..0b85633 --- /dev/null +++ b/server/apps/supervision/migrations/0049_task2_end_time.py @@ -0,0 +1,18 @@ +# Generated by Django 3.2.12 on 2023-06-05 09:02 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('supervision', '0048_auto_20230605_1543'), + ] + + operations = [ + migrations.AddField( + model_name='task2', + name='end_time', + field=models.DateField(blank=True, null=True, verbose_name='截至日期'), + ), + ] diff --git a/server/apps/supervision/models.py b/server/apps/supervision/models.py index 19cf116..77cbe35 100644 --- a/server/apps/supervision/models.py +++ b/server/apps/supervision/models.py @@ -158,6 +158,7 @@ class Task2(CommonADModel): year = models.PositiveSmallIntegerField('年份', default=2023) cycle = models.PositiveSmallIntegerField('所属周期', default=0, help_text='1-6个周期', blank=True) + end_time = models.DateField('截至日期', null=True, blank=True) type = models.PositiveSmallIntegerField('任务类型', choices=TASK2_TYPES, default=20) state = models.PositiveSmallIntegerField('任务状态', choices=TASK2_STATES, default=10) depts = models.ManyToManyField(Organization, verbose_name='执行公司', through='supervision.task2do', blank=True) From ea5f4c0a29d21d6767c2feeb84449891b593cb16 Mon Sep 17 00:00:00 2001 From: caoqianming Date: Tue, 6 Jun 2023 10:44:06 +0800 Subject: [PATCH 5/9] =?UTF-8?q?fix:=20=E4=BF=AE=E6=94=B9=E5=AD=97=E6=AE=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../0050_rename_end_time_task2_end_date.py | 18 ++++++++++++++++++ server/apps/supervision/models.py | 2 +- 2 files changed, 19 insertions(+), 1 deletion(-) create mode 100644 server/apps/supervision/migrations/0050_rename_end_time_task2_end_date.py diff --git a/server/apps/supervision/migrations/0050_rename_end_time_task2_end_date.py b/server/apps/supervision/migrations/0050_rename_end_time_task2_end_date.py new file mode 100644 index 0000000..97e7bea --- /dev/null +++ b/server/apps/supervision/migrations/0050_rename_end_time_task2_end_date.py @@ -0,0 +1,18 @@ +# Generated by Django 3.2.12 on 2023-06-06 02:43 + +from django.db import migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ('supervision', '0049_task2_end_time'), + ] + + operations = [ + migrations.RenameField( + model_name='task2', + old_name='end_time', + new_name='end_date', + ), + ] diff --git a/server/apps/supervision/models.py b/server/apps/supervision/models.py index 77cbe35..5ef2227 100644 --- a/server/apps/supervision/models.py +++ b/server/apps/supervision/models.py @@ -158,7 +158,7 @@ class Task2(CommonADModel): year = models.PositiveSmallIntegerField('年份', default=2023) cycle = models.PositiveSmallIntegerField('所属周期', default=0, help_text='1-6个周期', blank=True) - end_time = models.DateField('截至日期', null=True, blank=True) + end_date = models.DateField('截至日期', null=True, blank=True) type = models.PositiveSmallIntegerField('任务类型', choices=TASK2_TYPES, default=20) state = models.PositiveSmallIntegerField('任务状态', choices=TASK2_STATES, default=10) depts = models.ManyToManyField(Organization, verbose_name='执行公司', through='supervision.task2do', blank=True) From 55d172588af62a4fef6973b395e85cef7ec74046 Mon Sep 17 00:00:00 2001 From: caoqianming Date: Tue, 6 Jun 2023 14:27:40 +0800 Subject: [PATCH 6/9] fix: task2 start bug --- server/apps/supervision/views.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/server/apps/supervision/views.py b/server/apps/supervision/views.py index bb6365e..2567bad 100644 --- a/server/apps/supervision/views.py +++ b/server/apps/supervision/views.py @@ -455,10 +455,10 @@ class Task2ViewSet(CreateUpdateCustomMixin, ModelViewSet): for key in Pgoal.basedict: pds = PgoalDept.objects.filter(task2do=i, goal_key=key) if pds.exists(): - pds.update(**{'goal_name': Pgoal.basedict[key], 'goal_value_a': getattr(pg, key), 'goal_o_file': getattr(pg, key+'_file')}) + pds.update(**{'goal_name': Pgoal.basedict[key], 'goal_value_a': getattr(pg, key)}) else: PgoalDept.objects.create(**{'year': i.task2.year, 'task2do': i, 'belong_dept': i.belong_dept, - 'goal_name': Pgoal.basedict[key], 'goal_key': key, 'goal_value_a': getattr(pg, key), 'goal_o_file': getattr(pg, key+'_file')}) + 'goal_name': Pgoal.basedict[key], 'goal_key': key, 'goal_value_a': getattr(pg, key)}) obj.state = Task2.TASK2_DOING obj.save() return Response() From 9ff19a004fe45f709e86037a3c4ad0cd54526e9b Mon Sep 17 00:00:00 2001 From: caoqianming Date: Tue, 6 Jun 2023 14:43:42 +0800 Subject: [PATCH 7/9] =?UTF-8?q?fix:=20task2=E5=B7=B2=E5=85=B3=E9=97=AD?= =?UTF-8?q?=E4=B8=8D=E5=8F=AF=E7=BC=96=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- server/apps/supervision/serializers.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/server/apps/supervision/serializers.py b/server/apps/supervision/serializers.py index 7b52d39..6d39118 100644 --- a/server/apps/supervision/serializers.py +++ b/server/apps/supervision/serializers.py @@ -113,8 +113,8 @@ class Task2Serializer(serializers.ModelSerializer): def update(self, instance, validated_data): validated_data.pop('type', None) # type不可编辑 - if instance.state != Task2.TASK2_CLOSE: - raise ParseError('非创建状态不可编辑') + if instance.state == Task2.TASK2_CLOSE: + raise ParseError('已关闭不可编辑') return super().update(instance, validated_data) class Task2DeptsSerializer(serializers.Serializer): From ea0ce8f752514a611fa7f77a53403f4ff827219d Mon Sep 17 00:00:00 2001 From: caoqianming Date: Tue, 6 Jun 2023 14:46:39 +0800 Subject: [PATCH 8/9] =?UTF-8?q?feat:=20goal=5Ffiles=5F=20=E8=BF=94?= =?UTF-8?q?=E5=9B=9E=E8=AF=A6=E7=BB=86=E4=BF=A1=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- server/apps/supervision/serializers.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/server/apps/supervision/serializers.py b/server/apps/supervision/serializers.py index 6d39118..44e5e11 100644 --- a/server/apps/supervision/serializers.py +++ b/server/apps/supervision/serializers.py @@ -145,9 +145,10 @@ class BaseMeta: class PgoalDeptSerializer(serializers.ModelSerializer): goal_file_ = FileSimpleSerializer(source='goal_file', read_only=True) + goal_files = FileSimpleSerializer(source='goal_files', many=True, read_only=True) class Meta(BaseMeta): model = PgoalDept - read_only_fields = BaseMeta.read_only_fields + ['goal_value_a', 'goal_value_c', 'goal_files', 'goal_key', 'goal_file_'] + read_only_fields = BaseMeta.read_only_fields + ['goal_value_a', 'goal_value_c', 'goal_files', 'goal_key', 'goal_file_', 'goal_files_'] def validate(self, attrs): task2do = attrs.get('task2do', None) From 154886e2e70314cd8e84d00864dac8f5131c7d03 Mon Sep 17 00:00:00 2001 From: caoqianming Date: Tue, 6 Jun 2023 14:52:45 +0800 Subject: [PATCH 9/9] fix: pgoal_file bug --- server/apps/supervision/serializers.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/server/apps/supervision/serializers.py b/server/apps/supervision/serializers.py index 44e5e11..87f3319 100644 --- a/server/apps/supervision/serializers.py +++ b/server/apps/supervision/serializers.py @@ -145,7 +145,7 @@ class BaseMeta: class PgoalDeptSerializer(serializers.ModelSerializer): goal_file_ = FileSimpleSerializer(source='goal_file', read_only=True) - goal_files = FileSimpleSerializer(source='goal_files', many=True, read_only=True) + goal_files_ = FileSimpleSerializer(source='goal_files', many=True, read_only=True) class Meta(BaseMeta): model = PgoalDept read_only_fields = BaseMeta.read_only_fields + ['goal_value_a', 'goal_value_c', 'goal_files', 'goal_key', 'goal_file_', 'goal_files_']