Compare commits
No commits in common. "b03b42ad23413961b4ca6cbbbbcd1532ec04b4b5" and "4d60c2c7bda7824dcf7389bdae4f549c157349d2" have entirely different histories.
b03b42ad23
...
4d60c2c7bd
|
|
@ -1,16 +0,0 @@
|
||||||
from django.db import migrations, models
|
|
||||||
|
|
||||||
|
|
||||||
class Migration(migrations.Migration):
|
|
||||||
|
|
||||||
dependencies = [
|
|
||||||
('wpm', '0129_mlogbdefect_is_inherited'),
|
|
||||||
]
|
|
||||||
|
|
||||||
operations = [
|
|
||||||
migrations.AddField(
|
|
||||||
model_name='handover',
|
|
||||||
name='clear_defect',
|
|
||||||
field=models.BooleanField(default=False, verbose_name='合批清除缺陷'),
|
|
||||||
),
|
|
||||||
]
|
|
||||||
|
|
@ -677,7 +677,6 @@ class Handover(CommonADModel):
|
||||||
H_DIV = 20
|
H_DIV = 20
|
||||||
new_batch = models.TextField('新批次号', null=True, blank=True, db_index=True)
|
new_batch = models.TextField('新批次号', null=True, blank=True, db_index=True)
|
||||||
new_wm = models.ForeignKey(WMaterial, on_delete=models.SET_NULL, null=True, blank=True)
|
new_wm = models.ForeignKey(WMaterial, on_delete=models.SET_NULL, null=True, blank=True)
|
||||||
clear_defect = models.BooleanField('合批清除缺陷', default=False)
|
|
||||||
mtype = models.PositiveSmallIntegerField("合并类型", default=H_NORMAL, choices=
|
mtype = models.PositiveSmallIntegerField("合并类型", default=H_NORMAL, choices=
|
||||||
[(H_NORMAL, '正常'), (H_DIV, '分批'), (H_MERGE, '合批')])
|
[(H_NORMAL, '正常'), (H_DIV, '分批'), (H_MERGE, '合批')])
|
||||||
type = models.PositiveSmallIntegerField('交接类型', choices=[
|
type = models.PositiveSmallIntegerField('交接类型', choices=[
|
||||||
|
|
|
||||||
|
|
@ -1304,21 +1304,16 @@ class HandoverSerializer(CustomModelSerializer):
|
||||||
elif deptOrmgroupId != current_mdept_id:
|
elif deptOrmgroupId != current_mdept_id:
|
||||||
raise ParseError(f'第{ind+1}行-交接物料所属工段/车间不一致')
|
raise ParseError(f'第{ind+1}行-交接物料所属工段/车间不一致')
|
||||||
if mtype == Handover.H_MERGE:
|
if mtype == Handover.H_MERGE:
|
||||||
clear_defect = attrs.get('clear_defect', False)
|
|
||||||
if clear_defect and wm.state != WMaterial.WM_OK:
|
|
||||||
raise ParseError(f'第{ind+1}行-清除缺陷合批仅支持合格品')
|
|
||||||
if clear_defect and new_wm is not None and new_wm.defect is not None:
|
|
||||||
raise ParseError('清除缺陷合批的目标批次不能带缺陷')
|
|
||||||
if next_mat is None:
|
if next_mat is None:
|
||||||
next_mat = wm.material
|
next_mat = wm.material
|
||||||
next_state = wm.state
|
next_state = wm.state
|
||||||
next_defect = None if clear_defect else wm.defect
|
next_defect = wm.defect
|
||||||
else:
|
else:
|
||||||
if next_mat != wm.material:
|
if next_mat != wm.material:
|
||||||
raise ParseError(f'第{ind+1}行-合并的物料不一致')
|
raise ParseError(f'第{ind+1}行-合并的物料不一致')
|
||||||
if next_state != wm.state:
|
if next_state != wm.state:
|
||||||
raise ParseError(f'第{ind+1}行-合并的物料状态不一致')
|
raise ParseError(f'第{ind+1}行-合并的物料状态不一致')
|
||||||
if not clear_defect and next_defect != wm.defect:
|
if next_defect != wm.defect:
|
||||||
raise ParseError(f'第{ind+1}行-合并的物料缺陷不一致')
|
raise ParseError(f'第{ind+1}行-合并的物料缺陷不一致')
|
||||||
if tracking == Material.MA_TRACKING_SINGLE:
|
if tracking == Material.MA_TRACKING_SINGLE:
|
||||||
handoverbw = item.get("handoverbw", [])
|
handoverbw = item.get("handoverbw", [])
|
||||||
|
|
|
||||||
|
|
@ -757,8 +757,6 @@ def handover_submit(handover:Handover, user: User, now: Union[datetime.datetime,
|
||||||
mids = []
|
mids = []
|
||||||
exclude_batchst_ids = []
|
exclude_batchst_ids = []
|
||||||
check_batch_exist = False
|
check_batch_exist = False
|
||||||
merge_target_defect = None
|
|
||||||
merge_clear_defect = False
|
|
||||||
if mtype == Handover.H_MERGE:
|
if mtype == Handover.H_MERGE:
|
||||||
if new_batch:
|
if new_batch:
|
||||||
batches = [new_batch]
|
batches = [new_batch]
|
||||||
|
|
@ -768,12 +766,6 @@ def handover_submit(handover:Handover, user: User, now: Union[datetime.datetime,
|
||||||
check_batch_exist = True
|
check_batch_exist = True
|
||||||
target_b, _ = BatchSt.g_create(batch=new_batch, handover=handover, material_start=material, check_batch_exist=check_batch_exist)
|
target_b, _ = BatchSt.g_create(batch=new_batch, handover=handover, material_start=material, check_batch_exist=check_batch_exist)
|
||||||
exclude_batchst_ids.append(target_b.id)
|
exclude_batchst_ids.append(target_b.id)
|
||||||
merge_clear_defect = bool(handover.clear_defect)
|
|
||||||
if merge_clear_defect:
|
|
||||||
merge_target_defect = None
|
|
||||||
else:
|
|
||||||
source_wm_ids = [hb[0] for hb in handoverb_list]
|
|
||||||
merge_target_defect = WMaterial.objects.filter(id__in=source_wm_ids).first().defect
|
|
||||||
elif mtype == Handover.H_DIV:
|
elif mtype == Handover.H_DIV:
|
||||||
if handover.wm is None:
|
if handover.wm is None:
|
||||||
raise ParseError('拆批请选择车间库存')
|
raise ParseError('拆批请选择车间库存')
|
||||||
|
|
@ -818,10 +810,7 @@ def handover_submit(handover:Handover, user: User, now: Union[datetime.datetime,
|
||||||
if handover.type == Handover.H_NORMAL:
|
if handover.type == Handover.H_NORMAL:
|
||||||
if mtype == Handover.H_MERGE and handover.new_wm:
|
if mtype == Handover.H_MERGE and handover.new_wm:
|
||||||
wm_to = WMaterial.objects.select_for_update().get(id=handover.new_wm.id)
|
wm_to = WMaterial.objects.select_for_update().get(id=handover.new_wm.id)
|
||||||
defect_ok = wm_to.defect == wm_from.defect or (
|
if wm_to.state != wm_from.state or wm_to.material != wm_from.material or wm_to.defect != wm_from.defect:
|
||||||
merge_clear_defect and wm_to.defect is None and wm_from.state == WMaterial.WM_OK
|
|
||||||
)
|
|
||||||
if wm_to.state != wm_from.state or wm_to.material != wm_from.material or not defect_ok:
|
|
||||||
raise ParseError("正常合并到的车间库存状态或物料异常")
|
raise ParseError("正常合并到的车间库存状态或物料异常")
|
||||||
else:
|
else:
|
||||||
wm_to, _ = WMaterial.locked_get_or_create(
|
wm_to, _ = WMaterial.locked_get_or_create(
|
||||||
|
|
@ -831,7 +820,7 @@ def handover_submit(handover:Handover, user: User, now: Union[datetime.datetime,
|
||||||
belong_dept=recive_dept,
|
belong_dept=recive_dept,
|
||||||
state=wm_from.state,
|
state=wm_from.state,
|
||||||
notok_sign=wm_from.notok_sign,
|
notok_sign=wm_from.notok_sign,
|
||||||
defect=merge_target_defect if mtype == Handover.H_MERGE else wm_from.defect,
|
defect=wm_from.defect,
|
||||||
defaults={
|
defaults={
|
||||||
"batch_ofrom": wm_from.batch_ofrom,
|
"batch_ofrom": wm_from.batch_ofrom,
|
||||||
"material_ofrom": wm_from.material_ofrom,
|
"material_ofrom": wm_from.material_ofrom,
|
||||||
|
|
@ -927,7 +916,7 @@ def handover_submit(handover:Handover, user: User, now: Union[datetime.datetime,
|
||||||
belong_dept=recive_dept,
|
belong_dept=recive_dept,
|
||||||
state=wm_from.state,
|
state=wm_from.state,
|
||||||
notok_sign=wm_from.notok_sign,
|
notok_sign=wm_from.notok_sign,
|
||||||
defect=merge_target_defect if mtype == Handover.H_MERGE else wm_from.defect,
|
defect=wm_from.defect,
|
||||||
defaults={
|
defaults={
|
||||||
"batch_ofrom": wm_from.batch_ofrom,
|
"batch_ofrom": wm_from.batch_ofrom,
|
||||||
"material_ofrom": wm_from.material_ofrom,
|
"material_ofrom": wm_from.material_ofrom,
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue