operation record update
This commit is contained in:
parent
8c1c0fe2cf
commit
275b84d20e
|
@ -108,10 +108,11 @@ class TestRecordDetailSerializer(serializers.ModelSerializer):
|
|||
i['origin_value'] = o_dict[i['field_key']] if i['field_key'] in o_dict else None
|
||||
return super().to_representation(instance)
|
||||
|
||||
class TestRecordItemUpdatexSerializer(serializers.ModelSerializer):
|
||||
class Meta:
|
||||
model = TestRecordItem
|
||||
fields = ['form_field', 'field_value', 'is_hidden', 'is_testok']
|
||||
class TestRecordItemUpdatexSerializer(serializers.Serializer):
|
||||
id = serializers.PrimaryKeyRelatedField(queryset=TestRecordItem.objects.all())
|
||||
field_value = serializers.JSONField(allow_null=True, required=False)
|
||||
is_testok = serializers.BooleanField(allow_null=True, required=False)
|
||||
is_hidden = serializers.BooleanField(default=False)
|
||||
|
||||
class TestRecordUpdateSerializer(serializers.ModelSerializer):
|
||||
record_data = TestRecordItemUpdatexSerializer(many=True, write_only=True)
|
||||
|
@ -123,23 +124,11 @@ class TestRecordUpdateSerializer(serializers.ModelSerializer):
|
|||
record_data = validated_data.pop('record_data')
|
||||
for attr, value in validated_data.items():
|
||||
setattr(instance, attr, value)
|
||||
instance.save(self.context['request'].user)
|
||||
# 更新items
|
||||
items = TestRecordItem.objects.filter(test_record=instance, is_deleted=False)
|
||||
for m in record_data: # 保存或创建记录详情
|
||||
form_field = m['form_field']
|
||||
for i in items:
|
||||
if i.form_field == form_field:
|
||||
# 更新操作
|
||||
i.field_value = m['field_value']
|
||||
i.is_testok = m['is_testok']
|
||||
i.is_hidden = m['is_hidden']
|
||||
i.save()
|
||||
else:
|
||||
TestRecordItem.objects.create(
|
||||
form_field=form_field,
|
||||
field_value=m['field_value'],
|
||||
is_testok = m['is_testok'],
|
||||
is_hidden = m['is_hidden'],
|
||||
test_record=instance)
|
||||
instance.save()
|
||||
for i in record_data:
|
||||
tri = i['id']
|
||||
tri.field_value = i['field_value']
|
||||
tri.is_testok = i['is_testok']
|
||||
tri.is_hidden = i['is_hidden']
|
||||
tri.save()
|
||||
return instance
|
||||
|
|
|
@ -187,9 +187,9 @@ class OperationRecordItem(BaseModel):
|
|||
"""
|
||||
记录表格字段值
|
||||
"""
|
||||
form_field = models.ForeignKey(RecordFormField, verbose_name='关联字段', on_delete=models.CASCADE, db_constraint=False)
|
||||
form_field = models.ForeignKey(RecordFormField, verbose_name='关联字段', on_delete=models.CASCADE, related_name='ori_form_field')
|
||||
field_value = models.JSONField('录入值', default=dict, blank=True)
|
||||
operation_record = models.ForeignKey(OperationRecord, verbose_name='关联的生产记录', on_delete=models.CASCADE)
|
||||
operation_record = models.ForeignKey(OperationRecord, verbose_name='关联的生产记录', on_delete=models.CASCADE, related_name='item_operation_record')
|
||||
|
||||
class OperationEquip(BaseModel):
|
||||
operation = models.ForeignKey(Operation, verbose_name='关联操作', on_delete=models.CASCADE, related_name='oe_operation')
|
||||
|
|
|
@ -244,19 +244,18 @@ class DoOutputSerializer(serializers.Serializer):
|
|||
material = serializers.PrimaryKeyRelatedField(queryset=Material.objects.all(), label='物料ID')
|
||||
count_output = serializers.IntegerField(min_value=0, label='产出数量')
|
||||
|
||||
class OperationRecordItemSerializer(serializers.ModelSerializer):
|
||||
class Meta:
|
||||
model = OperationRecordItem
|
||||
fields = ['form_field', 'field_value']
|
||||
class OperationRecordItemUpdateSerializer(serializers.Serializer):
|
||||
id = serializers.PrimaryKeyRelatedField(queryset=OperationRecordItem.objects.all())
|
||||
field_value = serializers.JSONField(allow_null=True, required=False)
|
||||
|
||||
class OperationRecordSubmitSerializer(serializers.ModelSerializer):
|
||||
record_data = OperationRecordItemSerializer(many=True)
|
||||
record_data = OperationRecordItemUpdateSerializer(many=True)
|
||||
class Meta:
|
||||
model = OperationRecord
|
||||
fields = ['record_data']
|
||||
|
||||
class OperationRecordSerializer(serializers.ModelSerializer):
|
||||
record_data = OperationRecordItemSerializer(many=True)
|
||||
record_data = OperationRecordItemUpdateSerializer(many=True)
|
||||
class Meta:
|
||||
model = OperationRecord
|
||||
fields = ['form', 'record_data']
|
||||
|
@ -392,4 +391,25 @@ class OperationMaterialCreate3Serializer(serializers.ModelSerializer):
|
|||
validated_data['type'] = SubprodctionMaterial.SUB_MA_TYPE_TOOL
|
||||
return super().create(validated_data)
|
||||
|
||||
|
||||
|
||||
class OperationRecordItemSerializer(serializers.ModelSerializer):
|
||||
field_key = serializers.CharField(source='form_field.field_key', read_only=True)
|
||||
field_name = serializers.CharField(source='form_field.field_name', read_only=True)
|
||||
field_type = serializers.CharField(source='form_field.field_type', read_only=True)
|
||||
is_hidden = serializers.BooleanField(source='form_field.is_hidden', read_only=True)
|
||||
help_text = serializers.CharField(source='form_field.help_text', read_only=True)
|
||||
sort = serializers.IntegerField(source='form_field.sort', read_only=True)
|
||||
class Meta:
|
||||
model = OperationRecordItem
|
||||
fields = '__all__'
|
||||
|
||||
class OperationRecordDetailSerializer(serializers.ModelSerializer):
|
||||
form_ = RecordFormSimpleSerializer(source='form', read_only=True)
|
||||
record_data = serializers.SerializerMethodField()
|
||||
create_by_ = UserSimpleSerializer(source='create_by', read_only=True)
|
||||
class Meta:
|
||||
model = OperationRecord
|
||||
fields = '__all__'
|
||||
|
||||
def get_record_data(self, obj):
|
||||
return OperationRecordItemSerializer(instance=obj.item_operation_record.order_by('form_field__sort'), many=True).data
|
|
@ -408,13 +408,8 @@ class OperationViewSet(ListModelMixin, RetrieveModelMixin, CreateModelMixin, Upd
|
|||
opr.operation = op
|
||||
opr.form = i
|
||||
opr.is_filled = False
|
||||
opri_list = []
|
||||
for m in RecordFormField.objects.filter(form=i, is_deleted=False):
|
||||
opri_dict = {}
|
||||
opri_dict['form_field'] = m
|
||||
opri_dict['operation_record'] = opr
|
||||
opri_list.append(OperationRecordItem(**opri_dict))
|
||||
OperationRecordItem.objects.bulk_create(opri_list)
|
||||
OperationRecordItem.objects.create(operation_record=opr, form_field=m)
|
||||
opr.save()
|
||||
# 查询需要使用的生产设备
|
||||
for i in step.equipments.all():
|
||||
|
@ -604,16 +599,6 @@ class OperationRecordViewSet(ListModelMixin, DestroyModelMixin, UpdateModelMixin
|
|||
instance.delete()
|
||||
return Response()
|
||||
|
||||
@action(methods=['get'], detail=True, perms_map={'get':'*'})
|
||||
def init(self, request, pk=None):
|
||||
'''
|
||||
表格初始化
|
||||
'''
|
||||
obj = self.get_object()
|
||||
data = RecordFormDetailSerializer(instance=obj.form).data
|
||||
# 后续加入系统带入数据
|
||||
return Response(data)
|
||||
|
||||
|
||||
def update(self, request, *args, **kwargs):
|
||||
serializer = OperationRecordSubmitSerializer(data=request.data)
|
||||
|
@ -622,21 +607,10 @@ class OperationRecordViewSet(ListModelMixin, DestroyModelMixin, UpdateModelMixin
|
|||
opr = self.get_object()
|
||||
if opr.operation.is_submited:
|
||||
raise exceptions.APIException('操作已提交不可修改')
|
||||
|
||||
# 已存在信息
|
||||
items = OperationRecordItem.objects.filter(operation_record=opr, is_deleted=False)
|
||||
for m in vdata['record_data']: # 保存或创建记录详情
|
||||
form_field = m['form_field']
|
||||
for i in items:
|
||||
if i.form_field == form_field:
|
||||
# 更新操作
|
||||
i.field_value = m['field_value']
|
||||
i.save()
|
||||
else:
|
||||
OperationRecordItem.objects.create(
|
||||
form_field=form_field,
|
||||
field_value=m['field_value'],
|
||||
operation_record=opr)
|
||||
for i in vdata['record_data']:
|
||||
ori = i['id']
|
||||
ori.field_value = i['field_value']
|
||||
ori.save()
|
||||
opr.is_filled = True
|
||||
opr.update_by = request.user
|
||||
opr.save()
|
||||
|
|
Loading…
Reference in New Issue