feat: 如果是主要输入物料且是主批次,才需生成输出

This commit is contained in:
caoqianming 2025-01-07 11:10:07 +08:00
parent f8c72a1487
commit 0e428f6c9d
4 changed files with 31 additions and 7 deletions

View File

@ -0,0 +1,18 @@
# Generated by Django 3.2.12 on 2025-01-07 03:08
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('wpm', '0080_mlogb_mlogb_to'),
]
operations = [
migrations.AddField(
model_name='mlogb',
name='is_main_batchin',
field=models.BooleanField(default=True, verbose_name='是否主输入批次'),
),
]

View File

@ -299,15 +299,19 @@ class Mlogb(BaseModel):
batch = models.TextField('批次号', null=True, blank=True) batch = models.TextField('批次号', null=True, blank=True)
mtask = models.ForeignKey(Mtask, verbose_name='关联任务', mtask = models.ForeignKey(Mtask, verbose_name='关联任务',
on_delete=models.CASCADE, related_name='mlogb_mtask', null=True, blank=True) on_delete=models.CASCADE, related_name='mlogb_mtask', null=True, blank=True)
wm_in = models.ForeignKey(WMaterial, verbose_name='投入物料所在库存', on_delete=models.SET_NULL, null=True, blank=True) wm_in = models.ForeignKey(WMaterial, verbose_name='投入物料所在库存', on_delete=models.SET_NULL, null=True, blank=True)
material_in = models.ForeignKey( material_in = models.ForeignKey(
Material, verbose_name='投入物料', on_delete=models.CASCADE, related_name='mlogb_material_in', null=True, blank=True) Material, verbose_name='投入物料', on_delete=models.CASCADE, related_name='mlogb_material_in',
null=True, blank=True)
is_main_batchin = models.BooleanField('是否主输入批次', default=True)
material_out = models.ForeignKey( material_out = models.ForeignKey(
Material, verbose_name='产物', on_delete=models.CASCADE, related_name='mlogb_material_out', null=True, blank=True) Material, verbose_name='产物', on_delete=models.CASCADE, related_name='mlogb_material_out',
null=True, blank=True)
batch_ofrom = models.TextField('原料批次号', null=True, blank=True) batch_ofrom = models.TextField('原料批次号', null=True, blank=True)
material_ofrom = models.ForeignKey(Material, verbose_name='原料物料', on_delete=models.SET_NULL, null=True, blank=True, related_name='mlogb_mofrom') material_ofrom = models.ForeignKey(Material, verbose_name='原料物料', on_delete=models.SET_NULL,
null=True, blank=True, related_name='mlogb_mofrom')
count_use = models.PositiveIntegerField('领用数量', default=0) count_use = models.PositiveIntegerField('领用数量', default=0)
count_break = models.PositiveIntegerField('加工破碎数', default=0) count_break = models.PositiveIntegerField('加工破碎数', default=0)

View File

@ -877,4 +877,4 @@ class MlogTCreateSerializer(CustomModelSerializer):
class BatchStSerializer(CustomModelSerializer): class BatchStSerializer(CustomModelSerializer):
class Meta: class Meta:
model = BatchSt model = BatchSt
fields = "__all__" fields = "__all__"

View File

@ -484,13 +484,15 @@ class MlogbInViewSet(CreateModelMixin, UpdateModelMixin, DestroyModelMixin, Cust
mlogbin: Mlogb = serializer.save() mlogbin: Mlogb = serializer.save()
mlog:Mlog = mlogbin.mlog mlog:Mlog = mlogbin.mlog
route:Route = mlog.route route:Route = mlog.route
# 创建输出
# 以及mlogbw # 以及mlogbw
if mlogbin.mtask and mlogbin.material_in: if mlogbin.mtask and mlogbin.material_in:
material_in:Material = mlogbin.material_in material_in:Material = mlogbin.material_in
material_out:Material = mlog.material_out material_out:Material = mlog.material_out
if material_out is None: if material_out is None:
raise ParseError('产物不可为空') raise ParseError('产物不可为空')
# 如果是主要输入物料且是主批次,才需生成输出
if route.material_in != material_in and mlogbin.is_main_batchin is False:
return
m_dict = { m_dict = {
"mtask": mlogbin.mtask, "mtask": mlogbin.mtask,
"mlog": mlog, "mlog": mlog,