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) 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: 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"] 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}_日期'] = []