feat: 快速创建日志接口

This commit is contained in:
caoqianming 2025-08-14 11:05:33 +08:00
parent 1d778dbdf0
commit ca3e811b1b
2 changed files with 54 additions and 8 deletions

View File

@ -1374,12 +1374,14 @@ class BatchMgroupSerializer(serializers.Serializer):
class MlogQuickSerializer(CustomModelSerializer):
work_start_time = serializers.DateTimeField(label="开始时间")
work_end_time = serializers.DateTimeField(label="结束时间")
team = serializers.CharField(label="班组ID")
equipment = serializers.CharField(label="设备ID")
handle_date = serializers.DateField(label="操作日期")
work_end_time = serializers.DateTimeField(label="结束时间", required=False)
team = serializers.CharField(label="班组ID", required=False)
equipment = serializers.CharField(label="设备ID", required=False)
wm_in = serializers.CharField(label="输入车间库存ID")
count_use = serializers.IntegerField(label="领用数量")
is_fix = serializers.BooleanField(label="是否返修")
mgroup = serializers.CharField(label="工段ID", required=False)
mgroup = serializers.CharField(label="工段ID")
route = serializers.CharField(label="工艺步骤ID", required=False)
mtask = serializers.CharField(label="任务ID", required=False)
handle_user = serializers.CharField(label="操作人员ID")

View File

@ -26,7 +26,7 @@ from .serializers import (SflogExpSerializer, SfLogSerializer, StLogSerializer,
MlogbDetailSerializer, MlogbInSerializer, MlogbInUpdateSerializer,
MlogbOutUpdateSerializer, FmlogSerializer, FmlogUpdateSerializer, BatchStSerializer,
MlogbwCreateUpdateSerializer, HandoverMgroupSerializer, MlogListSerializer,
MlogbSerializer, MlogUserSerializer, BatchLogSerializer)
MlogbSerializer, MlogUserSerializer, BatchLogSerializer, MlogQuickSerializer)
from .services import mlog_submit, handover_submit, mlog_revert, get_batch_dag, handover_revert
from apps.wpm.services import mlog_submit_validate, generate_new_batch
from apps.wf.models import State, Ticket
@ -383,6 +383,46 @@ class MlogViewSet(CustomModelViewSet):
res[i] = 0
return Response(res)
@action(methods=['post'], detail=False, perms_map={'post': 'mlog.create'}, serializer_class=MlogQuickSerializer)
def quick(self, request, *args, **kwargs):
"""快速创建日志
快速创建日志
"""
sr = MlogQuickSerializer(data=request.data)
sr.is_valid(raise_exception=True)
vdata = sr.validated_data
mloginit_data = {"mgroup": vdata["mgroup"],
"work_start_time": vdata["work_start_time"],
"handle_date": vdata["handle_date"],
"handle_user": vdata["handle_user"],
"is_fix": vdata["is_fix"]}
if "work_end_time" in vdata:
mloginit_data["work_end_time"] = vdata["work_end_time"]
if "route" in vdata:
mloginit_data["route"] = vdata["route"]
if "equipment" in vdata:
mloginit_data["equipment"] = vdata["equipment"]
if "team" in vdata:
mloginit_data["team"] = vdata["team"]
sr_1 = MlogInitSerializer(data=mloginit_data)
sr_1.is_valid(raise_exception=True)
mlog:Mlog = sr_1.save()
# 开始创建消耗产出
mlogbin_data = {
"mlog": mlog.id,
"wm_in": vdata["wm_in"],
"count_use": vdata["count_use"]
}
if "mtask" in vdata:
mlogbin_data["mtask"] = vdata["mtask"]
if "route" in vdata:
mlogbin_data["route"] = vdata["route"]
sr_2 = MlogbInSerializer(data=mlogbin_data)
sr_2.is_valid(raise_exception=True)
mlogbin = sr_2.save()
MlogbInViewSet.p_create_after(mlogbin)
return Response({"mlog": mlog.id})
class HandoverViewSet(CustomModelViewSet):
"""
@ -609,9 +649,8 @@ class MlogbInViewSet(CreateModelMixin, UpdateModelMixin, DestroyModelMixin, Cust
ins:Mlogb = serializer.save()
ins.mlog.cal_mlog_count_from_mlogb()
@transaction.atomic
def perform_create(self, serializer):
mlogbin: Mlogb = serializer.save()
@classmethod
def p_create_after(cls, mlogbin:Mlogb):
mlog:Mlog = mlogbin.mlog
mgroup:Mgroup = mlog.mgroup
route:Route = mlogbin.route
@ -744,6 +783,11 @@ class MlogbInViewSet(CreateModelMixin, UpdateModelMixin, DestroyModelMixin, Cust
raise ParseError("不支持生成产出物料!")
mlog.cal_mlog_count_from_mlogb()
@transaction.atomic
def perform_create(self, serializer):
mlogbin: Mlogb = serializer.save()
MlogbInViewSet.p_create_after(mlogbin)
@classmethod
def gen_number_with_rule(cls, rule, material_out:Material, gen_count=1):
from apps.wpmw.models import Wpr