flower_bs 1 day ago
parent
commit
2d38e168c1

+ 1 - 0
bigscreen/vue-big-screen-plugin

@@ -0,0 +1 @@
+Subproject commit dd15a9c045d21fe8a27233831df5bf1f1ecb0ac2

File diff suppressed because it is too large
+ 22 - 1
container/models.py


+ 1 - 0
container/serializers.py

@@ -27,6 +27,7 @@ class batchLogModelSerializer(serializers.ModelSerializer):
    
     
 class WCSTaskGetSerializer(serializers.ModelSerializer):
+    batch_code = serializers.CharField(source='batch.bound_number', read_only=True)
     class Meta:
         # 指定模型和排除字段
         model = ContainerWCSModel

+ 10 - 1
reportcenter/filter.py

@@ -1,8 +1,17 @@
 from django_filters import FilterSet
-from .models import flowModel
+from .models import flowModel,bigScreenModel
 from django_filters import rest_framework as filters
 
 from container.models import MaterialChangeHistory,batchLogModel,ContainerDetailLogModel
+
+class bigScreenFilter(FilterSet):
+    class Meta:
+        model = bigScreenModel
+        fields = {
+            'day_in': ['exact', 'gt', 'gte', 'lt', 'lte', 'isnull', 'in', 'range'],
+            'day_out': ['exact', 'gt', 'gte', 'lt', 'lte', 'isnull', 'in', 'range'],
+            'day': ['exact', 'gt', 'gte', 'lt', 'lte', 'isnull', 'in', 'range'],
+        }
 class FlowFilter(FilterSet):
     class Meta:
         model = flowModel

+ 33 - 0
reportcenter/migrations/0005_bigscreenmodel_bigscreenmodel_unique_day_in_out.py

@@ -0,0 +1,33 @@
+# Generated by Django 4.1.2 on 2025-07-29 23:53
+
+from decimal import Decimal
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+    dependencies = [
+        ('reportcenter', '0004_delete_goodssummarymodel'),
+    ]
+
+    operations = [
+        migrations.CreateModel(
+            name='bigScreenModel',
+            fields=[
+                ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
+                ('day_in', models.DecimalField(blank=True, decimal_places=3, default=Decimal('0'), max_digits=10, null=True, verbose_name='Day In')),
+                ('day_out', models.DecimalField(blank=True, decimal_places=3, default=Decimal('0'), max_digits=10, null=True, verbose_name='Day Out')),
+                ('day', models.DateField(blank=True, null=True, verbose_name='Day')),
+            ],
+            options={
+                'verbose_name': 'Big Screen',
+                'verbose_name_plural': 'Big Screen',
+                'db_table': 'bigscreen',
+                'ordering': ['id'],
+            },
+        ),
+        migrations.AddConstraint(
+            model_name='bigscreenmodel',
+            constraint=models.UniqueConstraint(fields=('day', 'day_in', 'day_out'), name='unique_day_in_out'),
+        ),
+    ]

+ 19 - 0
reportcenter/models.py

@@ -43,3 +43,22 @@ class flowModel(models.Model):
         ]
     
 
+class bigScreenModel(models.Model):
+
+    day_in = models.DecimalField(max_digits=10, decimal_places=3, default=Decimal('0'), verbose_name='Day In', null=True, blank=True)
+    day_out = models.DecimalField(max_digits=10, decimal_places=3, default=Decimal('0'), verbose_name='Day Out', null=True, blank=True)
+    day = models.DateField(verbose_name='Day', null=True, blank=True)
+    class Meta:
+        db_table = 'bigscreen'
+        verbose_name = 'Big Screen'
+        verbose_name_plural = "Big Screen"
+        ordering = ['id']
+        constraints = [
+        models.UniqueConstraint(
+                fields=[
+                    'day', 'day_in', 'day_out'
+                ],
+                name='unique_day_in_out'
+            )
+        ]
+        

+ 5 - 2
reportcenter/serializers.py

@@ -1,9 +1,12 @@
 from rest_framework import serializers
-from .models import flowModel
+from .models import flowModel,bigScreenModel
 from container.models import MaterialChangeHistory,batchLogModel,ContainerDetailLogModel
 from decimal import Decimal
 
-
+class bigScreenSerializer(serializers.ModelSerializer):
+    class Meta:
+        model = bigScreenModel
+        fields = '__all__'
 
 class MaterialChangeHistorySerializer(serializers.ModelSerializer):
     class Meta:

+ 2 - 0
reportcenter/urls.py

@@ -13,4 +13,6 @@ urlpatterns = [
     path(r'ContainerDetailLog/', views.ContainerDetailLogViewSet.as_view({"get": "list",  }), name="management"),
     path(r'ContainerDetailLog/file/', views.ContainerDetailLogDownloadView.as_view({"get": "list"}), name="flowfile"),    
 
+    path(r'bigScreen/day/', views.bigScreenModelViewSet.as_view({"get": "list",  }), name="management"),
+
 ]

+ 32 - 2
reportcenter/views.py

@@ -11,8 +11,9 @@ from django.db import transaction
 from rest_framework import status
 
 from reportcenter.models import flowModel as flowlist
+from .models import bigScreenModel
 from . import serializers
-from .filter import FlowFilter, MaterialChangeHistoryFilter, batchLogFilter, ContainerDetailLogFilter
+from .filter import FlowFilter, MaterialChangeHistoryFilter, batchLogFilter, ContainerDetailLogFilter,bigScreenFilter
 from .files import  FileFlowListRenderCN, MaterialChangeHistoryRenderCN, batchLogRenderCN, ContainerDetailLogRenderCN
 
 from container.models import MaterialChangeHistory,batchLogModel,ContainerDetailLogModel
@@ -403,4 +404,33 @@ class FlowsStatsViewSet(viewsets.ModelViewSet):
     # def retrieve(self, request, pk):
     #     qs = self.get_object()
     #     serializer = self.get_serializer(qs)
-    #     return Response(serializer.data)
+    #     return Response(serializer.data)
+
+class bigScreenModelViewSet(viewsets.ModelViewSet):
+    filter_backends = [DjangoFilterBackend, OrderingFilter, ]
+    ordering_fields = ['id', "create_time", "update_time", ]
+    filter_class = bigScreenFilter
+    pagination_class = MyPageNumberPagination
+    def get_project(self):
+        try:
+            id = self.kwargs.get('pk')
+            return id
+        except:
+            return None
+    def get_queryset(self):
+        id = self.get_project()
+        if self.request.user:
+            if id is None:
+                return bigScreenModel.objects.filter()
+            else:
+                return bigScreenModel.objects.filter(id=id)
+        else:
+            return bigScreenModel.objects.none()
+    def get_serializer_class(self):
+        if self.action in ['list', 'create', ]:
+            return serializers.bigScreenSerializer
+        # elif self.action in ['retrieve','update',]:
+        #     return serializers.stocklistpartialSerializer
+        else:
+            return self.http_method_not_allowed(request=self.request)
+