feat: ftest增加defect_main的后续逻辑变更
This commit is contained in:
parent
6737d3f0f4
commit
4699b31f83
|
@ -9,7 +9,7 @@ from apps.mtm.services import cal_material_count
|
||||||
from apps.wpm.models import WMaterial
|
from apps.wpm.models import WMaterial
|
||||||
from apps.wpm.services_2 import get_alldata_with_batch_and_store
|
from apps.wpm.services_2 import get_alldata_with_batch_and_store
|
||||||
from apps.wpmw.models import Wpr
|
from apps.wpmw.models import Wpr
|
||||||
from apps.qm.models import FtestDefect, Defect
|
from apps.qm.models import Ftest, Defect
|
||||||
from django.db.models import Count, Q
|
from django.db.models import Count, Q
|
||||||
|
|
||||||
def do_out(item: MIOItem):
|
def do_out(item: MIOItem):
|
||||||
|
@ -299,16 +299,14 @@ class InmService:
|
||||||
if tracking == Material.MA_TRACKING_SINGLE:
|
if tracking == Material.MA_TRACKING_SINGLE:
|
||||||
# 获取所有主要的不合格项
|
# 获取所有主要的不合格项
|
||||||
mw_qs = MIOItemw.objects.filter(mioitem=i)
|
mw_qs = MIOItemw.objects.filter(mioitem=i)
|
||||||
defectIds= FtestDefect.objects.filter(ftest__mioitemw_ftest__in=mw_qs, is_main=True, has=True).values_list("defect__id", flat=True).distinct()
|
defectIds= Ftest.objects.filter(mioitemw_ftest__in=mw_qs).exclude(defect_main=None).values_list("defect_main__id", flat=True).distinct()
|
||||||
defects_map = {d.id: d for d in Defect.objects.filter(id__in=defectIds)}
|
defects_map = {d.id: d for d in Defect.objects.filter(id__in=defectIds)}
|
||||||
# 过滤并统计相关数据
|
# 过滤并统计相关数据
|
||||||
filtered_mw_qs = mw_qs.filter(
|
filtered_mw_qs = mw_qs.filter(
|
||||||
ftest__defects_ftest__defect__id__in=defects_map.keys(),
|
ftest__defect_main__id__in=defects_map.keys(),
|
||||||
ftest__defects_ftest__has=True,
|
).values('ftest__defect_main__id').annotate(xcount=Count('id'))
|
||||||
ftest__defects_ftest__is_main=True
|
|
||||||
).values('ftest__defects_ftest__defect__id').annotate(xcount=Count('id'))
|
|
||||||
for defect_data in filtered_mw_qs:
|
for defect_data in filtered_mw_qs:
|
||||||
defect_id = defect_data['ftest__defects_ftest__defect__id']
|
defect_id = defect_data['ftest__defect_main__id']
|
||||||
xcount = defect_data['xcount']
|
xcount = defect_data['xcount']
|
||||||
if xcount > 0:
|
if xcount > 0:
|
||||||
defect = defects_map[defect_id]
|
defect = defects_map[defect_id]
|
||||||
|
@ -333,9 +331,9 @@ class InmService:
|
||||||
mb.save()
|
mb.save()
|
||||||
if tracking == Material.MA_TRACKING_SINGLE:
|
if tracking == Material.MA_TRACKING_SINGLE:
|
||||||
if defect:
|
if defect:
|
||||||
mioitemws = MIOItemw.objects.filter(mioitem=i, ftest__is_ok=False, ftest__defects_ftest__defect=defect)
|
mioitemws = MIOItemw.objects.filter(mioitem=i, ftest__defect_main=defect)
|
||||||
else:
|
else:
|
||||||
mioitemws = MIOItemw.objects.filter(Q(ftest=None) | Q(ftest__is_ok=True), mioitem=i)
|
mioitemws = MIOItemw.objects.filter(Q(ftest=None) | Q(ftest__defect_main=True), mioitem=i)
|
||||||
if mioitemws.count() != change_count:
|
if mioitemws.count() != change_count:
|
||||||
raise ParseError("出入库与明细数量不一致,操作失败")
|
raise ParseError("出入库与明细数量不一致,操作失败")
|
||||||
for mioitemw in mioitemws:
|
for mioitemw in mioitemws:
|
||||||
|
@ -354,9 +352,9 @@ class InmService:
|
||||||
mb.save()
|
mb.save()
|
||||||
if tracking == Material.MA_TRACKING_SINGLE:
|
if tracking == Material.MA_TRACKING_SINGLE:
|
||||||
if defect:
|
if defect:
|
||||||
mioitemws = MIOItemw.objects.filter(mioitem=i, ftest__is_ok=False, ftest__defects_ftest__defect=defect)
|
mioitemws = MIOItemw.objects.filter(mioitem=i, ftest__defect_main=defect)
|
||||||
else:
|
else:
|
||||||
mioitemws = MIOItemw.objects.filter(Q(ftest=None) | Q(ftest__is_ok=True), mioitem=i)
|
mioitemws = MIOItemw.objects.filter(Q(ftest=None) | Q(ftest__defect_main=True), mioitem=i)
|
||||||
if mioitemws.count() != change_count:
|
if mioitemws.count() != change_count:
|
||||||
raise ParseError("出入库与明细数量不一致,操作失败")
|
raise ParseError("出入库与明细数量不一致,操作失败")
|
||||||
for mioitemw in mioitemws:
|
for mioitemw in mioitemws:
|
||||||
|
|
|
@ -19,7 +19,7 @@ import logging
|
||||||
from apps.wpm.services_2 import get_alldata_with_batch_and_store
|
from apps.wpm.services_2 import get_alldata_with_batch_and_store
|
||||||
from datetime import timedelta
|
from datetime import timedelta
|
||||||
from apps.wpmw.models import Wpr, WprDefect
|
from apps.wpmw.models import Wpr, WprDefect
|
||||||
from ..qm.models import Defect, FtestDefect
|
from ..qm.models import Defect, Ftest
|
||||||
from django.db.models import Count, Q
|
from django.db.models import Count, Q
|
||||||
|
|
||||||
myLogger = logging.getLogger('log')
|
myLogger = logging.getLogger('log')
|
||||||
|
@ -239,17 +239,15 @@ def mlog_submit(mlog: Mlog, user: User, now: Union[datetime.datetime, None]):
|
||||||
if tracking == Material.MA_TRACKING_SINGLE:
|
if tracking == Material.MA_TRACKING_SINGLE:
|
||||||
# 获取所有主要的不合格项
|
# 获取所有主要的不合格项
|
||||||
bw_qs = Mlogbw.objects.filter(mlogb=item)
|
bw_qs = Mlogbw.objects.filter(mlogb=item)
|
||||||
defectIds= FtestDefect.objects.filter(ftest__mlogbw_ftest__in=bw_qs, is_main=True, has=True).values_list("defect__id", flat=True).distinct()
|
defectIds= Ftest.objects.filter(mlogbw_ftest__in=bw_qs).exclude(defect_main=None).values_list("defect_main__id", flat=True).distinct()
|
||||||
defects_map = {d.id: d for d in Defect.objects.filter(id__in=defectIds)}
|
defects_map = {d.id: d for d in Defect.objects.filter(id__in=defectIds)}
|
||||||
# 过滤并统计相关数据
|
# 过滤并统计相关数据
|
||||||
filtered_bw_qs = bw_qs.filter(
|
filtered_bw_qs = bw_qs.filter(
|
||||||
ftest__defects_ftest__defect__id__in=defects_map.keys(),
|
ftest__defect_main__id__in=defects_map.keys()
|
||||||
ftest__defects_ftest__has=True,
|
).values('ftest__defect_main__id').annotate(xcount=Count('id'))
|
||||||
ftest__defects_ftest__is_main=True
|
|
||||||
).values('ftest__defects_ftest__defect__id').annotate(xcount=Count('id'))
|
|
||||||
# 整理结果
|
# 整理结果
|
||||||
for defect_data in filtered_bw_qs:
|
for defect_data in filtered_bw_qs:
|
||||||
defect_id = defect_data['ftest__defects_ftest__defect__id']
|
defect_id = defect_data['ftest__defect_main__id']
|
||||||
xcount = defect_data['xcount']
|
xcount = defect_data['xcount']
|
||||||
if xcount > 0:
|
if xcount > 0:
|
||||||
defect = defects_map[defect_id]
|
defect = defects_map[defect_id]
|
||||||
|
@ -359,17 +357,15 @@ def mlog_revert(mlog: Mlog, user: User, now: Union[datetime.datetime, None]):
|
||||||
if material_out.tracking == Material.MA_TRACKING_SINGLE:
|
if material_out.tracking == Material.MA_TRACKING_SINGLE:
|
||||||
# 获取所有主要的不合格项
|
# 获取所有主要的不合格项
|
||||||
bw_qs = Mlogbw.objects.filter(mlogb=item)
|
bw_qs = Mlogbw.objects.filter(mlogb=item)
|
||||||
defectIds= FtestDefect.objects.filter(ftest__mlogbw_ftest__in=bw_qs, is_main=True, has=True).values_list("defect__id", flat=True).distinct()
|
defectIds= Ftest.objects.filter(mlogbw_ftest__in=bw_qs).exclude(defect_main=None).values_list("defect__id", flat=True).distinct()
|
||||||
defects_map = {d.id: d for d in Defect.objects.filter(id__in=defectIds)}
|
defects_map = {d.id: d for d in Defect.objects.filter(id__in=defectIds)}
|
||||||
# 过滤并统计相关数据
|
# 过滤并统计相关数据
|
||||||
filtered_bw_qs = bw_qs.filter(
|
filtered_bw_qs = bw_qs.filter(
|
||||||
ftest__defects_ftest__defect__id__in=defects_map.keys(),
|
ftest__defect_main__id__in=defects_map.keys()
|
||||||
ftest__defects_ftest__has=True,
|
).values('ftest__defect_main__id').annotate(xcount=Count('id'))
|
||||||
ftest__defects_ftest__is_main=True
|
|
||||||
).values('ftest__defects_ftest__defect__id').annotate(xcount=Count('id'))
|
|
||||||
# 整理结果
|
# 整理结果
|
||||||
for defect_data in filtered_bw_qs:
|
for defect_data in filtered_bw_qs:
|
||||||
defect_id = defect_data['ftest__defects_ftest__defect__id']
|
defect_id = defect_data['ftest__defect_main__id']
|
||||||
xcount = defect_data['xcount']
|
xcount = defect_data['xcount']
|
||||||
if xcount > 0:
|
if xcount > 0:
|
||||||
defect = defects_map[defect_id]
|
defect = defects_map[defect_id]
|
||||||
|
|
Loading…
Reference in New Issue