tesrecord update bug
This commit is contained in:
parent
3dc67158fc
commit
0a487d4277
|
@ -75,8 +75,8 @@ class FIFOItem(BaseModel):
|
||||||
"""
|
"""
|
||||||
出入库详细条目
|
出入库详细条目
|
||||||
"""
|
"""
|
||||||
is_tested = models.BooleanField('是否已检测', default=False)
|
is_tested = models.BooleanField('是否已检验', default=False)
|
||||||
is_testok = models.BooleanField('是否检测合格', default=False)
|
is_testok = models.BooleanField('是否检验合格', default=False)
|
||||||
warehouse = models.ForeignKey(WareHouse, on_delete=models.CASCADE, verbose_name='仓库')
|
warehouse = models.ForeignKey(WareHouse, on_delete=models.CASCADE, verbose_name='仓库')
|
||||||
material = models.ForeignKey(Material, verbose_name='物料类型', on_delete=models.CASCADE)
|
material = models.ForeignKey(Material, verbose_name='物料类型', on_delete=models.CASCADE)
|
||||||
count = models.PositiveIntegerField('数量', default=0)
|
count = models.PositiveIntegerField('数量', default=0)
|
||||||
|
|
|
@ -87,14 +87,14 @@ class FIFOItemViewSet(ListModelMixin, DestroyModelMixin, GenericViewSet):
|
||||||
@action(methods=['post'], detail=False, perms_map={'post':'*'}, serializer_class=InmTestRecordCreateSerializer)
|
@action(methods=['post'], detail=False, perms_map={'post':'*'}, serializer_class=InmTestRecordCreateSerializer)
|
||||||
def test(self, request, pk=None):
|
def test(self, request, pk=None):
|
||||||
"""
|
"""
|
||||||
检测
|
检验
|
||||||
"""
|
"""
|
||||||
serializer = InmTestRecordCreateSerializer(data=request.data)
|
serializer = InmTestRecordCreateSerializer(data=request.data)
|
||||||
serializer.is_valid(raise_exception=True)
|
serializer.is_valid(raise_exception=True)
|
||||||
vdata = serializer.validated_data
|
vdata = serializer.validated_data
|
||||||
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():
|
with transaction.atomic():
|
||||||
obj = serializer.save(create_by = self.request.user)
|
obj = serializer.save(create_by = self.request.user)
|
||||||
tris = []
|
tris = []
|
||||||
|
@ -111,7 +111,7 @@ class FIFOItemViewSet(ListModelMixin, DestroyModelMixin, GenericViewSet):
|
||||||
tris.append(TestRecordItem(**m))
|
tris.append(TestRecordItem(**m))
|
||||||
TestRecordItem.objects.bulk_create(tris)
|
TestRecordItem.objects.bulk_create(tris)
|
||||||
|
|
||||||
# 如果检测合格
|
# 如果检验合格
|
||||||
if obj.fifo_item:
|
if obj.fifo_item:
|
||||||
obj.fifo_item.is_testok = True if obj.is_testok else False
|
obj.fifo_item.is_testok = True if obj.is_testok else False
|
||||||
obj.fifo_item.is_tested = True
|
obj.fifo_item.is_tested = True
|
||||||
|
|
|
@ -86,4 +86,4 @@ class TestRecordItem(BaseModel):
|
||||||
is_hidden = models.BooleanField('是否隐藏', default=False)
|
is_hidden = models.BooleanField('是否隐藏', default=False)
|
||||||
is_testok = models.BooleanField('是否合格', null=True, blank=True)
|
is_testok = models.BooleanField('是否合格', null=True, blank=True)
|
||||||
is_testok_robot = models.BooleanField('自动判定的是否合格', null=True, blank=True)
|
is_testok_robot = models.BooleanField('自动判定的是否合格', null=True, blank=True)
|
||||||
test_record = models.ForeignKey(TestRecord, verbose_name='关联的检测记录', on_delete=models.CASCADE, related_name='item_test_record')
|
test_record = models.ForeignKey(TestRecord, verbose_name='关联的检验记录', on_delete=models.CASCADE, related_name='item_test_record')
|
|
@ -106,13 +106,12 @@ class TestRecordDetailSerializer(serializers.ModelSerializer):
|
||||||
return super().to_representation(instance)
|
return super().to_representation(instance)
|
||||||
|
|
||||||
class TestRecordUpdateSerializer(serializers.ModelSerializer):
|
class TestRecordUpdateSerializer(serializers.ModelSerializer):
|
||||||
record_data = TestRecordItemUpdateSerializer(source='item_test_record', many=True)
|
record_data = TestRecordItemUpdateSerializer(many=True)
|
||||||
class Meta:
|
class Meta:
|
||||||
model = TestRecord
|
model = TestRecord
|
||||||
fields = ['is_testok', 'record_data']
|
fields = ['is_testok', 'record_data']
|
||||||
|
|
||||||
def update(self, instance, validated_data):
|
def update(self, instance, validated_data):
|
||||||
with transaction.atomic():
|
|
||||||
record_data = validated_data.pop('record_data')
|
record_data = validated_data.pop('record_data')
|
||||||
for attr, value in validated_data.items():
|
for attr, value in validated_data.items():
|
||||||
setattr(instance, attr, value)
|
setattr(instance, attr, value)
|
||||||
|
|
|
@ -50,7 +50,7 @@ class TestItemViewSet(CreateUpdateModelAMixin, ModelViewSet):
|
||||||
|
|
||||||
class TestRecordViewSet(ListModelMixin, UpdateModelMixin, RetrieveModelMixin, DestroyModelMixin, GenericViewSet):
|
class TestRecordViewSet(ListModelMixin, UpdateModelMixin, RetrieveModelMixin, DestroyModelMixin, GenericViewSet):
|
||||||
"""
|
"""
|
||||||
检测记录
|
检验记录
|
||||||
"""
|
"""
|
||||||
perms_map = {'*': '*'}
|
perms_map = {'*': '*'}
|
||||||
queryset = TestRecord.objects.select_related('fifo_item', 'form').prefetch_related('item_test_record').all()
|
queryset = TestRecord.objects.select_related('fifo_item', 'form').prefetch_related('item_test_record').all()
|
||||||
|
@ -67,13 +67,19 @@ class TestRecordViewSet(ListModelMixin, UpdateModelMixin, RetrieveModelMixin, De
|
||||||
return TestRecordUpdateSerializer
|
return TestRecordUpdateSerializer
|
||||||
return super().get_serializer_class()
|
return super().get_serializer_class()
|
||||||
|
|
||||||
|
def update(self, request, *args, **kwargs):
|
||||||
|
obj = self.get_object()
|
||||||
|
if obj.is_submited:
|
||||||
|
raise exceptions.APIException('该记录已提交不可编辑')
|
||||||
|
return super().update(request, *args, **kwargs)
|
||||||
|
|
||||||
def destroy(self, request, *args, **kwargs):
|
def destroy(self, request, *args, **kwargs):
|
||||||
obj = self.get_object()
|
obj = self.get_object()
|
||||||
if obj.is_submited:
|
if obj.is_submited:
|
||||||
raise exceptions.APIException('该记录已提交不可删除')
|
raise exceptions.APIException('该记录已提交不可删除')
|
||||||
return super().destroy(request, *args, **kwargs)
|
return super().destroy(request, *args, **kwargs)
|
||||||
|
|
||||||
@action(methods=['post'], detail=True, perms_map={'post':'*'}, serializer_class=serializers.Serializer)
|
@action(methods=['post'], detail=True, perms_map={'post':'*'}, serializer_class=TestRecordUpdateSerializer)
|
||||||
def submit(self, request, pk=None):
|
def submit(self, request, pk=None):
|
||||||
obj = self.get_object()
|
obj = self.get_object()
|
||||||
# 校验是否有未填项目
|
# 校验是否有未填项目
|
||||||
|
@ -90,7 +96,7 @@ class TestRecordViewSet(ListModelMixin, UpdateModelMixin, RetrieveModelMixin, De
|
||||||
# vdata = serializer.validated_data
|
# vdata = serializer.validated_data
|
||||||
# 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():
|
# with transaction.atomic():
|
||||||
# obj = serializer.save(create_by = self.request.user)
|
# obj = serializer.save(create_by = self.request.user)
|
||||||
# tris = []
|
# tris = []
|
||||||
|
@ -107,7 +113,7 @@ class TestRecordViewSet(ListModelMixin, UpdateModelMixin, RetrieveModelMixin, De
|
||||||
# tris.append(TestRecordItem(**m))
|
# tris.append(TestRecordItem(**m))
|
||||||
# TestRecordItem.objects.bulk_create(tris)
|
# TestRecordItem.objects.bulk_create(tris)
|
||||||
|
|
||||||
# # 如果检测合格
|
# # 如果检验合格
|
||||||
# if obj.fifo_item:
|
# if obj.fifo_item:
|
||||||
# obj.fifo_item.is_testok = True if obj.is_testok else False
|
# obj.fifo_item.is_testok = True if obj.is_testok else False
|
||||||
# obj.fifo_item.is_tested = True
|
# obj.fifo_item.is_tested = True
|
||||||
|
|
|
@ -65,7 +65,7 @@ class PickSerializer(serializers.Serializer):
|
||||||
if isLowLevel:
|
if isLowLevel:
|
||||||
iproducts = i.pop('iproducts')
|
iproducts = i.pop('iproducts')
|
||||||
i['fifo'] = fifo
|
i['fifo'] = fifo
|
||||||
i['is_testok'] = True # 默认检测合格
|
i['is_testok'] = True # 默认检验合格
|
||||||
i['subproduction_plan'] = sp
|
i['subproduction_plan'] = sp
|
||||||
fifoitem = FIFOItem.objects.create(**i)
|
fifoitem = FIFOItem.objects.create(**i)
|
||||||
# 创建再下一个层级
|
# 创建再下一个层级
|
||||||
|
|
|
@ -39,7 +39,7 @@ class WpmServies(object):
|
||||||
@classmethod
|
@classmethod
|
||||||
def update_wproduct_by_test(cls, test:TestRecord, user:User):
|
def update_wproduct_by_test(cls, test:TestRecord, user:User):
|
||||||
"""
|
"""
|
||||||
根据检测结果更新玻璃及相关状态
|
根据检验结果更新玻璃及相关状态
|
||||||
"""
|
"""
|
||||||
is_testok = test.is_testok
|
is_testok = test.is_testok
|
||||||
wproduct = test.wproduct
|
wproduct = test.wproduct
|
||||||
|
|
|
@ -223,7 +223,7 @@ class WProductViewSet(ListModelMixin, GenericViewSet):
|
||||||
@transaction.atomic
|
@transaction.atomic
|
||||||
def test(self, request, pk=None):
|
def test(self, request, pk=None):
|
||||||
"""
|
"""
|
||||||
检测记录提交
|
检验记录提交
|
||||||
"""
|
"""
|
||||||
serializer = WpmTestRecordCreateSerializer(data=request.data)
|
serializer = WpmTestRecordCreateSerializer(data=request.data)
|
||||||
serializer.is_valid(raise_exception=True)
|
serializer.is_valid(raise_exception=True)
|
||||||
|
@ -234,7 +234,7 @@ class WProductViewSet(ListModelMixin, GenericViewSet):
|
||||||
WProduct.WPR_ACT_STATE_TORETEST, WProduct.WPR_ACT_STATE_TOFINALTEST, WProduct.WPR_ACT_STATE_TOCOMBTEST]:
|
WProduct.WPR_ACT_STATE_TORETEST, WProduct.WPR_ACT_STATE_TOFINALTEST, WProduct.WPR_ACT_STATE_TOCOMBTEST]:
|
||||||
raise exceptions.APIException('该产品当前状态不可检验')
|
raise exceptions.APIException('该产品当前状态不可检验')
|
||||||
if 'is_testok' not in vdata:
|
if 'is_testok' not in vdata:
|
||||||
raise exceptions.APIException('未填写检测结论')
|
raise exceptions.APIException('未填写检验结论')
|
||||||
|
|
||||||
savedict = dict(create_by = self.request.user,
|
savedict = dict(create_by = self.request.user,
|
||||||
material=wproduct.material, number=wproduct.number, subproduction_plan=wproduct.subproduction_plan, step=wproduct.step)
|
material=wproduct.material, number=wproduct.number, subproduction_plan=wproduct.subproduction_plan, step=wproduct.step)
|
||||||
|
|
Loading…
Reference in New Issue