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

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

View File

@ -15,6 +15,7 @@ from apps.mtm.serializers import MaterialSimpleSerializer
from django.db import transaction
from django.utils import timezone
from django.core.cache import cache
from django.utils.timezone import localdate
class OtherLogSerializer(CustomModelSerializer):
@ -191,6 +192,15 @@ class MlogbSerializer(CustomModelSerializer):
extra_kwargs = {
'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):
belong_dept = serializers.CharField(
source='mgroup.belong_dept.id', read_only=True)
@ -233,6 +243,9 @@ class MlogSerializer(CustomModelSerializer):
shift_name = serializers.CharField(source='shift.name', read_only=True)
mlogb = MlogbSerializer(
label='多产出件信息', many=True, required=False)
mlogb_full = MlogbDetailSerializer(
label='物料信息', many=True, read_only=True
)
handle_users_ = UserSimpleSerializer(
source='handle_users', many=True, read_only=True)
equipments_name = serializers.StringRelatedField(
@ -329,6 +342,17 @@ class MlogInitSerializer(CustomModelSerializer):
attrs['material_out'] = route.material_out
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):
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,
MlogSerializer, MlogRelatedSerializer, DeptBatchSerializer, HandoverSerializer,
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 apps.utils.thread import MyThread
from apps.monitor.services import create_auditlog, delete_auditlog
@ -170,14 +170,27 @@ class MlogViewSet(CustomModelViewSet):
@action(methods=['post'], detail=False, perms_map={'post': 'mlog.init'}, serializer_class=MlogInitSerializer)
def init(self, request, *args, **kwargs):
"""
先初始化创建生产日志
"""初始化日志
初始化日志
"""
sr = MlogInitSerializer(data=request.data)
sr.is_valid(raise_exception=True)
ins = sr.save()
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)
def submit(self, request, *args, **kwargs):
"""日志提交(变动车间库存)