feat: 日志提交时不合格品存储到车间库存

This commit is contained in:
caoqianming 2024-07-18 11:30:10 +08:00
parent ee65658145
commit d561a0d24b
5 changed files with 80 additions and 13 deletions

View File

@ -0,0 +1,18 @@
# Generated by Django 3.2.12 on 2024-07-18 03:18
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('mtm', '0034_route_batch_bind'),
]
operations = [
migrations.AddField(
model_name='process',
name='store_notok',
field=models.BooleanField(default=False, verbose_name='不合格品是否入库'),
),
]

View File

@ -16,6 +16,7 @@ class Process(CommonBModel):
File, verbose_name='指导书', on_delete=models.SET_NULL, null=True, blank=True)
instruction_content = models.TextField('指导书内容', null=True, blank=True)
into_wm_mgroup = models.BooleanField('交接到工段', default=False)
store_notok = models.BooleanField('不合格品是否入库', default=False)
class Meta:
verbose_name = '工序'

View File

@ -0,0 +1,23 @@
# Generated by Django 3.2.12 on 2024-07-18 03:18
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('wpm', '0055_auto_20240717_1653'),
]
operations = [
migrations.AddField(
model_name='mlog',
name='stored_mgroup',
field=models.BooleanField(default=False, verbose_name='入库到工段'),
),
migrations.AddField(
model_name='mlog',
name='stored_notok',
field=models.BooleanField(default=False, verbose_name='不合格品是否已入库'),
),
]

View File

@ -110,6 +110,8 @@ class Mlog(CommonADModel):
work_end_time = models.DateTimeField('生产结束时间', null=True, blank=True)
hour_work = models.FloatField('预计工时', null=True, blank=True)
reminder_interval_list = models.JSONField('提醒间隔', default=list, blank=True)
stored_mgroup = models.BooleanField('入库到工段', default=False)
stored_notok = models.BooleanField('不合格品是否已入库', default=False)
route = models.ForeignKey(Route, verbose_name='生产路线', on_delete=models.SET_NULL, null=True, blank=True)
mtask = models.ForeignKey(
Mtask, verbose_name='关联任务', on_delete=models.CASCADE, null=True, blank=True, related_name='mlog_mtask')

View File

@ -220,17 +220,29 @@ def mlog_submit(mlog: Mlog, user: User, now: Union[datetime.datetime, None]):
wm.save()
if material_out: # 需要入车间库存
into_wm_mgroup = material_out.process.into_wm_mgroup if material_out.process else False
need_store_notok = material_out.process.store_notok if material_out.process else False
m_outs = Mlogb.objects.filter(mlog=mlog, material_out__isnull=False)
stored_notok = False
stored_mgroup = False
if m_outs.exists():
m_outs_list = [(mo.material_out, mo.batch if mo.batch else mlog.batch, mo.count_ok, mlog.count_real_eweight) for mo in m_outs.all()]
m_outs_list = [(mo.material_out, mo.batch if mo.batch else mlog.batch, mo.count_ok, mlog.count_real_eweight, None) for mo in m_outs.all()]
if need_store_notok:
for item in m_outs:
for f in Mlogb._meta.fields:
if 'count_n_' in f.name and getattr(item, f.name) > 0:
notok_sign = f.name.replace('count_n_', '')
m_outs_list.append( (item.material_out, item.batch if item.batch else mlog.batch, getattr(item, f.name), mlog.count_real_eweight, notok_sign))
stored_notok = True
else:
m_outs_list = [(material_out, mlog.batch, mlog.count_ok, mlog.count_real_eweight)]
m_outs_list = [(material_out, mlog.batch, mlog.count_ok, mlog.count_real_eweight, None)]
# 一次填写的暂时不处理不合格品
for mo in m_outs_list:
mo_ma, mo_batch, mo_count, mo_count_eweight = mo
lookup = {'batch': mo_batch, 'material': mo_ma, 'mgroup': None, 'notok_sign': None}
mo_ma, mo_batch, mo_count, mo_count_eweight, notok_sign = mo
lookup = {'batch': mo_batch, 'material': mo_ma, 'mgroup': None, 'notok_sign': notok_sign}
if into_wm_mgroup:
lookup['mgroup'] = mgroup
stored_mgroup = True
else:
lookup['belong_dept'] = belong_dept
if mo_count > 0:
@ -239,8 +251,11 @@ def mlog_submit(mlog: Mlog, user: User, now: Union[datetime.datetime, None]):
wm.count_eweight = mo_count_eweight
wm.update_by = user
wm.save()
mlog.submit_time = now
mlog.submit_user = user
mlog.stored_notok = stored_notok
mlog.stored_mgroup = stored_mgroup
mlog.save()
@ -256,6 +271,8 @@ def mlog_revert(mlog: Mlog, user: User, now: Union[datetime.datetime, None]):
belong_dept = mgroup.belong_dept
material_out = mlog.material_out
material_in = mlog.material_in
stored_notok = mlog.stored_notok
stored_mgroup = mlog.stored_mgroup
if material_in:
# 领用数退回
into_wm_mgroup = material_in.process.into_wm_mgroup if material_in.process else False
@ -272,9 +289,8 @@ def mlog_revert(mlog: Mlog, user: User, now: Union[datetime.datetime, None]):
mi_wm_in.save()
else:
lookup = {'batch': mi_batch, 'material': mi_ma, 'mgroup': None, 'notok_sign': None}
if mi_wm_in:
lookup['id']
if into_wm_mgroup:
# 退回到本工段
lookup['mgroup'] = mgroup
else:
lookup['belong_dept'] = belong_dept
@ -285,17 +301,24 @@ def mlog_revert(mlog: Mlog, user: User, now: Union[datetime.datetime, None]):
wm.save()
if material_out: # 产物退回
# 有多个产物的情况
into_wm_mgroup = material_out.process.into_wm_mgroup if material_out.process else False
# 需要考虑不合格品退回的情况
m_outs = Mlogb.objects.filter(mlog=mlog, material_out__isnull=False)
if m_outs.exists():
m_outs_list = [(mo.material_out, mo.batch if mo.batch else mlog.batch, mo.count_ok, mlog.count_real_eweight) for mo in m_outs.all()]
m_outs_list = [(mo.material_out, mo.batch if mo.batch else mlog.batch, mo.count_ok, mlog.count_real_eweight, None) for mo in m_outs.all()]
if stored_notok:
for item in m_outs:
for f in Mlogb._meta.fields:
if 'count_n_' in f.name and getattr(item, f.name) > 0:
notok_sign = f.name.replace('count_n_', '')
m_outs_list.append( (item.material_out, item.batch if item.batch else mlog.batch, getattr(item, f.name), mlog.count_real_eweight, notok_sign))
else:
m_outs_list = [(material_out, mlog.batch, mlog.count_ok, mlog.count_real_eweight)]
m_outs_list = [(material_out, mlog.batch, mlog.count_ok, mlog.count_real_eweight, None)]
# 一次填写的暂时不处理不合格品
for mo in m_outs_list:
mo_ma, mo_batch, mo_count, _ = mo
lookup = {'batch': mo_batch, 'material': mo_ma, 'mgroup': None, 'notok_sign': None}
if into_wm_mgroup:
mo_ma, mo_batch, mo_count, _, notok_sign = mo
lookup = {'batch': mo_batch, 'material': mo_ma, 'mgroup': None, 'notok_sign': notok_sign}
if stored_mgroup:
lookup['mgroup'] = mgroup
else:
lookup['belong_dept'] = belong_dept