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

View File

@ -3,7 +3,7 @@ from rest_framework.serializers import ModelSerializer
from apps.em.serializers import EquipmentSimpleSerializer from apps.em.serializers import EquipmentSimpleSerializer
from apps.inm.models import FIFO, FIFOItem, FIFOItemProduct, IProduct, MaterialBatch, WareHouse from apps.inm.models import FIFO, FIFOItem, FIFOItemProduct, IProduct, MaterialBatch, WareHouse
from apps.inm.signals import update_inm 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.mtm.serializers import MaterialSimpleSerializer, RecordFormSimpleSerializer, StepSimpleSerializer
from apps.pm.models import SubProductionPlan, SubProductionProgress from apps.pm.models import SubProductionPlan, SubProductionProgress
@ -239,19 +239,18 @@ class OperationRecordItemSerializer(serializers.ModelSerializer):
model = OperationRecordItem model = OperationRecordItem
fields = ['form_field', 'field_value'] 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): class OperationRecordSubmitSerializer(serializers.ModelSerializer):
record_data = OperationRecordItemSerializer(many=True) record_data = OperationRecordItemSerializer(many=True)
class Meta: class Meta:
model = OperationRecord model = OperationRecord
fields = ['record_data'] fields = ['record_data']
class OperationRecordSerializer(serializers.ModelSerializer):
record_data = OperationRecordItemSerializer(many=True)
class Meta:
model = OperationRecord
fields = ['form', 'record_data']
class OperationWproductListSerializer(serializers.ModelSerializer): class OperationWproductListSerializer(serializers.ModelSerializer):
material_ = MaterialSimpleSerializer(source='material', read_only=True) material_ = MaterialSimpleSerializer(source='material', read_only=True)
subproduction_plan_ = SubproductionPlanSimpleSerializer(source='subproduction_plan', 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 rest_framework.viewsets import GenericViewSet, ModelViewSet
from apps.inm.models import FIFO, FIFOItem, FIFOItemProduct, IProduct, WareHouse from apps.inm.models import FIFO, FIFOItem, FIFOItemProduct, IProduct, WareHouse
from apps.inm.signals import update_inm 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.mtm.serializers import RecordFormDetailSerializer, SubprodctionMaterialListSerializer, TechDocListSerializer
from apps.pm.models import SubProductionPlan, SubProductionProgress from apps.pm.models import SubProductionPlan, SubProductionProgress
from apps.pm.serializers import SubProductionPlanListSerializer, SubProductionPlanUpdateSerializer, SubProductionProgressSerializer from apps.pm.serializers import SubProductionPlanListSerializer, SubProductionPlanUpdateSerializer, SubProductionProgressSerializer
@ -284,12 +284,19 @@ class OperationViewSet(ListModelMixin, RetrieveModelMixin, CreateModelMixin, Upd
return OperationUpdateSerializer return OperationUpdateSerializer
return super().get_serializer_class() 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): def destroy(self, request, *args, **kwargs):
instance = self.get_object() instance = self.get_object()
if instance.is_submited: if instance.is_submited:
raise exceptions.APIException('该操作已提交') raise exceptions.APIException('该操作已提交')
self.perform_destroy(instance) self.perform_destroy(instance)
return Response(status=status.HTTP_204_NO_CONTENT) return Response(status=status.HTTP_204_NO_CONTENT)
@transaction.atomic @transaction.atomic
def create(self, request, *args, **kwargs): def create(self, request, *args, **kwargs):
data = request.data data = request.data
@ -465,6 +472,13 @@ class OperationEquipViewSet(ListModelMixin, DestroyModelMixin, UpdateModelMixin,
if self.action == 'update': if self.action == 'update':
return OperationEquipUpdateSerializer return OperationEquipUpdateSerializer
return super().get_serializer_class() 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() @transaction.atomic()
def destroy(self, request, *args, **kwargs): def destroy(self, request, *args, **kwargs):
instance = self.get_object() instance = self.get_object()
@ -500,7 +514,8 @@ class OperationRecordViewSet(ListModelMixin, DestroyModelMixin, GenericViewSet):
opr = self.get_object() opr = self.get_object()
wrds = [] wrds = []
for m in vdata['record_data']: # 保存记录详情 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_name'] = form_field.field_name
m['field_key'] = form_field.field_key m['field_key'] = form_field.field_key
m['field_type'] = form_field.field_type m['field_type'] = form_field.field_type
@ -529,6 +544,20 @@ class OperationMaterialInputViewSet(ListModelMixin, CreateModelMixin, DestroyMod
if self.action == 'create': if self.action == 'create':
return OperationMaterialCreate1Serailizer return OperationMaterialCreate1Serailizer
return super().get_serializer_class() 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): class OperationMaterialOutputViewSet(ListModelMixin, CreateModelMixin, DestroyModelMixin, GenericViewSet):
""" """
@ -545,6 +574,20 @@ class OperationMaterialOutputViewSet(ListModelMixin, CreateModelMixin, DestroyMo
if self.action == 'create': if self.action == 'create':
return OperationMaterialCreate2Serailizer return OperationMaterialCreate2Serailizer
return super().get_serializer_class() 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): class OperationMaterialToolViewSet(ListModelMixin, CreateModelMixin, DestroyModelMixin, GenericViewSet):
""" """
@ -562,6 +605,20 @@ class OperationMaterialToolViewSet(ListModelMixin, CreateModelMixin, DestroyMode
return OperationMaterialCreate3Serializer return OperationMaterialCreate3Serializer
return super().get_serializer_class() 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): class DoFormInit(CreateAPIView, GenericAPIView):
perms_map={'*':'*'} perms_map={'*':'*'}
serializer_class=OperationInitSerializer serializer_class=OperationInitSerializer