From bcbaba330de417a21d7be886da7446613c4c3875 Mon Sep 17 00:00:00 2001 From: caoqianming Date: Wed, 4 Dec 2024 10:16:41 +0800 Subject: [PATCH 1/7] =?UTF-8?q?feat:=20batchst=E5=A2=9E=E5=8A=A0batch=5F?= =?UTF-8?q?=5Fstartswith=5F=5Fin=E7=AD=9B=E9=80=89=E6=9D=A1=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/wpm/filters.py | 26 +++++++++++++++++++++++--- apps/wpm/views.py | 9 +++------ 2 files changed, 26 insertions(+), 9 deletions(-) diff --git a/apps/wpm/filters.py b/apps/wpm/filters.py index fb4d629b..c8f60455 100644 --- a/apps/wpm/filters.py +++ b/apps/wpm/filters.py @@ -1,6 +1,7 @@ from django_filters import rest_framework as filters -from apps.wpm.models import SfLog, StLog, WMaterial, Mlog, Handover, Mgroup, Mlogb, Mtask - +from apps.wpm.models import (SfLog, StLog, WMaterial, Mlog, + Handover, Mgroup, Mlogb, Mtask, BatchSt) +from django.db.models import Q class SfLogFilter(filters.FilterSet): class Meta: @@ -135,4 +136,23 @@ class MlogbFilter(filters.FilterSet): elif value == 'out': return queryset.filter(material_out__isnull=False) return queryset - return queryset.none() \ No newline at end of file + return queryset.none() + + +class BatchStFilter(filters.FilterSet): + batch__startswith__in = filters.CharFilter(method='filter_batch') + + class Meta: + model = BatchSt + fields = { + "batch": ["exact", "contains", "startswith"], + "last_time": ["exact", "gte", "lte"], + "update_time": ["exact", "gte", "lte"] + } + + def filter_batch(self, queryset, name, value): + v_list = value.split(',') + query = Q() + for value in v_list: + query |= Q(batch__startswith=value) + return queryset.filter(query) \ No newline at end of file diff --git a/apps/wpm/views.py b/apps/wpm/views.py index 614bf941..ea3006d6 100644 --- a/apps/wpm/views.py +++ b/apps/wpm/views.py @@ -14,7 +14,7 @@ from apps.mtm.models import Material, Process from apps.pm.models import Mtask from apps.utils.viewsets import CustomGenericViewSet, CustomModelViewSet -from .filters import StLogFilter, SfLogFilter, WMaterialFilter, MlogFilter, HandoverFilter, MlogbFilter +from .filters import StLogFilter, SfLogFilter, WMaterialFilter, MlogFilter, HandoverFilter, MlogbFilter, BatchStFilter from .models import SfLog, SfLogExp, StLog, WMaterial, Mlog, Handover, Mlogb, AttLog, OtherLog, Fmlog, BatchSt from .serializers import (SflogExpSerializer, SfLogSerializer, StLogSerializer, WMaterialSerializer, MlogRevertSerializer, MlogSerializer, MlogRelatedSerializer, DeptBatchSerializer, HandoverSerializer, HandoverUpdateSerializer, @@ -523,8 +523,5 @@ class BatchStViewSet(ListModelMixin, CustomGenericViewSet): serializer_class = BatchStSerializer ordering_fields = ["batch", "last_time", "update_time"] ordering = ["batch"] - filterset_fields = { - "batch": ["exact", "contains", "startswith"], - "last_time": ["exact", "gte", "lte"], - "update_time": ["exact", "gte", "lte"] - } + filterset_class = BatchStFilter + From ffd7bc13b0cf05e9027a04d1a53c540bf20d0857 Mon Sep 17 00:00:00 2001 From: caoqianming Date: Wed, 4 Dec 2024 11:00:49 +0800 Subject: [PATCH 2/7] =?UTF-8?q?feat:=20get=5Falldata=5Fwith=5Fbatch=20?= =?UTF-8?q?=E5=8A=A0=E5=85=A5=E6=A3=80=E9=AA=8C=E5=A4=87=E6=B3=A8=E7=BB=9F?= =?UTF-8?q?=E8=AE=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/wpm/services_2.py | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/apps/wpm/services_2.py b/apps/wpm/services_2.py index e3ad071c..68d0650c 100644 --- a/apps/wpm/services_2.py +++ b/apps/wpm/services_2.py @@ -68,9 +68,12 @@ def get_alldata_with_batch(batch: str): mlogs_glcx_qs = Mlog.objects.filter(submit_time__isnull=False, mgroup=mgroup_glcx, batch=batch) if mlogs_glcx_qs.exists(): data["产品规格"] = [] + data["管料成型_备注"] = "" for item in mlogs_glcx_qs: last_time = item.update_time if item.update_time > last_time else last_time data["产品规格"].append(item.material_out) # 对象 + if item.note: + data["管料成型_备注"] = ";".join([data["管料成型_备注"], item.note]) for field in mlog_count_fields: if getattr(item, field) > 0 or field in ["count_real", "count_ok"]: if f'管料成型_{field}' not in data: @@ -88,9 +91,12 @@ def get_alldata_with_batch(batch: str): data["七车间入库_日期"] = [] data["七车间入库_车间执行人"] = [] data["七车间入库_仓库执行人"] = [] + data["七车间入库_检验备注"] = "" for item in mioitem_qs: last_time = item.update_time if item.update_time > last_time else last_time data["七车间入库_日期"].append(item.mio.inout_date) + if item.test_note: + data["七车间入库_检验备注"] = ";".join([data["七车间入库_检验备注"], item.note]) if item.mio.mio_user: data["七车间入库_车间执行人"].append(item.mio.mio_user) if item.mio.do_user: @@ -116,7 +122,10 @@ def get_alldata_with_batch(batch: str): data["十车间入库_抽检人"] = [] data["十车间入库_仓库执行人"] = [] data["十车间入库_日期"] = [] + data["十车间入库_检验备注"] = "" for item in mioitem10_qs: + if item.test_note: + data["十车间入库_检验备注"] = ";".join([data["十车间入库_检验备注"], item.note]) if item.mio.do_user: data["十车间入库_仓库执行人"].append(item.mio.do_user) if item.test_user: @@ -145,7 +154,10 @@ def get_alldata_with_batch(batch: str): if mlogs_glth_qs.exists(): data["管料退火_日期"] = [] data["管料退火_操作人"] = [] + data["管料退火_备注"] = "" for item in mlogs_glth_qs: + if item.note: + data["管料退火_备注"] = ";".join([data["管料退火_备注"], item.note]) if item.handle_date: data["管料退火_日期"].append(item.handle_date) if item.handle_user: @@ -199,7 +211,10 @@ def get_alldata_with_batch(batch: str): last_time = item.update_time if item.update_time > last_time else last_time data[f'六车间_{mgroup_name}_日期'] = [] data[f'六车间_{mgroup_name}_操作人'] = [] + data[f'六车间_{mgroup_name}_备注'] = "" for item in mlogs_qs: + if item.note: + data[f'六车间_{mgroup_name}_备注'] = ";".join([data[f'六车间_{mgroup_name}_备注'], item.note]) if item.handle_date: data[f'六车间_{mgroup_name}_日期'].append(item.handle_date) if item.handle_user: From 5533cc69677a3aefdbe552e9b3b628d7e6dde85c Mon Sep 17 00:00:00 2001 From: caoqianming Date: Wed, 4 Dec 2024 11:18:23 +0800 Subject: [PATCH 3/7] =?UTF-8?q?fix:=20get=5Falldata=5Fwith=5Fbatch=20?= =?UTF-8?q?=E5=8A=A0=E5=85=A5=E6=A3=80=E9=AA=8C=E5=A4=87=E6=B3=A8=E7=BB=9F?= =?UTF-8?q?=E8=AE=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/wpm/services_2.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/apps/wpm/services_2.py b/apps/wpm/services_2.py index 68d0650c..31011572 100644 --- a/apps/wpm/services_2.py +++ b/apps/wpm/services_2.py @@ -96,7 +96,7 @@ def get_alldata_with_batch(batch: str): last_time = item.update_time if item.update_time > last_time else last_time data["七车间入库_日期"].append(item.mio.inout_date) if item.test_note: - data["七车间入库_检验备注"] = ";".join([data["七车间入库_检验备注"], item.note]) + data["七车间入库_检验备注"] = ";".join([data["七车间入库_检验备注"], item.test_note]) if item.mio.mio_user: data["七车间入库_车间执行人"].append(item.mio.mio_user) if item.mio.do_user: @@ -125,7 +125,7 @@ def get_alldata_with_batch(batch: str): data["十车间入库_检验备注"] = "" for item in mioitem10_qs: if item.test_note: - data["十车间入库_检验备注"] = ";".join([data["十车间入库_检验备注"], item.note]) + data["十车间入库_检验备注"] = ";".join([data["十车间入库_检验备注"], item.test_note]) if item.mio.do_user: data["十车间入库_仓库执行人"].append(item.mio.do_user) if item.test_user: From a69f718859841027d7b39c74fe92070535574846 Mon Sep 17 00:00:00 2001 From: caoqianming Date: Wed, 4 Dec 2024 12:22:52 +0800 Subject: [PATCH 4/7] =?UTF-8?q?feat:=20mlog=20=E6=94=AF=E6=8C=81handle=5Fu?= =?UTF-8?q?ser=20=E9=BB=98=E8=AE=A4create=5Fby?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/wpm/serializers.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/apps/wpm/serializers.py b/apps/wpm/serializers.py index 3e424df2..d4e6c15b 100644 --- a/apps/wpm/serializers.py +++ b/apps/wpm/serializers.py @@ -469,6 +469,9 @@ class MlogSerializer(CustomModelSerializer): material_out = attrs['material_out'] if not (mgroup and material_out): raise ValidationError('缺少工段或产物!') + handle_user = attrs.get('handle_user', None) + if handle_user is None and hasattr(self, "request"): + handle_user = self.request.user return attrs From 784500bf5be47176f68edb7396233471d7ca476e Mon Sep 17 00:00:00 2001 From: caoqianming Date: Wed, 4 Dec 2024 12:37:08 +0800 Subject: [PATCH 5/7] =?UTF-8?q?feat:=20get=5Falldata=5Fwith=5Fbatch=20?= =?UTF-8?q?=E5=85=B6=E4=BB=96=E5=85=A5=E5=BA=93=E4=B9=9F=E9=9C=80=E8=A6=81?= =?UTF-8?q?=E8=AE=B0=E5=BD=95=E4=BA=A7=E5=93=81=E8=A7=84=E6=A0=BC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/wpm/services_2.py | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/apps/wpm/services_2.py b/apps/wpm/services_2.py index 31011572..0a983d97 100644 --- a/apps/wpm/services_2.py +++ b/apps/wpm/services_2.py @@ -34,6 +34,8 @@ def get_alldata_with_batch(batch: str): mlog_count_fields = Mlog.count_fields() + data["产品规格"] = [] + if mlogs_blcx_qs.exists(): data["产品规格"] = [] data["棒料成型_出料人"] = [] @@ -182,7 +184,15 @@ def get_alldata_with_batch(batch: str): data["六车间领料_日期"] = [] data["六车间领料_车间执行人"] = [] data["六车间领料_仓库执行人"] = [] + add_guige = False + if data["产品规格"]: + pass + else: + add_guige = True + data["产品规格"] = [] for item in mioitem6_qs: + if add_guige: + data["产品规格"].append(item.material) last_time = item.update_time if item.update_time > last_time else last_time data["六车间领料_日期"].append(item.mio.inout_date) if item.mio.do_user: @@ -201,6 +211,11 @@ def get_alldata_with_batch(batch: str): data["六车间领料_仓库执行人"] = ";".join([item.name for item in data["六车间领料_仓库执行人"]]) data["六车间领料_车间执行人"] = list(set(data["六车间领料_车间执行人"])) data["六车间领料_车间执行人"] = ";".join([item.name for item in data["六车间领料_车间执行人"]]) + if add_guige: + data["产品规格"] = list(set(data["产品规格"])) + data["产品规格"] = ";".join([item.specification for item in data["产品规格"]]) + + # 六车间工段生产数据 # 六车间工段生产数据 mgroup_list = ["平头", "粘铁头", "粗中细磨", "抛光", "开槽"] From 7ce9ed5a19021a0643662ad4abd67820ed07d356 Mon Sep 17 00:00:00 2001 From: caoqianming Date: Wed, 4 Dec 2024 12:42:12 +0800 Subject: [PATCH 6/7] fix: get_alldata_with_batch hanle_user bug --- apps/wpm/services_2.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/apps/wpm/services_2.py b/apps/wpm/services_2.py index 0a983d97..c2c9c447 100644 --- a/apps/wpm/services_2.py +++ b/apps/wpm/services_2.py @@ -35,7 +35,7 @@ def get_alldata_with_batch(batch: str): mlog_count_fields = Mlog.count_fields() data["产品规格"] = [] - + if mlogs_blcx_qs.exists(): data["产品规格"] = [] data["棒料成型_出料人"] = [] @@ -163,7 +163,7 @@ def get_alldata_with_batch(batch: str): if item.handle_date: data["管料退火_日期"].append(item.handle_date) if item.handle_user: - data["管料退火_操作人"].append(item.mlog_user) + data["管料退火_操作人"].append(item.handle_user) for field in mlog_count_fields: if getattr(item, field) > 0 or field in ["count", "count_notok"]: if f'管料退火_{field}' not in data: From 5e9ebcdd366a13e894b39f819fbe0ba68f710b72 Mon Sep 17 00:00:00 2001 From: caoqianming Date: Wed, 4 Dec 2024 13:04:19 +0800 Subject: [PATCH 7/7] =?UTF-8?q?feat:=20=E4=BA=A7=E5=93=81=E8=A7=84?= =?UTF-8?q?=E6=A0=BC=E8=BF=98=E9=9C=80=E5=9C=A8=E7=AE=A1=E6=96=99=E9=80=80?= =?UTF-8?q?=E7=81=AB=E5=A4=84=E5=A4=84=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/wpm/services_2.py | 23 ++++++++++------------- 1 file changed, 10 insertions(+), 13 deletions(-) diff --git a/apps/wpm/services_2.py b/apps/wpm/services_2.py index c2c9c447..203339b1 100644 --- a/apps/wpm/services_2.py +++ b/apps/wpm/services_2.py @@ -34,8 +34,6 @@ def get_alldata_with_batch(batch: str): mlog_count_fields = Mlog.count_fields() - data["产品规格"] = [] - if mlogs_blcx_qs.exists(): data["产品规格"] = [] data["棒料成型_出料人"] = [] @@ -126,6 +124,7 @@ def get_alldata_with_batch(batch: str): data["十车间入库_日期"] = [] data["十车间入库_检验备注"] = "" for item in mioitem10_qs: + last_time = item.update_time if item.update_time > last_time else last_time if item.test_note: data["十车间入库_检验备注"] = ";".join([data["十车间入库_检验备注"], item.test_note]) if item.mio.do_user: @@ -157,7 +156,10 @@ def get_alldata_with_batch(batch: str): data["管料退火_日期"] = [] data["管料退火_操作人"] = [] data["管料退火_备注"] = "" + data["产品规格"] = [] for item in mlogs_glth_qs: + data["产品规格"].append(item.material_out) + last_time = item.update_time if item.update_time > last_time else last_time if item.note: data["管料退火_备注"] = ";".join([data["管料退火_备注"], item.note]) if item.handle_date: @@ -174,6 +176,8 @@ def get_alldata_with_batch(batch: str): data["管料退火_日期"] = ";".join([item.strftime("%Y-%m-%d") for item in data["管料退火_日期"]]) data["管料退火_操作人"] = list(set(data["管料退火_操作人"])) data["管料退火_操作人"] = ";".join([item.name for item in data["管料退火_操作人"]]) + data["产品规格"] = list(set(data["产品规格"])) + data["产品规格"] = ";".join([item.specification for item in data["产品规格"]]) # 六车间领料数据 @@ -184,15 +188,9 @@ def get_alldata_with_batch(batch: str): data["六车间领料_日期"] = [] data["六车间领料_车间执行人"] = [] data["六车间领料_仓库执行人"] = [] - add_guige = False - if data["产品规格"]: - pass - else: - add_guige = True - data["产品规格"] = [] + data["产品规格"] = [] for item in mioitem6_qs: - if add_guige: - data["产品规格"].append(item.material) + data["产品规格"].append(item.material) last_time = item.update_time if item.update_time > last_time else last_time data["六车间领料_日期"].append(item.mio.inout_date) if item.mio.do_user: @@ -211,9 +209,8 @@ def get_alldata_with_batch(batch: str): data["六车间领料_仓库执行人"] = ";".join([item.name for item in data["六车间领料_仓库执行人"]]) data["六车间领料_车间执行人"] = list(set(data["六车间领料_车间执行人"])) data["六车间领料_车间执行人"] = ";".join([item.name for item in data["六车间领料_车间执行人"]]) - if add_guige: - data["产品规格"] = list(set(data["产品规格"])) - data["产品规格"] = ";".join([item.specification for item in data["产品规格"]]) + data["产品规格"] = list(set(data["产品规格"])) + data["产品规格"] = ";".join([item.specification for item in data["产品规格"]]) # 六车间工段生产数据