From ac41f5a105f6ef9797d869bdf3d9a0160835fc7c Mon Sep 17 00:00:00 2001 From: caoqianming Date: Tue, 11 Feb 2025 14:40:38 +0800 Subject: [PATCH 1/4] =?UTF-8?q?fix:=20=E7=B2=97=E4=B8=AD=E7=BB=86=E7=A3=A8?= =?UTF-8?q?=E7=9A=84=E7=BB=9F=E8=AE=A1=E8=A6=81=E6=B6=B5=E7=9B=96=E7=B2=97?= =?UTF-8?q?=E7=A3=A8=E5=92=8C=E7=B2=97=E4=B8=AD=E7=A3=A8=E7=9A=84=E6=95=B0?= =?UTF-8?q?=E6=8D=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/wpm/services_2.py | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/apps/wpm/services_2.py b/apps/wpm/services_2.py index 8d9e3c75..6795f089 100644 --- a/apps/wpm/services_2.py +++ b/apps/wpm/services_2.py @@ -230,8 +230,11 @@ def get_alldata_with_batch(batch: str): # 六车间工段生产数据 mgroup_list = ["平头", "粘铁头", "粗中细磨", "抛光", "开槽"] for mgroup_name in mgroup_list: - mgroup = Mgroup.objects.get(name=mgroup_name) - mlogs_qs = Mlog.objects.filter(submit_time__isnull=False, mgroup=mgroup, batch=batch) + if mgroup_name == '粗中细磨': + mgroups = Mgroup.objects.filter(name__in=['粗磨', '粗中磨', '粗中细磨']) + else: + mgroups = Mgroup.objects.filter(name=mgroup_name) + mlogs_qs = Mlog.objects.filter(submit_time__isnull=False, mgroup__in=mgroups, batch=batch) if mlogs_qs.exists(): last_time = item.update_time if item.update_time > last_time else last_time data[f'六车间_{mgroup_name}_日期'] = [] From a88f7e282e0cc5729e024097c2d4d0c429218adc Mon Sep 17 00:00:00 2001 From: caoqianming Date: Tue, 11 Feb 2025 14:53:26 +0800 Subject: [PATCH 2/4] =?UTF-8?q?feat:=20Ptest=E4=B8=8D=E6=8C=87=E5=AE=9Ates?= =?UTF-8?q?titem?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../migrations/0042_alter_ptest_testitem.py | 19 +++++++++++++++++++ apps/qm/models.py | 2 +- 2 files changed, 20 insertions(+), 1 deletion(-) create mode 100644 apps/qm/migrations/0042_alter_ptest_testitem.py diff --git a/apps/qm/migrations/0042_alter_ptest_testitem.py b/apps/qm/migrations/0042_alter_ptest_testitem.py new file mode 100644 index 00000000..05b02f71 --- /dev/null +++ b/apps/qm/migrations/0042_alter_ptest_testitem.py @@ -0,0 +1,19 @@ +# Generated by Django 3.2.12 on 2025-02-11 06:49 + +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + ('qm', '0041_auto_20250122_1347'), + ] + + operations = [ + migrations.AlterField( + model_name='ptest', + name='testitem', + field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='qm.testitem', verbose_name='测试项目'), + ), + ] diff --git a/apps/qm/models.py b/apps/qm/models.py index 5d2db1a5..1286e22a 100644 --- a/apps/qm/models.py +++ b/apps/qm/models.py @@ -351,7 +351,7 @@ class Ptest(CommonAModel): test_user = models.ForeignKey( User, verbose_name='检验员', on_delete=models.CASCADE) testitem = models.ForeignKey( - TestItem, verbose_name='测试项目', on_delete=models.CASCADE) + TestItem, verbose_name='测试项目', on_delete=models.CASCADE, null=True, blank=True) sample_number = models.CharField('样品编号', max_length=20) sample_count = models.PositiveIntegerField('样品数量', null=True, blank=True) sample_density = models.FloatField('样品密度', null=True, blank=True) From 861bb03469bb85e58176f7ed65ab8af6a8bf6c55 Mon Sep 17 00:00:00 2001 From: caoqianming Date: Wed, 12 Feb 2025 15:10:00 +0800 Subject: [PATCH 3/4] =?UTF-8?q?feat:=20wpmw=E6=B7=BB=E5=8A=A0=E5=AD=97?= =?UTF-8?q?=E6=AE=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../wpm/migrations/0087_auto_20250212_1158.py | 30 +++++++++++++++++++ apps/wpm/models.py | 3 ++ apps/wpm/serializers.py | 2 +- 3 files changed, 34 insertions(+), 1 deletion(-) create mode 100644 apps/wpm/migrations/0087_auto_20250212_1158.py diff --git a/apps/wpm/migrations/0087_auto_20250212_1158.py b/apps/wpm/migrations/0087_auto_20250212_1158.py new file mode 100644 index 00000000..2135a783 --- /dev/null +++ b/apps/wpm/migrations/0087_auto_20250212_1158.py @@ -0,0 +1,30 @@ +# Generated by Django 3.2.12 on 2025-02-12 03:58 + +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + ('em', '0021_auto_20241203_1531'), + ('wpm', '0086_alter_handover_type'), + ] + + operations = [ + migrations.AddField( + model_name='mlogbw', + name='equip', + field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='em.equipment', verbose_name='设备'), + ), + migrations.AddField( + model_name='mlogbw', + name='work_end_time', + field=models.DateTimeField(blank=True, null=True, verbose_name='结束加工时间'), + ), + migrations.AddField( + model_name='mlogbw', + name='work_start_time', + field=models.DateTimeField(blank=True, null=True, verbose_name='开始加工时间'), + ), + ] diff --git a/apps/wpm/models.py b/apps/wpm/models.py index 5ab07b1c..b0299d9f 100644 --- a/apps/wpm/models.py +++ b/apps/wpm/models.py @@ -355,6 +355,9 @@ class Mlogbw(BaseModel): mlogb = models.ForeignKey(Mlogb, verbose_name='生产记录', on_delete=models.CASCADE) wpr = models.ForeignKey("wpmw.wpr", verbose_name='关联产品', on_delete=models.SET_NULL , related_name='wpr_mlogbw', null=True, blank=True) + equip = models.ForeignKey(Equipment, verbose_name='设备', on_delete=models.SET_NULL, null=True, blank=True) + work_start_time = models.DateTimeField('开始加工时间', null=True, blank=True) + work_end_time = models.DateTimeField('结束加工时间', null=True, blank=True) ftest = models.OneToOneField("qm.ftest", verbose_name='关联检验', on_delete=models.PROTECT, null=True, blank=True, related_name="mlogbw_ftest") note = models.TextField('备注', null=True, blank=True) diff --git a/apps/wpm/serializers.py b/apps/wpm/serializers.py index eb55ea03..4fa5dc0a 100644 --- a/apps/wpm/serializers.py +++ b/apps/wpm/serializers.py @@ -580,7 +580,7 @@ class MlogbwCreateUpdateSerializer(CustomModelSerializer): ftest = FtestProcessSerializer(required=False) class Meta: model = Mlogbw - fields = ["id", "number", "wpr", "note", "mlogb", "ftest"] + fields = ["id", "number", "wpr", "note", "mlogb", "ftest", "equip", "work_start_time", "work_end_time"] def validate(self, attrs): mlogb:Mlogb = attrs["mlogb"] From 9d27ccd1dc1b9b55afc1ae9557e0bfcf8c50c46e Mon Sep 17 00:00:00 2001 From: caoqianming Date: Wed, 12 Feb 2025 15:10:20 +0800 Subject: [PATCH 4/4] =?UTF-8?q?fix:=20base=20get=5Fuser=5Froute=20?= =?UTF-8?q?=E8=B7=AF=E7=94=B1=E9=87=8D=E5=A4=8D=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/utils/permission.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/utils/permission.py b/apps/utils/permission.py index bf4a9781..57272a6e 100755 --- a/apps/utils/permission.py +++ b/apps/utils/permission.py @@ -35,7 +35,7 @@ def get_user_route(user: User) -> List[str]: user_routes_qs = perm_qs else: user_routes_qs = perm_qs.filter(role_perms__in=PostRole.objects.filter( - post__in=UserPost.objects.filter(user=user).values_list("post", flat=True)).values_list("role", flat=True)) + post__in=UserPost.objects.filter(user=user).values_list("post", flat=True)).values_list("role", flat=True)).distinct() user_routes_qs = user_routes_qs.order_by('sort') user_routes_list = list(user_routes_qs.values("id", "name", "type", "route_name", "icon", "path", "component", "is_hidden", "is_fullpage", "parent")) for item in user_routes_list: