feat: route增加batch_bind字段/mlogbin接口
This commit is contained in:
parent
2f08b9ce81
commit
2d522a1fd4
|
@ -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='是否绑定批次'),
|
||||
),
|
||||
]
|
|
@ -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):
|
||||
|
|
|
@ -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='撤回原因')
|
||||
|
||||
|
|
|
@ -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')
|
||||
|
|
|
@ -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
|
Loading…
Reference in New Issue