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_testok = models.BooleanField('是否检测合格', default=False)
|
||||
is_tested = models.BooleanField('是否已检验', default=False)
|
||||
is_testok = models.BooleanField('是否检验合格', default=False)
|
||||
warehouse = models.ForeignKey(WareHouse, on_delete=models.CASCADE, verbose_name='仓库')
|
||||
material = models.ForeignKey(Material, verbose_name='物料类型', on_delete=models.CASCADE)
|
||||
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)
|
||||
def test(self, request, pk=None):
|
||||
"""
|
||||
检测
|
||||
检验
|
||||
"""
|
||||
serializer = InmTestRecordCreateSerializer(data=request.data)
|
||||
serializer.is_valid(raise_exception=True)
|
||||
vdata = serializer.validated_data
|
||||
record_data = vdata.pop('record_data')
|
||||
if 'is_testok' not in vdata:
|
||||
raise APIException('未填写检测结论')
|
||||
raise APIException('未填写检验结论')
|
||||
with transaction.atomic():
|
||||
obj = serializer.save(create_by = self.request.user)
|
||||
tris = []
|
||||
|
@ -111,7 +111,7 @@ class FIFOItemViewSet(ListModelMixin, DestroyModelMixin, GenericViewSet):
|
|||
tris.append(TestRecordItem(**m))
|
||||
TestRecordItem.objects.bulk_create(tris)
|
||||
|
||||
# 如果检测合格
|
||||
# 如果检验合格
|
||||
if obj.fifo_item:
|
||||
obj.fifo_item.is_testok = True if obj.is_testok else False
|
||||
obj.fifo_item.is_tested = True
|
||||
|
|
|
@ -86,4 +86,4 @@ class TestRecordItem(BaseModel):
|
|||
is_hidden = models.BooleanField('是否隐藏', default=False)
|
||||
is_testok = 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,16 +106,15 @@ class TestRecordDetailSerializer(serializers.ModelSerializer):
|
|||
return super().to_representation(instance)
|
||||
|
||||
class TestRecordUpdateSerializer(serializers.ModelSerializer):
|
||||
record_data = TestRecordItemUpdateSerializer(source='item_test_record', many=True)
|
||||
record_data = TestRecordItemUpdateSerializer(many=True)
|
||||
class Meta:
|
||||
model = TestRecord
|
||||
fields = ['is_testok', 'record_data']
|
||||
|
||||
def update(self, instance, validated_data):
|
||||
with transaction.atomic():
|
||||
record_data = validated_data.pop('record_data')
|
||||
for attr, value in validated_data.items():
|
||||
setattr(instance, attr, value)
|
||||
instance.save()
|
||||
self.record_data.save()
|
||||
return instance
|
||||
record_data = validated_data.pop('record_data')
|
||||
for attr, value in validated_data.items():
|
||||
setattr(instance, attr, value)
|
||||
instance.save()
|
||||
self.record_data.save()
|
||||
return instance
|
||||
|
|
|
@ -50,7 +50,7 @@ class TestItemViewSet(CreateUpdateModelAMixin, ModelViewSet):
|
|||
|
||||
class TestRecordViewSet(ListModelMixin, UpdateModelMixin, RetrieveModelMixin, DestroyModelMixin, GenericViewSet):
|
||||
"""
|
||||
检测记录
|
||||
检验记录
|
||||
"""
|
||||
perms_map = {'*': '*'}
|
||||
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 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):
|
||||
obj = self.get_object()
|
||||
if obj.is_submited:
|
||||
raise exceptions.APIException('该记录已提交不可删除')
|
||||
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):
|
||||
obj = self.get_object()
|
||||
# 校验是否有未填项目
|
||||
|
@ -90,7 +96,7 @@ class TestRecordViewSet(ListModelMixin, UpdateModelMixin, RetrieveModelMixin, De
|
|||
# vdata = serializer.validated_data
|
||||
# record_data = vdata.pop('record_data')
|
||||
# if 'is_testok' not in vdata:
|
||||
# raise APIException('未填写检测结论')
|
||||
# raise APIException('未填写检验结论')
|
||||
# with transaction.atomic():
|
||||
# obj = serializer.save(create_by = self.request.user)
|
||||
# tris = []
|
||||
|
@ -107,7 +113,7 @@ class TestRecordViewSet(ListModelMixin, UpdateModelMixin, RetrieveModelMixin, De
|
|||
# tris.append(TestRecordItem(**m))
|
||||
# TestRecordItem.objects.bulk_create(tris)
|
||||
|
||||
# # 如果检测合格
|
||||
# # 如果检验合格
|
||||
# if obj.fifo_item:
|
||||
# obj.fifo_item.is_testok = True if obj.is_testok else False
|
||||
# obj.fifo_item.is_tested = True
|
||||
|
|
|
@ -65,7 +65,7 @@ class PickSerializer(serializers.Serializer):
|
|||
if isLowLevel:
|
||||
iproducts = i.pop('iproducts')
|
||||
i['fifo'] = fifo
|
||||
i['is_testok'] = True # 默认检测合格
|
||||
i['is_testok'] = True # 默认检验合格
|
||||
i['subproduction_plan'] = sp
|
||||
fifoitem = FIFOItem.objects.create(**i)
|
||||
# 创建再下一个层级
|
||||
|
|
|
@ -39,7 +39,7 @@ class WpmServies(object):
|
|||
@classmethod
|
||||
def update_wproduct_by_test(cls, test:TestRecord, user:User):
|
||||
"""
|
||||
根据检测结果更新玻璃及相关状态
|
||||
根据检验结果更新玻璃及相关状态
|
||||
"""
|
||||
is_testok = test.is_testok
|
||||
wproduct = test.wproduct
|
||||
|
|
|
@ -223,7 +223,7 @@ class WProductViewSet(ListModelMixin, GenericViewSet):
|
|||
@transaction.atomic
|
||||
def test(self, request, pk=None):
|
||||
"""
|
||||
检测记录提交
|
||||
检验记录提交
|
||||
"""
|
||||
serializer = WpmTestRecordCreateSerializer(data=request.data)
|
||||
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]:
|
||||
raise exceptions.APIException('该产品当前状态不可检验')
|
||||
if 'is_testok' not in vdata:
|
||||
raise exceptions.APIException('未填写检测结论')
|
||||
raise exceptions.APIException('未填写检验结论')
|
||||
|
||||
savedict = dict(create_by = self.request.user,
|
||||
material=wproduct.material, number=wproduct.number, subproduction_plan=wproduct.subproduction_plan, step=wproduct.step)
|
||||
|
|
Loading…
Reference in New Issue