diff --git a/apps/wpm/serializers.py b/apps/wpm/serializers.py index aea4fb3a..336baab8 100644 --- a/apps/wpm/serializers.py +++ b/apps/wpm/serializers.py @@ -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") \ No newline at end of file diff --git a/apps/wpm/views.py b/apps/wpm/views.py index 8c74f595..14334d31 100644 --- a/apps/wpm/views.py +++ b/apps/wpm/views.py @@ -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