feat: mlogb in update 接口
This commit is contained in:
parent
ac1b4b6c3e
commit
b33c86fd6e
|
@ -256,6 +256,9 @@ class MlogSerializer(CustomModelSerializer):
|
||||||
fields = '__all__'
|
fields = '__all__'
|
||||||
read_only_fields = EXCLUDE_FIELDS + \
|
read_only_fields = EXCLUDE_FIELDS + \
|
||||||
['submit_time', 'submit_user', 'material_outs']
|
['submit_time', 'submit_user', 'material_outs']
|
||||||
|
extra_kwargs = {
|
||||||
|
"batch": {"required": True}
|
||||||
|
}
|
||||||
|
|
||||||
def create(self, validated_data):
|
def create(self, validated_data):
|
||||||
mtask: Mtask = validated_data.get('mtask', None)
|
mtask: Mtask = validated_data.get('mtask', None)
|
||||||
|
@ -371,6 +374,26 @@ class MlogbInSerializer(CustomModelSerializer):
|
||||||
attrs['material_in'] = mlog.material_in
|
attrs['material_in'] = mlog.material_in
|
||||||
return attrs
|
return attrs
|
||||||
|
|
||||||
|
def create(self, validated_data):
|
||||||
|
mlog: Mlog = validated_data['mlog']
|
||||||
|
if mlog.submit_time is not None:
|
||||||
|
raise ParseError('生产日志已提交不可编辑')
|
||||||
|
return super().create(validated_data)
|
||||||
|
|
||||||
|
def update(self, instance, validated_data):
|
||||||
|
mlog: Mlog = instance.mlog
|
||||||
|
if mlog.submit_time is not None:
|
||||||
|
raise ParseError('生产日志已提交不可编辑')
|
||||||
|
return super().update(instance, validated_data)
|
||||||
|
|
||||||
|
class MlogbInUpdateSerializer(CustomModelSerializer):
|
||||||
|
class Meta:
|
||||||
|
model = Mlogb
|
||||||
|
fields = ['id', 'count_use', 'count_break']
|
||||||
|
|
||||||
|
class MlogbOutSerializer(CustomModelSerializer):
|
||||||
|
pass
|
||||||
|
|
||||||
class MlogRevertSerializer(serializers.Serializer):
|
class MlogRevertSerializer(serializers.Serializer):
|
||||||
change_reason = serializers.CharField(label='撤回原因')
|
change_reason = serializers.CharField(label='撤回原因')
|
||||||
|
|
||||||
|
|
|
@ -15,13 +15,13 @@ from apps.pm.models import Mtask
|
||||||
from apps.utils.viewsets import CustomGenericViewSet, CustomModelViewSet
|
from apps.utils.viewsets import CustomGenericViewSet, CustomModelViewSet
|
||||||
from apps.utils.mixins import BulkCreateModelMixin
|
from apps.utils.mixins import BulkCreateModelMixin
|
||||||
|
|
||||||
from .filters import StLogFilter, SfLogFilter, WMaterialFilter, MlogFilter, HandoverFilter
|
from .filters import StLogFilter, SfLogFilter, WMaterialFilter, MlogFilter, HandoverFilter, MlogbFilter
|
||||||
from .models import SfLog, SfLogExp, StLog, WMaterial, Mlog, Handover, Mlogb, AttLog, OtherLog
|
from .models import SfLog, SfLogExp, StLog, WMaterial, Mlog, Handover, Mlogb, AttLog, OtherLog
|
||||||
from .serializers import (SflogExpSerializer, SfLogSerializer, StLogSerializer, WMaterialSerializer, MlogRevertSerializer,
|
from .serializers import (SflogExpSerializer, SfLogSerializer, StLogSerializer, WMaterialSerializer, MlogRevertSerializer,
|
||||||
MlogSerializer, MlogRelatedSerializer, DeptBatchSerializer, HandoverSerializer,
|
MlogSerializer, MlogRelatedSerializer, DeptBatchSerializer, HandoverSerializer,
|
||||||
GenHandoverSerializer, GenHandoverWmSerializer, MlogAnaSerializer,
|
GenHandoverSerializer, GenHandoverWmSerializer, MlogAnaSerializer,
|
||||||
AttLogSerializer, OtherLogSerializer, MlogInitSerializer, MlogChangeSerializer,
|
AttLogSerializer, OtherLogSerializer, MlogInitSerializer, MlogChangeSerializer,
|
||||||
MlogbDetailSerializer, MlogbInSerializer)
|
MlogbDetailSerializer, MlogbInSerializer, MlogbInUpdateSerializer)
|
||||||
from .services import mlog_submit, update_mtask, handover_submit, mlog_revert, cal_material_count_from_mlog, cal_mtask_progress_from_mlog
|
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.utils.thread import MyThread
|
||||||
from apps.monitor.services import create_auditlog, delete_auditlog
|
from apps.monitor.services import create_auditlog, delete_auditlog
|
||||||
|
@ -440,19 +440,33 @@ class MlogbViewSet(ListModelMixin, CustomGenericViewSet):
|
||||||
perms_map = {'get': '*'}
|
perms_map = {'get': '*'}
|
||||||
queryset = Mlogb.objects.all()
|
queryset = Mlogb.objects.all()
|
||||||
serializer_class = MlogbDetailSerializer
|
serializer_class = MlogbDetailSerializer
|
||||||
filterset_fields = ['mlog', 'mtask', 'material_in', 'material_out']
|
filterset_class = MlogbFilter
|
||||||
|
|
||||||
|
|
||||||
class MlogbInViewSet(CreateModelMixin, DestroyModelMixin, CustomGenericViewSet):
|
class MlogbInViewSet(CreateModelMixin, UpdateModelMixin, DestroyModelMixin, CustomGenericViewSet):
|
||||||
perms_map = {'post': 'mlog.update', 'delete': 'mlog.update'}
|
perms_map = {'post': 'mlog.update', 'delete': 'mlog.update'}
|
||||||
queryset = Mlogb.objects.all()
|
queryset = Mlogb.objects.all()
|
||||||
serializer_class = MlogbInSerializer
|
serializer_class = MlogbInSerializer
|
||||||
|
update_serializer_class = MlogbInUpdateSerializer
|
||||||
|
|
||||||
|
@transaction.atomic
|
||||||
|
def perform_destroy(self, instance):
|
||||||
|
ins: Mlogb = instance
|
||||||
|
if ins.mlog.submit_time is not None:
|
||||||
|
raise ParseError('生产日志已提交不可编辑')
|
||||||
|
if ins.mtask:
|
||||||
|
query_dict = {"material_out__isnull": False, "mlog": ins.mlog, "mtask": ins.mtask}
|
||||||
|
route = ins.mtask.route
|
||||||
|
if route.batch_bind:
|
||||||
|
query_dict["batch"] = ins.batch
|
||||||
|
Mlogb.objects.filter(**query_dict).delete()
|
||||||
|
instance.delete()
|
||||||
|
|
||||||
@transaction.atomic
|
@transaction.atomic
|
||||||
def perform_create(self, serializer):
|
def perform_create(self, serializer):
|
||||||
ins: Mlogb = serializer.save()
|
ins: Mlogb = serializer.save()
|
||||||
# 创建输出
|
# 创建输出
|
||||||
if ins.mtask:
|
if ins.mtask and ins.material_in:
|
||||||
material_out = ins.mlog.material_out
|
material_out = ins.mlog.material_out
|
||||||
route = ins.mlog.route
|
route = ins.mlog.route
|
||||||
if material_out is None:
|
if material_out is None:
|
||||||
|
|
Loading…
Reference in New Issue