feat: mlog change接口

This commit is contained in:
caoqianming 2024-07-11 08:44:40 +08:00
parent 2f5edc041c
commit 2e60cb7eaf
3 changed files with 45 additions and 4 deletions

View File

@ -183,7 +183,11 @@ class Mlog(CommonADModel):
@property @property
def mlogb(self): def mlogb(self):
return Mlogb.objects.filter(mlog=self).exclude(material_out=None) return Mlogb.objects.filter(mlog=self).exclude(material_out=None)
@property
def mlogb_full(self):
return Mlogb.objects.filter(mlog=self)
@property @property
def audit_ignore_fields(self): def audit_ignore_fields(self):
return ['create_by', 'update_by', return ['create_by', 'update_by',

View File

@ -15,6 +15,7 @@ from apps.mtm.serializers import MaterialSimpleSerializer
from django.db import transaction from django.db import transaction
from django.utils import timezone from django.utils import timezone
from django.core.cache import cache from django.core.cache import cache
from django.utils.timezone import localdate
class OtherLogSerializer(CustomModelSerializer): class OtherLogSerializer(CustomModelSerializer):
@ -190,6 +191,15 @@ class MlogbSerializer(CustomModelSerializer):
'material_out_', 'material_out_name'] 'material_out_', 'material_out_name']
extra_kwargs = { extra_kwargs = {
'material_out': {'required': True, 'allow_null': False}} 'material_out': {'required': True, 'allow_null': False}}
class MlogbDetailSerializer(CustomModelSerializer):
material_out_name = serializers.StringRelatedField(
source='material_out', read_only=True)
material_in_name = serializers.StringRelatedField(source='material_in', read_only=True)
class Meta:
model = Mlogb
fields = '__all__'
class MlogSerializer(CustomModelSerializer): class MlogSerializer(CustomModelSerializer):
belong_dept = serializers.CharField( belong_dept = serializers.CharField(
@ -233,6 +243,9 @@ class MlogSerializer(CustomModelSerializer):
shift_name = serializers.CharField(source='shift.name', read_only=True) shift_name = serializers.CharField(source='shift.name', read_only=True)
mlogb = MlogbSerializer( mlogb = MlogbSerializer(
label='多产出件信息', many=True, required=False) label='多产出件信息', many=True, required=False)
mlogb_full = MlogbDetailSerializer(
label='物料信息', many=True, read_only=True
)
handle_users_ = UserSimpleSerializer( handle_users_ = UserSimpleSerializer(
source='handle_users', many=True, read_only=True) source='handle_users', many=True, read_only=True)
equipments_name = serializers.StringRelatedField( equipments_name = serializers.StringRelatedField(
@ -328,6 +341,17 @@ class MlogInitSerializer(CustomModelSerializer):
attrs['material_in'] = route.material_in attrs['material_in'] = route.material_in
attrs['material_out'] = route.material_out attrs['material_out'] = route.material_out
return attrs return attrs
class MlogChangeSerializer(CustomModelSerializer):
class Meta:
model = Mlog
fields = ['id', 'work_end_time', 'handle_user', 'note']
def validate(self, attrs):
if attrs.get('work_end_time', None):
attrs['handle_date'] = localdate(attrs['work_end_time'])
return attrs
class MlogRevertSerializer(serializers.Serializer): class MlogRevertSerializer(serializers.Serializer):
change_reason = serializers.CharField(label='撤回原因') change_reason = serializers.CharField(label='撤回原因')

View File

@ -20,7 +20,7 @@ from .models import SfLog, SfLogExp, StLog, WMaterial, Mlog, Handover, Mlogb, At
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) AttLogSerializer, OtherLogSerializer, MlogInitSerializer, MlogChangeSerializer)
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
@ -170,13 +170,26 @@ class MlogViewSet(CustomModelViewSet):
@action(methods=['post'], detail=False, perms_map={'post': 'mlog.init'}, serializer_class=MlogInitSerializer) @action(methods=['post'], detail=False, perms_map={'post': 'mlog.init'}, serializer_class=MlogInitSerializer)
def init(self, request, *args, **kwargs): def init(self, request, *args, **kwargs):
""" """初始化日志
先初始化创建生产日志
初始化日志
""" """
sr = MlogInitSerializer(data=request.data) sr = MlogInitSerializer(data=request.data)
sr.is_valid(raise_exception=True) sr.is_valid(raise_exception=True)
ins = sr.save() ins = sr.save()
return Response(MlogSerializer(ins).data) return Response(MlogSerializer(ins).data)
@action(methods=['post'], detail=True, perms_map={'post': 'mlog.change'}, serializer_class=MlogChangeSerializer)
def change(self, request, *args, **kwargs):
"""修改日志
修改日志
"""
ins = self.get_object()
sr = MlogChangeSerializer(instance=ins, data=request.data)
sr.is_valid(raise_exception=True)
sr.save()
return Response(MlogSerializer(ins).data)
@action(methods=['post'], detail=True, perms_map={'post': 'mlog.submit'}, serializer_class=Serializer) @action(methods=['post'], detail=True, perms_map={'post': 'mlog.submit'}, serializer_class=Serializer)
def submit(self, request, *args, **kwargs): def submit(self, request, *args, **kwargs):