fix: cal_mlog_count_from_mlogb 需要传参触发
This commit is contained in:
parent
c02bb6d3db
commit
6d87a69d8d
|
@ -431,16 +431,16 @@ class Mlogb(BaseModel):
|
|||
def mlogbdefect(self):
|
||||
return MlogbDefect.objects.filter(mlogb=self)
|
||||
|
||||
def cal_count_pn_jgqbl(self):
|
||||
def cal_count_pn_jgqbl(self, cal_mlog=False):
|
||||
mqs = MlogbDefect.get_defect_qs_from_mlogb(self, ftype="in")
|
||||
count_pn_jgqbl = mqs.aggregate(total=Sum("count"))["total"] or 0
|
||||
self.count_pn_jgqbl = count_pn_jgqbl
|
||||
self.save(update_fields=["count_pn_jgqbl"])
|
||||
mlog = self.mlog
|
||||
if mlog:
|
||||
if mlog and cal_mlog:
|
||||
mlog.cal_mlog_count_from_mlogb()
|
||||
|
||||
def cal_count_notok(self):
|
||||
def cal_count_notok(self, cal_mlog=True):
|
||||
mqs = MlogbDefect.get_defect_qs_from_mlogb(self, ftype="out")
|
||||
count_notok = mqs.filter(defect__okcate=30).aggregate(total=Sum("count"))["total"] or 0
|
||||
count_notok_full = mqs.exclude(defect__okcate=10).aggregate(total=Sum("count"))["total"] or 0
|
||||
|
@ -448,10 +448,10 @@ class Mlogb(BaseModel):
|
|||
self.count_ok = self.count_real - count_notok
|
||||
self.count_ok_full = self.count_real - count_notok_full
|
||||
if self.count_ok_full < 0:
|
||||
raise ParseError("完全合格数不能小于0")
|
||||
raise ParseError(f"完全合格数不能小于0:{self.count_real}-{self.count_ok}-{self.count_notok}-{self.count_ok_full}")
|
||||
self.save(update_fields=["count_ok", "count_notok", "count_ok_full"])
|
||||
mlog = self.mlog
|
||||
if mlog:
|
||||
if mlog and cal_mlog:
|
||||
mlog.cal_mlog_count_from_mlogb()
|
||||
|
||||
class MlogbDefect(BaseModel):
|
||||
|
@ -518,7 +518,7 @@ class Mlogbw(BaseModel):
|
|||
mlogb.count_notok = count_notok
|
||||
mlogb.count_ok = count - mlogb.count_notok
|
||||
mlogb.save()
|
||||
mlogb.cal_count_notok()
|
||||
mlogb.cal_count_notok(cal_mlog=True)
|
||||
|
||||
class Handover(CommonADModel):
|
||||
"""
|
||||
|
|
|
@ -389,7 +389,7 @@ class MlogSerializer(CustomModelSerializer):
|
|||
]
|
||||
if mlogbin_defect_objects:
|
||||
MlogbDefect.objects.bulk_create(mlogbin_defect_objects)
|
||||
mlogbin.cal_count_pn_jgqbl()
|
||||
mlogbin.cal_count_pn_jgqbl(cal_mlog=False)
|
||||
|
||||
# mlogb只用于组合件输出物填写
|
||||
brotherId_should_list = material_out.brothers
|
||||
|
@ -416,7 +416,7 @@ class MlogSerializer(CustomModelSerializer):
|
|||
pass
|
||||
else:
|
||||
batch_out = generate_new_batch(batch_in, instance)
|
||||
|
||||
|
||||
add_dict_2 = {
|
||||
'mlog': instance, 'batch': batch_out,
|
||||
'mtask': instance.mtask, 'material_out': instance.material_out,
|
||||
|
@ -445,7 +445,8 @@ class MlogSerializer(CustomModelSerializer):
|
|||
]
|
||||
if mlogb_defect_objects:
|
||||
MlogbDefect.objects.bulk_create(mlogb_defect_objects)
|
||||
mlogb.cal_count_notok()
|
||||
mlogb.cal_count_notok(cal_mlog=False)
|
||||
instance.cal_mlog_count_from_mlogb()
|
||||
return instance
|
||||
|
||||
def update(self, instance, validated_data):
|
||||
|
@ -495,7 +496,7 @@ class MlogSerializer(CustomModelSerializer):
|
|||
]
|
||||
if mlogbin_defect_objects:
|
||||
MlogbDefect.objects.bulk_create(mlogbin_defect_objects)
|
||||
minx.cal_count_pn_jgqbl()
|
||||
minx.cal_count_pn_jgqbl(cal_mlog=False)
|
||||
|
||||
# 修改产出
|
||||
if instance.fill_way == Mlog.MLOG_2 and instance.material_out.brothers:
|
||||
|
@ -540,7 +541,8 @@ class MlogSerializer(CustomModelSerializer):
|
|||
]
|
||||
if mlogb_defect_objects:
|
||||
MlogbDefect.objects.bulk_create(mlogb_defect_objects)
|
||||
mox.cal_count_notok()
|
||||
mox.cal_count_notok(cal_mlog=False)
|
||||
instance.cal_mlog_count_from_mlogb()
|
||||
return instance
|
||||
|
||||
def validate(self, attrs):
|
||||
|
@ -757,7 +759,7 @@ class MlogbInSerializer(CustomModelSerializer):
|
|||
]
|
||||
if mlogb_defect_objects:
|
||||
MlogbDefect.objects.bulk_create(mlogb_defect_objects)
|
||||
ins.cal_count_pn_jgqbl()
|
||||
ins.cal_count_pn_jgqbl(cal_mlog=True)
|
||||
return ins
|
||||
|
||||
class MlogbInUpdateSerializer(CustomModelSerializer):
|
||||
|
@ -775,7 +777,7 @@ class MlogbInUpdateSerializer(CustomModelSerializer):
|
|||
mlogbdefect = validated_data.pop("mlogbdefect", None)
|
||||
if mlog.submit_time is not None:
|
||||
raise ParseError('生产日志已提交不可编辑')
|
||||
ins = super().update(instance, validated_data)
|
||||
ins:Mlogb = super().update(instance, validated_data)
|
||||
if mlogbdefect is not None and ins.material_in.tracking == Material.MA_TRACKING_BATCH:
|
||||
MlogbDefect.objects.filter(mlogb=ins).delete()
|
||||
mlogb_defect_objects = [
|
||||
|
@ -784,7 +786,7 @@ class MlogbInUpdateSerializer(CustomModelSerializer):
|
|||
]
|
||||
if mlogb_defect_objects:
|
||||
MlogbDefect.objects.bulk_create(mlogb_defect_objects)
|
||||
ins.cal_count_notok()
|
||||
ins.cal_count_notok(cal_mlog=True)
|
||||
return ins
|
||||
|
||||
class MlogbwCreateUpdateSerializer(CustomModelSerializer):
|
||||
|
@ -900,7 +902,7 @@ class MlogbOutUpdateSerializer(CustomModelSerializer):
|
|||
]
|
||||
if mlogb_defect_objects:
|
||||
MlogbDefect.objects.bulk_create(mlogb_defect_objects)
|
||||
ins.cal_count_notok()
|
||||
ins.cal_count_notok(cal_mlog=True)
|
||||
return ins
|
||||
|
||||
def validate(self, attrs):
|
||||
|
|
Loading…
Reference in New Issue