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): class MlogQuickSerializer(CustomModelSerializer):
work_start_time = serializers.DateTimeField(label="开始时间") work_start_time = serializers.DateTimeField(label="开始时间")
work_end_time = serializers.DateTimeField(label="结束时间") handle_date = serializers.DateField(label="操作日期")
team = serializers.CharField(label="班组ID") work_end_time = serializers.DateTimeField(label="结束时间", required=False)
equipment = serializers.CharField(label="设备ID") team = serializers.CharField(label="班组ID", required=False)
equipment = serializers.CharField(label="设备ID", required=False)
wm_in = serializers.CharField(label="输入车间库存ID") wm_in = serializers.CharField(label="输入车间库存ID")
count_use = serializers.IntegerField(label="领用数量") count_use = serializers.IntegerField(label="领用数量")
is_fix = serializers.BooleanField(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) route = serializers.CharField(label="工艺步骤ID", required=False)
mtask = 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, MlogbDetailSerializer, MlogbInSerializer, MlogbInUpdateSerializer,
MlogbOutUpdateSerializer, FmlogSerializer, FmlogUpdateSerializer, BatchStSerializer, MlogbOutUpdateSerializer, FmlogSerializer, FmlogUpdateSerializer, BatchStSerializer,
MlogbwCreateUpdateSerializer, HandoverMgroupSerializer, MlogListSerializer, 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 .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.wpm.services import mlog_submit_validate, generate_new_batch
from apps.wf.models import State, Ticket from apps.wf.models import State, Ticket
@ -383,6 +383,46 @@ class MlogViewSet(CustomModelViewSet):
res[i] = 0 res[i] = 0
return Response(res) 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): class HandoverViewSet(CustomModelViewSet):
""" """
@ -609,9 +649,8 @@ class MlogbInViewSet(CreateModelMixin, UpdateModelMixin, DestroyModelMixin, Cust
ins:Mlogb = serializer.save() ins:Mlogb = serializer.save()
ins.mlog.cal_mlog_count_from_mlogb() ins.mlog.cal_mlog_count_from_mlogb()
@transaction.atomic @classmethod
def perform_create(self, serializer): def p_create_after(cls, mlogbin:Mlogb):
mlogbin: Mlogb = serializer.save()
mlog:Mlog = mlogbin.mlog mlog:Mlog = mlogbin.mlog
mgroup:Mgroup = mlog.mgroup mgroup:Mgroup = mlog.mgroup
route:Route = mlogbin.route route:Route = mlogbin.route
@ -744,6 +783,11 @@ class MlogbInViewSet(CreateModelMixin, UpdateModelMixin, DestroyModelMixin, Cust
raise ParseError("不支持生成产出物料!") raise ParseError("不支持生成产出物料!")
mlog.cal_mlog_count_from_mlogb() mlog.cal_mlog_count_from_mlogb()
@transaction.atomic
def perform_create(self, serializer):
mlogbin: Mlogb = serializer.save()
MlogbInViewSet.p_create_after(mlogbin)
@classmethod @classmethod
def gen_number_with_rule(cls, rule, material_out:Material, gen_count=1): def gen_number_with_rule(cls, rule, material_out:Material, gen_count=1):
from apps.wpmw.models import Wpr from apps.wpmw.models import Wpr