From b083f1cd8d310f02e31826358a0ac3a727820595 Mon Sep 17 00:00:00 2001 From: caoqianming Date: Mon, 8 Nov 2021 14:47:06 +0800 Subject: [PATCH] wpminit serializer --- hb_server/apps/wpm/models.py | 9 ++++++--- hb_server/apps/wpm/serializers.py | 21 +++++++++++++++++++++ hb_server/apps/wpm/views.py | 4 ++-- 3 files changed, 29 insertions(+), 5 deletions(-) diff --git a/hb_server/apps/wpm/models.py b/hb_server/apps/wpm/models.py index 6325ae2..d1c80d8 100644 --- a/hb_server/apps/wpm/models.py +++ b/hb_server/apps/wpm/models.py @@ -23,10 +23,13 @@ class WProduct(CommonAModel): """ 半成品/成品 """ + WPR_ACT_STATE_DOING = 1 + WPR_ACT_STATE_TOTEST = 2 + WPR_ACT_STATE_OK = 3 act_state_choices=( - (1, '生产中'), - (2, '待检测'), - (3, '已合格') + (WPR_ACT_STATE_DOING, '生产中'), + (WPR_ACT_STATE_TOTEST, '待检测'), + (WPR_ACT_STATE_OK, '已合格') ) number = models.CharField('物品编号', unique=True, null=True, blank=True, max_length=50) m_state = models.ForeignKey(Material, verbose_name='所属物料状态', on_delete=models.CASCADE) diff --git a/hb_server/apps/wpm/serializers.py b/hb_server/apps/wpm/serializers.py index 3226671..5cad10a 100644 --- a/hb_server/apps/wpm/serializers.py +++ b/hb_server/apps/wpm/serializers.py @@ -86,6 +86,27 @@ class WActionInitSerializer(serializers.Serializer): subproduction_plan = serializers.PrimaryKeyRelatedField(queryset=SubProductionPlan.objects.all(), label="子计划ID") wproducts = serializers.ListField(child= serializers.PrimaryKeyRelatedField(queryset=WProduct.objects.all()), label="半成品ID列表", required=False) + + def validate(self, data): + subproduction_plan = data['subproduction_plan'] + step = data['step'] + + stepIds=[i['id'] for i in subproduction_plan.steps] + if step.id not in stepIds: + raise serializers.ValidationError('请选择正确的子工序操作') + + if 'wproducts' in data: + for i in data['wproducts']: + if i.subproduction_plan != subproduction_plan: + raise serializers.ValidationError('半成品所属子计划不一致') + if i.step != step: + raise serializers.ValidationError('半成品所属子工序不一致') + else: + if WProduct.objects.filter(subproduction_plan__production_plan=subproduction_plan.production_plan, + is_deleted=False).exists(): # 存在动态半成品 # 这里后续需要更改比如报废状态 + raise serializers.ValidationError('请选择半成品进行操作') + return data + class DoInputSerializer(serializers.Serializer): id = serializers.PrimaryKeyRelatedField(queryset=WMaterial.objects.all(), label='车间物料ID') diff --git a/hb_server/apps/wpm/views.py b/hb_server/apps/wpm/views.py index ca82a2d..f5a2dd0 100644 --- a/hb_server/apps/wpm/views.py +++ b/hb_server/apps/wpm/views.py @@ -105,7 +105,7 @@ class DoFormSubmit(CreateAPIView, GenericAPIView): 提交操作表单 """ data = request.data - serializer = WActionInitSerializer(data=data) + serializer = WActionSubmitSerializer(data=data, context={'request':self.request}) serializer.is_valid(raise_exception=True) vdata = serializer.validated_data #校验之后的数据 # 创建一个生产操作记录 @@ -140,7 +140,7 @@ class DoFormSubmit(CreateAPIView, GenericAPIView): if ma.is_main: # 计划开始, 第一步切割创建动态产品 wpr = dict(m_state=ma, p_state=vdata['step'], - act_state=1, is_executed=True, remark='', + act_state=WProduct.WPR_ACT_STATE_DOING, is_executed=True, remark='', subproduction_plan=vdata['subproduction_plan'], production_plan=vdata['subproduction_plan'].production_plan) for x in range(i['count_output']):