feat: route增加batch_bind字段/mlogbin接口

This commit is contained in:
caoqianming 2024-07-11 11:26:18 +08:00
parent 2f08b9ce81
commit 2d522a1fd4
5 changed files with 58 additions and 3 deletions

View File

@ -0,0 +1,18 @@
# Generated by Django 3.2.12 on 2024-07-11 03:23
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('mtm', '0033_auto_20240704_1003'),
]
operations = [
migrations.AddField(
model_name='route',
name='batch_bind',
field=models.BooleanField(default=True, verbose_name='是否绑定批次'),
),
]

View File

@ -205,6 +205,7 @@ class Route(CommonADModel):
is_count_utask = models.BooleanField('是否主任务统计', default=False)
out_rate = models.FloatField('出材率', default=100, blank=True)
hour_work = models.FloatField('工时', null=True, blank=True)
batch_bind = models.BooleanField('是否绑定批次', default=True)
@staticmethod
def get_routes(material: Material):

View File

@ -353,6 +353,24 @@ class MlogChangeSerializer(CustomModelSerializer):
return attrs
class MlogbInSerializer(CustomModelSerializer):
class Meta:
model = Mlogb
fields = ['id', 'mlog', 'mtask', 'batch', 'count_use']
extra_kwargs = {'count_use': {'required': True}, 'mtask': {'required': True}, 'batch': {'required': True, 'allow_blank': False}}
def validate(self, attrs):
mlog: Mlog = attrs['mlog']
mtask: Mtask = attrs['mtask']
if mlog.route != mtask.route:
raise ValidationError('工序不匹配')
route = mlog.route
if route.batch_bind:
if not Mlogb.objects.filter(mtask__utask=mtask.utask, mlog__submit_time__isnull=False, material_out__isnull=False, batch=attrs['batch']).exists():
raise ValidationError('批次号不匹配')
attrs['material_in'] = mlog.material_in
return attrs
class MlogRevertSerializer(serializers.Serializer):
change_reason = serializers.CharField(label='撤回原因')

View File

@ -1,7 +1,9 @@
from django.urls import path, include
from rest_framework.routers import DefaultRouter
from apps.wpm.views import SfLogViewSet, StLogViewSet, SfLogExpViewSet, WMaterialViewSet, MlogViewSet, HandoverViewSet, AttlogViewSet, OtherLogViewSet
from apps.wpm.views import (SfLogViewSet, StLogViewSet, SfLogExpViewSet,
WMaterialViewSet, MlogViewSet, HandoverViewSet,
AttlogViewSet, OtherLogViewSet, MlogbViewSet, MlogbInViewSet)
API_BASE_URL = 'api/wpm/'
@ -13,6 +15,8 @@ router.register('stlog', StLogViewSet, basename='stlog')
router.register('sflogexp', SfLogExpViewSet, basename='sflogexp')
router.register('wmaterial', WMaterialViewSet, basename='wmaterial')
router.register('mlog', MlogViewSet, basename='mlog')
router.register('mlogb', MlogbViewSet)
router.register('mlogb/in', MlogbInViewSet)
router.register('handover', HandoverViewSet, basename='handover')
router.register('attlog', AttlogViewSet, basename='attlog')
router.register('otherlog', OtherLogViewSet, basename='otherlog')

View File

@ -3,7 +3,7 @@ from django.db.models import Prefetch
from django.shortcuts import render
from rest_framework.decorators import action
from rest_framework.exceptions import ParseError
from rest_framework.mixins import DestroyModelMixin, ListModelMixin, UpdateModelMixin
from rest_framework.mixins import DestroyModelMixin, ListModelMixin, UpdateModelMixin, CreateModelMixin
from rest_framework.response import Response
from rest_framework.serializers import Serializer
from django.db.models import Sum
@ -20,7 +20,8 @@ from .models import SfLog, SfLogExp, StLog, WMaterial, Mlog, Handover, Mlogb, At
from .serializers import (SflogExpSerializer, SfLogSerializer, StLogSerializer, WMaterialSerializer, MlogRevertSerializer,
MlogSerializer, MlogRelatedSerializer, DeptBatchSerializer, HandoverSerializer,
GenHandoverSerializer, GenHandoverWmSerializer, MlogAnaSerializer,
AttLogSerializer, OtherLogSerializer, MlogInitSerializer, MlogChangeSerializer)
AttLogSerializer, OtherLogSerializer, MlogInitSerializer, MlogChangeSerializer,
MlogbDetailSerializer, MlogbInSerializer)
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
@ -433,3 +434,16 @@ class OtherLogViewSet(CustomModelViewSet):
}
search_fields = ['product']
ordering = ['-handle_date', '-create_time']
class MlogbViewSet(ListModelMixin, CustomGenericViewSet):
perms_map = {'get': '*'}
queryset = Mlogb.objects.all()
serializer_class = MlogbDetailSerializer
filterset_fields = ['mlog', 'mtask', 'material_in', 'material_out']
class MlogbInViewSet(CreateModelMixin, DestroyModelMixin, CustomGenericViewSet):
perms_map = {'post': 'mlog.update', 'delete': 'mlog.update'}
queryset = Mlogb.objects.all()
serializer_class = MlogbInSerializer