feat: 支持个号转批号的配置
This commit is contained in:
parent
c5a7a19f74
commit
0ff9aa1e5a
|
@ -0,0 +1,18 @@
|
|||
# Generated by Django 3.2.12 on 2025-04-28 06:42
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('mtm', '0056_mgroup_batch_append_code'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AddField(
|
||||
model_name='process',
|
||||
name='number_to_batch',
|
||||
field=models.BooleanField(default=False, verbose_name='个号转批号'),
|
||||
),
|
||||
]
|
|
@ -16,6 +16,7 @@ class Process(CommonBModel):
|
|||
PRO_NORMAL = 10
|
||||
PRO_DIV = 20
|
||||
PRO_MERGE = 30
|
||||
|
||||
name = models.CharField('工序名称', max_length=100)
|
||||
type = models.PositiveSmallIntegerField("工序类型", default=PRO_PROD, choices=((PRO_PROD, '生产工序'), (PRO_TEST, '检验工序')))
|
||||
mtype = models.PositiveSmallIntegerField("工序生产类型", default=PRO_NORMAL, choices=((PRO_NORMAL, '常规'), (PRO_DIV, '切分'), (PRO_MERGE, '合并')))
|
||||
|
@ -30,6 +31,7 @@ class Process(CommonBModel):
|
|||
mlog_need_ticket = models.BooleanField('日志提交是否需要审批', default=False)
|
||||
mstate_json = models.JSONField('中间状态', default=list, blank=True)
|
||||
parent = models.ForeignKey('self', verbose_name='父工序', on_delete=models.CASCADE, null=True, blank=True)
|
||||
number_to_batch = models.BooleanField('个号转批号', default=False)
|
||||
|
||||
class Meta:
|
||||
verbose_name = '工序'
|
||||
|
|
|
@ -563,6 +563,7 @@ class MlogbInViewSet(CreateModelMixin, UpdateModelMixin, DestroyModelMixin, Cust
|
|||
mlogbin: Mlogb = serializer.save()
|
||||
mlog:Mlog = mlogbin.mlog
|
||||
route:Route = mlog.route
|
||||
process: Process = route.process if route else None
|
||||
mtype = route.process.mtype if route else None
|
||||
is_fix = mlog.is_fix
|
||||
qct = mlog.qct
|
||||
|
@ -614,18 +615,17 @@ class MlogbInViewSet(CreateModelMixin, UpdateModelMixin, DestroyModelMixin, Cust
|
|||
elif mtype == Process.PRO_DIV: # 切分 支持批到批,个到个, 个到批
|
||||
div_number = route.div_number
|
||||
if material_in.tracking == Material.MA_TRACKING_SINGLE and material_out.tracking == Material.MA_TRACKING_BATCH:
|
||||
if Mlogbw.objects.filter(mlogb=mlogbin).count() == 1:
|
||||
mlogbwin = Mlogbw.objects.filter(mlogb=mlogbin).first()
|
||||
mlogbout, _ = Mlogb.objects.get_or_create(mlogbw_from=mlogbwin, mlogb_from=mlogbin, defaults=update_dict(m_dict,{"count_real": div_number, "count_ok": div_number}))
|
||||
lenx = Mlogbw.objects.filter(mlogb=mlogbin).count()
|
||||
# 用个号做批号是用于后续在复用个号可以追踪到原先的个
|
||||
for mlogbwin in Mlogbw.objects.filter(mlogb=mlogbin).order_by("number"):
|
||||
if process and process.number_to_batch:
|
||||
m_dict["batch"] = mlogbwin.number
|
||||
mlogbout, _ = Mlogb.objects.get_or_create(
|
||||
mlogbw_from=mlogbwin, defaults=update_dict(m_dict, {"count_real": div_number, "count_ok": div_number}))
|
||||
if lenx == 1:
|
||||
mlogbout.mlogb_from = mlogbin
|
||||
mlogbout.number_from = mlogbwin.number
|
||||
mlogbout.save(update_fields=["number_from"])
|
||||
else:
|
||||
# 用个号做批号是用于后续在复用个号可以追踪到原先的个
|
||||
for mlogbwin in Mlogbw.objects.filter(mlogb=mlogbin).order_by("number"):
|
||||
m_dict["batch"] = mlogbwin.number
|
||||
mlogbout, _ = Mlogb.objects.get_or_create(mlogbw_from=mlogbwin, defaults=update_dict(m_dict, {"count_real": div_number, "count_ok": div_number}))
|
||||
mlogbout.number_from = mlogbwin.number
|
||||
mlogbout.save(update_fields=["number_from"])
|
||||
elif material_in.tracking == Material.MA_TRACKING_SINGLE and material_out.tracking == Material.MA_TRACKING_SINGLE:
|
||||
d_count_real = mlogbin.count_use * div_number
|
||||
d_count_ok = d_count_real
|
||||
|
|
Loading…
Reference in New Issue