diff --git a/apps/wpm/services.py b/apps/wpm/services.py index cbfa4562..ac167bf8 100644 --- a/apps/wpm/services.py +++ b/apps/wpm/services.py @@ -196,6 +196,8 @@ def mlog_submit(mlog: Mlog, user: User, now: Union[datetime.datetime, None]): m_ins_list = [(material_in, mlog.batch, mlog.count_use, None, mlog)] for mi in m_ins_list: mi_ma, mi_batch, mi_count, defect, mlog_or_b = mi + if mi_count <= 0: + raise ParseError('存在非正数!') # 需要判断领用数是否合理 # 优先使用工段库存 if isinstance(mlog_or_b, Mlogb) and mlog_or_b.wm_in: @@ -235,18 +237,19 @@ def mlog_submit(mlog: Mlog, user: User, now: Union[datetime.datetime, None]): if need_store_notok: for item in m_ins_bl_list: material, batch, count, defect, mi_ = item - if count> 0: - lookup = {'batch': batch, 'material': material, 'mgroup': mgroup, 'defect': defect, 'state': WMaterial.WM_NOTOK} - wm, is_create = WMaterial.objects.get_or_create(**lookup, defaults={"belong_dept": belong_dept}) - wm.count = wm.count + count - if is_create: - wm.create_by = user - wm.batch_ofrom = mi_.batch_ofrom - wm.material_ofrom = mi_.material_ofrom - wm.update_by = user - wm.save() - if material.tracking == Material.MA_TRACKING_SINGLE: - raise ParseError("加工前不良的物料暂不支持单件追踪") + if count <= 0: + raise ParseError('存在非正数!') + lookup = {'batch': batch, 'material': material, 'mgroup': mgroup, 'defect': defect, 'state': WMaterial.WM_NOTOK} + wm, is_create = WMaterial.objects.get_or_create(**lookup, defaults={"belong_dept": belong_dept}) + wm.count = wm.count + count + if is_create: + wm.create_by = user + wm.batch_ofrom = mi_.batch_ofrom + wm.material_ofrom = mi_.material_ofrom + wm.update_by = user + wm.save() + if material.tracking == Material.MA_TRACKING_SINGLE: + raise ParseError("加工前不良的物料暂不支持单件追踪") if material_out or is_fix: # 需要入车间库存 @@ -291,7 +294,9 @@ def mlog_submit(mlog: Mlog, user: User, now: Union[datetime.datetime, None]): # 一次填写的暂时不处理不合格品 for mo in m_outs_list: mo_ma, mo_batch, mo_count, mo_count_eweight, notok_sign_or_defect, mlog_or_b = mo - if mo_count <= 0: + if mo_count < 0: + raise ParseError('存在负数!') + elif mo_count == 0: continue if is_fix: wm_state = WMaterial.WM_REPAIRED @@ -432,7 +437,9 @@ def mlog_revert(mlog: Mlog, user: User, now: Union[datetime.datetime, None]): for mo in m_outs_list: mo_ma, mo_batch, mo_count, _, notok_sign_or_defect, mlog_or_b = mo - if mo_count == 0: + if mo_count < 0: + raise ParseError('存在负数!') + elif mo_count == 0: continue if is_fix: wm_state = WMaterial.WM_REPAIRED @@ -497,6 +504,8 @@ def mlog_revert(mlog: Mlog, user: User, now: Union[datetime.datetime, None]): m_ins_list = [(material_in, mlog.batch, mlog.count_use, mlog.wm_in, mlog)] for mi in m_ins_list: mi_ma, mi_batch, mi_count, defect_or, mlog_or_b = mi + if mi_count <= 0: + raise ParseError('存在非正数!') if isinstance(mlog_or_b, Mlogb) and mlog_or_b.wm_in: wm = WMaterial.objects.get(id=mlog_or_b.wm_in.id) else: @@ -528,19 +537,20 @@ def mlog_revert(mlog: Mlog, user: User, now: Union[datetime.datetime, None]): if stored_notok: for item in m_ins_bl_list: material, batch, count, defect, mi_ = item - if count> 0: - lookup = {'batch': batch, 'material': material, 'mgroup': mgroup, 'defect': defect, 'state': WMaterial.WM_NOTOK} - wm, is_create = WMaterial.objects.get_or_create(**lookup, defaults={**lookup, "belong_dept": belong_dept}) - wm.count = wm.count - count - if wm.count < 0: - raise ParseError('加工前不良数量大于库存量') - if is_create: - wm.create_by = user - else: - wm.update_by = user - wm.save() - if material.tracking == Material.MA_TRACKING_SINGLE: - raise ParseError("加工前不良的物料暂不支持单件回退") + if count <= 0: + raise ParseError('存在非正数!') + lookup = {'batch': batch, 'material': material, 'mgroup': mgroup, 'defect': defect, 'state': WMaterial.WM_NOTOK} + wm, is_create = WMaterial.objects.get_or_create(**lookup, defaults={**lookup, "belong_dept": belong_dept}) + wm.count = wm.count - count + if wm.count < 0: + raise ParseError('加工前不良数量大于库存量') + if is_create: + wm.create_by = user + else: + wm.update_by = user + wm.save() + if material.tracking == Material.MA_TRACKING_SINGLE: + raise ParseError("加工前不良的物料暂不支持单件回退") mlog.submit_time = None mlog.submit_user = None @@ -723,6 +733,8 @@ def handover_submit(handover:Handover, user: User, now: Union[datetime.datetime, mids = [] for item in handoverb_list: wmId, xcount, handover_or_b = item + if xcount <= 0: + raise ParseError("存在非正数!") wm_from = WMaterial.objects.get(id=wmId) mids.append(wm_from.material.id)