增加事务操作

This commit is contained in:
caoqianming 2021-11-10 09:00:35 +08:00
parent 537fda2e86
commit 5d5a1e7604
5 changed files with 88 additions and 78 deletions

View File

@ -4,6 +4,7 @@ from apps.inm.models import FIFO, FIFOItem, IProduct, MaterialBatch, WareHouse,I
from apps.system.serializers import UserSimpleSerializer from apps.system.serializers import UserSimpleSerializer
from apps.mtm.serializers import MaterialSimpleSerializer from apps.mtm.serializers import MaterialSimpleSerializer
from django.db import transaction
class WareHouseSerializer(serializers. ModelSerializer): class WareHouseSerializer(serializers. ModelSerializer):
create_by_=UserSimpleSerializer('create_by', read_only=True) create_by_=UserSimpleSerializer('create_by', read_only=True)
@ -91,6 +92,7 @@ class FIFOInPurSerializer(serializers.ModelSerializer):
pass pass
# 创建采购入库 # 创建采购入库
with transaction.atomic():
validated_data['type'] = FIFO.FIFO_TYPE_PUR_IN validated_data['type'] = FIFO.FIFO_TYPE_PUR_IN
obj = FIFO(**validated_data) obj = FIFO(**validated_data)
obj.save() obj.save()

View File

@ -11,6 +11,7 @@ from apps.inm.signals import update_inm
from apps.system.mixins import CreateUpdateModelAMixin, OptimizationMixin from apps.system.mixins import CreateUpdateModelAMixin, OptimizationMixin
from rest_framework.decorators import action from rest_framework.decorators import action
from rest_framework.response import Response from rest_framework.response import Response
from django.db import transaction
# Create your views here. # Create your views here.
class WarehouseViewSet(CreateUpdateModelAMixin, ModelViewSet): class WarehouseViewSet(CreateUpdateModelAMixin, ModelViewSet):
@ -118,6 +119,7 @@ class FIFOViewSet(ListModelMixin, GenericViewSet):
raise APIException('未检验通过, 不可审核') raise APIException('未检验通过, 不可审核')
if obj.is_audited: if obj.is_audited:
raise APIException('该入库记录已审核通过') raise APIException('该入库记录已审核通过')
with transaction.atomic():
obj.is_audited = True obj.is_audited = True
obj.save() obj.save()
update_inm(obj) # 更新库存 update_inm(obj) # 更新库存

View File

@ -6,6 +6,7 @@ from apps.system.mixins import CreateUpdateModelAMixin
from rest_framework.exceptions import APIException from rest_framework.exceptions import APIException
from rest_framework.response import Response from rest_framework.response import Response
from rest_framework import status from rest_framework import status
from django.db import transaction
# Create your views here. # Create your views here.
class StandardViewSet(CreateUpdateModelAMixin, ModelViewSet): class StandardViewSet(CreateUpdateModelAMixin, ModelViewSet):
""" """
@ -66,7 +67,7 @@ class TestRecordViewSet(ModelViewSet):
record_data = vdata.pop('record_data') record_data = vdata.pop('record_data')
if 'is_testok' not in vdata: if 'is_testok' not in vdata:
raise APIException('未填写检测结论') raise APIException('未填写检测结论')
with transaction.atomic():
obj = serializer.save(create_by = self.request.user) obj = serializer.save(create_by = self.request.user)
tris = [] tris = []
for m in record_data: # 保存记录详情 for m in record_data: # 保存记录详情

View File

@ -10,6 +10,7 @@ from django.utils import timezone
from django.utils.translation import gettext_lazy as _ from django.utils.translation import gettext_lazy as _
from apps.system.serializers import UserSimpleSerializer from apps.system.serializers import UserSimpleSerializer
from apps.wpm.models import Operation, WMaterial, WProduct, OperationRecord, OperationRecordItem from apps.wpm.models import Operation, WMaterial, WProduct, OperationRecord, OperationRecordItem
from django.db import transaction
class PickDetailSerializer(serializers.Serializer): class PickDetailSerializer(serializers.Serializer):
material = serializers.PrimaryKeyRelatedField(queryset=Material.objects.all(), label="物料ID") material = serializers.PrimaryKeyRelatedField(queryset=Material.objects.all(), label="物料ID")
@ -36,6 +37,7 @@ class PickSerializer(serializers.Serializer):
except: except:
raise serializers.ValidationError('物料不存在') raise serializers.ValidationError('物料不存在')
# 创建出库记录 # 创建出库记录
with transaction.atomic():
operator = self.context['request'].user operator = self.context['request'].user
validated_data['create_by'] = operator validated_data['create_by'] = operator
validated_data['operator'] = operator validated_data['operator'] = operator

View File

@ -16,6 +16,7 @@ from apps.wpm.models import WMaterial, WProduct, Operation, OperationMaterial, O
from apps.wpm.serializers import OperationDetailSerializer, OperationListSerializer, PickSerializer, OperationInitSerializer, OperationSubmitSerializer, WMaterialListSerializer, WProductListSerializer from apps.wpm.serializers import OperationDetailSerializer, OperationListSerializer, PickSerializer, OperationInitSerializer, OperationSubmitSerializer, WMaterialListSerializer, WProductListSerializer
from rest_framework.response import Response from rest_framework.response import Response
from django.db import transaction
# Create your views here. # Create your views here.
class WPlanViewSet(ListModelMixin, GenericViewSet): class WPlanViewSet(ListModelMixin, GenericViewSet):
""" """
@ -131,6 +132,8 @@ class DoFormInit(CreateAPIView, GenericAPIView):
class DoFormSubmit(CreateAPIView, GenericAPIView): class DoFormSubmit(CreateAPIView, GenericAPIView):
perms_map={'*':'*'} perms_map={'*':'*'}
serializer_class = OperationSubmitSerializer serializer_class = OperationSubmitSerializer
@transaction.atomic
def post(self, request, format=None): def post(self, request, format=None):
""" """
提交操作表单 提交操作表单