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_NORMAL = 10
|
||||||
PRO_DIV = 20
|
PRO_DIV = 20
|
||||||
PRO_MERGE = 30
|
PRO_MERGE = 30
|
||||||
|
|
||||||
name = models.CharField('工序名称', max_length=100)
|
name = models.CharField('工序名称', max_length=100)
|
||||||
type = models.PositiveSmallIntegerField("工序类型", default=PRO_PROD, choices=((PRO_PROD, '生产工序'), (PRO_TEST, '检验工序')))
|
type = models.PositiveSmallIntegerField("工序类型", default=PRO_PROD, choices=((PRO_PROD, '生产工序'), (PRO_TEST, '检验工序')))
|
||||||
mtype = models.PositiveSmallIntegerField("工序生产类型", default=PRO_NORMAL, choices=((PRO_NORMAL, '常规'), (PRO_DIV, '切分'), (PRO_MERGE, '合并')))
|
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)
|
mlog_need_ticket = models.BooleanField('日志提交是否需要审批', default=False)
|
||||||
mstate_json = models.JSONField('中间状态', default=list, blank=True)
|
mstate_json = models.JSONField('中间状态', default=list, blank=True)
|
||||||
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)
|
||||||
|
number_to_batch = models.BooleanField('个号转批号', default=False)
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
verbose_name = '工序'
|
verbose_name = '工序'
|
||||||
|
|
|
@ -563,6 +563,7 @@ 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
|
||||||
|
process: Process = route.process if route else None
|
||||||
mtype = route.process.mtype if route else None
|
mtype = route.process.mtype if route else None
|
||||||
is_fix = mlog.is_fix
|
is_fix = mlog.is_fix
|
||||||
qct = mlog.qct
|
qct = mlog.qct
|
||||||
|
@ -614,18 +615,17 @@ class MlogbInViewSet(CreateModelMixin, UpdateModelMixin, DestroyModelMixin, Cust
|
||||||
elif mtype == Process.PRO_DIV: # 切分 支持批到批,个到个, 个到批
|
elif mtype == Process.PRO_DIV: # 切分 支持批到批,个到个, 个到批
|
||||||
div_number = route.div_number
|
div_number = route.div_number
|
||||||
if material_in.tracking == Material.MA_TRACKING_SINGLE and material_out.tracking == Material.MA_TRACKING_BATCH:
|
if material_in.tracking == Material.MA_TRACKING_SINGLE and material_out.tracking == Material.MA_TRACKING_BATCH:
|
||||||
if Mlogbw.objects.filter(mlogb=mlogbin).count() == 1:
|
lenx = Mlogbw.objects.filter(mlogb=mlogbin).count()
|
||||||
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}))
|
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.number_from = mlogbwin.number
|
||||||
mlogbout.save(update_fields=["number_from"])
|
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:
|
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_real = mlogbin.count_use * div_number
|
||||||
d_count_ok = d_count_real
|
d_count_ok = d_count_real
|
||||||
|
|
Loading…
Reference in New Issue