From ec5c246bdc3fd1fc8b917b209137ebf3f9bdedfe Mon Sep 17 00:00:00 2001 From: caoqianming Date: Mon, 27 Nov 2023 11:33:15 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E5=85=B6=E4=BB=96=E7=94=9F=E4=BA=A7?= =?UTF-8?q?=E6=97=A5=E5=BF=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/wpm/migrations/0035_otherlog.py | 36 ++++++++++++++++++++++++++++ apps/wpm/models.py | 11 +++++++++ apps/wpm/serializers.py | 9 ++++++- apps/wpm/views.py | 16 +++++++++++-- 4 files changed, 69 insertions(+), 3 deletions(-) create mode 100644 apps/wpm/migrations/0035_otherlog.py diff --git a/apps/wpm/migrations/0035_otherlog.py b/apps/wpm/migrations/0035_otherlog.py new file mode 100644 index 00000000..023abd88 --- /dev/null +++ b/apps/wpm/migrations/0035_otherlog.py @@ -0,0 +1,36 @@ +# Generated by Django 3.2.12 on 2023-11-27 03:32 + +from django.conf import settings +from django.db import migrations, models +import django.db.models.deletion +import django.utils.timezone + + +class Migration(migrations.Migration): + + dependencies = [ + migrations.swappable_dependency(settings.AUTH_USER_MODEL), + ('wpm', '0034_auto_20231122_1551'), + ] + + operations = [ + migrations.CreateModel( + name='OtherLog', + fields=[ + ('id', models.CharField(editable=False, help_text='主键ID', max_length=20, primary_key=True, serialize=False, verbose_name='主键ID')), + ('create_time', models.DateTimeField(default=django.utils.timezone.now, help_text='创建时间', verbose_name='创建时间')), + ('update_time', models.DateTimeField(auto_now=True, help_text='修改时间', verbose_name='修改时间')), + ('is_deleted', models.BooleanField(default=False, help_text='删除标记', verbose_name='删除标记')), + ('product', models.CharField(max_length=10, verbose_name='产品')), + ('handle_date', models.DateField(verbose_name='操作日期')), + ('count_real', models.PositiveIntegerField(default=0, verbose_name='实际生产数')), + ('count_ok', models.PositiveIntegerField(default=0, verbose_name='合格数')), + ('count_delivered', models.PositiveIntegerField(default=0, verbose_name='交付数')), + ('create_by', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='otherlog_create_by', to=settings.AUTH_USER_MODEL, verbose_name='创建人')), + ('update_by', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='otherlog_update_by', to=settings.AUTH_USER_MODEL, verbose_name='最后编辑人')), + ], + options={ + 'abstract': False, + }, + ), + ] diff --git a/apps/wpm/models.py b/apps/wpm/models.py index 315c5775..42c14bc6 100644 --- a/apps/wpm/models.py +++ b/apps/wpm/models.py @@ -209,3 +209,14 @@ class AttLog(CommonADModel): state = models.CharField('状态', max_length=20, choices=ATT_STATE_CHOICES, default='pending', help_text=str(ATT_STATE_CHOICES)) note = models.TextField('备注信息', default='', blank=True) + + +class OtherLog(CommonADModel): + """ + 其他生产日志 + """ + product = models.CharField('产品', max_length=10) + handle_date = models.DateField('操作日期') + count_real = models.PositiveIntegerField('实际生产数', default=0) + count_ok = models.PositiveIntegerField('合格数', default=0) + count_delivered = models.PositiveIntegerField('交付数', default=0) diff --git a/apps/wpm/serializers.py b/apps/wpm/serializers.py index 138908d9..e66bb474 100644 --- a/apps/wpm/serializers.py +++ b/apps/wpm/serializers.py @@ -4,7 +4,7 @@ from rest_framework import serializers from rest_framework.exceptions import ValidationError, ParseError from datetime import datetime -from .models import SfLog, StLog, SfLogExp, WMaterial, Mlog, Handover, Mlogb, AttLog +from .models import SfLog, StLog, SfLogExp, WMaterial, Mlog, Handover, Mlogb, AttLog, OtherLog from apps.system.models import Dept, User from apps.system.serializers import UserSimpleSerializer from apps.pm.models import Mtask @@ -16,6 +16,13 @@ from django.db import transaction from django.utils import timezone +class OtherLogSerializer(CustomModelSerializer): + class Meta: + model = OtherLog + fields = '__all__' + read_only_fields = EXCLUDE_FIELDS + + class StLogSerializer(CustomModelSerializer): mgroup_name = serializers.CharField(source='mgroup.name', read_only=True) current_sflog = serializers.CharField(label='当前处理值班', write_only=True) diff --git a/apps/wpm/views.py b/apps/wpm/views.py index bc41f5bc..8cfe0489 100644 --- a/apps/wpm/views.py +++ b/apps/wpm/views.py @@ -14,10 +14,10 @@ from apps.utils.viewsets import CustomGenericViewSet, CustomModelViewSet from apps.utils.mixins import BulkCreateModelMixin from .filters import StLogFilter, SfLogFilter, WMaterialFilter, MlogFilter, HandoverFilter -from .models import SfLog, SfLogExp, StLog, WMaterial, Mlog, Handover, Mlogb, AttLog +from .models import SfLog, SfLogExp, StLog, WMaterial, Mlog, Handover, Mlogb, AttLog, OtherLog from .serializers import (SflogExpSerializer, SfLogSerializer, StLogSerializer, WMaterialSerializer, MlogSerializer, MlogRelatedSerializer, DeptBatchSerializer, HandoverSerializer, - GenHandoverSerializer, GenHandoverWmSerializer, MlogAnaSerializer, AttLogSerializer) + GenHandoverSerializer, GenHandoverWmSerializer, MlogAnaSerializer, AttLogSerializer, OtherLogSerializer) from .services import mlog_submit, update_mtask, handover_submit # Create your views here. @@ -323,3 +323,15 @@ class AttlogViewSet(CustomModelViewSet): filterset_fields = ['sflog__mgroup', 'sflog__mgroup__belong_dept__name', 'sflog__work_date', 'sflog__mgroup__cate', 'sflog__mgroup__need_enm'] ordering = ['-sflog__work_date', 'create_time'] + + +class OtherLogViewSet(CustomModelViewSet): + """ + list: 其他生产记录 + + 其他生产记录 + """ + queryset = OtherLog.objects.all() + serializer_class = OtherLogSerializer + filterset_fields = ['product'] + ordering = ['-handle_date', '-create_time']