检测bug

This commit is contained in:
caoqianming 2021-11-16 16:56:44 +08:00
parent acad79288d
commit 3df4c68f47
2 changed files with 28 additions and 3 deletions

View File

@ -1,6 +1,6 @@
from rest_framework import serializers, exceptions
from rest_framework.serializers import ModelSerializer
from apps.inm.models import FIFO, FIFOItem, MaterialBatch, WareHouse
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
from apps.mtm.serializers import MaterialSimpleSerializer, StepSimpleSerializer
@ -18,6 +18,8 @@ class PickDetailSerializer(serializers.Serializer):
batch = serializers.CharField(label='物料批次', allow_blank=True)
warehouse = serializers.PrimaryKeyRelatedField(queryset=WareHouse.objects.all(), label="仓库ID")
pick_count = serializers.IntegerField(label="领料数量", required=False)
iproducts = serializers.ListField(child=serializers.PrimaryKeyRelatedField(queryset=IProduct.objects.all()), label='库存半成品ID',
required=False)
class PickSerializer(serializers.Serializer):
subproduction_plan=serializers.PrimaryKeyRelatedField(queryset=SubProductionPlan.objects.all(), label="子计划ID")
@ -38,16 +40,33 @@ class PickSerializer(serializers.Serializer):
# except:
# raise exceptions.ValidationError('物料不存在')
# 创建出库记录
with transaction.atomic():
fifo = FIFO.objects.create(type=FIFO.FIFO_TYPE_DO_OUT, inout_date=timezone.now(), create_by=self.context['request'].user)
for i in picks:
# 更新出库详情
i['count'] = i.pop('pick_count', 0)
# 是否勾选每一个
if 'iproducts' in i and len(i['iproducts'])>0:
i['count'] = len(i['iproducts'])
isLowLevel = True
if i['count']>0:
i['fifo'] = fifo
i['is_testok'] = True # 默认检测合格
i['subproduction_plan'] = sp
FIFOItem.objects.create(**i)
fifoitem = FIFOItem.objects.create(**i)
# 创建再下一个层级
if isLowLevel:
mls = []
for m in i['iproducts']:
ml = {}
ml['material'] = m.material
ml['number'] = m.number
ml['wproduct'] = m.wproduct
ml['fifoitem'] = fifoitem
mls.append(FIFOItemProduct(**ml))
FIFOItemProduct.objects.bulk_create(mls)
# 更新车间物料
wm, _ = WMaterial.objects.get_or_create(material=i['material'], batch=i['batch'], \
subproduction_plan=sp,defaults={
@ -62,6 +81,12 @@ class PickSerializer(serializers.Serializer):
spp = SubProductionProgress.objects.get(material=i['material'], subproduction_plan=sp, type=1)
spp.count_pick = spp.count_pick + i['count']
spp.save()
# 更新半成品表
wproducts = WProduct.objects.filter(pk__in=[x.wproduct for x in i['iproducts']])
first_step = Step.objects.get(pk=sp.steps[0].id)
wproducts.update(p_state=first_step, is_executed=False,
act_state=WProduct.WPR_ACT_STATE_DOING, is_hidden=False, warehouse=None,
subproduction_plan=sp, production_plan=sp.production_plan)
sp.is_picked=True
sp.state = 3 #生产中
sp.state_date_real = timezone.now() #实际开工日期

View File

@ -168,7 +168,7 @@ class WProductViewSet(ListModelMixin, GenericViewSet):
wproduct.save()
# 更新子计划状态
# 获取该子计划主产品数, 更新进度
main_count = WProduct.objects.filter(subproduction_plan=wproduct.subproduction_plan, act_stae=WProduct.WPR_ACT_STATE_OK).count()
main_count = WProduct.objects.filter(subproduction_plan=wproduct.subproduction_plan, act_state=WProduct.WPR_ACT_STATE_OK).count()
instance = SubProductionProgress.objects.get(subproduction_plan=wproduct.subproduction_plan,
is_main=True, type=SubprodctionMaterial.SUB_MA_TYPE_OUT)
instance.count_real = main_count