This commit is contained in:
zty 2024-12-04 16:08:47 +08:00
commit 15d37604ea
4 changed files with 57 additions and 10 deletions

View File

@ -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()
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)

View File

@ -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

View File

@ -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.test_note])
if item.mio.mio_user:
data["七车间入库_车间执行人"].append(item.mio.mio_user)
if item.mio.do_user:
@ -116,7 +122,11 @@ def get_alldata_with_batch(batch: str):
data["十车间入库_抽检人"] = []
data["十车间入库_仓库执行人"] = []
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:
data["十车间入库_仓库执行人"].append(item.mio.do_user)
if item.test_user:
@ -145,11 +155,17 @@ def get_alldata_with_batch(batch: str):
if mlogs_glth_qs.exists():
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:
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:
@ -160,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["产品规格"]])
# 六车间领料数据
@ -170,7 +188,9 @@ def get_alldata_with_batch(batch: str):
data["六车间领料_日期"] = []
data["六车间领料_车间执行人"] = []
data["六车间领料_仓库执行人"] = []
data["产品规格"] = []
for item in mioitem6_qs:
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:
@ -189,6 +209,10 @@ 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["六车间领料_车间执行人"]])
data["产品规格"] = list(set(data["产品规格"]))
data["产品规格"] = ";".join([item.specification for item in data["产品规格"]])
# 六车间工段生产数据
# 六车间工段生产数据
mgroup_list = ["平头", "粘铁头", "粗中细磨", "抛光", "开槽"]
@ -199,7 +223,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:

View File

@ -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