Merge branch 'develop' of https://e.coding.net/ctcdevteam/hberp/hberp into develop

This commit is contained in:
shijing 2021-11-23 13:59:20 +08:00
commit 6eace8e842
4 changed files with 92 additions and 10 deletions

View File

@ -0,0 +1,23 @@
# Generated by Django 3.2.9 on 2021-11-23 02:52
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('mtm', '0035_auto_20211117_1637'),
]
operations = [
migrations.AddField(
model_name='recordformfield',
name='draw_template',
field=models.CharField(blank=True, max_length=200, null=True, verbose_name='绘图模板'),
),
migrations.AlterField(
model_name='recordformfield',
name='field_type',
field=models.CharField(choices=[('string', '字符串'), ('int', '整型'), ('float', '浮点'), ('boolean', '布尔'), ('date', '日期'), ('time', '时间'), ('datetime', '日期时间'), ('radio', '单选'), ('checkbox', '多选'), ('select', '单选下拉'), ('selects', '多选下拉'), ('textarea', '文本域'), ('draw', '绘图')], max_length=50, verbose_name='类型'),
),
]

View File

@ -131,6 +131,7 @@ class RecordFormField(CommonAModel):
('select', '单选下拉'),
('selects', '多选下拉'),
('textarea', '文本域'),
('draw', '绘图')
)
high_rule_choices = (
(1, '小于'),
@ -161,6 +162,8 @@ class RecordFormField(CommonAModel):
is_hidden = models.BooleanField('是否隐藏', default=False)
parent = models.ForeignKey('self', verbose_name='', on_delete=models.CASCADE, null=True, blank=True)
draw_template = models.CharField('绘图模板', max_length=200, null=True, blank=True)
class Meta:
verbose_name = '记录表格字段'

View File

@ -3,7 +3,7 @@ from rest_framework.serializers import ModelSerializer
from apps.em.serializers import EquipmentSimpleSerializer
from apps.inm.models import FIFO, FIFOItem, FIFOItemProduct, IProduct, MaterialBatch, WareHouse
from apps.inm.signals import update_inm
from apps.mtm.models import Material, RecordForm, Step, SubprodctionMaterial
from apps.mtm.models import Material, RecordForm, RecordFormField, Step, SubprodctionMaterial
from apps.mtm.serializers import MaterialSimpleSerializer, RecordFormSimpleSerializer, StepSimpleSerializer
from apps.pm.models import SubProductionPlan, SubProductionProgress
@ -239,19 +239,18 @@ class OperationRecordItemSerializer(serializers.ModelSerializer):
model = OperationRecordItem
fields = ['form_field', 'field_value']
class OperationRecordSerializer(serializers.ModelSerializer):
record_data = OperationRecordItemSerializer(many=True)
class Meta:
model = OperationRecord
fields = ['form', 'record_data']
class OperationRecordSubmitSerializer(serializers.ModelSerializer):
record_data = OperationRecordItemSerializer(many=True)
class Meta:
model = OperationRecord
fields = ['record_data']
class OperationRecordSerializer(serializers.ModelSerializer):
record_data = OperationRecordItemSerializer(many=True)
class Meta:
model = OperationRecord
fields = ['form', 'record_data']
class OperationWproductListSerializer(serializers.ModelSerializer):
material_ = MaterialSimpleSerializer(source='material', read_only=True)
subproduction_plan_ = SubproductionPlanSimpleSerializer(source='subproduction_plan', read_only=True)

View File

@ -7,7 +7,7 @@ from rest_framework.views import APIView
from rest_framework.viewsets import GenericViewSet, ModelViewSet
from apps.inm.models import FIFO, FIFOItem, FIFOItemProduct, IProduct, WareHouse
from apps.inm.signals import update_inm
from apps.mtm.models import Material, RecordForm, Step, SubprodctionMaterial, TechDoc
from apps.mtm.models import Material, RecordForm, RecordFormField, Step, SubprodctionMaterial, TechDoc
from apps.mtm.serializers import RecordFormDetailSerializer, SubprodctionMaterialListSerializer, TechDocListSerializer
from apps.pm.models import SubProductionPlan, SubProductionProgress
from apps.pm.serializers import SubProductionPlanListSerializer, SubProductionPlanUpdateSerializer, SubProductionProgressSerializer
@ -284,12 +284,19 @@ class OperationViewSet(ListModelMixin, RetrieveModelMixin, CreateModelMixin, Upd
return OperationUpdateSerializer
return super().get_serializer_class()
def update(self, request, *args, **kwargs):
instance = self.get_object()
if instance.is_submited:
raise exceptions.APIException('该操作已提交')
return super().update(request, *args, **kwargs)
def destroy(self, request, *args, **kwargs):
instance = self.get_object()
if instance.is_submited:
raise exceptions.APIException('该操作已提交')
self.perform_destroy(instance)
return Response(status=status.HTTP_204_NO_CONTENT)
@transaction.atomic
def create(self, request, *args, **kwargs):
data = request.data
@ -465,6 +472,13 @@ class OperationEquipViewSet(ListModelMixin, DestroyModelMixin, UpdateModelMixin,
if self.action == 'update':
return OperationEquipUpdateSerializer
return super().get_serializer_class()
def update(self, request, *args, **kwargs):
instance = self.get_object()
if instance.operation.is_submited:
raise exceptions.APIException('该操作已提交')
return super().update(request, *args, **kwargs)
@transaction.atomic()
def destroy(self, request, *args, **kwargs):
instance = self.get_object()
@ -500,7 +514,8 @@ class OperationRecordViewSet(ListModelMixin, DestroyModelMixin, GenericViewSet):
opr = self.get_object()
wrds = []
for m in vdata['record_data']: # 保存记录详情
form_field = m['form_field']
form_field = RecordFormField.objects.get(pk=m['form_field'])
m['form_field'] = form_field
m['field_name'] = form_field.field_name
m['field_key'] = form_field.field_key
m['field_type'] = form_field.field_type
@ -529,6 +544,20 @@ class OperationMaterialInputViewSet(ListModelMixin, CreateModelMixin, DestroyMod
if self.action == 'create':
return OperationMaterialCreate1Serailizer
return super().get_serializer_class()
def create(self, request, *args, **kwargs):
instance = self.get_object()
if instance.operation.is_submited:
raise exceptions.APIException('该操作已提交')
return super().create(request, *args, **kwargs)
@transaction.atomic()
def destroy(self, request, *args, **kwargs):
instance = self.get_object()
if instance.operation.is_submited:
raise exceptions.APIException('该操作已提交')
instance.delete()
return Response()
class OperationMaterialOutputViewSet(ListModelMixin, CreateModelMixin, DestroyModelMixin, GenericViewSet):
"""
@ -545,6 +574,20 @@ class OperationMaterialOutputViewSet(ListModelMixin, CreateModelMixin, DestroyMo
if self.action == 'create':
return OperationMaterialCreate2Serailizer
return super().get_serializer_class()
def create(self, request, *args, **kwargs):
instance = self.get_object()
if instance.operation.is_submited:
raise exceptions.APIException('该操作已提交')
return super().create(request, *args, **kwargs)
@transaction.atomic()
def destroy(self, request, *args, **kwargs):
instance = self.get_object()
if instance.operation.is_submited:
raise exceptions.APIException('该操作已提交')
instance.delete()
return Response()
class OperationMaterialToolViewSet(ListModelMixin, CreateModelMixin, DestroyModelMixin, GenericViewSet):
"""
@ -562,6 +605,20 @@ class OperationMaterialToolViewSet(ListModelMixin, CreateModelMixin, DestroyMode
return OperationMaterialCreate3Serializer
return super().get_serializer_class()
def create(self, request, *args, **kwargs):
instance = self.get_object()
if instance.operation.is_submited:
raise exceptions.APIException('该操作已提交')
return super().create(request, *args, **kwargs)
@transaction.atomic()
def destroy(self, request, *args, **kwargs):
instance = self.get_object()
if instance.operation.is_submited:
raise exceptions.APIException('该操作已提交')
instance.delete()
return Response()
class DoFormInit(CreateAPIView, GenericAPIView):
perms_map={'*':'*'}
serializer_class=OperationInitSerializer