feat: wpm 取消 transaction
This commit is contained in:
parent
90b7e2087b
commit
527e6c0fc2
|
@ -738,7 +738,6 @@ class BatchSt(BaseModel):
|
|||
# return ins, True
|
||||
|
||||
@classmethod
|
||||
@transaction.atomic
|
||||
def init_dag(cls, batch:str):
|
||||
"""
|
||||
更新批次数据关系链(初步)
|
||||
|
|
|
@ -885,7 +885,6 @@ class MlogbwCreateUpdateSerializer(CustomModelSerializer):
|
|||
ftest_sr.update(instance=ftest, validated_data=ftest_data)
|
||||
return mlogbw
|
||||
|
||||
@transaction.atomic
|
||||
def create(self, validated_data):
|
||||
wpr: Wpr = validated_data.get("wpr", None)
|
||||
if wpr:
|
||||
|
@ -898,7 +897,6 @@ class MlogbwCreateUpdateSerializer(CustomModelSerializer):
|
|||
mlogbw = self.save_ftest(mlogbw, ftest_data)
|
||||
return mlogbw
|
||||
|
||||
@transaction.atomic
|
||||
def update(self, instance, validated_data):
|
||||
validated_data.pop("mlogb")
|
||||
ftest_data = validated_data.pop("ftest", None)
|
||||
|
@ -1078,7 +1076,6 @@ class MlogbOutUpdateSerializer(CustomModelSerializer):
|
|||
# else:
|
||||
# raise ParseError("mlogbdefect仅支持批次件")
|
||||
# return ins
|
||||
@transaction.atomic
|
||||
def update(self, instance, validated_data):
|
||||
mlogbdefect = validated_data.pop("mlogbdefect", None)
|
||||
with transaction.atomic():
|
||||
|
|
|
@ -37,7 +37,6 @@ from django.db.models import Q
|
|||
from apps.utils.tools import convert_ordereddict, update_dict
|
||||
from django.db.models import Count
|
||||
from datetime import datetime, timedelta
|
||||
from apps.utils.lock import lock_model_record_d_method
|
||||
from apps.em.models import Equipment
|
||||
from django.db.models import Prefetch
|
||||
from drf_yasg.utils import swagger_auto_schema
|
||||
|
@ -155,7 +154,6 @@ class WMaterialViewSet(ListModelMixin, CustomGenericViewSet):
|
|||
return queryset.exclude(state=WMaterial.WM_SCRAP)
|
||||
|
||||
@action(methods=['post'], detail=False, perms_map={'post': '*'}, serializer_class=DeptBatchSerializer)
|
||||
@transaction.atomic
|
||||
def batchs(self, request):
|
||||
"""获取车间的批次号(废弃)
|
||||
|
||||
|
@ -282,7 +280,6 @@ class MlogViewSet(CustomModelViewSet):
|
|||
item["mlogbw_number_list"] = wpr_dict.get(item["id"], None)
|
||||
return data
|
||||
|
||||
@lock_model_record_d_method(Mlog)
|
||||
def perform_destroy(self, instance):
|
||||
if instance.submit_time is not None:
|
||||
raise ParseError('日志已提交不可变动')
|
||||
|
@ -295,7 +292,6 @@ class MlogViewSet(CustomModelViewSet):
|
|||
instance.delete()
|
||||
Ftest.objects.filter(id__in=ftestIds).delete()
|
||||
|
||||
@transaction.atomic
|
||||
def perform_update(self, serializer):
|
||||
ins = serializer.instance
|
||||
if ins.ticket and ins.ticket.state != State.STATE_TYPE_START:
|
||||
|
@ -318,7 +314,9 @@ class MlogViewSet(CustomModelViewSet):
|
|||
ins = sr.save()
|
||||
return Response(MlogSerializer(ins).data)
|
||||
|
||||
@action(methods=['post'], detail=True, perms_map={'post': 'mlog.update'}, serializer_class=MlogChangeSerializer)
|
||||
@action(methods=['post'], detail=True,
|
||||
perms_map={'post': 'mlog.update'},
|
||||
serializer_class=MlogChangeSerializer, requires_transaction=True)
|
||||
def change(self, request, *args, **kwargs):
|
||||
"""修改日志
|
||||
|
||||
|
@ -334,7 +332,8 @@ class MlogViewSet(CustomModelViewSet):
|
|||
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, requires_transaction=True)
|
||||
def submit(self, request, *args, **kwargs):
|
||||
"""日志提交(变动车间库存)
|
||||
|
||||
|
@ -349,20 +348,11 @@ class MlogViewSet(CustomModelViewSet):
|
|||
if p.mlog_need_ticket:
|
||||
raise ParseError('该日志需要审批!')
|
||||
mlog_submit_validate(ins)
|
||||
with transaction.atomic():
|
||||
updated_count = Mlog.objects.filter(id=ins.id, submit_time__isnull=True).update(
|
||||
submit_time=now, submit_user=request.user, update_by=request.user)
|
||||
if updated_count == 1:
|
||||
mlog_submit(ins, self.request.user, now)
|
||||
else:
|
||||
raise ParseError('记录正在处理中,请稍后再试')
|
||||
|
||||
vdata_new = MlogSerializer(ins).data
|
||||
# create_auditlog('submit', ins, vdata_new,
|
||||
# vdata_old, now, self.request.user)
|
||||
mlog_submit(ins, self.request.user, now)
|
||||
vdata_new = MlogSerializer(ins).data
|
||||
return Response(vdata_new)
|
||||
|
||||
@action(methods=['post'], detail=True, perms_map={'post': 'mlog.submit'}, serializer_class=MlogRevertSerializer)
|
||||
@action(methods=['post'], detail=True, perms_map={'post': 'mlog.submit'}, serializer_class=MlogRevertSerializer, requires_transaction=True)
|
||||
def revert(self, request, *args, **kwargs):
|
||||
"""撤回日志提交
|
||||
|
||||
|
@ -377,20 +367,10 @@ class MlogViewSet(CustomModelViewSet):
|
|||
if user != ins.submit_user:
|
||||
raise ParseError('非提交人不可撤销!')
|
||||
now = timezone.now()
|
||||
with transaction.atomic():
|
||||
updated_count = Mlog.objects.filter(id=ins.id, submit_time__isnull=False).update(
|
||||
submit_time=None, update_time=now, submit_user=None, update_by=request.user)
|
||||
if updated_count == 1:
|
||||
mlog_revert(ins, user, now)
|
||||
else:
|
||||
raise ParseError('记录正在处理中,请稍后再试')
|
||||
|
||||
# create_auditlog('revert', ins, {}, {}, now, user,
|
||||
# request.data.get('change_reason', ''))
|
||||
mlog_revert(ins, user, now)
|
||||
return Response(MlogSerializer(instance=ins).data)
|
||||
|
||||
@action(methods=['post'], detail=False, perms_map={'post': '*'}, serializer_class=MlogRelatedSerializer)
|
||||
@transaction.atomic
|
||||
def related_first(self, request, *args, **kwargs):
|
||||
"""获取相关任务的第一道工序日志
|
||||
|
||||
|
@ -453,8 +433,7 @@ class MlogViewSet(CustomModelViewSet):
|
|||
res[i] = 0
|
||||
return Response(res)
|
||||
|
||||
@action(methods=['post'], detail=False, perms_map={'post': 'mlog.create'}, serializer_class=MlogQuickSerializer)
|
||||
@transaction.atomic
|
||||
@action(methods=['post'], detail=False, perms_map={'post': 'mlog.create'}, serializer_class=MlogQuickSerializer, requires_transaction=True)
|
||||
def quick(self, request, *args, **kwargs):
|
||||
"""快速创建日志
|
||||
|
||||
|
@ -508,8 +487,7 @@ class HandoverViewSet(CustomModelViewSet):
|
|||
'material__number', 'material__specification', 'batch', 'material__model', 'b_handover__batch', "new_batch", "wm__batch"]
|
||||
prefetch_related_fields = ["b_handover"]
|
||||
|
||||
@lock_model_record_d_method(Handover)
|
||||
def perform_destroy(self, instance:Handover):
|
||||
def perform_destroy(self, instance):
|
||||
user = self.request.user
|
||||
if instance.submit_time is not None:
|
||||
raise ParseError('该交接记录已提交不可删除')
|
||||
|
@ -520,9 +498,8 @@ class HandoverViewSet(CustomModelViewSet):
|
|||
ticket.delete()
|
||||
instance.delete()
|
||||
|
||||
@transaction.atomic
|
||||
def perform_update(self, serializer):
|
||||
ins:Handover = self.get_object()
|
||||
ins:Handover = serializer.instance
|
||||
if ins.submit_time is not None:
|
||||
raise ParseError('该交接记录已提交!')
|
||||
ticket:Ticket = ins.ticket
|
||||
|
@ -530,8 +507,7 @@ class HandoverViewSet(CustomModelViewSet):
|
|||
raise ParseError("该交接记录存在审批,不可修改")
|
||||
serializer.save()
|
||||
|
||||
@action(methods=['post'], detail=False, perms_map={'post': 'handover.create'}, serializer_class=HandoverSerializer)
|
||||
@transaction.atomic
|
||||
@action(methods=['post'], detail=False, perms_map={'post': 'handover.create'}, serializer_class=HandoverSerializer, requires_transaction=True)
|
||||
def create_and_submit(self, request, *args, **kwargs):
|
||||
user = request.user
|
||||
sr = HandoverSerializer(data=request.data, context={'request': request})
|
||||
|
@ -546,8 +522,7 @@ class HandoverViewSet(CustomModelViewSet):
|
|||
handover_submit(ins, user, None)
|
||||
return Response({"id": ins.id})
|
||||
|
||||
@action(methods=['post'], detail=True, perms_map={'post': 'handover.submit'}, serializer_class=Serializer)
|
||||
@transaction.atomic
|
||||
@action(methods=['post'], detail=True, perms_map={'post': 'handover.submit'}, serializer_class=Serializer, requires_transaction=True)
|
||||
def submit(self, request, *args, **kwargs):
|
||||
"""交接记录提交(变动车间库存)
|
||||
|
||||
|
@ -567,8 +542,7 @@ class HandoverViewSet(CustomModelViewSet):
|
|||
handover_submit(ins, user, None)
|
||||
return Response()
|
||||
|
||||
@action(methods=['post'], detail=True, perms_map={'post': 'handover.submit'}, serializer_class=Serializer)
|
||||
@transaction.atomic
|
||||
@action(methods=['post'], detail=True, perms_map={'post': 'handover.submit'}, serializer_class=Serializer, requires_transaction=True)
|
||||
def revert(self, request, *args, **kwargs):
|
||||
"""交接记录撤回(变动车间库存)
|
||||
|
||||
|
@ -580,7 +554,6 @@ class HandoverViewSet(CustomModelViewSet):
|
|||
return Response()
|
||||
|
||||
@action(methods=['post'], detail=False, perms_map={'post': '*'}, serializer_class=HandoverMgroupSerializer)
|
||||
@transaction.atomic
|
||||
def mgroups(self, request, *args, **kwargs):
|
||||
"""获取可交接到的工段
|
||||
|
||||
|
@ -602,8 +575,7 @@ class HandoverViewSet(CustomModelViewSet):
|
|||
m_qs = m_qs.filter(process=None)
|
||||
return Response(list(m_qs.values('id', 'name').distinct()))
|
||||
|
||||
@action(methods=['post'], detail=False, perms_map={'post': 'handover.create'}, serializer_class=GenHandoverWmSerializer)
|
||||
@transaction.atomic
|
||||
@action(methods=['post'], detail=False, perms_map={'post': 'handover.create'}, serializer_class=GenHandoverWmSerializer, requires_transaction=True)
|
||||
def gen_by_wm(self, request):
|
||||
"""从车间库存生成交接记录(废弃)
|
||||
|
||||
|
@ -632,8 +604,7 @@ class HandoverViewSet(CustomModelViewSet):
|
|||
)
|
||||
return Response({'handover': handover.id})
|
||||
|
||||
@action(methods=['post'], detail=False, perms_map={'post': 'handover.create'}, serializer_class=GenHandoverSerializer)
|
||||
@transaction.atomic
|
||||
@action(methods=['post'], detail=False, perms_map={'post': 'handover.create'}, serializer_class=GenHandoverSerializer, requires_transaction=True)
|
||||
def gen_by_mlog(self, request):
|
||||
"""从生产日志生成交接记录(废弃)
|
||||
|
||||
|
@ -708,7 +679,6 @@ class MlogbInViewSet(CreateModelMixin, UpdateModelMixin, DestroyModelMixin, Cust
|
|||
serializer_class = MlogbInSerializer
|
||||
update_serializer_class = MlogbInUpdateSerializer
|
||||
|
||||
@transaction.atomic
|
||||
def perform_destroy(self, instance):
|
||||
ins: Mlogb = instance
|
||||
if ins.mlog.submit_time is not None:
|
||||
|
@ -716,7 +686,6 @@ class MlogbInViewSet(CreateModelMixin, UpdateModelMixin, DestroyModelMixin, Cust
|
|||
ins.delete()
|
||||
ins.mlog.cal_mlog_count_from_mlogb()
|
||||
|
||||
@transaction.atomic
|
||||
def perform_update(self, serializer):
|
||||
ins:Mlogb = serializer.save()
|
||||
ins.mlog.cal_mlog_count_from_mlogb()
|
||||
|
@ -883,7 +852,7 @@ 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)
|
||||
|
@ -925,7 +894,6 @@ class MlogbOutViewSet(UpdateModelMixin, CustomGenericViewSet):
|
|||
queryset = Mlogb.objects.filter(material_out__isnull=False)
|
||||
serializer_class = MlogbOutUpdateSerializer
|
||||
|
||||
@transaction.atomic
|
||||
def perform_update(self, serializer):
|
||||
material_out = serializer.validated_data.get('material_out')
|
||||
if material_out and material_out.tracking == Material.MA_TRACKING_SINGLE:
|
||||
|
@ -985,7 +953,6 @@ class MlogbwViewSet(CustomModelViewSet):
|
|||
# raise ParseError('请指定所属消耗/产出明细')
|
||||
# return super().filter_queryset(queryset)
|
||||
|
||||
@transaction.atomic
|
||||
def perform_create(self, serializer):
|
||||
ins:Mlogbw = serializer.save()
|
||||
mlog:Mlog = None
|
||||
|
@ -1061,7 +1028,6 @@ class MlogbwViewSet(CustomModelViewSet):
|
|||
raise ParseError("该个号不可产生该批")
|
||||
mlog.cal_mlog_count_from_mlogb()
|
||||
|
||||
@transaction.atomic
|
||||
def perform_update(self, serializer):
|
||||
mlogbw = serializer.save()
|
||||
if isinstance(mlogbw, list):
|
||||
|
@ -1079,7 +1045,6 @@ class MlogbwViewSet(CustomModelViewSet):
|
|||
mlog = mlogb.mlog
|
||||
mlog.cal_mlog_count_from_mlogb()
|
||||
|
||||
@transaction.atomic
|
||||
def perform_destroy(self, instance:Mlogbw):
|
||||
mlogb:Mlogb = instance.mlogb
|
||||
if mlogb.material_out is not None and instance.wpr is not None:
|
||||
|
@ -1109,8 +1074,7 @@ class MlogbwViewSet(CustomModelViewSet):
|
|||
mlog = mlogb.mlog
|
||||
mlog.cal_mlog_count_from_mlogb()
|
||||
|
||||
@action(methods=['post'], detail=False, perms_map={'post': 'mlog.update'}, serializer_class=MlogbwStartTestSerializer)
|
||||
@transaction.atomic
|
||||
@action(methods=['post'], detail=False, perms_map={'post': 'mlog.update'}, serializer_class=MlogbwStartTestSerializer, requires_transaction=True)
|
||||
def start_test(self, request, *args, **kwargs):
|
||||
sr = MlogbwStartTestSerializer(data=request.data)
|
||||
sr.is_valid(raise_exception=True)
|
||||
|
@ -1143,8 +1107,7 @@ class BatchLogViewSet(ListModelMixin, CustomGenericViewSet):
|
|||
serializer_class = BatchLogSerializer
|
||||
select_related_fields = ["source", "target"]
|
||||
|
||||
@action(methods=['post'], detail=False, perms_map={'post': '*'}, serializer_class=Serializer)
|
||||
@transaction.atomic
|
||||
@action(methods=['post'], detail=False, perms_map={'post': '*'}, serializer_class=Serializer, requires_transaction=True)
|
||||
def dag(self, request):
|
||||
"""
|
||||
获取该批次的DAG图数据
|
||||
|
|
|
@ -97,8 +97,7 @@ class WprViewSet(CustomListModelMixin, RetrieveModelMixin, ComplexQueryMixin, Cu
|
|||
return Response({"number_out_last": None})
|
||||
|
||||
|
||||
@action(methods=['post'], detail=False, perms_map={'post': '*'}, serializer_class=WproutListSerializer)
|
||||
@transaction.atomic
|
||||
@action(methods=['post'], detail=False, perms_map={'post': '*'}, serializer_class=WproutListSerializer, requires_transaction=True)
|
||||
def assgin_number_out(self, request, *args, **kwargs):
|
||||
"""分配出库对外编号
|
||||
|
||||
|
|
Loading…
Reference in New Issue