车间操作自定义表单的可update

This commit is contained in:
caoqianming 2021-12-16 09:46:24 +08:00
parent bab19a707d
commit 759062e3a2
7 changed files with 107 additions and 22 deletions

View File

@ -0,0 +1,23 @@
# Generated by Django 3.2.9 on 2021-12-16 01:45
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('inm', '0022_auto_20211208_1408'),
]
operations = [
migrations.AlterField(
model_name='fifoitem',
name='is_tested',
field=models.BooleanField(default=False, verbose_name='是否已检验'),
),
migrations.AlterField(
model_name='fifoitem',
name='is_testok',
field=models.BooleanField(default=False, verbose_name='是否检验合格'),
),
]

View File

@ -0,0 +1,37 @@
# Generated by Django 3.2.9 on 2021-12-16 01:45
from django.db import migrations, models
import django.db.models.deletion
class Migration(migrations.Migration):
dependencies = [
('mtm', '0042_alter_recordformfield_field_type'),
('qm', '0019_auto_20211214_1504'),
]
operations = [
migrations.RemoveField(
model_name='testrecorditem',
name='field_key',
),
migrations.RemoveField(
model_name='testrecorditem',
name='field_name',
),
migrations.RemoveField(
model_name='testrecorditem',
name='field_type',
),
migrations.AlterField(
model_name='testrecorditem',
name='form_field',
field=models.ForeignKey(db_constraint=False, on_delete=django.db.models.deletion.CASCADE, to='mtm.recordformfield', verbose_name='关联自定义表格字段'),
),
migrations.AlterField(
model_name='testrecorditem',
name='test_record',
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='item_test_record', to='qm.testrecord', verbose_name='关联的检验记录'),
),
]

View File

@ -79,9 +79,6 @@ class TestRecordItem(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, db_constraint=False)
field_name = models.CharField('字段名', max_length=50)
field_key = models.CharField('字段标识', max_length=50)
field_type = models.CharField('字段类型', choices=RecordForm.type_choices, max_length=50)
field_value = models.JSONField('录入值', default=dict, blank=True) field_value = models.JSONField('录入值', default=dict, blank=True)
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)

View File

@ -48,6 +48,9 @@ class TestRecordItemUpdateSerializer(serializers.ModelSerializer):
class TestRecordItemSerializer(serializers.ModelSerializer): class TestRecordItemSerializer(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)
need_judge = serializers.BooleanField(source='form_field.need_judge', read_only=True) need_judge = serializers.BooleanField(source='form_field.need_judge', read_only=True)
rule_expression = serializers.JSONField(source='form_field.rule_expression', read_only=True) rule_expression = serializers.JSONField(source='form_field.rule_expression', read_only=True)
display_expression = serializers.JSONField(source='form_field.display_expression', read_only=True) display_expression = serializers.JSONField(source='form_field.display_expression', read_only=True)

View File

@ -0,0 +1,29 @@
# Generated by Django 3.2.9 on 2021-12-16 01:45
from django.db import migrations
class Migration(migrations.Migration):
dependencies = [
('wpm', '0032_auto_20211214_1245'),
]
operations = [
migrations.RemoveField(
model_name='operationrecorditem',
name='field_key',
),
migrations.RemoveField(
model_name='operationrecorditem',
name='field_name',
),
migrations.RemoveField(
model_name='operationrecorditem',
name='field_type',
),
migrations.RemoveField(
model_name='operationrecorditem',
name='sort',
),
]

View File

@ -188,11 +188,7 @@ 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, db_constraint=False)
field_name = models.CharField('字段名', max_length=50)
field_key = models.CharField('字段标识', max_length=50)
field_type = models.CharField('字段类型', choices=RecordForm.type_choices, max_length=50)
field_value = models.JSONField('录入值', default=dict, blank=True) field_value = models.JSONField('录入值', default=dict, blank=True)
sort = models.IntegerField('排序号', default=1)
operation_record = models.ForeignKey(OperationRecord, verbose_name='关联的生产记录', on_delete=models.CASCADE) operation_record = models.ForeignKey(OperationRecord, verbose_name='关联的生产记录', on_delete=models.CASCADE)
class OperationEquip(BaseModel): class OperationEquip(BaseModel):

View File

@ -251,10 +251,6 @@ class WProductViewSet(ListModelMixin, GenericViewSet):
obj = serializer.save(**savedict) obj = serializer.save(**savedict)
tris = [] tris = []
for m in record_data: # 保存记录详情 for m in record_data: # 保存记录详情
form_field = m['form_field']
m['field_name'] = form_field.field_name
m['field_key'] = form_field.field_key
m['field_type'] = form_field.field_type
m['is_testok'] = m['is_testok'] if 'is_testok' in m else None m['is_testok'] = m['is_testok'] if 'is_testok' in m else None
m['is_hidden'] = m['is_hidden'] if 'is_hidden' in m else None m['is_hidden'] = m['is_hidden'] if 'is_hidden' in m else None
m['test_record'] = obj m['test_record'] = obj
@ -532,7 +528,7 @@ class OperationViewSet(ListModelMixin, RetrieveModelMixin, CreateModelMixin, Upd
WProduct.objects.create(**wpr) WProduct.objects.create(**wpr)
elif step.type == Step.STEP_TYPE_COMB: elif step.type == Step.STEP_TYPE_COMB:
oms_w = OperationMaterial.objects.filter(operation=op, type=SubprodctionMaterial.SUB_MA_TYPE_OUT, oms_w = OperationMaterial.objects.filter(operation=op, type=SubprodctionMaterial.SUB_MA_TYPE_OUT,
subproduction_progress__ismain=True) subproduction_progress__is_main=True)
if len(oms_w) == 1: if len(oms_w) == 1:
oms_w = oms_w[0] oms_w = oms_w[0]
# 校验单片数量是否正确, 暂时未写 # 校验单片数量是否正确, 暂时未写
@ -655,17 +651,21 @@ 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('操作已提交不可修改')
wrds = []
for m in vdata['record_data']: # 保存记录详情 # 已存在信息
items = OperationRecordItem.objects.filter(operation=opr, is_deleted=False)
for m in vdata['record_data']: # 保存或创建记录详情
form_field = m['form_field'] form_field = m['form_field']
m['form_field'] = form_field for i in items:
m['field_name'] = form_field.field_name if i.form_field == form_field:
m['field_key'] = form_field.field_key # 更新操作
m['field_type'] = form_field.field_type i.field_value = m['field_value']
m['sort'] = form_field.sort i.save()
m['operation_record'] = opr else:
wrds.append(OperationRecordItem(**m)) OperationRecordItem.objects.create(
OperationRecordItem.objects.bulk_create(wrds) form_field=form_field,
field_value=m['field_value'],
operation_record=opr)
opr.is_filled = True opr.is_filled = True
opr.save() opr.save()
return Response() return Response()