feat: 添加batchst路由

This commit is contained in:
caoqianming 2024-12-02 13:39:43 +08:00
parent c3bd32ee68
commit 17697d6482
4 changed files with 59 additions and 21 deletions

View File

@ -5,7 +5,7 @@ from rest_framework.exceptions import ValidationError, ParseError
from datetime import datetime
from .models import (SfLog, StLog, SfLogExp, WMaterial, Mlog,
Handover, Handoverb, Mlogb, AttLog, OtherLog, Fmlog)
Handover, Handoverb, Mlogb, AttLog, OtherLog, Fmlog, BatchSt)
from apps.system.models import Dept, User
from apps.system.serializers import UserSimpleSerializer
from apps.pm.models import Mtask, Mtaskb
@ -811,4 +811,10 @@ class FmlogUpdateSerializer(CustomModelSerializer):
class MlogTCreateSerializer(CustomModelSerializer):
pass
pass
class BatchStSerializer(CustomModelSerializer):
class Meta:
model = BatchSt
fields = "__all__"

View File

@ -1,9 +1,18 @@
from apps.wpm.models import Mlog
from apps.mtm.models import Material, Mgroup
from apps.wpm.models import Mlog, BatchSt
from apps.mtm.models import Mgroup
from apps.system.models import Dept
from apps.inm.models import MIOItem
from apps.qm.models import FtestWork
def get_alldata_with_batch_and_store(batch: str):
"""
获取某个批次某个仓库的整体生产数据并保存
"""
data = get_alldata_with_batch(batch)
bobj, _ = BatchSt.objects.get_or_create(batch=batch)
bobj.data = data
bobj.save()
def get_alldata_with_batch(batch: str):
"""
获取某个批次的整体生产数据
@ -23,8 +32,10 @@ def get_alldata_with_batch(batch: str):
data["棒料成型-备注"] = ""
for item in mlogs_blcx_qs:
data["产品规格"].append(item.material_out) # 对象
data["棒料成型-出料人"].append(item.handle_user) # 对象
data["棒料成型-切料人"].append(item.handle_user_2) # 对象
if item.handle_user:
data["棒料成型-出料人"].append(item.handle_user) # 对象
if item.handle_user_2:
data["棒料成型-切料人"].append(item.handle_user_2) # 对象
if item.note:
data["棒料成型-备注"] = ";".join([data["棒料成型-备注"], item.note])
for field in mlog_count_fields:
@ -51,14 +62,16 @@ def get_alldata_with_batch(batch: str):
data["7车间入库-仓库执行人"] = []
for item in mioitem_qs:
data["7车间入库-日期"].append(item.mio.inout_date)
data["7车间入库-车间执行人"].append(item.mio.mio_user)
data["7车间入库-仓库执行人"].append(item.mio.do_user)
if item.mio.mio_user:
data["7车间入库-车间执行人"].append(item.mio.mio_user)
if item.mio.do_user:
data["7车间入库-仓库执行人"].append(item.mio.do_user)
for field in mioitem_count_fields:
if getattr(item, field) > 0:
if f'7车间入库-{field}' not in data:
data[f'7车间入库-{field}'] = getattr(item, field)
data[f'7车间入库-{field}'] = int(getattr(item, field))
else:
data[f'7车间入库-{field}'] += getattr(item, field)
data[f'7车间入库-{field}'] += int(getattr(item, field))
data["7车间入库-合格率"] = round((data["7车间入库-count"] - data["7车间入库-count_notok"]) * 100/ data["7车间入库-count"], 1)
data["7车间入库-日期"] = list(set(data["7车间入库-日期"]))
data["7车间入库-日期"] = ";".join([item.strftime("%Y-%m-%d") for item in data["7车间入库-日期"]])
@ -78,9 +91,9 @@ def get_alldata_with_batch(batch: str):
for field in mioitem_count_fields:
if getattr(item, field) > 0:
if f'6车间生产领料-{field}' not in data:
data[f'6车间生产领料-{field}'] = getattr(item, field)
data[f'6车间生产领料-{field}'] = int(getattr(item, field))
else:
data[f'6车间生产领料-{field}'] += getattr(item, field)
data[f'6车间生产领料-{field}'] += int(getattr(item, field))
data["6车间生产领料-日期"] = list(set(data["6车间生产领料-日期"]))
data["6车间生产领料-日期"] = ";".join([item.strftime("%Y-%m-%d") for item in data["6车间生产领料-日期"]])
@ -93,8 +106,10 @@ def get_alldata_with_batch(batch: str):
data[f'6车间-{mgroup_name}-日期'] = []
data[f'6车间-{mgroup_name}-操作人'] = []
for item in mlogs_qs:
data[f'6车间-{mgroup_name}-日期'].append(item.handle_date)
data[f'6车间-{mgroup_name}-操作人'].append(item.handle_user)
if item.handle_date:
data[f'6车间-{mgroup_name}-日期'].append(item.handle_date)
if item.handle_user:
data[f'6车间-{mgroup_name}-操作人'].append(item.handle_user)
for field in mlog_count_fields:
if getattr(item, field) > 0:
if f'6车间-{mgroup_name}-{field}' not in data:
@ -131,8 +146,10 @@ def get_alldata_with_batch(batch: str):
data["成品检验-日期"] = []
data['成品检验-检验人'] = []
for item in ftestwork_qs:
data["成品检验-日期"].append(item.test_date)
data['成品检验-检验人'].append(item.test_user)
if item.test_date:
data["成品检验-日期"].append(item.test_date)
if item.test_user:
data['成品检验-检验人'].append(item.test_user)
for field in ftestwork_count_fields:
if field == 'count_notok_json':
for k, v in getattr(item, field).items():

View File

@ -4,7 +4,7 @@ from rest_framework.routers import DefaultRouter
from apps.wpm.views import (SfLogViewSet, StLogViewSet, SfLogExpViewSet,
WMaterialViewSet, MlogViewSet, HandoverViewSet,
AttlogViewSet, OtherLogViewSet, MlogbViewSet, MlogbInViewSet,
MlogbOutViewSet, FmlogViewSet)
MlogbOutViewSet, FmlogViewSet, BatchStViewSet)
from apps.wpm.datax import AnaViewSet
@ -25,6 +25,7 @@ router.register('handover', HandoverViewSet, basename='handover')
router.register('attlog', AttlogViewSet, basename='attlog')
router.register('otherlog', OtherLogViewSet, basename='otherlog')
router.register('ana', AnaViewSet, basename='ana')
router.register('batchst', BatchStViewSet, basename='batchst')
urlpatterns = [
path(API_BASE_URL, include(router.urls)),

View File

@ -13,16 +13,15 @@ from apps.system.models import User
from apps.mtm.models import Material, Process
from apps.pm.models import Mtask
from apps.utils.viewsets import CustomGenericViewSet, CustomModelViewSet
from apps.utils.mixins import BulkCreateModelMixin
from .filters import StLogFilter, SfLogFilter, WMaterialFilter, MlogFilter, HandoverFilter, MlogbFilter
from .models import SfLog, SfLogExp, StLog, WMaterial, Mlog, Handover, Mlogb, AttLog, OtherLog, Fmlog
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,
GenHandoverSerializer, GenHandoverWmSerializer, MlogAnaSerializer,
AttLogSerializer, OtherLogSerializer, MlogInitSerializer, MlogChangeSerializer,
MlogbDetailSerializer, MlogbInSerializer, MlogbInUpdateSerializer,
MlogbOutUpdateSerializer, FmlogSerializer, FmlogUpdateSerializer)
MlogbOutUpdateSerializer, FmlogSerializer, FmlogUpdateSerializer, BatchStSerializer)
from .services import mlog_submit, update_mtask, handover_submit, mlog_revert, cal_material_count_from_mlog, cal_mtask_progress_from_mlog
from apps.utils.thread import MyThread
from apps.monitor.services import create_auditlog, delete_auditlog
@ -510,4 +509,19 @@ class FmlogViewSet(CustomModelViewSet):
ins = self.get_object()
if Mlog.objects.filter(fmlog=ins).exists():
raise ParseError('因存在二级日志不可删除')
return super().destroy(request, *args, **kwargs)
return super().destroy(request, *args, **kwargs)
class BatchStViewSet(ListModelMixin, CustomGenericViewSet):
"""
list: 批次统计数据
批次统计数据
"""
perms_map = {"get": "*"}
queryset = BatchSt.objects.all()
serializer_class = BatchStSerializer
filterset_fields = {
"batch": ["exact", "contains"],
"update_time": ["exact", "gte", "lte"]
}