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
|
i['origin_value'] = o_dict[i['field_key']] if i['field_key'] in o_dict else None
|
||||||
return super().to_representation(instance)
|
return super().to_representation(instance)
|
||||||
|
|
||||||
class TestRecordItemUpdatexSerializer(serializers.ModelSerializer):
|
class TestRecordItemUpdatexSerializer(serializers.Serializer):
|
||||||
class Meta:
|
id = serializers.PrimaryKeyRelatedField(queryset=TestRecordItem.objects.all())
|
||||||
model = TestRecordItem
|
field_value = serializers.JSONField(allow_null=True, required=False)
|
||||||
fields = ['form_field', 'field_value', 'is_hidden', 'is_testok']
|
is_testok = serializers.BooleanField(allow_null=True, required=False)
|
||||||
|
is_hidden = serializers.BooleanField(default=False)
|
||||||
|
|
||||||
class TestRecordUpdateSerializer(serializers.ModelSerializer):
|
class TestRecordUpdateSerializer(serializers.ModelSerializer):
|
||||||
record_data = TestRecordItemUpdatexSerializer(many=True, write_only=True)
|
record_data = TestRecordItemUpdatexSerializer(many=True, write_only=True)
|
||||||
|
@ -123,23 +124,11 @@ class TestRecordUpdateSerializer(serializers.ModelSerializer):
|
||||||
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)
|
||||||
instance.save(self.context['request'].user)
|
instance.save()
|
||||||
# 更新items
|
for i in record_data:
|
||||||
items = TestRecordItem.objects.filter(test_record=instance, is_deleted=False)
|
tri = i['id']
|
||||||
for m in record_data: # 保存或创建记录详情
|
tri.field_value = i['field_value']
|
||||||
form_field = m['form_field']
|
tri.is_testok = i['is_testok']
|
||||||
for i in items:
|
tri.is_hidden = i['is_hidden']
|
||||||
if i.form_field == form_field:
|
tri.save()
|
||||||
# 更新操作
|
|
||||||
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)
|
|
||||||
return instance
|
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)
|
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):
|
class OperationEquip(BaseModel):
|
||||||
operation = models.ForeignKey(Operation, verbose_name='关联操作', on_delete=models.CASCADE, related_name='oe_operation')
|
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')
|
material = serializers.PrimaryKeyRelatedField(queryset=Material.objects.all(), label='物料ID')
|
||||||
count_output = serializers.IntegerField(min_value=0, label='产出数量')
|
count_output = serializers.IntegerField(min_value=0, label='产出数量')
|
||||||
|
|
||||||
class OperationRecordItemSerializer(serializers.ModelSerializer):
|
class OperationRecordItemUpdateSerializer(serializers.Serializer):
|
||||||
class Meta:
|
id = serializers.PrimaryKeyRelatedField(queryset=OperationRecordItem.objects.all())
|
||||||
model = OperationRecordItem
|
field_value = serializers.JSONField(allow_null=True, required=False)
|
||||||
fields = ['form_field', 'field_value']
|
|
||||||
|
|
||||||
class OperationRecordSubmitSerializer(serializers.ModelSerializer):
|
class OperationRecordSubmitSerializer(serializers.ModelSerializer):
|
||||||
record_data = OperationRecordItemSerializer(many=True)
|
record_data = OperationRecordItemUpdateSerializer(many=True)
|
||||||
class Meta:
|
class Meta:
|
||||||
model = OperationRecord
|
model = OperationRecord
|
||||||
fields = ['record_data']
|
fields = ['record_data']
|
||||||
|
|
||||||
class OperationRecordSerializer(serializers.ModelSerializer):
|
class OperationRecordSerializer(serializers.ModelSerializer):
|
||||||
record_data = OperationRecordItemSerializer(many=True)
|
record_data = OperationRecordItemUpdateSerializer(many=True)
|
||||||
class Meta:
|
class Meta:
|
||||||
model = OperationRecord
|
model = OperationRecord
|
||||||
fields = ['form', 'record_data']
|
fields = ['form', 'record_data']
|
||||||
|
@ -392,4 +391,25 @@ class OperationMaterialCreate3Serializer(serializers.ModelSerializer):
|
||||||
validated_data['type'] = SubprodctionMaterial.SUB_MA_TYPE_TOOL
|
validated_data['type'] = SubprodctionMaterial.SUB_MA_TYPE_TOOL
|
||||||
return super().create(validated_data)
|
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.operation = op
|
||||||
opr.form = i
|
opr.form = i
|
||||||
opr.is_filled = False
|
opr.is_filled = False
|
||||||
opri_list = []
|
|
||||||
for m in RecordFormField.objects.filter(form=i, is_deleted=False):
|
for m in RecordFormField.objects.filter(form=i, is_deleted=False):
|
||||||
opri_dict = {}
|
OperationRecordItem.objects.create(operation_record=opr, form_field=m)
|
||||||
opri_dict['form_field'] = m
|
|
||||||
opri_dict['operation_record'] = opr
|
|
||||||
opri_list.append(OperationRecordItem(**opri_dict))
|
|
||||||
OperationRecordItem.objects.bulk_create(opri_list)
|
|
||||||
opr.save()
|
opr.save()
|
||||||
# 查询需要使用的生产设备
|
# 查询需要使用的生产设备
|
||||||
for i in step.equipments.all():
|
for i in step.equipments.all():
|
||||||
|
@ -604,16 +599,6 @@ class OperationRecordViewSet(ListModelMixin, DestroyModelMixin, UpdateModelMixin
|
||||||
instance.delete()
|
instance.delete()
|
||||||
return Response()
|
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):
|
def update(self, request, *args, **kwargs):
|
||||||
serializer = OperationRecordSubmitSerializer(data=request.data)
|
serializer = OperationRecordSubmitSerializer(data=request.data)
|
||||||
|
@ -622,21 +607,10 @@ class OperationRecordViewSet(ListModelMixin, DestroyModelMixin, UpdateModelMixin
|
||||||
opr = self.get_object()
|
opr = self.get_object()
|
||||||
if opr.operation.is_submited:
|
if opr.operation.is_submited:
|
||||||
raise exceptions.APIException('操作已提交不可修改')
|
raise exceptions.APIException('操作已提交不可修改')
|
||||||
|
for i in vdata['record_data']:
|
||||||
# 已存在信息
|
ori = i['id']
|
||||||
items = OperationRecordItem.objects.filter(operation_record=opr, is_deleted=False)
|
ori.field_value = i['field_value']
|
||||||
for m in vdata['record_data']: # 保存或创建记录详情
|
ori.save()
|
||||||
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)
|
|
||||||
opr.is_filled = True
|
opr.is_filled = True
|
||||||
opr.update_by = request.user
|
opr.update_by = request.user
|
||||||
opr.save()
|
opr.save()
|
||||||
|
|
Loading…
Reference in New Issue